Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module lab7_5(A,B, CARRY,ADDERS,WALLACE);
- input [7:0] A,B;
- output [15:0] CARRY,ADDERS,WALLACE;
- multiplier_8bit_carry M0 (A, B, CARRY[15:0]);
- multiplier_8bit_adders M1 (A,B,ADDERS[15:0]);
- multiplier_8bit_wallace M2 (A,B,WALLACE[15:0]);
- endmodule
- module fulladderr (a, b, ci, s, co);
- input a, b, ci;
- output co, s;
- wire d;
- assign d = a ^ b;
- assign s = d ^ ci;
- assign co = (b & ~d) | (d & ci);
- endmodule
- module fulladder (sum,carry,a,b,cin);
- input a, b, cin;
- output carry, sum;
- wire d;
- assign d = a ^ b;
- assign sum = d ^ cin;
- assign carry = (b & ~d) | (d & cin);
- endmodule
- module halfadder (sum,carry,a,b);
- input a,b;
- output sum,carry;
- assign sum=a^b;
- assign carry=a&b;
- endmodule
- module multiplier_8bit_carry (A, B, P);
- input [7:0] A, B;
- output [15:0] P;
- wire c01, c02, c03, c04, c05, c06, c07, c08;
- wire s02, s03, s04, s05, s06, s07, s08;
- wire c12, c13, c14, c15, c16, c17, c18, c19;
- wire s13, s14, s15, s16, s17, s18, s19;
- wire c23, c24, c25, c26, c27, c28, c29, c20;
- wire s24, s25, s26, s27, s28, s29, s20;
- wire c34, c35, c36, c37, c38, c39, c30, c31;
- wire s35, s36, s37, s38, s39, s30, s31;
- wire c45, c46, c47, c48, c49, c40, c41, c42;
- wire s46, s47, s48, s49, s40, s41, s42;
- wire c56, c57, c58, c59, c50, c51, c52, c53;
- wire s57, s58, s59, s50, s51, s52, s53;
- wire c67, c68, c69, c60, c61, c62, c63, c64;
- assign P[0] = A[0] & B[0];
- fulladderr F01 (A[1] & B[0], A[0] & B[1], 0, P[1], c01);
- fulladderr F02 (A[2] & B[0], A[1] & B[1], c01, s02, c02);
- fulladderr F03 (A[3] & B[0], A[2] & B[1], c02, s03, c03);
- fulladderr F04 (A[4] & B[0], A[3] & B[1], c03, s04, c04);
- fulladderr F05 (A[5] & B[0], A[4] & B[1], c04, s05, c05);
- fulladderr F06 (A[6] & B[0], A[5] & B[1], c05, s06, c06);
- fulladderr F07 (A[7] & B[0], A[6] & B[1], c06, s07, c07);
- fulladderr F08 (0, A[7] & B[1], c07, s08, c08);
- fulladderr F12 (s02, A[0] & B[2], 0, P[2], c12);
- fulladderr F13 (s03, A[1] & B[2], c12, s13, c13);
- fulladderr F14 (s04, A[2] & B[2], c13, s14, c14);
- fulladderr F15 (s05, A[3] & B[2], c14, s15, c15);
- fulladderr F16 (s06, A[4] & B[2], c15, s16, c16);
- fulladderr F17 (s07, A[5] & B[2], c16, s17, c17);
- fulladderr F18 (s08, A[6] & B[2], c17, s18, c18);
- fulladderr F19 (c08, A[7] & B[2], c18, s19, c19);
- fulladderr F23 (s13, A[0] & B[3], 0, P[3], c23);
- fulladderr F24 (s14, A[1] & B[3], c23, s24, c24);
- fulladderr F25 (s15, A[2] & B[3], c24, s25, c25);
- fulladderr F26 (s16, A[3] & B[3], c25, s26, c26);
- fulladderr F27 (s17, A[4] & B[3], c26, s27, c27);
- fulladderr F28 (s18, A[5] & B[3], c27, s28, c28);
- fulladderr F29 (s19, A[6] & B[3], c28, s29, c29);
- fulladderr F20 (c19, A[7] & B[3], c29, s20, c20);
- fulladderr F34 (s24, A[0] & B[4], 0, P[4], c34);
- fulladderr F35 (s25, A[1] & B[4], c34, s35, c35);
- fulladderr F36 (s26, A[2] & B[4], c35, s36, c36);
- fulladderr F37 (s27, A[3] & B[4], c36, s37, c37);
- fulladderr F38 (s28, A[4] & B[4], c37, s38, c38);
- fulladderr F39 (s29, A[5] & B[4], c38, s39, c39);
- fulladderr F30 (s20, A[6] & B[4], c39, s30, c30);
- fulladderr F31 (c20, A[7] & B[4], c30, s31, c31);
- fulladderr F45 (s35, A[0] & B[5], 0, P[5], c45);
- fulladderr F46 (s36, A[1] & B[5], c45, s46, c46);
- fulladderr F47 (s37, A[2] & B[5], c46, s47, c47);
- fulladderr F48 (s38, A[3] & B[5], c47, s48, c48);
- fulladderr F49 (s39, A[4] & B[5], c48, s49, c49);
- fulladderr F40 (s30, A[5] & B[5], c49, s40, c40);
- fulladderr F41 (s31, A[6] & B[5], c40, s41, c41);
- fulladderr F42 (c31, A[7] & B[5], c41, s42, c42);
- fulladderr F56 (s46, A[0] & B[6], 0, P[6], c56);
- fulladderr F57 (s47, A[1] & B[6], c56, s57, c57);
- fulladderr F58 (s48, A[2] & B[6], c57, s58, c58);
- fulladderr F59 (s49, A[3] & B[6], c58, s59, c59);
- fulladderr F50 (s40, A[4] & B[6], c59, s50, c50);
- fulladderr F51 (s41, A[5] & B[6], c50, s51, c51);
- fulladderr F52 (s42, A[6] & B[6], c51, s52, c52);
- fulladderr F53 (c42, A[7] & B[6], c52, s53, c53);
- fulladderr F67 (s57, A[0] & B[7], 0, P[7 ], c67);
- fulladderr F68 (s58, A[1] & B[7], c67, P[8 ], c68);
- fulladderr F69 (s59, A[2] & B[7], c68, P[9 ], c69);
- fulladderr F60 (s50, A[3] & B[7], c69, P[10], c60);
- fulladderr F61 (s51, A[4] & B[7], c60, P[11], c61);
- fulladderr F62 (s52, A[5] & B[7], c61, P[12], c62);
- fulladderr F63 (s53, A[6] & B[7], c62, P[13], c63);
- fulladderr F64 (c53, A[7] & B[7], c63, P[14], P[15]);
- endmodule
- module multiplier_8bit_adders (A, B, P);
- input [7:0] A, B;
- output [15:0] P;
- wire [7:0] m[7:0];
- wire [7:0] s[1:7];
- wire cout[1:7];
- assign m[0] = A & {8{B[0]}};
- assign m[1] = A & {8{B[1]}};
- assign m[2] = A & {8{B[2]}};
- assign m[3] = A & {8{B[3]}};
- assign m[4] = A & {8{B[4]}};
- assign m[5] = A & {8{B[5]}};
- assign m[6] = A & {8{B[6]}};
- assign m[7] = A & {8{B[7]}};
- adder_N_bits #(8) ex1({1'b0,m[0][7:1]},m[1],1'b0,s[1],cout[1]);
- adder_N_bits #(8) ex2({cout[1],s[1][7:1]},m[2],1'b0,s[2],cout[2]);
- adder_N_bits #(8) ex3({cout[2],s[2][7:1]},m[3],1'b0,s[3],cout[3]);
- adder_N_bits #(8) ex4({cout[3],s[3][7:1]},m[4],1'b0,s[4],cout[4]);
- adder_N_bits #(8) ex5({cout[4],s[4][7:1]},m[5],1'b0,s[5],cout[5]);
- adder_N_bits #(8) ex6({cout[5],s[5][7:1]},m[6],1'b0,s[6],cout[6]);
- adder_N_bits #(8) ex7({cout[6],s[6][7:1]},m[7],1'b0,s[7],cout[7]);
- assign P[0] = m[0][0];
- assign P[1] = s[1][0];
- assign P[2] = s[2][0];
- assign P[3] = s[3][0];
- assign P[4] = s[4][0];
- assign P[5] = s[5][0];
- assign P[6] = s[6][0];
- assign P[14:7] = s[7];
- assign P[15] = cout[7];
- endmodule
- module adder_N_bits #(parameter N=8)
- (input [N-1:0] A,B,
- input cin,
- output [N-1:0] S,
- output cout);
- assign {cout,S} = A + B + cin;
- endmodule
- module multiplier_8bit_wallace (A, B, P);
- input [7:0] A, B;
- output reg [15:0] P;
- reg p [7:0][7:0]; // array which stores the partial products
- wire [55:0] s ,c ; //iintermediate sum and carry
- integer i,j;
- always@(A, B) //x is multiplicand AND y is multiplier
- begin
- for ( i = 0; i <= 7; i = i + 1)
- for ( j = 0; j <= 7; j = j + 1)
- p[j][i] <= A[j] & B[i];
- end
- halfadder ha_11 ( (s[0]), (c[0]), (p[1][0]), ( p[0][1])); //P1
- fulladder fa_21 ( (s[1]), (c[1]), (p[2][0]), ( p[1][1]), ( (c[0]) ) );
- halfadder ha_21 ( (s[2]), (c[2]), (p[0][2]), ( s[1])); //P2
- fulladder fa_31 ( (s[3]), (c[3]), (p[3][0]), ( p[2][1]), ( c[1]) );
- fulladder fa_32 ( (s[4]), (c[4]), (p[1][2]), ( s[3]), ( c[2]) );
- halfadder ha_31 ( (s[5]), (c[5]), (p[0][3]), ( s[4])); //P3
- fulladder fa_41 ( (s[6]), (c[6]), (p[4][0]), ( p[3][1]), ( c[3]) );
- fulladder fa_42 ( (s[7]), (c[7]), (p[2][2]), (s[6]), ( c[4]) );
- fulladder fa_43 ( (s[8]), (c[8]), (p[1][3]), (s[7]), ( c[5]) );
- halfadder ha_41 ( (s[9]), (c[9]), (p[0][4]), ( s[8])); //P4
- fulladder fa_51 ( (s[10]), (c[10]), (p[5][0]), ( p[4][1]), ( c[6]) );
- fulladder fa_52 ( (s[11]), (c[11]), (p[3][2]), ( s[10]), ( c[7]) );
- fulladder fa_53 ( (s[12]), (c[12]), (p[2][3]), ( s[11]), ( c[8]) );
- fulladder fa_54 ( (s[13]), (c[13]), (p[1][4]), ( s[12]), ( c[9]) );
- halfadder ha_55 ( (s[14]), (c[14]), (p[0][4]), ( s[13])); //P5
- fulladder fa_61 ( (s[15]), (c[15]), (p[6][0]), ( p[5][1]), ( c[10]) );
- fulladder fa_62 ( (s[16]), (c[16]), (p[4][2]), ( s[15]), ( c[11]) );
- fulladder fa_63 ( (s[17]), (c[17]), (p[3][3]), ( s[16]), ( c[12]) );
- fulladder fa_64 ( (s[18]), (c[18]), (p[2][4]), ( s[17]), ( c[13]) );
- halfadder ha_61 ( (s[19]), (c[19]), (p[1][5]), ( s[18]));
- halfadder ha_42 ( (s[20]), (c[20]), (p[0][6]), ( s[19])); //P6
- fulladder fa_71 ( (s[21]), (c[21]), (p[7][0]), ( p[6][1]), ( c[15]) );
- fulladder fa_72 ( (s[22]), (c[22]), (p[5][2]), ( s[21]), ( c[16]) );
- fulladder fa_73 ( (s[23]), (c[23]), (p[4][3]), ( s[22]), ( c[17]) );
- fulladder fa_74 ( (s[24]), (c[24]), (p[3][4]), ( s[23]), ( c[18]) );
- fulladder fa_75 ( (s[25]), (c[25]), (p[2][5]), ( s[24]), ( c[19]) );
- fulladder fa_76 ( (s[26]), (c[26]), (p[1][6]), ( s[25]), ( c[20]) );
- halfadder ha_71 ( (s[27]), (c[27]), (p[0][7]), ( s[26])); //P7
- fulladder fa_81 ( (s[28]), (c[28]), (p[7][1]), ( p[6][2]), ( c[21]) );
- fulladder fa_82 ( (s[29]), (c[29]), (p[5][3]), ( s[28]), ( c[22]) );
- fulladder fa_83 ( (s[30]), (c[30]), (p[4][4]), ( s[29]), ( c[23]) );
- fulladder fa_84 ( (s[31]), (c[31]), (p[3][5]), ( s[30]), ( c[24]) );
- fulladder fa_85 ( (s[32]), (c[32]), (p[2][6]), ( s[31]), ( c[25]) );
- fulladder fa_86 ( (s[33]), (c[33]), (p[1][7]), ( s[32]), ( c[26]) );
- halfadder ha_81 ( (s[34]), (c[34]), (s[33]), ( c[27])); //P8
- fulladder fa_91 ( (s[35]), (c[35]), (p[7][2]), ( p[6][3]), ( c[28]) );
- fulladder fa_92 ( (s[36]), (c[36]), (p[5][4]), ( s[35]), ( c[29]) );
- fulladder fa_93 ( (s[37]), (c[37]), (p[4][5]), ( s[36]), ( c[30]) );
- fulladder fa_94 ( (s[38]), (c[38]), (p[3][6]), ( s[37]), ( c[31]) );
- fulladder fa_95 ( (s[39]), (c[39]), (p[2][7]), ( s[38]), ( c[32]) );
- fulladder fa_96 ( (s[40]), (c[40]), (s[39]), ( c[33]), ( c[34]) ); //P9
- fulladder fa_101 ( (s[41]), (c[41]), (p[7][3]), ( p[6][4]), ( c[35]) );
- fulladder fa_102 ( (s[42]), (c[42]), (p[5][5]), ( s[41]), ( c[36]) );
- fulladder fa_103 ( (s[43]), (c[43]), (p[4][6]), ( s[42]), ( c[37]) );
- fulladder fa_104 ( (s[44]), (c[44]), (p[3][7]), ( s[43]), ( c[38]) );
- fulladder fa_105 ( (s[45]), (c[45]), (s[44]), ( c[39]), ( c[40]) ); //P10
- fulladder fa_111 ( (s[46]), (c[46]), (p[7][4]), ( p[6][5]), ( c[41]) );
- fulladder fa_112 ( (s[47]), (c[47]), (p[5][6]), ( s[46]), ( c[42]) );
- fulladder fa_113 ( (s[48]), (c[48]), (p[4][7]), ( s[47]), ( c[43]) );
- fulladder fa_114 ( (s[49]), (c[49]), (s[48]), ( c[44]), ( c[45]) ); //P11
- fulladder fa_121 ( (s[50]), (c[50]), (p[7][5]), ( p[6][6]), ( c[46]) );
- fulladder fa_122 ( (s[51]), (c[51]), (p[5][7]), (s[50]), ( c[47]) );
- fulladder fa_123 ( (s[52]), (c[52]), (s[51]), (c[48]), ( c[49]) ); //P12
- fulladder fa_131 ( (s[53]), (c[53]), (p[7][6]), ( p[6][7]), ( c[50]) );
- fulladder fa_132 ( (s[54]), (c[54]), (s[53]), (c[51]), ( c[52]) ); //P13
- fulladder fa_141 ( (s[55]), (c[55]), (p[7][7]), (c[53]), ( c[54]) ); //P14
- always@(*)
- P <= {c[55],s[55],s[54],s[52],s[49],s[45],s[40],s[34],s[27],s[20],s[14],s[9],s[5],s[2],s[0],p[0][0]}; //p[0][0]=P0
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement