2023年12月21日发(作者:)
实现方式:(32位,推荐方法)modulebarrelshifter32_2(input[31:0]a,input[4:0]shift_bit,input[1:0]aluc,outputreg[31:0]odata);reg[31:0]tmp;always@*beginif(aluc==0)//算术右移begintmp=shift_bit[0]?{a[31],a[31:1]}:a;tmp=shift_bit[1]?{{(2){tmp[31]}},tmp[31:2]}:tmp;tmp=shift_bit[2]?{{(4){tmp[31]}},tmp[31:4]}:tmp;tmp=shift_bit[3]?{{(8){tmp[31]}},tmp[31:8]}:tmp;tmp=shift_bit[4]?{{(16){tmp[31]}},tmp[31:16]}:tmp;endelseif(aluc==1)//算术和逻辑左移begintmp=shift_bit[0]?{a[30:0],1’b0}:a;tmp=shift_bit[1]?{tmp[29:0],2’b0}:tmp;tmp=shift_bit[2]?{tmp[27:0],4’b0}:tmp;tmp=shift_bit[3]?{tmp[23:0],8’b0}:tmp;tmp=shift_bit[4]?{tmp[15:0],16’b0}:tmp;endelseif(aluc==2)//逻辑右移begintmp=shift_bit[0]?{1’b0,a[31:1]}:a;tmp=shift_bit[1]?{2’b0,tmp[31:2]}:tmp;tmp=shift_bit[2]?{4’b0,tmp[31:4]}:tmp;tmp=shift_bit[3]?{8’b0,tmp[31:8]}:tmp;tmp=shift_bit[4]?{16’b0,tmp[31:16]}:tmp;endelse//不变tmp=a;odata=tmp;endendmodule//仿真代码modulebarrelshifter32_test();reg[31:0]idata;reg[4:0]shift_bit;regen;reg[1:0]aluc;wire[31:0]odata;reg[4:0]i;initialbeginidata=32'h8a000029;endinitialbegin
en=0;#10en=1;endinitialbeginaluc=2'd0;#320aluc=2'd1;#320aluc=2'd2;#320aluc=2'd3;endinitialbeginshift_bit=0;for(i=0;i<32;i=i+1)#10shift_bit=shift_bit+1;endbarrelshifter32_1uut(.idata(idata),.shift_bit(shift_bit),.en(en),.aluc(aluc),.odata(odata));endmodule仿真结果:restartrun1200ns//barrelshifter32_2类似
代码设计综合后所占资源(原语,Primitives):barrelshifter32_2所占资源图2barrelshifter32_2的RTLView


发布评论