学习记录 HDLBits Day6

本文探讨了Verilog HDL中Case语句的使用,包括Always块中的Case和Casez的区别,强调了Case语句添加default项的重要性,并提供了代码示例进行解释。同时,通过对比两种不同的条件判断语句,展示了如何优化逻辑判断以求得最小项。文章还提到了代码重构,如使用变量min1, min2, min3来逐步确定最小值,以提高代码可读性和效率。
摘要由CSDN通过智能技术生成

HDLBits Day6
Always case2 ?
没明白这题问什么 : 第一个高电位出现在什么位置,输出该位置
0010 第一个高电位在1点 所以输出1
0101 第一个高电位在0点 所以输出0
1000 第一个高电位在3点 所以输出3

用z代替无关项
case 和casez 要区分开
case语句要加 default项

case语句前加初始化

对比两种判断语句
1、
assign min = (a<b) ?
((a<c) ? ((a<d) ? a:d) : ((c<d)? c:d)) : ((b<c) ? ((b<d) ? b:d) : ((c<d)?c:d));
(1) a<b ((a<c) ? ((a<d) ? a:d) : ((c<d)? c:d))
1.1 a<c ((a<d) ? a:d)
1.1.2 a<d a
1.1.3 a>d d
1.2 a>c ((c<d)? c:d)
1.2.1 c<d c
1.2.2 c>d d
(2) a>b ((b<c) ? ((b<d) ? b:d) : ((c<d)?c:d))
2.1 b<c (b<d) ? b:d
2.1.1 b<d b
2.1.2 b>d d
2.2 b>c (c<d) ? c:d
2.2.1 c<d c
2.2.2 c>d d
a<b<c<d
d<a<b<c
c<d<a<b
d<c<a<b
b<(a,b,c)
d<b<(a,c)
c<(b<a,d)
d<c<b<a
还是有点问题
2、
wire [7:0] min1,min2,min3;
always @(*)
begin
if(a < b)
min1 = a;
else
min1 = b;
if(min1 < c)
min2 = min1;
else
min2 = c;
if(min2 < d)
min3 = min2;
else
min3 = d;
end
assign min = min3;

Reduction
2022/7/26/22:31

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值