答案 0 :(得分:1)
当然这不是EDAPlayground的问题。代码可能在某处出错。
您的always @(*)
阻止是模拟卡在单个时间戳上的主要原因。 *
表示如果任何 RHS变量更改其值,则执行整个块。这里,变量a_reg和b_reg在单个时隙上连续交换。相反,请使用always @(posedge clk)
。
要获得更清晰的信息,请参阅this链接。
答案 1 :(得分:1)
我相信你要做的是交换两个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