一、模块声明类语法
module…endmodule
二、端口声明类语法
input、output、inout
三、参数定义
parameter:用于定义一些常量
四、信号类型
wire、reg
五、比较判断
if …else
case…default…endcase
六、循环语句
for
七、任务定义
task…endtask,通常用于组合逻辑电路。
module EXAMPLE (A, B, CIN, S, COUT);
input [3:0] A, B;
input CIN;
output [3:0] S;
output COUT;
reg [3:0] S;
reg COUT;
reg [1:0] S0, S1, S2, S3;
task ADD;
input A, B, CIN;
output [1:0] C;
reg [1:0] C;
reg S, COUT;
begin
S = A ^ B ^ CIN;
COUT = (A&B) | (A&CIN) | (B&CIN);
C = {COUT, S};
end
endtask
always @(A or B or CIN) begin
ADD (A[0], B[0], CIN, S0);
ADD (A[1], B[1], S0[1], S1);
ADD (A[2], B[2], S1[1], S2);
ADD (A[3], B[3], S2[1], S3);
S = {S3[0], S2[0], S1[0], S0[0]};
COUT = S3[1];
end
endmodule
八、连续赋值assign,问号表达式(?:)
九、always语句块
十、运算操作符
+、-、*、/、!、&、|…