Professional Documents
Culture Documents
………………………………………………………………………………………………………………
1
1.2 Instances
module fulladder(
input a,
input b,
input cin,
output s,
output count
);
assign s = a^b^cin;
assign count = (a^b)&cin | (a&b) ;
endmodule
1.3 Top module
module fulladder4bit(
input [3:0] A, B,
2
output [4:0] S
);
wire c0, c1, c2;
fulladder F1 (A[0],B[0],1'b0,S[0],c0);
fulladder F2 (A[1],B[1],c0,S[1],c1);
fulladder F3 (A[2],B[2],c1,S[2],c2);
fulladder F4 (A[3],B[3],c2,S[3],S[4]);
endmodule
1.4 Testbench
module testfulladder;
// Inputs
reg [3:0] A;
reg [3:0] B;
// Outputs
wire [4:0] S;
3
#100;
A = 3;
B = 4;
// Wait 100 ns for global reset to finish
#100;
A = 7;
B = 9;
// Wait 100 ns for global reset to finish
#100;
// Add stimulus her
end
endmodule
1.5 Timing Diagram
• Từ 0ns đến 100ns ngõ vào A và B đều bằng 0 => ngõ ra S = 0, cờ nhớ S[4] = 0
• Từ 100ns đến 200ns ngõ vào A = 3 và B = 8 => ngõ ra S = 11, cờ nhớ S[4] = 0
• Từ 200ns trở về sau ngõ vào A = 7 và B = 9 => ngõ ra S = 0, cờ nhớ S[4] = 1
4
5
2.2 Instances
module FS_1B(
input a,
input b,
input bi,
output h,
output bo
);
assign h = (a^b)^bi ;
assign bo = ~a&b | bi&(~(a^b)) ;
endmodule
2.3 Top module
module FS_4B(
input [3:0] A,B,
output [3:0] H,
output c
);
wire c0 , c1, c2, c3 ;
FS_1B F1 ( A[0], B[0], 1'b0, H[0], c0);
FS_1B F2 ( A[1], B[1], c0, H[1], c1);
FS_1B F3 ( A[2], B[2], c1, H[2], c2);
FS_1B F4 ( A[3], B[3], c2, H[3], c);
endmodule
2.4 Testbench
module TestFS;
// Inputs
6
reg [3:0] A;
reg [3:0] B;
// Outputs
wire [3:0] H;
initial begin
// Initialize Inputs
A = 0;
B = 0;
end
endmodule
2.5 Timming Diagram
7
• Từ 0ns đến 100ns ngõ vào A = 0 và B = 0 => ngõ ra H = 0, c = 0
• Từ 100ns đến 200ns ngõ vào A = 5 và B = 3 => ngõ ra H = 2, c = 0
• Từ 200ns trở về sao ngõ vào A = 3 và B = 6 => ngõ ra H = -3, c = 1