Verilog:使用assign和always

时间:2013-03-24 11:39:31

标签: binary verilog

module circuit_1 (a, b, c);
input [1:0J a,b;
output [3:0J c;
assign c = a + b;

如果输入a = 2'b11并输入b = 2'b10,

输出c的值是多少?请给出一个描述性的答案。

另外请告诉我assign的功能并始终。我有点困惑。

1 个答案:

答案 0 :(得分:4)

c = 4'b0101      // Output, implicitly a wire

“assign”用于网络类型声明(Wire,Tri等)。由于导线根据驱动它们的值改变值,每当RHS上的操作数发生变化时,该值将被评估并分配给LHS(模拟导线) )

always - 用于寄存器+组合逻辑。 如果它总是(@ posedge clk) - 事件posedge clk触发always块,并且块内的逻辑被评估和分配。

始终@(*) - 如果始终块的RHS中的某些内容发生更改,则会评估并分配该特定表达式。

想象一下,作为寄存器和始终作为寄存器(现在)分配,因为它们的行为是相同的。