首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于Verilog中case casex casez

关于Verilog中case casex casez

在case语句中,敏感表达式与各项值之间的比较,是一种全等比较。
casez与casex语句是case语句的两种变体,三者的表示形式中唯一的区别是三个关键词case、casez、casex的不同。


在casez语句中,如果分支表达式某些位的值为高阻z,那么对这些位的比较就会忽略,不予考虑,而只关注其他位的比较结果。(casez会把z/?匹配成任意,也会把任意匹配成z/?)


在casex语句中,则把这种处理方式进一步扩展到对x的处理,即如果比较双方有一方的某些位的值是z或x,那么这些位的比较就不予考虑。(casex会把z/?x匹配成任意,也会把任意匹配成z/?/x,即直接忽略z/?/x)


使用case时候,'?'代表的不是don't care,而是'z'。
并且case/casez/casex其实都是可综合的。


例如

case (sel)
'b00:      y = a;
'b01:      y = b;
'bx0:      y = c;
'b1x:      y = d;
'bz0:      y = e;
'b1?:      y = f;

default :   y = g; endcase
不同的sel对应不同的值Result:       sel     y    case item       00     a      00       11     g      default      xx     g      default      x0     c      x0      1z     f      1?      z1     g      default
继承事业,薪火相传
返回列表