hdlbits系列verilog解答(always块casez语句)-35


一、问题描述

为 8 位输入构建优先级编码器。给定一个 8 位向量,输出应报告向量中的第一个(最低有效)位,即 1 。如果输入向量没有高位,则报告零。例如,输入 8’b10010000 应输出 3’d4 ,因为 bit[4] 是第一个高电平的位。

从上一次工作(always_case2)来看,案件陈述中将有256个案例。如果 case 语句中的 case 项支持 don’t care 位,我们可以将其减少(减少到 9 个案例)。这就是 casez 它的用途:它将具有该值 z 的位视为在比较中不关心的位。

例如,这将实现上一个练习中的 4 输入优先级编码器:
always @(*) begin
casez (in[3:0])
4’bzzz1: out = 0; // in[3:1] can be anything
4’bzz1z: out = 1;
4’bz1zz: out = 2;
4’b1zzz: out = 3;
default: out = 0;
endcase
end

case 语句的行为就像是按顺序检查每个项目一样(实际上,这是一个很大的组合逻辑函数)。请注意,某些输入(例如, 4’b1111 )将匹配多个案例项。选择第一个匹配项(因此 4’b1111 匹配第一项, out = 0 但不匹配任何后面的匹配项)。

还有一种类似的 casex 方式,即同时对待两者 x 和 z 不关心。我看不出使用它与casez有什么不一样 。
该数字 ? 是

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值