搜索
bottom↓
回复: 6

大家来讨论下Verilog语言中关于if else与case这样的理解的对不对.

[复制链接]

出0入0汤圆

发表于 2010-3-15 15:25:23 | 显示全部楼层 |阅读模式
我感觉一连串的if else语句和case语句是一样的效果,即满足那个条件执行那条语句。
然而他们之间的不同之处,在于倘若在运行的过程当中,连串的if else 语句中有两条if else满足条件,则这两条语句都要执行;而case内不能有相同的判断条件。例如:
always@(a,b,c,d,e);
begin
if(a) ..语句1.....
else if(b)  ..语句2...
else if(c) ...语句3....
else if(d)  ...语句4...
else if(e)  ...语句5....
end
如果,a=b=1;则语句1,语句2同时运行
always@(X);
begin
  case(x)
        a  语句1;
        b  语句2;
        c  语句3;
        d  语句4;
        e  语句5;
  endcase
end
次语句中不容许X=a=b成立。
上面我这样理解对不对?大家帮我分析下,谢谢了!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-3-15 17:16:36 | 显示全部楼层
以前的编译软件对if else 和case编译的结果是有区别的,不过貌似现在有些编译软件都很智能了。。。。求高手来解释一下。
建议能用case的地方就用case

出50入0汤圆

发表于 2010-3-15 17:18:33 | 显示全部楼层
case我的理解是能综合成多选一的选择器。

出0入0汤圆

发表于 2010-3-15 17:44:19 | 显示全部楼层
"如果,a=b=1;则语句1,语句2同时运行 ? "  可以么?

出0入0汤圆

发表于 2010-3-15 17:50:31 | 显示全部楼层
回复【楼主位】hbchf  晨风
-----------------------------------------------------------------------

通常说来,if else语句有优先级,所以在一些情况下可能被综合成一堆串行寄存器,速度比较慢,case语句好一些。当然,有些情况下,这两种写法综合出来的寄存器是完全一样的。

出0入0汤圆

发表于 2010-3-15 21:09:44 | 显示全部楼层
好像不对,a=b=1的时候只会执行if(a)后面的那个语句。
我做过实验的,你看嘛。基本上照着你写的。
module test (clk,ina,inb,inc,outa,outb,outc,outa2,outb2,outc2);
        input clk,ina,inb,inc;
        output outa,outb,outc,outa2,outb2,outc2;
        reg outa,outb,outc,outa2,outb2,outc2;
       
        always @ (posedge clk)
                if(ina==1'b1)
                        begin
                        outa<=1'b1;
                        outb<=1'b0;
                        outc<=1'b0;
                        end
                else if(inb==1'b1)
                        begin
                        outa<=1'b0;
                        outb<=1'b1;
                        outc<=1'b0;
                        end
                else if(inc==1'b1)
                        begin
                        outa<=1'b0;
                        outb<=1'b0;
                        outc<=1'b1;
                        end
                else
                        begin
                        outa<=1'b0;
                        outb<=1'b0;
                        outc<=1'b0;
                        end
                       
        always @ (posedge clk)
                case({ina,inb,inc})
                        3'b100:begin
                                        outa2<=1'b1;
                                        outb2<=1'b0;
                                        outc2<=1'b0;
                                        end
                        3'b010:begin
                                        outa2<=1'b0;
                                        outb2<=1'b1;
                                        outc2<=1'b0;
                                        end
                        3'b001:begin
                                        outa2<=1'b0;
                                        outb2<=1'b0;
                                        outc2<=1'b1;
                                        end
                        default :begin
                                                        outa2<=1'b0;
                                                        outb2<=1'b0;
                                                        outc2<=1'b0;
                                         end
                endcase
               
endmodule


(原文件名:未命名.JPG)

出0入0汤圆

发表于 2010-3-15 21:10:35 | 显示全部楼层
引用王钿、卓兴旺《基于Verilog HDL的数字系统应用设计》P71:
“一般来说,使用if...else语句中的条件式互斥的(因为互斥所以不存在优先级),在synplify下的综合结果就是并行且不带优先级的电路;但是如果条件不互斥,对应的电路则带优先级。
但是某些综合效果较差的综合工具可能不会对if...else进行优化,这种条件互斥的完全没有必要综合成优先级电路的语句也可能被综合成优先级电路。因此,为了尽量实现代码的综合结果和平台无关,对于不带优先级的条件电路,最好使用case语句描述。”
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 19:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表