关于单if语句和多if语句的探讨
时间:10-02
整理:3721RD
点击:
在Verilog中,像if...else if...else if...这种单if语句,会不会产生优先编码?像if...if...if...这种多if的语句又会产生怎么样的结果?
一般在讲解代码风格的书上看到的结果都是说多if语句会产生优先编码结构,而单if的语句和case语句一样不会产生优先编码结构。并且会说有些综合工具为了节省资源会把多if语句也优化成没有优先编码的结构。
但是我自己在quartus里面综合看了一下,两个产生的结果都是优先编码结构的,只是优先级顺序不一样而已。
如果说综合结果跟综合工具有关,这些代码风格到底哪个能产生真正的优先级结构呢?
希望有经验的大侠讲解一下
一般在讲解代码风格的书上看到的结果都是说多if语句会产生优先编码结构,而单if的语句和case语句一样不会产生优先编码结构。并且会说有些综合工具为了节省资源会把多if语句也优化成没有优先编码的结构。
但是我自己在quartus里面综合看了一下,两个产生的结果都是优先编码结构的,只是优先级顺序不一样而已。
如果说综合结果跟综合工具有关,这些代码风格到底哪个能产生真正的优先级结构呢?
希望有经验的大侠讲解一下
你可以把综合工具里面关于优先编码的选项取消,然后自己用不同的代码方式写一个译码器,看它综合处理的电路是怎样的呀。有一本书,叫《Verilog 设计与验证》里面讲的很详细,建议看一下。
那本书书不错的。具体的我没有试过,但if应该是有优先级的吧?
单if 会产生latch, if else 产生深度组合逻辑, 如果没有优先级要求的话,最好用case.
if语句会产生latch
多if..else会有优先级
最好使用case
估计小编理解错误了。
单if语句产生Lath?这种说法不对吧。锁存器应该是电平触发的,在时序逻辑中,单if语句产生的也是个触发器
楼上正解!
