verilog 中if语句和case语句综合成的电路

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

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

always@(posedge clk)
if(flag==2'b00)
	begin
		outb=0;
	end
else
	begin
		if(d==1)
			begin
				outb=b;
			end
		if(e==1)
			begin
				outb=c;
			end
		if(g)
			begin
				outb=a;
			end
	end

 

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

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



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

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

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

上面的代码综合的电路如下:

很明显时序case占用的逻辑资源更少。

  • 15
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值