3-bit — Multiplier Verilog Code
// Stage 4 full_adder fa4 ( .a(c4), .b(pp2[2]), .cin(s3), .sum(product[3]), .cout(c6) );
module multiplier_3bit_structural ( input [2:0] a, input [2:0] b, output [5:0] product ); wire [2:0] pp0, pp1, pp2; // partial products wire c1, c2, c3, c4, c5, c6; wire s1, s2, s3, s4; 3-bit multiplier verilog code
// Full adder chain // Stage 1: pp0[1] + pp1[0] half_adder ha1 ( .a(pp0[1]), .b(pp1[0]), .sum(product[1]), .carry(c1) ); // Stage 4 full_adder fa4 (
// Generate partial products (AND gates) assign pp0 = a[2] & b[0], a[1] & b[0], a[0] & b[0]; assign pp1 = a[2] & b[1], a[1] & b[1], a[0] & b[1]; assign pp2 = a[2] & b[2], a[1] & b[2], a[0] & b[2]; module multiplier_3bit_structural ( input [2:0] a
// Stage 3 full_adder fa2 ( .a(s1), .b(pp1[2]), .cin(c2), .sum(product[2]), .cout(c4) );