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;