HDL—Verilog Language—Procedures—Priority encoder with casez

There is also a similar casex that treats both x and z as don't-care.  I don't see much purpose to using it over casez.
The digit ?  is a synonym for z. so 2'bz0 is the same as 2'b? 0

It may be less error-prone to explicitly specify the priority behaviour rather than rely on the ordering of the case items.  For example, the following will still behave the same way if some of the case items were reordered, because any bit pattern can only match at most one case item:

还有一个类似的casex,它将x和z都视为无关紧要。我觉得用它来对付卡塞兹没什么意义。

数字?是z的同义词,所以2'bz0和2'b是一样的?0


显式指定优先级行为比依赖case项的顺序更不容易出错。例如,如果某些case项重新排序,下面的代码仍然会有相同的行为,因为任何位模式最多只能匹配一个case项:

casez语句用来处理不考虑高阻值z的比较过程

reg[3:0]state;
casez(state)
 8'b???1: do1;
 8'b??1?: do2;
 8'b?1??: do3;
 8'b1???: do4;
endcase

casex语句则将高阻值z和不定值都视为不必关心的情况

reg[3:0]state;
casex(state)
 8'bxxx1: do1;
 8'bxx1x: do2;
 8'bx1xx: do3;
 8'b1xxx: do4;
endcase

// synthesis verilog_input_version verilog_2001
module top_module (
    input [7:0] in,
    output reg [2:0] pos );
    always@(*)begin
        casez(in)
            8'bzzzzzzz1:pos <= 3'b000;
            8'bzzzzzz1z:pos <= 3'b001;
            8'bzzzzz1zz:pos <= 3'b010;
            8'bzzzz1zzz:pos <= 3'b011;
            8'bzzz1zzzz:pos <= 3'b100;
            8'bzz1zzzzz:pos <= 3'b101;
            8'bz1zzzzzz:pos <= 3'b110;
            8'b1zzzzzzz:pos <= 3'b111;
        endcase
    end
endmodule

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值