自己编了一个并转串的verilog程序,但是modelsim仿真出来总是不对,求大神指导

2024-11-16 16:38:17
推荐回答(3个)
回答(1):

把 integer i; 改成 reg[2:0] counter;
然后把你代码里的 i = i + 1 这句去掉,你这是纯粹的软件写法,如果在这里就成了阻塞赋值
和非阻塞赋值混用了,在综合器里根本没法综合,纯粹是错误的写法, 不要听下面人说的
bits0000<=data[6-i]; 这是正确的写法,在时序电路里的always块都用这种写法。
去掉i= i + 1这句阻塞赋值语句后,在任意位置写一段always块:
always@(posedge clk12)begin
if (counter < 3'd6)
counter <= counter + 1'b1;
else
counter <= 3'b0;end
这一段实现自加功能

回答(2):

你的代码就写得不对
“bits0000<=data[6-i];”这是软件的风格,不适用于硬件描述语言。

回答(3):

只用于仿真应该是可以的,不过i应该定义成变量吧