Module 两者的意思相同吗?
在Verilog代码中Module 两者的意思相同吗?,module,verilog,fpga,Module,Verilog,Fpga,在Verilog代码中 case ({Q[0], Q_1}) 2'b0_1 :begin A<=sum[7]; Q<=sum; Q_1<=Q; end 2'b1_0 : begin A<=difference[7]; Q<=difference; Q_1<=Q; end default: begin A<=A[7]; Q<=A; Q_1
case ({Q[0], Q_1})
2'b0_1 :begin
A<=sum[7]; Q<=sum; Q_1<=Q;
end
2'b1_0 : begin
A<=difference[7]; Q<=difference; Q_1<=Q;
end
default: begin
A<=A[7]; Q<=A; Q_1<=Q;
end
endcase
case({Q[0],Q_1})
2'b0_1:开始
是的,它们是一样的。例如,尝试此小代码并检查输出是否相同:
module test;
wire A,B,C;
reg p,q,r;
initial
begin
p=1; q=1; r=0;
end
assign {A,B,C} = {p,q,r};
initial #1 $display("%b %b %b",A,B,C);
endmodule
通常,如果您想了解连接运算符,可以参考
编辑:我假设A和p,B和q,C和r长度相同。不,它们不一样。串联运算符({…}
)允许您从多个不同的信号中创建向量,允许您使用这些向量并分配给这些向量,从而使分量信号的分配将从结果中获得适当的位。从您前面的问题(),我看到A
、Q
、sum
和difference
都是8位值,Q\u 1
是1位值。让我们检查第一个作业(注意其他三个作业的方式相同):
请注意,它们与sum
不同,difference
和A
的长度至少为8位,请参阅我的答案以获得完整的解释。实际上,我假设它们的长度相同。我已经更新了答案中的假设。@Unn。最后一部分。我想它一定像A@sharvill111A
没有出现在赋值的rhs中,所以A
没有承担A
的任何部分,还要注意concat操作符首先有MSb,所以sum[7]
是我使用的示例中的MSb,而Q[0]
(Q
的最后一位)是LSb。所以,我很确定我的拆分是正确的。@Unn好的,现在我明白了。你说的是OP代码中的第二个代码段,而我指的是第一个代码段
module test;
wire A,B,C;
reg p,q,r;
initial
begin
p=1; q=1; r=0;
end
assign {A,B,C} = {p,q,r};
initial #1 $display("%b %b %b",A,B,C);
endmodule
{A, Q, Q_1} <= {sum[7], sum, Q};
A <= {sum[7], sum[7:1]};
Q <= {sum[0], Q[7:1]};
Q_1 <= Q[0];