Академический Документы
Профессиональный Документы
Культура Документы
/* First generate the propigate and generate signals for each bit */
wire [1:0] r1c16, r1c15, r1c14, r1c13, r1c12, r1c11, r1c10, r1c9;
wire [1:0] r1c8, r1c7, r1c6, r1c5, r1c4, r1c3, r1c2, r1c1;
/* First row */
wire [1:0] r2c15, r2c13, r2c11, r2c9, r2c7, r2c5, r2c3;
wire r2c1;
/* Second row */
wire [1:0] r3c15, r3c11, r3c7;
wire r3c3;
/* Third row */
wire [1:0] r4c15;
wire r4c7;
/* Fourth row */
wire r5c15, r5c11;
/* Fifth row */
wire r6c13, r6c9, r6c5;
/* Sixth row */
wire r7c14, r7c12, r7c10, r7c8, r7c6, r7c4, r7c2;
/* Generate Cout */
gray gcout(.pg(r1c16), .pg0(r5c15), .pgo(Cout));
endmodule
32 bit adder
module BrentKung32 (A, B, Cin, S, Cout);
input [31:0] A, B;
input Cin;
output [31:0] S;
output Cout;
/* First generate the propigate and generate signals for each bit */
wire [1:0] r1c32, r1c31, r1c30, r1c29, r1c28, r1c27, r1c26, r1c25;
wire [1:0] r1c24, r1c23, r1c22, r1c21, r1c20, r1c19, r1c18, r1c17;
wire [1:0] r1c16, r1c15, r1c14, r1c13, r1c12, r1c11, r1c10, r1c9;
wire [1:0] r1c8, r1c7, r1c6, r1c5, r1c4, r1c3, r1c2, r1c1;
/* First row */
wire [1:0] r2c31, r2c29, r2c27, r2c25, r2c23, r2c21, r2c19, r2c17;
wire [1:0] r2c15, r2c13, r2c11, r2c9, r2c7, r2c5, r2c3;
wire r2c1;
/* Second row */
wire [1:0] r3c31, r3c27, r3c23, r3c19, r3c15, r3c11, r3c7;
wire r3c3;
/* Third row */
wire [1:0] r4c31, r4c23, r4c15;
wire r4c7;
/* Fourth row */
wire [1:0] r5c31;
wire r5c15;
/* Fifth row */
wire r6c31, r6c23;
/* Sixth row */
wire r7c27, r7c19, r7c11;
/* Seventh row */
wire r8c29, r8c25, r8c21, r8c17, r8c13, r8c9, r8c5;
gray ir7c29(.pg(r2c29), .pg0(r7c27), .pgo(r8c29));
gray ir7c25(.pg(r2c25), .pg0(r6c23), .pgo(r8c25));
gray ir7c21(.pg(r2c21), .pg0(r7c19), .pgo(r8c21));
gray ir7c17(.pg(r2c17), .pg0(r5c15), .pgo(r8c17));
gray ir7c13(.pg(r2c13), .pg0(r7c11), .pgo(r8c13));
gray ir7c9(.pg(r2c9), .pg0(r4c7), .pgo(r8c9));
gray ir7c5(.pg(r2c5), .pg0(r3c3), .pgo(r8c5));
/* Eighth row */
wire r9c30, r9c28, r9c26, r9c24, r9c22, r9c20, r9c18, r9c16;
wire r9c14, r9c12, r9c10, r9c8, r9c6, r9c4, r9c2;
/* Generate Cout */
gray gcout(.pg(r1c32), .pg0(r6c31), .pgo(Cout));
endmodule
* Support cell library for adder circuits
*/
endmodule
endmodule
assign S = A ^ B;
endmodule
assign S = A ^ B;
endmodule
module pg16 (A, B, pg15, pg14, pg13, pg12, pg11, pg10, pg9, pg8, pg7, pg6,
pg5, pg4, pg3, pg2, pg1, pg0);
input [15:0] A, B;
output [1:0] pg15, pg14, pg13, pg12, pg11, pg10, pg9, pg8, pg7, pg6, pg5,
pg4, pg3, pg2, pg1, pg0;
endmodule
module pg32 (A, B, pg31, pg30, pg29, pg28, pg27, pg26, pg25, pg24, pg23,
pg22, pg21, pg20, pg19, pg18, pg17, pg16, pg15, pg14, pg13, pg12, pg11, pg10,
pg9, pg8, pg7, pg6, pg5, pg4, pg3, pg2, pg1, pg0);
input [31:0] A, B;
output [1:0] pg31, pg30, pg29, pg28, pg27, pg26, pg25, pg24, pg23, pg22,
pg21, pg20, pg19, pg18, pg17, pg16, pg15, pg14, pg13, pg12, pg11, pg10, pg9,
pg8, pg7, pg6, pg5, pg4, pg3, pg2, pg1, pg0;
endmodule
module tiehi(Y);
output Y;
assign Y = 1'b1;
endmodule
module tielo(Y);
output Y;
assign Y = 1'b0;
endmodule