Tải bản đầy đủ (.docx) (33 trang)

THIẾT kế mô PHỎNG MẠCH CỘNG 4BITS và XUẤT RA mã LED 7 đoạn (verilog và VHDL có code )

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.28 MB, 33 trang )

ĐỒ ÁN 2

THIẾT KẾ MÔ PHỎNG MẠCH CỘNG
4BITS VÀ XUẤT RA MÃ LED 7 ĐOẠN

MỤC LỤC

DANH MỤC HÌNH VẼ
CHƯƠNG 1:
1.1: Tổng quan về nguyên lý thiết kế Chip……………………………………...8
2.1:Thiế kế Top-down……………………………………………………………10
2.2:Thiết kế Bottom-down………………………….…………………………....11

CHƯƠNG II
2.1: cổng logic trong bộ Full adder 1 bit………………………………………..17
GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

1


CHƯƠNG I: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI THIẾT KẾ BỘ NHÂN
4 BIT
1. Giới thiệu đề tài và nguyên lý thiết kế Chip
1.1 Giới thiệu đề tài đồ án 2

Trong việc tính toán trong máy tính, những phép tính cơ bản thường sử dụng đó là
các phép tính cộng ,trừ, nhân, chia...Trong bài báo cáo này ta tìm hiểu và phân tích
về phép nhân 2 số 4 bit từ đó thiết kế mạch nhân 4 bit.
Cộng hai số nhị phân cũng tương tự như trong thập phân,tuy nhiên vì hệ nhị phân


chỉ có hai số 0 và 1 nên việc cộng cũng tương đối đơn giản.
1.2 Nguyên lý thiết kế Chip
GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

2


Nguyên lý thiết kế chip ICs số thường dựa trên quá trình “Basic platform
development flow”

Hình 1.1: Tổng quan về nguyên lý thiết kế Chip
Khi thực hiện một thiết kế ta cần phân tích, xác định các đặc tính kỹ thuật của IC số
bằng cách tìm hiểu xu hướng thị trường, các yêu cầu của khách hàng. Từ đó đưa ra
các đặc trưng (spec) của hệ thống, các thông số kỹ thuật: hoạt động của hệ thống
(performance), tiêu hao năng lượng (power dissipation), độ tin cậy, giá cả…
Trong quá trình thiết kế ta cần quan tâm:

Tối ưu hóa hệ thống: rút gọn các phần dư, mô tả không cần thiết.

Cần phân tích để tránh các tình huống, yếu tố có thể làm thay đổi hệ thống.
Ví dụ: cấu trúc các khối, phân tầng thiết kế,chiều dài dây nối, … có thể làm thay đổi
tần số hoạt động tối đa, công suất tiêu tán của chip…
Về mặt kỹ thuật ta cần quan tâm đến spec, và các thông số kỹ thuật khác: tần số
hoạt động, kích thước, công nghệ chế tạo.
Các hệ thống lớn thường được xây dựng lên bằng cách kế thừa các hệ thống nhỏ có
sẵn. Kết hợp và phát triển các hệ thống nhỏ để có được hệ thống lớn. Tập hợp các
hệ thống nhỏ này được lưu giữ trong thư viện. Đây chính là quá trình hình thành các
thư viện thiết kế (các library cell).

Ngoài các library cell, còn cần có thêm các thư viện công nghệ, các luật, quy tắc
thiết kế,…
2. Sơ đồ khối mạch thiết kế
GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

3


Hình 2.1 Sơ
đồ khối bộ
cộng 4 bits
xuất led 7 đoạn
CHƯƠNG II: TÌM HIỂU NGÔN NGỮ VERILOG/ VHDL
1. Một số khái niệm về Verilog
Verilog HDL là một ngôn ngữ mô tả phần cứng đa mục đích dễ học và dễ sử dụng.
Nó có cấu trúc đơn giản tương tự ngôn ngữ lập trình C. Đối với người thiết kế đã có
kinh nghiệm trong lập trình với ngôn ngữ C sẽ thấy dễ dàng khi học về Verilog.
Verilog cho phép người thiết kế mô tả thiết kế ở nhiều cấp độ: mô tả hành vi, mô tả
luồng dữ liệu, mô tả mức cổng, thanh ghi hoặc kết hợp giữa các mức này. Do đó
người thiết kế chỉ cần học một ngôn ngữ duy nhất cho nhiều loại thiết kế khác nhau.
Hầu hết các công cụ tổng hợp đều hỗ trợ ngôn ngữ Verilog. Do đó, Verilog ngày
càng trở nên phổ biến và là lựa chọn của các nhà thiết kế.
Tất cả các nhà sản xuất đều cung cấp thư viện VerilogHDL để tổng hợp cho thiết kế.
Nên việc sử dụng Verilog cho phép chúng ta lựa chọn nhà sản xuất.
2. Phương pháp thiết kế
Để dễ cho việc thiết kế người ta thường chia nhỏ công việc ra để giải quyết.
Sau khi chia nhỏ công việc cho thiết kế người ta có thể thực hiện thiết kế theo 2
phương pháp từ trên xuống (top-down) hoặc từ dưới lên (bottom-up).

Top-down là phương pháp thiết kế thực hiện thiết kế các khối top trước rồi mới thiết
kế các khối chính, cuối cùng mới thiết kế các khối cell lá (leaf cell). Top-down
GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

4


design đòi hỏi người thiết kế rất cẩn thận và tuân thủ chặt các nguyên tắc trong thiết
kế. Các module con được gọi khi chưa được thiết kế.

Hình 2.1 Mô tả phương pháp thiết kế Top-down
Bottom-up là phương pháp thiết kế mà trong đó ta sẽ xây dựng các khối nhỏ trước.
Sau đó các khối thiết kế lớn sẽ được xây dựng từ các khối thiết kế nhỏ này. Từng
bước xây dựng lên các khối cao hơn cho đến khi xây dựng lên được top module.

Hình 2.2 Mô tả về việc thiết kế Bottom-up
3. Các mức mô tả Logic
Trong Verilog ta có nhiều cấp độ mô tả:
Mô tả mức trạng thái (hành vi).
Mô tả mức luồng dữ liệu.
Mô tả mức cổng.
Mô tả mức Switch.

GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

5



Verilog cũng cho phép người thiết kế kết hợp bốn mức mô tả này trong cùng một
module.
Trong Verilog mỗi khối mô tả được gọi là một module. Trong một module ta có thể
gọi thể hiện của các module thấp hơn.
Verilog HDL :Là ngôn ngữ để thiết kế một hệ thống trong đó có thể có cả CPU.Các
khối (module) chức năng trong HLD được thực hiện song song, hoặc là tuần tự tùy
vào người lập trình.
4. Cấu trúc và các viết chương trình một module
4.1 Cấu trúc

1) Module
Verilog đưa ra một khái niệm là module. Module là một khối cơ bản được xây dựng
trong Verilog. Một module có thể là một thành phần hoặc một tập hợp các khối thiết
kế nhỏ hơn. Một module phải diễn tả, thể hiện được các giao tiếp bên ngoài cũng
như nội dung bên trong của khối. Nội dung này có thể được mô tả ở mức cấu trúc,
luồng dữ liệu hay mô tả hành vi.

Hình 3.1: Ví dụ về module đơn giản
Trên đây là một module nhỏ được mô tả gồm các phép tính logic đơn giản.

GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

6


Hình 3.2: Cấu trúc một module


Thông thường ta có cấu trúc của một module sẽ bao gồm các phần chính sau:
-Khai báo, định nghĩa module.
-Khai báo port xuất, nhập và tín hiệu bên trong module.
-Mô tả chức năng của module.
-Kết thúc module.
Phân tích ví dụ.

1

Trong module thì các port xuất nhập phải được khai báo bằng các từ khóa: “input”,

“output”.
1 Các tín hiệu bên trong của module cũng được khai báo ở dạng các “Register” hoặc
các “Net”.
1 Các “Register” được dùng cho các tín hiệu có khả năng tự lưu trữ dữ liệu.

GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

7


1

Các “Net” trong Verilog diễn tả một kết nối vật lý trong phần cứng. Nó có thể được
dùng để nối các module hay cổng lại với nhau, nhưng bản thân nó không thể tự lưu

1


trữ giá trị.
Một “wire” có thể được dùng bất cứ chỗ nào trong module, nó chỉ được gán bởi:

Ngõ ra của một module, cổng.

Gán với một phép gán liên tục.

Các phép gán liên tục được khai báo bằng lệnh “assign”. Tất cả các phép gán

liên tục đều được thực hiện đồng thời.
4.2 Các qui ước
Verilog hỗ trợ cho người thiết kế mô tả hệ thống ở nhiều cấp độ khác nhau.
Mức mô tả hành vi: Là cấp độ mô tả trừu tượng cao nhất. Module được hiện thực
trong các điều kiện mong muốn thiết kế về mặt logic. Mà không quan tâm đến việc
thực hiện về mặt phần cứng. Do vậy ở cấp độ thiết kế này Verilog sẽ giống với ngôn
ngữ C nhất.
Mức mô tả luồng dữ liệu: Ở mức này người thiết kế phải chỉ rõ luồng dữ liệu.
Người thiết kế phải hiểu được luồng dữ liệu giữa các thanh ghi, hiểu được dữ liệu sẽ
được xử lý như thế nào trong thiết kế.
Mức mô tả mức cổng: Module được thể hiện giới hạn mức cổng và sự kết nối giữa
các cổng
Mức mô tả Switch: Là mức mô tả cấp thấp nhất mà Verilog cung cấp. Module được
thực hiện dựa vào các điều khoảng của các switch, các storage nodes, và kết nối của
chúng.
4.3 Các phép tính
Là phần được dùng để mô tả các phép toán trong Verilog, trước khi đi sâu vào các
phép toán ta cần nắm sơ về toán hạng.
-Toán hạng
Toán hạng có thể là:

Con số; các net (bit hoặc phần bit được lựa chọn); các reg (bit hoặc phần bit chọn)
Giá trị trả về khi gọi một function.
-Toán tử
Các toán tử được hỗ trợ trong Verilog được miêu tả trong bảng sau
-Các phép toán số học :

+

;

-

;

*

;

/

-Các phép toán quan hệ (so sánh): < ; > ; <= ; >=; == ; !=
-Các phép toán logic : !
&& ||
-Toán tử rút gọn : & | ^
GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

8



-Kết hợp với toán tử not : ~&

~|

~^

Toán tử dịch

Dịch trái: <<

Dịch phải >>
Toán tử điều kiện:
Conditional_expression ? true_expression: false_expression

CHƯƠNG III: TÌM HIỂU NGUYÊN LÝ HOẠT ĐỘNG CỦA BỘ CỘNG 4
BITS XUẤT LED 7 ĐOẠN

>Giới thiệu chung
Bộ “Cộng xuất led 7 đoạn” là bộ cộng gồm 2 luồng dữ liệu 4 bit được cộng với
nhau bằng bộ FA(Full Adder) sau đó kết quả được xuất ra với sự hiển thị của led 7
đoạn.Bài báo cáo này sẽ tìm hiểu,đánh giá quá trình mộ phỏng đó thông qua phần
mềm Qaurtus II
Để hiển thị qua led 7 đoạn thì cần thông qua các khối sau:
GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

9



-Khối cộng FA(Full Adder)
-Khối “Bin-to_Dec”
-Khối “MUX”
-Khối “7seg Decoder”
1. Sơ đồ giải thuật

2. Nguyên lý hoạt động chính

Hình 2.1: cổng logic trong bộ Full adder 1 bit
GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

10


2.1 Nguyên lý hoạt động của bộ cộng (Full adder)
-Khối cộng full adder là khối tổ hợp thực hiện chức năng cộng giá trị 2 ngõ
vào có tính đến cờ nhớ.
Hình 3.5 Các cổng logic trong bộ Full adder 1 bit
-Khối cộng full-adder một bit có bảng sự thật sau
A

B

Cin

Cout S


0

0

0

0

0

0

0

1

0

1

0

1

0

0

1


0

1

1

1

0

1

0

0

0

1

1

0

1

1

0


1

1

0

1

0

1

1

1

1

1

-Dùng bìa Karnaugh rút gọn 2 ngõ ra S và Cout.
Ci
n

0

1

AB
00

01
11
10

1
1

1
1

GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

11


Hàm Cout sau khi rút gọn: Cout=AB+ACin+Bcin.
Biểu diễn dưới dạng cổng logic bằng ngôn ngữ verilog: Cout=A&B|A&Cin|
B&Cin

Ci
n

0

1

AB
00

01

1
1

11
10

1
1

Hàm S sau khi rút gọn:S=A⊕B⊕Cin.
Biểu diễn dưới dạng cổng logic bằng ngôn ngữ verilog:S=A^B^Cin.
2.2 Nguyên lý hoạt động của các khối còn lại
2.2.1 Khối Bin-to-Dec(btd)
Khối này có nhiệm vụ chuyển đổi 4 bit ngõ ra từ bộ cộng FA thành 5
bit.Nguyên tắc chuyển đổi nằm trong bảng sau

GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

12


Khi nhân được kết quả (kq)cộng từ ngõ ra của bộ cộng nếu kq<=9 thì bộ BINto-DEC (BtD) sẽ giữ nguyên kết quả của 4 bit đầu theo thứ tự từ LSBMSB bit
thứ 5 (MSB) sẽ là 0.Nếu 9đa là 15) thì bộ BtD sẽ trả lại giá trị 0 và bit MSB sẽ là 1
2.2.2. Khối BIN-to-DEC 1 (btd1)
Khối BtD1 cũng hoạt động tương tự như khối BtD nhưng sẽ chuyển đổi 2 bit

đầu của 4 bit ngõ ra của bộ cộng theo thứ tự từ LSBMSB.Bảng hoạt động của bộ
BtD1 như sau:

GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

13


2.3. Khối Mux 1
Khối Mux có nhiệm vụ “lựa chọn” luồng dữ liệu đầu ra từ 2 luồng dữ liệu của 2
bộ btd và btd1

Như trong hình 3 ta thấy việc “lựa chọn” được quyết định bằng bit nhớ C ngõ ra
của bộ cộng.Vậy ý nghĩa của việc “lựa chọn” này là gì?
Điều này có liên quan đến ngõ ra S của khối ADDER vì ngõ ra S chỉ có 4 bit nên
chỉ thể hiện mức cao nhất là 1111 (15) bit C sẽ ở mức 0. Khi vượt quá 15 thì bit C
sẽ được kích lên mức 1.
Trường hợp bit C bằng 0 thì ngõ ra của khối Mux là ngõ ra của khối btd ngược
lại nếu bit C bằng 1 thì ngõ ra khối Mux sẽ là ngõ ra của khối btd1
2.4 Khối led 7 đoạn

GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

14



Trong bài báo cáo này ta khảo sát led 7 đoạn anode chung. Khi set bit 1 thì các
đoạn led sẽ sáng còn ngược lại set bit 0 đoạn led sẽ tắt.
Mạch cộng xuất led sẽ sử dụng 2 khối led.Đặt tên là HEX 0 và HEX 1. Khối
HEX 1 sẽ hiển thị phần chục tức sẽ chỉ hiển thị 2 giá trị 0 và 1. Còn khối led còn lại
sẽ hiển thị phần đơn vị tức từ 09
2.5 Khối 7 seg Decoder
Khối này có nhiệm vụ chuyển đổi luồng dữ liệu từ khối Mux rồi xuất kết quả ra
khối led HEX 0

Khối HEX 0 là khối hiển thị giá trị đơn vị nên có bảng giá trị sau:

GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

15


2.6 Khối Mux 2
Có tác dụng điều khiển giá trị xuất ra khối led Hex 1

Ở đây chân Select của khối Mux được kết hợp bằng cách OR 2 ngõ ra C của bộ
cộng và bit thứ 5 của ngõ ra khối BtD

GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

16



GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

17


CHƯƠNG IV:VIẾT CODE MÔ TẢ MẠCH DÙNG PHẦN MÊM QUARTUS
Tất cả các thiết kế trong bài báo cáo này đều được viết dựa trên chương trình
Quartus II-phần mềm vừa có thể mô phỏng dạng mạch ban đầu vừa có thể kiểm tra
dạng sóng kết quả.
Thiết kế mạch nhân được chia làm hai phần.Đầu tiên là thiết kế khối FA sau đó đến
các cổng AND sau đó kết nối tất cả lại với nhau theo lưu đồ là hoàn thành mạch
nhân 4 bits.
1)Khối FA
Trước tiên mở chương trình Quartus II và tạo project mang tên FA

Hình 3.6 Tạo file FA để lập trình thiết kế bộ Full adder 1 bit
GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

18


Sau khi tạo xong project ta tiếp tục chọn File-New và chọn tạo file verilog để thiết
kế

Hình 3.7 Chọn Verilog HDL File

Kế tiếp là soạn thảo code cho khối FA và chạy chương trình.Sau khi dịch thành
công ta có mạch sau:

GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

19


Hình 3.9 Viết code bộ Full adder 1bit trên phần mềm quartus II

Hình 3.10 Bộ Full adder 1 bit
Vậy là ta đã thiết kế xong khối FA,kế đến ta sẽ thiết kế các cổng AND và kết nối
mạch
Code khối FA:
GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

20


module light(A,B,Cin,S,Cout);
input A,B;
input Cin;
output S,Cout;
assign S=A^B^Cin ;
assign Cout=(A&B)|(A&Cin)|(B&Cin);
endmodule


2)Khối FA 4bits

GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

21


Hình 3.11 Setup
Khởi tạo project xong ta lại chọn file verilog để thiết kế như trên
Kế tiếp là soạn thảo code và chạy chương trình.Sau khi dịch thành công ta có mạch
sau:

Hình 3.12 Viết code Bộ cộng 4bits
Code bộ cộng 4bits:
module FA4bit(A,B,Cin,S,Cout);
input [3:0]A,B;
input Cin;
output [3:0]S;
output Cout;
wire C0,C1,C2;

GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

22



light T1(A[0],B[0],Cin,S[0],C0);
light T2(A[1],B[1],C0,S[1],C1);
light T3(A[2],B[2],C1,S[2],C2);
light T4(A[3],B[3],C2,S[3],Cout);
endmodule
3) Khối bin-to-dec 1

Code khối bin to dec 1:
module btd1 (A,B);
input [3:0]A;
output [4:0]B;
reg [4:0]B;
always@(A)
begin
GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

23


if(A==0)

B=5'B00000;

else if(A==1)

B=5'B00001;


else if(A==2)

B=5'B00010;

else if(A==3)

B=5'B00011;

else if(A==4)

B=5'B00100;

else if(A==5)

B=5'B00101;

else if(A==6)

B=5'B00110;

else if(A==7)

B=5'B00111;

else if(A==8)

B=5'B01000;

else if(A==9)


B=5'B01001;

else if(A==10)

B=5'B10000;

else if(A==11)

B=5'B10001;

else if(A==12)

B=5'B10010;

else if(A==13)

B=5'B10011;

else if(A==14)

B=5'B10100;

else

B=5'B10101;

end
endmodule
4) Khối bin to dec 2


GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

24


Code khối bin to dec 2:
module btd2 (A,B);
input [1:0]A;
output [3:0]B;
reg [3:0]B;
always@(A)
begin
if(A==0)

B=4'B0110;

else if(A==1)

B=4'B0111;

else if(A==2)

B=4'B1000;

else

B=4'B1001;


end
endmodule
5) Khối Mux

GVHD: TS.VÕ PHÚ THOẠI – SVTH:

THÁI MINH NHỰT

25


×