【发布时间】:2020-03-06 06:13:01
【问题描述】:
【问题讨论】:
-
看看How to Ask。
标签: verilog edaplayground
【问题讨论】:
标签: verilog edaplayground
当然这不是 EDAPlayground 的问题。代码可能有问题。
您的always @(*) 块是您的模拟卡在单个时间戳的主要原因。 * 表示如果 any RHS 变量更改了它的值,则执行整个块。在这里,变量 a_reg 和 b_reg 在单个时隙上连续交换。相反,请使用always @(posedge clk)。
要获得更清晰的想法,请参阅this 链接。
【讨论】:
我相信您正在尝试做的是交换两个 4 位数字“a”和“b”。要在 Verilog 中执行此操作,您需要记住,当您使用 always @(posedge clk) 构造时,您实际上是将 RHS 上网络的旧值分配给 LHS 上的寄存器。
因此
always @(posedge clk)
begin
a_out = b;
b_out = a;
end
导致正确的操作,而不需要任何额外的寄存器。我创建了您的 edaplayground 项目的副本,并添加了一些额外的测试向量。 http://www.edaplayground.com/x/8hk
【讨论】: