0

执行中断或达到最大运行时间。

这是我的代码的链接: http ://www.edaplayground.com/x/CX8

我正在尝试在此设计中交换数字。

4

2 回答 2

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

于 2015-10-20T01:49:00.320 回答
1

当然这不是 EDAPlayground 的问题。代码可能在某处有问题。

您的always @(*)块是您的模拟卡在单个时间戳的主要原因。*表示如果任何RHS 变量更改其值,则执行整个块。在这里,变量 a_reg 和 b_reg 在单个时隙上连续交换。相反,使用always @(posedge clk).

要获得更清晰的想法,请参阅链接。

于 2015-10-19T04:13:28.043 回答