?? multiplier_patial_product.v
字號:
//------------------------------------------------------
// file name : multiplier_patial_product
// module name : multiplier_patial_product.v
// author : hejun
// software : model sim
//------------------------------------------------------
`timescale 1ns/1ns
module multiplier_patial_product(
x,
y,
pp1,
pp2,
pp3
);
input [7:0] x;
input [7:0] y;
output [15:0] pp1;
output [15:0] pp2;
output [15:0] pp3;
wire [15:0] pp1;
wire [15:4] pp1_1;
wire [15:4] pp1_2;
wire [15:0] pp2;
wire [14:7] pp2_1;
wire [14:7] pp2_2;
wire [15:0] pp3;
wire [15:8] pp3_1;
wire [15:8] pp3_2;
wire [9:0] p;
wire [12:1] cout;
wire [12:1] cout_1;
wire [12:1] cout_2;
wire [15:0] shiftout_1;
wire [15:0] shiftout_2;
wire [15:0] shiftout_3;
assign p[0] = 1'b0;
assign p[8:1] = y[7:0];
assign p[9] = 1'b0;
multiplier_unit_4 multiplier_unit4_1(
.y (p[3:0]),
.x (x[3:0]),
.shiftin (2'b11 & {~p[3],~p[3]} | 2'b00 & {p[3],p[3]}),
.shiftout (shiftout_1[3:0]),
.cin (1'b0),
.pp (pp1[3:0]),
.cout (cout[1])
);
multiplier_unit_4 multiplier_unit4_2_1(
.y (p[3:0]),
.x (x[7:4]),
.shiftin (shiftout_1[3:2]),
.shiftout (shiftout_1[7:4]),
.cin (1'b0),
.pp (pp1_1[7:4]),
.cout (cout_1[2])
);
multiplier_unit_4 multiplier_unit4_2_2(
.y (p[3:0]),
.x (x[7:4]),
.shiftin (shiftout_1[3:2]),
.shiftout (shiftout_1[7:4]),
.cin (1'b1),
.pp (pp1_2[7:4]),
.cout (cout_2[2])
);
assign pp1[7:4] = cout[1]? pp1_2[7:4] : pp1_1[7:4];
assign cout[2] = cout[1]? cout_2[2] : cout_1[2];
multiplier_unit_4 multiplier_unit4_3_1(
.y (p[3:0]),
.x (4'b0),
.shiftin (shiftout_1[7:6]),
.shiftout (shiftout_1[11:8]),
.cin (1'b0),
.pp (pp1_1[11:8]),
.cout (cout_1[3])
);
multiplier_unit_4 multiplier_unit4_3_2(
.y (p[3:0]),
.x (4'b0),
.shiftin (shiftout_1[7:6]),
.shiftout (shiftout_1[11:8]),
.cin (1'b1),
.pp (pp1_2[11:8]),
.cout (cout_2[3])
);
assign pp1[11:8] = cout[2]? pp1_2[11:8] : pp1_1[11:8];
assign cout[3] = cout[2]? cout_2[3] : cout_1[3];
multiplier_unit_4 multiplier_unit4_4_1(
.y (p[3:0]),
.x (4'b0),
.shiftin (shiftout_1[11:10]),
.shiftout (shiftout_1[15:12]),
.cin (1'b0),
.pp (pp1_1[15:12]),
.cout (cout_1[4])
);
multiplier_unit_4 multiplier_unit4_4_2(
.y (p[3:0]),
.x (4'b0),
.shiftin (shiftout_1[11:10]),
.shiftout (shiftout_1[15:12]),
.cin (1'b1),
.pp (pp1_2[15:12]),
.cout (cout_2[4])
);
assign pp1[15:12] = cout[3]? pp1_2[15:12] : pp1_1[15:12];
assign cout[4] = cout[3]? cout_2[4] : cout_1[4];
/*
multiplier_unit_4 multiplier_unit4_5(
.y (p[6:3]),
.x (({x[0],2'b00,p[3]} & {~p[6],~p[6],~p[6],~p[6]}) | ({~x[0],2'b11,~p[3]} & {p[6],p[6],p[6],p[6]})),
.shiftin (2'b11 & {~p[6],~p[6]} | 2'b00 & {p[6],p[6]}),
.shiftout (shiftout_2[3:0]),
.cin (1'b0),
.pp (pp2[3:0]),
.cout (cout[5])
);
*/
assign pp2[0] = p[3];
assign pp2[1] = 1'b0;
assign pp2[2] = 1'b0;
multiplier_unit_4 multiplier_unit4_5(
.y (p[6:3]),
.x (x[3:0]),
.shiftin ((2'b11 & {~p[6],~p[6]}) | (2'b00 & {p[6],p[6]})),
.shiftout (shiftout_2[6:3]),
.cin (1'b0),
.pp (pp2[6:3]),
.cout (cout[5])
);
multiplier_unit_4 multiplier_unit4_6_1(
.y (p[6:3]),
.x (x[7:4]),
.shiftin (shiftout_2[6:5]),
.shiftout (shiftout_2[10:7]),
.cin (1'b0),
.pp (pp2_1[10:7]),
.cout (cout_1[6])
);
multiplier_unit_4 multiplier_unit4_6_2(
.y (p[6:3]),
.x (x[7:4]),
.shiftin (shiftout_2[6:5]),
.shiftout (shiftout_2[10:7]),
.cin (1'b1),
.pp (pp2_2[10:7]),
.cout (cout_2[6])
);
assign pp2[10:7] = cout[5]? pp2_2[10:7] : pp2_1[10:7];
assign cout[6] = cout[5]? cout_2[6] : cout_1[6];
multiplier_unit_4 multiplier_unit4_7_1(
.y (p[6:3]),
.x (4'b0),
.shiftin (shiftout_2[10:9]),
.shiftout (shiftout_2[14:11]),
.cin (1'b0),
.pp (pp2_1[14:11]),
.cout (cout_1[7])
);
multiplier_unit_4 multiplier_unit4_7_2(
.y (p[6:3]),
.x (4'b0),
.shiftin (shiftout_2[10:9]),
.shiftout (shiftout_2[14:11]),
.cin (1'b1),
.pp (pp2_2[14:11]),
.cout (cout_2[7])
);
assign pp2[14:11] = cout[7]? pp2_2[14:11] : pp2_1[14:11];
assign cout[7] = cout[6]? cout_2[7] : cout_1[7];
assign pp2[15] = p[6];
assign pp3[2:0] = 3'b000;
assign pp3[3] = p[6];
multiplier_unit_4 multiplier_unit4_10(
.y (p[9:6]),
.x ({x[1:0],2'b00}),
.shiftin (2'b11),
.shiftout (shiftout_3[7:4]),
.cin (1'b0),
.pp (pp3[7:4]),
.cout (cout[10])
);
multiplier_unit_4 multiplier_unit4_11_1(
.y (p[9:6]),
.x (x[5:2]),
.shiftin (shiftout_3[7:6]),
.shiftout (shiftout_3[11:8]),
.cin (1'b0),
.pp (pp3_1[11:8]),
.cout (cout_1[11])
);
multiplier_unit_4 multiplier_unit4_11_2(
.y (p[9:6]),
.x (x[5:2]),
.shiftin (shiftout_3[7:6]),
.shiftout (shiftout_3[11:8]),
.cin (1'b1),
.pp (pp3_2[11:8]),
.cout (cout_2[11])
);
assign pp3[11:8] = cout[10]? pp3_2[11:8] : pp3_1[11:8];
assign cout[11:8] = cout[10]? cout_2[11] : cout_1[11];
multiplier_unit_4 multiplier_unit4_12_1(
.y (p[9:6]),
.x ({2'b00,x[7:6]}),
.shiftin (shiftout_3[11:10]),
.shiftout (shiftout_3[15:12]),
.cin (cout[11]),
.pp (pp3_1[15:12]),
.cout (cout_1[12])
);
multiplier_unit_4 multiplier_unit4_12_2(
.y (p[9:6]),
.x ({2'b00,x[7:6]}),
.shiftin (shiftout_3[11:10]),
.shiftout (shiftout_3[15:12]),
.cin (cout[11]),
.pp (pp3_2[15:12]),
.cout (cout_2[12])
);
assign pp3[15:12] = cout[11]? pp3_2[15:12] : pp3_1[15:12];
assign cout[12] = cout[11]? cout_2[12] : cout_1[12];
endmodule
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -