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的功能并始终。我有点困惑。
答案 0 :(得分:4)
c = 4'b0101 // Output, implicitly a wire
“assign”用于网络类型声明(Wire,Tri等)。由于导线根据驱动它们的值改变值,每当RHS上的操作数发生变化时,该值将被评估并分配给LHS(模拟导线) )
always - 用于寄存器+组合逻辑。 如果它总是(@ posedge clk) - 事件posedge clk触发always块,并且块内的逻辑被评估和分配。
始终@(*) - 如果始终块的RHS中的某些内容发生更改,则会评估并分配该特定表达式。
想象一下,作为寄存器和始终作为寄存器(现在)分配,因为它们的行为是相同的。