执行中断或达到最大运行时间。
这是我的代码的链接: http ://www.edaplayground.com/x/CX8
我正在尝试在此设计中交换数字。
我相信您要做的是交换两个 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
当然这不是 EDAPlayground 的问题。代码可能在某处有问题。
您的always @(*)
块是您的模拟卡在单个时间戳的主要原因。*
表示如果任何RHS 变量更改其值,则执行整个块。在这里,变量 a_reg 和 b_reg 在单个时隙上连续交换。相反,使用always @(posedge clk)
.
要获得更清晰的想法,请参阅此链接。