You are on page 1of 10

Nhóm sinh viên thực hiện:

Lê Tiểu Đồng Mssv: 19161222


Huỳnh Quốc Hào Mssv: 19161229
Nguyễn Khắc Hiếu Mssv: 19161236
Hà Văn Hạo Mssv: 19161231
Đỗ Ngọc Điền Mssv: 19161221

………………………………………………………………………………………………………………

MÔN HỌC : THỰC TẬP THIẾT KẾ HỆ THỐNG VÀ VI MẠCH TÍCH


HỢP

BÁO CÁO BÀI TẬP


Mục Lục
1. Thiết kế mạch cộng nhị phân toàn phần 4 bit .................................................................................. 1
1.1 RTL .............................................................................................................................................. 1
1.2 Instances....................................................................................................................................... 2
1.3 Top module .................................................................................................................................. 2
1.4 Testbench ..................................................................................................................................... 3
1.5 Timing Diagram .......................................................................................................................... 4
2. Thiết kế mạch trừ nhị phân toàn phần 4 bit..................................................................................... 4
2.1 RTL .............................................................................................................................................. 4
2.2 Instances....................................................................................................................................... 6
2.3 Top module .................................................................................................................................. 6
2.4 Testbench ..................................................................................................................................... 6
2.5 Timming Diagram ....................................................................................................................... 7
1. Thiết kế mạch cộng nhị phân toàn phần 4 bit
1.1 RTL

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;

// Instantiate the Unit Under Test (UUT)


fulladder4bit uut (
.A(A),
.B(B),
.S(S)
);
initial begin
// Initialize Inputs
A = 0;
B = 0;
// Wait 100 ns for global reset to finish

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

2. Thiết kế mạch trừ nhị phân toàn phần 4 bit


2.1 RTL

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;

// Instantiate the Unit Under Test (UUT)


FS_4B uut (
.A(A),
.B(B),
.H(H),
.c(c)
);

initial begin
// Initialize Inputs
A = 0;
B = 0;

// Wait 100 ns for global reset to finish


#100;
A = 5;
B = 3;

// Wait 100 ns for global reset to finish


#100;
A = 3;
B = 6;

// Wait 100 ns for global reset to finish


#100;

// Add stimulus here

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

You might also like