【原创】case、casez和casex谁是谁

本文详细介绍了Verilog中的case、casez和casex三种语句的用法和区别,特别是在处理高阻态z和不定态x时的匹配规则。case进行精确匹配,casez忽略z,casex忽略x和z,对于多位匹配,从右侧开始第一次匹配成功的分支被执行。
摘要由CSDN通过智能技术生成

在Verilog中case语句经常用于多分支表决的结构,case后的表达式会与各分支表达式“全等”那么对应的分支会被执行.其基本结构如下:

case(expression)expr1 : statement_or_null;exprn : statement_or_null;default : statement_or_null;endcase

虽然一般case经常被使用,但是在构建仿真验证平台时,经常会遇到case后的敏感表达式出现高阻态z和不定态x的情况,而对于部分位出现高阻态z和不定态x的情况有时需要忽略掉,如下例.

【示例】

`timescale 1 ns / 1 psmodule top_tb;reg [1:0] d1,d2,d3,d4,d5,d6;reg [1:0] sel;reg [1:0] dout;
initial begin        d1 = 2'b00;d2 = 2'b10;d3 = 2'b0x;        d4 = 2'bz0;d5 = 2'bxx;d6 = 2'bzz;       sel = 2'b00;    #1 sel = 2'b10;    #1 sel = 2'b00;    #1 sel = 2'b0x;    #1 sel = 2'bz0;    #1 sel = 2'bxx;    #1 sel = 2'bzz;    #1 sel = 2'b11;    #1 $stop;end
always @(sel)begin    case(sel)        2'b00 : begin                     dout = d1;                    $display("Branch 2'b00!");                end        2'b10 : begin                    dout = d2;                    $display("Branch 2'b10!");                end        2'b0x : begin                    dout = d3;                    $display("Branch 2'b0x!");                end        2'bz0 : begin                    dout = d4;                    $display("Branch 2'bz0!");                end        2'b1x : begin                    dout = d5;                    $display("Branch 2'b1x!");                end        2'b1z : begin                    dout = d6;                    $display("Branch 2'b1z!");                end        default : begin                      dout = 2'b00;                      $display("Branch default!");                  end    endcaseendendmodule     // top_tb

【仿真结果】

S
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硅芯思见

你的鼓励是我创作的最大源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值