📄 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 + -