【FPGA】 007 --Verilog中 case,casez,casex的区别

本文详细解析了Verilog中的case、casez及casex三种条件语句的区别,特别是它们在处理不确定状态(如高阻态z和未知态x)时的不同行为。通过具体实例说明了casez和casex如何在比较过程中忽略这些特殊状态。
摘要由CSDN通过智能技术生成

贴一个链接:http://www.cnblogs.com/poiu-elab/archive/2012/11/02/2751323.html

 


Verilog中  case,casez,casex的区别  
在case语句中,敏感表达式与各项值之间的比较,是一种全等比较。每一位都必须相同才认为匹配。  
casez与casex语句是case语句的两种变体, 在写testbench时用到,属于不可综合的语句

1在casez语句中,如果分支表达式某些位的值为高阻z,那么对这些位的比较就会忽略,不予考虑,而只关注其他位的比较结果。  


2 在casex语句中,则把这种处理方式进一步扩展到对x的处理,即如果比较双方有一方的某些位的值是z或x,那么这些位的比较就不予考虑。  


比如:   casez  (sel)   

       3’b001:  y=a+b;    

      3’b010:  y=a-b;    

      3’b011:  y=a&b;    

      3’b100:  y=a^b;    

      Default: y=3’b000; 
当sel=01z的时候,由于最低位出现z,那么在比较判别时不考虑最低位,只与源比较前两位,那么出现与010,011均匹配的情况,此时由于case语句是按顺序检查的,所以先认为与010匹配,输出y=a-b。

 

 

 

 

一般性的常识是使用casez,强烈的建议不要使用casex

'?'代表的不是don't care,而是'z'

case/casez/casex其实都是可综合的

 

case(不是casez/casex的时候)的index列表里面的x和z,都被综合工具认为是不可达到的状态就被去掉了。

casez和casex里面的x/z都被认为是don't care,所以综合出的电路会是一致的。

 

转载于:https://www.cnblogs.com/WHaoL/p/6052462.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值