?? partmul.v
字號:
module partmul(hin,x,reset,part1,part2,part3,part4,temp); //部分積產生模塊input [7:0] hin; //輸入的h(i)input [8:0] x; //輸入的型x(i)+x(N-i-1)input reset; output [9:0] part1,part2,part3,part4; //產生的四個部分積output [7:0] temp; //取反加1和取反加2產生的另一個部分積reg [9:0] part1,part2,part3,part4;wire [2:0] d1,d2,d3,d4; //四個booth編碼產生的信號reg [7:0] temp; booth booth1(hin[1],hin[0],1'b0,d1);booth booth2(hin[3],hin[2],hin[1],d2);booth booth3(hin[5],hin[4],hin[3],d3);booth booth4(hin[7],hin[6],hin[5],d4);always@(d1 or d2 or d3 or d4 or x or reset) begin if(!reset) begin part1=0; part2=0; part3=0; part4=0; temp=0; end else begin case(d1) //第一個部分積 3'b000: begin part1=0; temp[1:0]=0; end //當booth編碼為0時輸出為0 3'b001: begin part1[8:0]=x; part1[9]=x[8]; temp[1:0]=0; end //當booth編碼為1時輸出為x 3'b010: begin part1[9:1]=x; part1[0]=0; temp[1:0]=0; end //當booth編碼為2時輸出為左移后的x 3'b110: begin part1[9:1]=~x; part1[0]=0; temp[1]=1; temp[0]=0; end //當booth編碼為-忒時輸出為取反后的x,且temp高位為1 3'b111: begin part1[8:0]=~x; part1[9]=~x[8]; temp[0]=1; temp[1]=0; end //當booth編碼為-1時輸出為取反后的x,且temp低位為1 default: begin part1=0; temp[1:0]=0; end endcase case(d2) //第二個部分積 3'b000: begin part2=0; temp[3:2]=0; end 3'b001: begin part2[8:0]=x; part2[9]=x[8]; temp[3:2]=0; end 3'b010: begin part2[9:1]=x; part2[0]=0; temp[3:2]=0; end 3'b110: begin part2[9:1]=~x; part2[0]=0; temp[3]=1; temp[2]=0; end 3'b111: begin part2[8:0]=~x; part2[9]=~x[8]; temp[2]=1; temp[3]=0; end default: begin part2=0; temp[3:2]=0; end endcase case(d3) //第三個部分積 3'b000: begin part3=0; temp[5:4]=0; end 3'b001: begin part3[8:0]=x; part3[9]=x[8]; temp[5:4]=0; end 3'b010: begin part3[9:1]=x; part3[0]=0; temp[5:4]=0; end 3'b110: begin part3[9:1]=~x; part3[0]=0; temp[5]=1; temp[4]=0; end 3'b111: begin part3[8:0]=~x; part3[9]=~x[8]; temp[4]=1; temp[5]=0; end default: begin part3=0; temp[5:4]=0; end endcase case(d4) //第四個部分積 3'b000: begin part4=0; temp[7:6]=0; end 3'b001: begin part4[8:0]=x; part4[9]=x[8]; temp[7:6]=0; end 3'b010: begin part4[9:1]=x; part4[0]=0; temp[7:6]=0; end 3'b110: begin part4[9:1]=~x; part4[0]=0; temp[7]=1; temp[6]=0; end 3'b111: begin part4[8:0]=~x; part4[9]=~x[8]; temp[6]=1; temp[7]=0; end default: begin part4=0; temp[7:6]=0; end endcase end endendmodule
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -