讨论一下这条verilog语句!高手请进!
既然 ram21_pmf_i是定义成wire的,但是,它却有了保持作用,这是寄存器的功能!这是我仿真后观察到的结果。
assign ram21_pmf_i = (accu2_bypass == 1'b1) ? (accu2_result_i) : (ram21_pmf_i);
而我经常这样写:
assign ram21_pmf_i = (accu2_bypass == 1'b1) ? (accu2_result_i) : (8'd0);
前面的写法到底对不对!请高手指教。
前面的代码语法没错,但是会形成一个环路,综合的时候会报错,仿真的情况可能要取决于仿真器了.
如二楼所说,前面一种写法会出现LOOP。
学习了。
受教了
这个综合结果是否是MUX而不是寄存器,输出结果连到了输入?这样的电路既然存在为什么也要报错呢~
不是很理解你要表达的意思,这样的回环电路在某些场合确实有,但是非常特殊,一般都是在模拟电路上.数字电路设计要绝对避免,所以一般的综合工具都会报错.
这个电路综合出来应该是个锁存器吧...一般不建议在数字电路中使用锁存器,锁存器容易产生毛刺...
谢谢指出,我今天试了一下,altera的综合器确实把这个电路认成latch了.
更正一下,我今天用altera的quartus实验一下,确实是latch,综合可以过.
综合可以过不代表design没问题。
我没说设计有没有问题,我只是说这种代码本身并没错,只是需要避免.
这个就是一个latch啊,要避免的。这个跟在组合逻辑里面if-else语句,只写if不写else是雷同的。
要看是时序逻辑还是组合逻辑吧,如果是时序逻辑没问题的。
我也仔细的看了一下,也在Quartus里面试了一下,如果像如下方式描述就可以过
module test (input b,c,output a);
wire b;
assign d = (b == 1'b1) ? (a) : (c);
assign a = d;
endmodule
像这样的方式写,就能生成一个只有mux的环路而没有锁存器产生。
我觉得之所以有锁存器产生是因为ram21_pmf_i 并没有初值,而在选择端选择了ram21_pmf_i时仿真器并不知道应该用什么样的值来代替,所以才会有锁存器产生。
而像上面所描述的,在第二句中a的值有理可查,就把d的值立即取过来就好了,所以这是个仿真器的原理问题哈哈哈
我也仔细的看了一下,也在Quartus里面试了一下,如果像如下方式描述就可以过
module test (input b,c,output a);
wire b;
assign d = (b == 1'b1) ? (a) : (c);
assign a = d;
endmodule
像这样的方式写,就能生成一个只有mux的环路而没有锁存器产生。
我觉得之所以有锁存器产生是因为ram21_pmf_i 并没有初值,而在选择端选择了ram21_pmf_i时仿真器并不知道应该用什么样的值来代替,所以才会有锁存器产生。
而像上面所描述的,在第二句中a的值有理可查,就把d的值立即取过来就好了,所以这是个仿真器的原理问题哈哈哈
我也仔细的看了一下,也在Quartus里面试了一下,如果像如下方式描述就可以过
module test (input b,c,output a);
wire b;
assign d = (b == 1'b1) ? (a) : (c);
assign a = d;
endmodule
像这样的方式写,就能生成一个只有mux的环路而没有锁存器产生。
我觉得之所以有锁存器产生是因为ram21_pmf_i 并没有初值,而在选择端选择了ram21_pmf_i时仿真器并不知道应该用什么样的值来代替,所以才会有锁存器产生。
而像上面所描述的,在第二句中a的值有理可查,就把d的值立即取过来就好了,所以这是个仿真器的原理问题哈哈哈
请问你写的是代码还是电路?如果是代码,那没啥话说。如果是电路,那就是你嘴硬了。
我说的是代码,我用综合器综合了,得到了一个latch.这就是整个过程.我当然反对这样写,但是这样的电路确实客观存在.又不是物理上无法实现的.
"嘴硬"这样的话听着不舒服.
补充一句,回路loop(不是latch)是有实际价值的.不要因为我们尽量避免就否定了它的存在,就像latch我们一再避免,但是它也是实际存在的电路,是有用的.
按照你的写法用quartus试验了一下,果然从latch变成loop了,而且综合以及布线都过了.
的确是的啊
恩,呵呵。应该就是仿真器原理造成的,必须要赋给另一线网作中介
学习中,都是高手啊
二楼正解,赞一个!
不建议使用latch,是因为它时序难于分析,并且又有毛刺,并不是说不能使用,主要还是看设计的用途
产生锁存器
学习一下,这个是不是形成了一个锁存器
以前没有碰到过诶……受教了。
什么语句综合出什么电路看来要搞清楚啊。看了大家的讨论,受教很多,继续学习。
