执行中断或达到最大运行时间。
这是我的代码的链接:http://www.edaplayground.com/x/CX8
我试图在这个设计中交换数字。
发布于 2015-10-19 12:13:28
当然,这不是EDAPlayground的问题。代码可能在某个地方有buggy。
always @(*)块是模拟停留在单个时间戳的主要原因。*表示如果任何 RHS变量更改了它的值,则执行整个块。这里,变量a_reg和b_reg在单个时隙上连续交换。相反,请使用always @(posedge clk)。
要获得更清晰的概念,请参阅this链接。
发布于 2015-10-20 09:49:00
我相信你要做的是交换两个4位数字'a‘和'b’。要在verilog中做到这一点,您需要记住,当您使用always @(posedge clk)构造时,您实际上是将RHS上的net的旧值赋值给LHS上的寄存器。因此
always @(posedge clk) begin a_out = b; b_out = a; end会导致正确的操作,不需要任何额外的寄存器。我已经创建了您的edaplayground项目的副本,并添加了一些额外的测试向量。http://www.edaplayground.com/x/8hk
https://stackoverflow.com/questions/33192421
复制相似问题