Thực hành thiết kế mạch số với HDL - Trường Đại học Bách Khoa

Mục lục



Buổi 1. Tổng quan về các phần mềm thiết kế trên FPGA . 7

I. Giới thiệu Board DE2 của Altera. 7

1. Giới thiệu. 7

2. Thành phần . 7

3. Một vài ứng dụng của board DE2 . 8

II. Cách cài đặt Quartus II 8.0 và Nios II . 9

1. Giới thiệu. 9

2. Cài đặt. 10

III. Cách nạp chương trình cho Quartus II 8.0:. 13

1. Tạo 1 project:. 13

2. Viết chương trình và biên dịch: . 17

3. Tạo file mô phỏng (simulate) và bắt đầu simulate . 22

4. Cấu hình chân và nạp lên board. 30

Buổi 2. Mạch tổ hợp và mạch tuần tự. 40

I. Giới thiệu . 40

1. Giới thiệu. 40

2. Hướng dẫn thiết kế FPGA thông qua sơ đồ khối/Schematic. 40

II. Bài tập . 46

Buổi 3. Lập trình Verilog với mô hình cấu trúc . 48

I. Giới thiệu ModelSim . 48

1. Giới thiệu. 48

2. Cài đặt. 48

3. Hướng dẫn . 58

II. Bài tập . 65

Buổi 4. Mô hình hành vi. 67

I. Bài tập . 67

Buổi 5. Mô hình hành vi (tt). 71

I. Bài tập . 71

Buổi 6. Máy trạng thái . 75

I. Giới thiệu . 75

1. Giới thiệu. 75

2. Hướng dẫn . 75

II. Bài tập . 83

pdf84 trang | Chuyên mục: Mạch Điện Tử | Chia sẻ: tuando | Lượt xem: 522 | Lượt tải: 0download
Tóm tắt nội dung Thực hành thiết kế mạch số với HDL - Trường Đại học Bách Khoa, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
iá trị từ các switch đó ra giá trị trên các led 7. Nếu giá trị của 
các switch là từ 10 đến 15 thì không cần quan tâm 
Bài 2. Hiện thực bộ giải mã 4 bit thập lục phân thành 2 số thập phân hiển thị trên 
led 7: 
- Tín hiệu nhập là các switch SW[0:3] 
- Tín hiệu xuất là các led 7 HEX0, HEX1 
- Hoạt động theo bảng thực trị sau: 
Hình 96. Bảng thực trị 
ĐH. Bách Khoa TP.HCM Khoa KH&KTMT 
Thực hành thiết kết mạch số với HDL 72 KTMT 
Hình 97. Sơ đồ kết nối mạch 
Hướng dẫn: 
- Thiết kế bộ so sánh: Comparator, sử dụng để kiểm tra liệu tín hiệu nhập 
v3v2v1v0 có lớn hơn 9 hay không. Nếu giá trị nhập lớn hơn 9 thì tín hiệu 
output của bộ so sánh này, z, có tín hiệu là 1 và trực tiếp điểu khiển các bộ 
chọn 2-to-1 (Multiplexer) và điều khiển led7 thứ 2. 
- Thiết kế mạch A, nhận tín hiệu nhập v2v1v0 và tín hiệu xuất là bằng tín hiệu 
nhập trừ đi 2. 
- Thiết kế bộ decode7 nhận tín hiệu là m3m2m1m0 và giải mã ra led7 
- Thiết kế bộ mạch B mạch này điều khiển led7 thứ 2, nếu tín hiệu nhập là 1 thì 
tín hiệu xuất là giá trị 1 trên led7. Ngược lại hiển thị giá trị 0 trên led7 
Bài 3. Hiện thực bộ cộng 4 bit (4bit-Full-Adder) từ các bộ cộng 2 bit (2bit-Full-
Adder) 
- Tín hiệu nhập là các switch SW[0:3], SW[4:7], và tín hiệu carry-in là SW[8] 
- Tín hiệu xuất là các led đơn LEDR[0:3], carry-out là LEDR[4] 
Hướng dẫn: 
ĐH. Bách Khoa TP.HCM Khoa KH&KTMT 
Thực hành thiết kết mạch số với HDL 73 KTMT 
- Hiện thực các mạch cộng 2bit-Full-Adder theo mạch sau 
Hình 98. Bảng thực trị và sơ đồ kết nối mạch 
- Kết nối 4 mạch cộng 2bit-Full-Adder thành mạch cộng 4bit-FullAdder theo sơ 
đồ sau 
Hình 99. Mạch cộng 4-bit Full-Adder 
Bài 4. Hiện thực bộ cộng đầy đủ 4 bit BCD (từ 0 đến 9) với đặc tả sau: 
- Tín hiệu nhập là SW[0:3] (A) và SW[4:7] (B), carry-in SW[8] (C), các tín 
hiệu nhập A, B được nối với các led đơn LEDR[0:3], LEDR[4:7] đồng thời 
được hiển thị giá trị lên led 7 đoạn là HEX6 và HEX4. C được nối với 
LEDR[8]. 
- Tín hiệu xuất (kết quả phép cộng) được nối với LEDG[0:3] (S) đồng thời 
được hiển thị lên 2 led7 là HEX1 và HEX0, và carry-out(Co) được nối với 
LEDG[4]. 
Bài 5. Hiện thực bộ chuyển đổi 6-bit nhị phân sang 2 số thập phân và hiển thị 
trên 2 led7 đoạn 
Bài 6. Hiện thực một chương trình verilog thực hiện các chức năng sau: 
- Cho phép nhập vào 2 số 16 bit, và sau đó hiển thị giá trị (thập lục phân) của 2 
số này lên led 7 đoạn 
ĐH. Bách Khoa TP.HCM Khoa KH&KTMT 
Thực hành thiết kết mạch số với HDL 74 KTMT 
- Tín hiệu nhập là SW[0:15], SW[16] cho phép quyết định nhập số nào (số thứ 
nhất hay số thứ 2). Sau đó hiển thị 2 số này lên led 7, số đầu tiên lên HEX0, 
HEX1, HEX2, HEX3. Số thứ 2 lên 4 led 7 còn lại. 
Bài 7. Hiện thực bộ đếm BCD, cho phép tăng giá trị nội dung biến đếm cứ mỗi 
giây một lần 
- Tín hiệu KEY0 là tín hiệu reset (xóa giá trị đếm xuống 0) 
- Các số BCD sẽ được hiển thị lên 3 led 7 HEX2-0 
Bài 8. Hiện thực mạch trên board DE2, hiển thị thông tin ngày tháng năm 
- Tín hiệu KEY0 là tín hiệu reset (xóa tất cả giá trị xuống 0) 
- Hiển thị thông tin lên các led7 đoạn. 
o Giờ: (giá trị từ 0 đến 23) hiển thị ở HEX7-6 
o Phút: (giá trị từ 0 đến 59) hiển thị ở HEX5-4 
o Giây: (giá trị từ 0 đến 59) hiển thị ở HEX3-2 
o Sao: (= 1/100 giây, giá trị từ 0 đến 99) hiển thị ở HEX1-0 
ĐH. Bách Khoa TP.HCM Khoa KH&KTMT 
Thực hành thiết kết mạch số với HDL 75 KTMT 
Buổi 6. Máy trạng thái 
Mục đích: 
 Thiết kế sử dụng mô hình máy trạng thái 
 Cũng cố kiến thức lý thuyết về các máy trạng thái Moore và Mealy 
 Biết cách xây dựng mạch từ các máy trạng thái 
 Nắm vững kỹ thuật rút gọn một máy trạng thái 
I. Giới thiệu 
1. Giới thiệu 
Quy trình thiết kế FPGA thông thường khá phức tạp đòi hỏi người thiết kế 
phải thông qua khá nhiều bước phức tạp. Máy trạng thái là một trong những bước 
trung gian giúp cho quá trình thiết kế và hiện thực code verilog trở nên dễ dàng 
hơn đối với người lập trình. Thông thường có 2 dạng máy trạng thái: Moore và 
Mealy. Tuy nhiên trong Quartus chỉ hổ trỡ máy trạng thái Moore. Bài thực hành 
này sẽ giúp các bạn sinh viên tiếp cận với cách thiết kế HDL theo cách thức này. 
2. Hướng dẫn 
Để tạo một máy trạng thái các bạn thực hiện các bước sau: 
Bước 1. Mở Quartus và tạo mới một project (cách tạo như đã trình bày trong buổi 
đầu tiên) 
Bước 2. Kế tiếp bạn vào File -> New hoặc nhấp vào biểu tượng trên thanh công 
cụ, để tạo mới một file 
ĐH. Bách Khoa TP.HCM Khoa KH&KTMT 
Thực hành thiết kết mạch số với HDL 76 KTMT 
Hình 100. Tạo file máy trạng thái 
Bước 3. Trong cửa sổ tạo mới file bạn chọn loại State Machine file, sau đó nhấn 
OK. Cửa sổ soạn thảo sẽ xuất hiện như hình vẽ 
ĐH. Bách Khoa TP.HCM Khoa KH&KTMT 
Thực hành thiết kết mạch số với HDL 77 KTMT 
Hình 101. Cửa sổ làm việc 
Bước 4. Dưới đây là một vài công cụ hỗ trợ cho việc thiết kế một máy trạng thái có 
trên thanh công cụ 
a. (Selection tool): Công cụ lựa chọn các thành phần trong máy trạng thái 
b. (Zoom tool): Công cụ phóng to hay thu nhỏ. 
c. (State tool): Công cụ vẽ trạng thái 
d. (Transition tool): Công cụ vẽ đường chuyển trạng thái 
e. (State table): Công cụ ẩn/hiện bảng trạng thái 
f. (State machine wizard): Công cụ tạo máy trạng thái băng cửa sổ wizard 
g. (Insert input port): công cụ thêm cổng nhập 
h. (Insert output port): công cụ thêm cổng xuất 
i. (Generate HDL file): Công cụ chuyển máy trạng thái thành code verilog, 
HDL, 
j. (Transition Equation): Công cụ ân/hiện biểu thức trên các cạnh chuyển trạng 
thái 
Các bước tiếp theo sẽ là quy trình tạo ra một máy trạng thái có khả năng nhận 
diện chuỗi 2 bit 1 liên tiếp. Sau đó chuyển file này thành code verilog. 
Bước 5. Bạn nhấp vào công cụ (State tool) sau đó vẽ 3 trạng thái như hình vẽ 
Cửa sổ project 
Cửa sổ làm việc 
Thanh công cụ 
ĐH. Bách Khoa TP.HCM Khoa KH&KTMT 
Thực hành thiết kết mạch số với HDL 78 KTMT 
Hình 102. Tạo các trạng thái 
Bước 6. Tiếp theo bạn nhấp vào công cụ (Transition tool) và drag chuột từ trạng 
thái này đến trạng thái state1 đến trạng thái state2 để hình thành đường chuyển 
trạng thái từ trạng thái state1 sang trạng thái state2. Tương tự ta vẽ được máy 
trạng thái như hình vẽ (trường hợp nếu vẽ đường chuyển trạng thái vào chính nó 
thì chỉ cần chọn công cụ transition tool, sau đó nhấp chuột trái vào trạng thái đó). 
Hình 103. Tạo các đường chuyển trạng thái 
ĐH. Bách Khoa TP.HCM Khoa KH&KTMT 
Thực hành thiết kết mạch số với HDL 79 KTMT 
Bước 7. Tiếp theo bạn nhấp vào biểu tượng (Insert input port) để thêm một tín 
hiệu nhập và click vào biểu tượng (Insert output port) để thêm một tín hiệu 
xuất 
Bước 8. Nhấp vào biểu tượng (State table) để hiển thị bảng trạng thái (nếu bảng 
này đã bị ẩn đi). Trong cửa sổ trạng thái này chọn tab Transition (xem hình) 
Hình 104. Thiết lập biểu thức chuyển trạng thái 
Bước 9. Nhập tín hiệu tên tín hiệu nhập vào (input1). Trường hợp nếu đường 
chuyển trạng thái này chỉ bị ảnh hưởng bởi duy nhất một tín hiệu nhập (input1) 
thì: 
a. Nếu chuyển trạng thái xảy ra khi gặp một tín hiệu 0 thì nhập tên tín hiệu đó vào 
(input1) 
b. Nếu chuyển trạng thái xảy ra khi gặp tín hiệu nhập là 1 thì nhập tên tín hiệu đó và 
phía trước có dấu ~ (~input1, đảo tín hiệu input1) 
Trường hợp đường chuyển trạng thái bị ảnh hưởng bới nhiều tín hiệu thì thêm 
dấu & giữa các tín hiệu đó (ví dụ: input1 & input2). 
Bước 10. Tương tự như vậy đối với các đường chuyển trạng thái khác. 
Bước 11. Kế tiếp bạn chọn trạng thái state1 sau đó nhấp chuột phải chọn properties. 
Cửa sổ properties sẽ xuất hiện, bạn chọn tab Action (xem hình) 
ĐH. Bách Khoa TP.HCM Khoa KH&KTMT 
Thực hành thiết kết mạch số với HDL 80 KTMT 
Hình 105. Thiết lập tín hiệu xuất và action của mỗi trạng thái 
Bước 12. Trong cột Output Port bạn chọn tín hiệu xuất, ở cột Output Value bạn thiết 
lập giá trị xuất ra cho trạng thái đó. Sau đó nhấn OK 
Bước 13. Lặp lại thao tác này cho 2 trạng thái còn lại. 
a. State1: Output Port là output1, và Output Value là 0 
b. State2: Output Port là ouput1, và Output Value là 0 
c. State3: Output Port là output1, và Output Value là 1 
Bước 14. Cuối cùng bạn sẽ được máy trạng thái như hình vẽ: 
Hình 106. Máy trạng thái 
ĐH. Bách Khoa TP.HCM Khoa KH&KTMT 
Thực hành thiết kết mạch số với HDL 81 KTMT 
Bước 15. Nhấn Ctrl + S, hoặc nhấp vào biểu tượng trên thanh công cụ để lưu lại 
máy trạng thái này với tên là Machine11.smf. Tiếp theo bạn nhấn vào biểu tượng 
(Generate HDL file) trên thanh công cụ. Khi bản thông báo sinh file HDL xuất 
hiện bạn nhấp vào lựa chọn Verilog HDL sau đó nhấn OK, Quartus sẽ sinh ra một 
file Verilog (Machine11.v) từ sơ đồ máy trạng thái này. 
Hình 107. Chuyển máy trạng thái sang định dạng của ngôn ngữ thiết kết phần cứn 
ĐH. Bách Khoa TP.HCM Khoa KH&KTMT 
Thực hành thiết kết mạch số với HDL 82 KTMT 
Hình 108. Code verilog được tạo ra từ máy trạng thái 
Bước 16. Kế tiếp bạn tạo một file mới bằng cách nhấp vào biểu tượng để tạo ra 
một file verilog mới. File này sẽ là file chính của project nó sẽ sử dụng linh kiện 
Machine11 đã tao ra như là một thiết bị bình thương. 
Bước 17. Hoàn tất code cho file verilog mới tạo ra này (xem code). 
ĐH. Bách Khoa TP.HCM Khoa KH&KTMT 
Thực hành thiết kết mạch số với HDL 83 KTMT 
Hình 109. Chương trình chính 
Bước 18. Lưu lại file này với tên trùng với tên của project, đồng thời nhấp chuột 
phải vào file và chọn lựa chọn Set as Top-Level Entity. 
Hình 110. Thiết lập top-level 
Bước 19. Import file cấu hình chân DE2_pin_assignment.csv cho project như đã 
hướng dẫn ở những phần trước. Sau đó biên dịch và nạp xuống board DE2 để 
kiểm thử. 
II. Bài tập 
Bài 1. Cho sơ đồ máy trạng thái sau: 
ĐH. Bách Khoa TP.HCM Khoa KH&KTMT 
Thực hành thiết kết mạch số với HDL 84 KTMT 
Hình 111. Lưu đồ trạng thái 
a. Hãy hiện thực máy chuyển trạng thái này lên DE2 
b. Hãy vẽ bảng trạng thái và sở dồ mạch của máy trạng thái trên. 
Bài 2. Thiết kế một mạch tuần tự cho phép kiểm tra chuỗi “1001”. Và hiện thực 
nó lên board DE2 để kiểm thử. 

File đính kèm:

  • pdfthuc_hanh_thiet_ke_mach_so_voi_hdl_truong_dai_hoc_bach_khoa.pdf