Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module fac(
- input x, y, ci,
- output z, co
- );
- assign {co, z} = x + y +ci;
- endmodule
- module bcd_add(
- input [3:0] x, y,
- input ci,
- output [3:0] z,
- output co
- );
- wire c1,c2,c3,c4,z1p,z2p,z3p,c2p,c3p;
- //de pe desen
- fac u0(
- .x(x[0]),
- .y(y[0]),
- .ci(ci),
- .z(z[0]),
- .co(c1)
- );
- fac u1(
- .x(x[1]),
- .y(y[1]),
- .ci(c1),
- .z(z1p),
- .co(c2)
- );
- fac u2(
- .x(x[2]),
- .y(y[2]),
- .ci(c2),
- .z(z2p),
- .co(c3)
- );
- fac u3(
- .x(x[3]),
- .y(y[3]),
- .ci(c3),
- .z(z3p),
- .co(c4)
- );
- assign co = (z1p & z2p) | (z2p & z3p) | c4;
- fac u4(
- .x(co),
- .y(z1p),
- .ci(1'b0),
- .z(z[1]),
- .co(c2p)
- );
- fac u5(
- .x(co),
- .y(z2p),
- .ci(c2p),
- .z(z[2]),
- .co(c3p)
- );
- assign z[3] = z3p ^ c3p;
- endmodule
- //-----------------------------------------------------------------------------
- module bcd_add_tb
- (
- output reg [3:0] x, y,
- output reg ci,
- output [3:0] z,
- output co
- );
- bcd_add test(
- .x(x),
- .y(y),
- .ci(ci),
- .z(z),
- .co(co)
- );
- integer i, j, k;
- initial begin
- {x,y,ci} = 9'd0;
- for(i = 0; i < 10; i = i+1)
- for(j = 0; j < 10; j = j+1)
- for(k = 0; k < 2; k = k+1)
- #100 {x,y,ci} = {i[3:0], j[3:0], k[0]};
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement