1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo thực tập môn thực tập thiết kế hệ thốngvà vi mạch tích hợp

18 3 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết Kế Mạch Cộng Và Mạch Trừ Nhị Phân 4 Bit
Tác giả Ngô Minh Nhật
Người hướng dẫn Th.S Lê Minh Thành
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Thực Tập Thiết Kế Hệ Thống Và Vi Mạch Tích Hợp
Thể loại báo cáo thực tập
Năm xuất bản 2022
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 18
Dung lượng 1,55 MB

Nội dung

BÀI BÁO CÁO SỐ 1 THIẾT KẾ MẠCH CỘNG VÀ MẠCH TRỪ NHỊ PHÂN 4 BIT 1.. Thiết kế mạch cộng nhị phân 4 bit Cách thức thực hiện: Thiết kế mạch cộng nhị phân toàn phần 1 bit và ghép lại với nhau

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH

KHOA ĐIỆN- ĐIỆN TỬ

-BÁO CÁO THỰC TẬP MÔN: THỰC TẬP THIẾT KẾ HỆ THỐNG

VÀ VI MẠCH TÍCH HỢP

GVHD: Th.S Lê Minh Thành

Họ và tên: Ngô Minh Nhật MSSV: 20161346 Lớp: Thứ 7 - tiết 1 – 5

THÀNH PHỐ HỒ CHÍ MINH – Tháng 11 năm 2022

Trang 2

BÀI BÁO CÁO SỐ 1 THIẾT KẾ MẠCH CỘNG VÀ MẠCH TRỪ NHỊ PHÂN 4 BIT

1 Thiết kế mạch cộng nhị phân 4 bit

Cách thức thực hiện: Thiết kế mạch cộng nhị phân toàn phần 1 bit và ghép lại với nhau để tạo thành mạch cộng nhị phân toàn phần 4 bit

1.1 Thiết kế mạch cộng nhị phân toàn phần 1 bit

Sơ đồ khối:

Hình 1.1: Sơ đồ khối của mạch cộng nhị phân toàn phần 1 bit

A, B: Là 2 bit ngõ vào cộng (số hạng)

S: Tổng của 2 số A và B

Ci: Số nhớ vào

Co: Số nhớ ra

Bảng trạng thái:

Trang 3

0 1 1 0 1

Hình 1.2: Bảng trạng thái của mạch cộng toàn phần 1 bit

Từ bảng trạng thái, dùng định lý đại số Boole để rút gọn biểu thức logic:

S = �B�i + A��i + ��Ci + ABCi = �i (A⊕B) + Ci(� ⊕ �)

= Ci⊕ (A⊕B)

Co = AB�i+ �BCi + A�Ci+ ABCi = AB (�i+ Ci) + Ci (�B + A�)

= AB + Ci (A⊕B)

Sơ đồ logic:

Hình 1.3: Sơ đồ logic của mạch cộng nhị phân toàn phần 1 bit

Sơ đồ RTL:

Hình 1.4: Sơ đồ RTL của mạch cộng nhị phân toàn phần 1 bit

Trang 4

Chương trình mô tả phần cứng bằng ngôn ngữ Verilog:

module FullAdder(

input wire a,b,ci,

output wire s,co);

assign s = a^b^ci ;

assign co = ((a^b)&ci) | (a&b) ;

endmodule

1.2 Thiết kế mạch cộng nhị phân toàn phần 4 bit

Sơ đồ khối:

Hình 1.5: Sơ đồ khối của mạch cộng nhị phân toàn phần 4 bit

A0 – A3: 4 bit nhị phân của A

B0 – B3: 4 bit nhị phân của B

S0 – S3: Tổng của kết quả cộng nhị phân

Cin: số nhớ vào

Cout: số nhớ ra

Trang 5

Sơ đồ RTL:

Hình 1.6: Sơ đồ RTL của mạch cộng nhị phân toàn phần 4 bit

Chương trình mô tả phần cứng bằng ngôn ngữ Verilog:

module Adder_4bit(

input wire [3:0] A,

input wire [3:0] B,

input wire Cin,

output wire Cout,

output wire [3:0] Sum );

wire c1, c2, c3;

FullAdder add0 (A[0], B[0], Cin ,Sum[0],c1 ); FullAdder add1 (A[1], B[1], c1 ,Sum[1],c2 ); FullAdder add2 (A[2], B[2], c2 ,Sum[2],c3 ); FullAdder add3 (A[3], B[3], c3 ,Sum[3],Cout ); endmodule

Trang 6

Test bench:

module Testbench_add;

// Inputs

reg [3:0] A;

reg [3:0] B;

reg Cin;

// Outputs

wire Cout;

wire [3:0] Sum;

// Instantiate the Unit Under Test (UUT) Adder_4bit uut (

.A(A), B(B), Cin(Cin), Cout(Cout), Sum(Sum) );

initial begin

// Initialize Inputs

A = 0;

B = 0;

Cin = 0;

#10;

Trang 7

B=6;

Cin = 0;

#10;

A=9;

B=9;

Cin = 0;

#10;

A=8;

B=7;

Cin = 1;

#10;

A=9;

B=10;

Cin = 1;

#10;

A=15;

B=15;

Cin = 0;

// Add stimulus here end

endmodule

Trang 8

Hình 1.7: Các trường hợp mô phỏng

Xét 5 trường hợp:

Từ 0ns đến 10ns: A=0000, B=0000, Cin=0 thì Sum=0000 và Cout=0

Từ 10ns đến 20ns: A=1000, B=0110, Cin=0 thì Sum=1110 và Cout=0

Từ 20ns đến 30ns: A=1001, B=1001, Cin=0 thì Sum=0010 và Cout=1

Từ 30ns đến 40ns: A=1000, B=0111, Cin=1 thì Sum=0000 và Cout=1

Từ 40ns đến 50ns: A=1001, B=1010, Cin=1 thì Sum=0100 và Cout=1 Nhận xét về mạch cộng nhị phân toàn phần 4 bit: Mạch cộng 4 bit có tổng Sum của A và B tối đa là 4 bit Khi kết quá vượt quá 4 bit (5 bit) thì bit thứ 5 sẽ bị tràn sang Cout và Sum sẽ hiển thị 4 bit

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

2.1 Thiết kế mạch trừ nhị phân 4 bit cách 1

Cách thức thực hiện: Thiết kế mạch trừ nhị phân toàn phần 1 bit và ghép lại với nhau để tạo thành mạch trừ nhị phân toàn phần 4 bit

2.1.1 Thiết kế mạch trừ nhị phân toàn phần 1 bit

Sơ đồ khối:

Hình 2.1.1: Sơ đồ khối của mạch trừ nhị phân toàn phần 1 bit

Trang 9

A : Là số bị trừ

B : Là số trừ

D: Là hiệu của 2 số A và B

Bi: Bit mượn của hiệu trước đó

Bo: Số mượn

Bảng trạng thái:

Hình 2.1.2: Bảng trạng thái của mạch trừ toàn phần 1 bit

Trang 10

Sơ đồ logic:

Hình 2.1.3: Sơ đồ logic của mạch trừ nhị phân toàn phần 1 bit

Sơ đồ RTL:

Hình 2.1.4: Sơ đồ RTL của mạch trừ nhị phân toàn phần 1 bit

Trang 11

Chương trình mô tả phần cứng bằng ngôn ngữ Verilog:

module Tru_Toan_Phan(

input wire a,b,bi,

output wire d,bo);

assign d = a^b^bi ;

assign bo = ((~a+b)&bi) | (~a&b) ;

endmodule

2.1.2 Thiết kế mạch cộng nhị phân toàn phần 4 bit

Sơ đồ khối:

Hình 2.1.5: Sơ đồ khối của mạch trừ nhị phân toàn phần 4 bit

A1 – A4: 4 bit nhị phân của A

B1 – B4: 4 bit nhị phân của B

D1 – D4: Hiệu của kết quả A - B

Bin: Bit mượn của hiệu trước đó

Bout: Số mượn

Trang 12

Sơ đồ RTL:

Hình 2.1.6: Sơ đồ RTL của mạch trừ nhị phân toàn phần 4 bit

Chương trình mô tả phần cứng bằng ngôn ngữ Verilog:

module Mach_Tru_4bit(

input wire [3:0] A,

input wire [3:0] B,

input wire Bin,

output wire [3:0] D,

output wire Bout);

wire d1, d2, d3;

Tru_Toan_Phan tru0 (A[0], B[0], Bin,D[0],b1 ); Tru_Toan_Phan tru1 (A[1], B[1], b1 ,D[1],b2 ); Tru_Toan_Phan tru2 (A[2], B[2], b2 ,D[2],b3 ); Tru_Toan_Phan tru3 (A[3], B[3], b3 ,D[3],Bout); endmodule

Trang 13

Test bench:

module Techbench_tru;

reg [3:0] A;

reg [3:0] B;

reg Bin;

wire [3:0] D;

wire Bout;

Mach_tru_4bit uut (

.A(A), B(B), Bin(Bin), D(D),

.Bout(Bout) );

initial begin //Truong hop A > B

A = 8;B = 6;Bin = 0;#10;

A = 8;B = 6;Bin = 1;#10; //Truong hop A = B

A = 8;B = 8;Bin = 0;#10;

A = 8;B = 8;Bin = 1;#10; //Truong hop A < B

A = 6;B = 8;Bin = 0;#10;

Trang 14

A = 6;B = 8;Bin = 1;#10;

$stop;

end end

endmodule

Hình 2.1.7: Các trường hợp mô phỏng

Xét 6 trường hợp:

Từ 0ns đến 10ns: A = 8, B = 6, Bi = 0 thì D = 2 và Bout = 0

Từ 10ns đến 20ns: A = 8, B = 6, Bi = 1 thì D = 1 và Bout = 0

Từ 20ns đến 30ns: A = 8, B = 8, Bi = 0 thì D = 0 và Bout = 0

Từ 30ns đến 40ns: A = 8, B = 8, Bi = 1 thì D = -1 và Bout = 1

Từ 40ns đến 50ns: A = 6, B = 8, Bi = 0 thì D = -2 và Bout = 1

Từ 50ns đến 60ns: A = 6, B = 8, Bi = 1 thì D = -3 và Bout = 1

==> Nhận xét về kết quả mô phỏng: Các kết quả thu được đúng với bảng trạng thái của mạch trừ nhị phân toàn phần 4 bit Khi D là số dương thì Bout = 0 và ngược lại, khi D là số âm thì Bout = 1

Trang 15

2.2 Thiết kế mạch trừ nhị phân 4 bit cách 2 (cộng bù)

Sơ đồ khối:

Hình 2.2.1: Sơ đồ khối của mạch trừ nhị phân 4 bit

Sơ đồ RTL:

Hình 2.2.2: Sơ đồ RTL của mạch trừ nhị phân 4 bit

Chương trình mô tả phần cứng bằng ngôn ngữ Verilog: module Tru_toan_phan(

input wire a,b,bi,

output wire d,bo);

assign d = a^(~b)^bi ;

Trang 16

assign bo = ((a^(~b))&bi) | (a&(~b)) ;

endmodule

module Mach_tru_4bit_bu_2(

input wire [3:0] A,

input wire [3:0] B,

input wire Bin,

output wire [3:0] D,

output wire Bout );

wire d1, d2, d3;

Tru_toan_phan tru0 (A[0], B[0], 1’b1 ,D[0], 1’b1 ); Tru_toan_phan tru1 (A[1], B[1], 1’b1 ,D[1], 1’b1 ); Tru_toan_phan tru2 (A[2], B[2], 1’b1 ,D[2], 1’b1 ); Tru_toan_phan tru3 (A[3], B[3], 1’b1 ,D[3], 1’b1 ); endmodule

Test bench:

module Test;

reg [3:0] A; reg [3:0] B; reg Bin;

wire [3:0] D;

wire Bout;

Mach_tru_4bit_bu_2 uut ( A(A), B(B), Bin(Bin), D(D), Bout(Bout) );

Trang 17

initial begin

//Truong hop A>B

A = 6;B = 2;Bin = 0;#100;

A = 6;B = 2;Bin = 1;#100;

//Truong hop A<B

A = 3;B = 7;Bin = 0;#100;

A = 3;B = 7;Bin = 1;#100;

//Truong hop A=B

A = 5;B = 5;Bin = 0;#100;

A = 5;B = 5;Bin = 1;#100;

$stop;

end

endmodule

Hình 2.2.3: Các trường hợp mô phỏng

Xét 6 trường hợp:

Từ 0ns đến 100ns: A = 6, B = 2, Bin=0 thì D = 4 và Bout = 0

Từ 100ns đến 200ns: A = 6, B = 2, Bin=1 thì D = 3 và Bout = 0

Trang 18

Từ 200ns đến 300ns: A = 3, B = 7, Bin=0 thì D = -4 và Bout = 1

Từ 300ns đến 400ns: A = 3, B = 7, Bin=1 thì D = -5 và Bout = 1

Từ 400ns đến 500ns: A = 5, B = 5, Bin=0 thì D = 0 và Bout = 0

Từ 500ns đến 600ns: A = 5, B = 5, Bin=1 thì D = -1 và Bout = 1

Nhận xét: Các trường hợp mô phỏng cho ra kết quả D đúng bằng hiệu của hai số A và B Đối với các giá trị D là số lớn hơn hoặc bằng 0 thì Bout=0 còn đối với các giá trị D là số bé hơn 0 thì Bout=1

Ngày đăng: 16/11/2024, 15:12

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w