Verilog中的关键词assign
主要用于如下两个地方:
- 数据流建模
用于数据流建模的显示连续赋值语句语法格式如下:
<net_declaration><rang><name>;
assign #<delay><name> = Assignment expression;
以上语法第一条句是对连线型变量进行类型说明,第二条语句是对这个连线型变量进行连续赋值。
示例代码如下:module example(a, b, m, n, c, y); input[3,0] a, b, m, n; output[3,0] c, y; wire[3,0] a, b, m, n, c, y; assign y = m | n; assign #(3,2,4) c = a & b; endmodule
- 行为级建模
用于行为级建模的过程连续赋值语句语法格式如下:
assign <寄存器类型变量> = <赋值表达式>
过程连续赋值语句assign
和过程赋值语句同属于行为级描述中的赋值语句。而赋值语句只能用于对寄存器型变量赋值,不可用于对连线型变量赋值。
示例代码如下:module example(d, clr, clk, q);; input d, clr, clk; output q; reg q; always@(clr) begin if (!clr) assign q = 0; else deassign q; end aways@(negedge clk) q = d; endmodule