assign的选择用法示例

1.有优先级的

assign out2 = sel1?in1[3:0]:
					sel2?in2[3:0]:
						sel3?in3[3:0]:
							4'b0;
//c中等效于
if(sel1)
	out2=in1[3:0];
else if (sel2)	
	out2=in2[3:0];
else if (sel3)	
	out2=in3[3:0];
else	
	out2=4'b0;					

在这里插入图片描述
2.并行选择的

assign out1=({4{sel1}} & in1[3:0])
					| ({4{sel2}} & in2[3:0])
					|({4{sel3}} & in3[3:0]);
//c中等效于
if (sel1)
	out1=in1[3:0];
if (sel2)
	out1=in2[3:0];
if (sel3)
	out1=in3[3:0];

在这里插入图片描述

分析:假设(sel1==1) &&(sel2==0) &&(sel3==0) && (sel4==0)
表示4个sel1信号和in1的四位分别按位与,最后所有结果相或;则四个或门输出为in1[3],in1[2],in1[1],in1[0],接到out1[3:0]即可。

3.带附加判断条件的

pc_add_op1 = 
             `ifndef E203_TIMING_BOOST
       			pipe_flush_req  ? pipe_flush_add_op1 :
                dly_pipe_flush_req  ? pc_r :
             `endif
                ifetch_replay_req  ? pc_r :
                bjp_req ? prdt_pc_add_op1    :
                ifu_reset_req   ? pc_rtvec :
                pc_r;
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值