Verilog | if语句和case语句

文章讨论了在硬件描述语言中,if-else结构和case语句在组合逻辑中的条件优先级和资源消耗。if-else具有明确的优先级,而case语句在时序逻辑中没有优先级,且通常占用更少的资源。在可读性方面,case语句可能更具优势。尽管在AISC(AutomaticIntellectualProperty)综合后,两者可能体现不出明显差异,但设计选择仍需考虑到效率和维护性。
摘要由CSDN通过智能技术生成

if语句和组合逻辑下的case语句,他们的条件是有优先级的,从上到下优先级递减,每多一个条件就会多消耗一个二选一多路器,很浪费资源;

优先级:if else 结构if的优先级最高;多if 结构最后一个if优先级最高。

always_comb
		if(sel==2'b11)
			d=a;
		else if(sel==2'b10)
			d=b;
		else
		   d=c;

	always_comb
		case(sel)
			2'b11:d=a;
			2'b10:d=b;
			default:d=c;
		endcase

组合逻辑代码综合的电路如下图:

而对于时序语句中的case,会被综合成n选一多路器,条件没有优先级,占用的资源更少。

always_ff @(posedge clk)
		case(sel)
			2'b11:d=a;
			2'b10:d=b;
			default:d=c;
		endcase

时序逻辑代码综合的电路如下:

似乎在AISC中综合后,两者其实是没有区别的,最后的综合结果会以逻辑门的形式实现。(关于这一点还希望有经验的大佬能够指教)

从可阅读性来看,case语句的阅读性更好,修改时可能也会更加方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值