Uploaded by Anh Hào Nguyễn

ky-thuat-so le-thi-kim-anh tn kts phan-ii kit-de2 rev5 - [cuuduongthancong.com]

advertisement
co
ng
.c
om
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN KỸ THUẬT ĐIỆN TỬ
th
an
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ
PHẦN II
cu
u
du
o
ng
THÍ NGHIỆM TRÊN KIT ALTERA - DE2
Revision 2
09/2017
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
MỤC LỤC
MỤC LỤC
MỤC LỤC ........................................................................................................................... I
LỜI NÓI ĐẦU ....................................................................................................................1
BÀI THÍ NGHIỆM 0: GIỚI THIỆU ...............................................................................2
I.
Giới thiệu Board DE2 của Altera .............................................................................2
II.
Cài đặt và sử dụng phần mềm Quatus II ..................................................................5
III.
Sample lab .............................................................................................................6
.c
om
BÀI THÍ NGHIỆM 1 .......................................................................................................32
I.
Thí nghiệm 1.1 – Tutorial: ......................................................................................33
II.
Thí nghiệm 1.2 ........................................................................................................33
BÀI THÍ NGHIỆM 2 .......................................................................................................35
Thí nghiệm 2.1 – Thiết kế bộ cộng 2 số 4-bit .........................................................36
II.
Lab 2.2 – Thiết kế bộ ALU 4-bit .............................................................................37
co
ng
I.
BÀI THÍ NGHIỆM 3 .......................................................................................................40
Thí nghiệm 3.1 – Bộ đếm mã BCD .........................................................................41
II.
Thí nghiệm 3.2 – Bộ đếm lên xuống thập phân từ 0 - 99 .......................................44
th
an
I.
BÀI THÍ NGHIỆM 4 .......................................................................................................45
ASIC/FPGA Design Flow .......................................................................................46
II.
Projects ...................................................................................................................46
du
o
ng
I.
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM .............................................51
cu
u
APPENDIX B – VHDL CODES CHO CÁC IC THÔNG DỤNG ...............................64
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 I
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
LỜI NÓI ĐẦU
LỜI NÓI ĐẦU
Các bài tập thí nghiệm cho sinh viên chính quy đại học Bách Khoa bắt buộc sử dụng ngôn
ngữ VHDL. Người đọc độc lập có thể sử dụng bất cứ ngôn ngữ nào quen thuộc nhất.
Trước khi tiến hành thí nghiệm, sinh viên cần đọc kỹ Bài thí nghiệm 0 để hiểu rõ thêm về
mục đích thí nghiệm và các ví dụ có sẵn.
Sinh viên được yêu cầu in các bài thí nghiệm trước khi đến phòng thí nghiệm.
Sinh viên phải hoàn thành các bài chuẩn bị thí nghiệm (Prelab) trước khi vào phòng
thí nghiệm.
.c
om
Đồng thời các bước từ thiết kế cho đến bước lập trình dùng VHDL của các bài thí
nghiệm nên được chuẩn bị tại nhà.
cu
u
du
o
ng
th
an
co
ng
Sinh viên khi làm báo cáo (report) phải tuân theo trình tự được đưa ra trong phần
Thiết kế của mỗi bài thí nghiệm và nộp chung với trang xác nhận hoàn thành các bài thí
nghiệm của giảng viên hướng dẫn.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 1
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
Chương này trình bày những thành phần cơ bản của kit Altera DE2 và một ví dụ đơn giản
mà trong đó người dùng sẽ sử dụng công cụ Quartus II để lập trình và giao tiếp với kit Altera
DE2.
I.
Giới thiệu Board DE2 của Altera
1. Giới thiệu
cu
u
du
o
ng
th
an
co
ng
.c
om
Board Altera DE2 như Hình 1 được thiết kế với nhiều tính năng đa dạng dựa trên số lượng
lớn các ngoại vi nhằm phục vụ cho các nghiên cứu khác nhau (ví dụ như: nghiên cứu và phát
triển về các lĩnh vực luận lý số học (digital logic), tổ chức máy tính (computer organization)
và FPGA). Trên kit này, một FPGA CHIP họ Cyclone II được tích hợp, và các ngõ vào/ra (IO)
của Chip được kết nối với tất cả các CHIP khác trên kit DE2 (như CHIP TV Decoder, Ethernet
10/100M Controller, SRAM..) nhằm giúp cho người dùng có thể thay đổi các ứng dụng hay
cấu hình nhằm mong muốn nhằm hướng đến một ứng dụng cụ thể.
Hình 1 Kit Altera DE2
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 2
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
2. Thành phần
Board DE2 cung cấp khá nhiều tính năng hỗ trợ cho việc nghiên cứu và phát triển, dưới
đây là thông tin chi tiết của một board DE2:
➢ FPGA:
- Vimạch FPGA Altera Cyclone II 2C35.
- Vi mạch Altera Serial Configuration – EPCS16.
th
an
co
ng
.c
om
➢ Các thiết bị xuất nhập:
- USB Blaster cho lập trình và điểu khiển API của người dùng; hỗ trợ cả 2
chế độ lập trình JTAG và AS.
- Bộ điều khiển Cổng 10/100 Ethernet.
- Cổng VGA-out.
- Bộ giải mã TV và cổng nối TV-in.
- Bộ điều khiển USB Host/Slave với cổng USB kiểu A và kiểu B.
- Cổng nối PS/2 chuột/bàn phím.
- Bộ giải mã / mã hóa âm thanh 24-bit chất lượng đĩa quang với jack cắm
line-in, line-out, và microphone.
- 2 Header mở rộng 40-pin với lớp bảo vệ diode.
- Cổng giao tiếp RS-232 và cổng nối 9-pin.
- Cổng giao tiếp hồng ngoại.
u
du
o
ng
➢ Bộ nhớ:
- SRAM 512-Kbyte.
- SDRAM 8-Mbyte.
- Bộ nhớ Flash 4-Mbyte (1 số mạch là 1-Mbyte).
- Khe SD card.
cu
➢ Switch, các đèn led, LCD, xung clock
- 4 nút nhấn, 18 nút gạt.
- 18 LED đỏ, 9 LED xanh, 8 Led 7 đoạn.
- LCD 16x2.
- Bộ dao động với tần số 50-MHz và 27-MHz.
Một số điểm lưu ý trong quá trình sử dụng Kit DE2 được mô tả như sau:
• Chỉ sử dụng nguồn 12 V DC.
• Chốt sử dụng cho lập trình (RUN/PROG Switch for JTAG/AS Modes) nên được thiết lập
ở chế độ “RUN” trước khi sử dụng cho các thực nghiệm trong tài liệu này.
• Chỉ dùng cổng USB Blaster (Sát bên cổng nguồn) để kết nối máy tính và lập trình.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 3
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
3. Một vài ứng dụng của board DE2
Hình 2 TV box
.c
om
➢ Ứng dụng làm TV box
du
o
ng
th
an
co
ng
➢ Chương trình vẽ bằng chuột USB (paintbrush)
u
Hình 3 Chương trình vẽ (paintbrush)
cu
➢ Máy hát Karaoke và máy chơi nhạc SD
Hình 4 Máy hát Karaoke và máy chơi nhạc từ card SD
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 4
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
II.
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
Cài đặt và sử dụng phần mềm Quatus II
ng
th
an
co
ng
.c
om
Phần mềm Quartus II được phát triển bởi công ty Altera là một trong những phần mềm đi
kèm với các thiết bị phần cứng của công ty này nhằm tạo nên giao diện tương tác giữa người
dùng và phần cứng (Kit). Người dùng có thể tải các phiên bản tại Website của công ty Altera
(https://www.altera.com) và nhận được bản quyền (license) miễn phí dành cho người đọc sau
khi hoàn tất các thủ tục đăng ký trên Website này. Các giao diện và cửa sổ cơ bản của phần
mềm được trình bày như Hình 5. Người dùng muốn tìm hiểu kỹ hơn về phiên bản đang sử
dụng có thể truy cập vào thanh công cụ hỗ trợ (“help”) trên giao diện.
du
o
Hình 5 Giao diện cơ bản Tool Quartus II
1. Cài đặt phần mềm Quartus II
cu
u
Phần mềm Quartus II được phát triển bởi công ty Altera là một trong những phần mềm đi
kèm với các thiết bị phần cứng của công ty này nhằm tạo nên giao diện tương tác giữa người
dùng. Người dùng có thể tìm kiếm trên Google hoặc Youtube các tài liệu hướng dẫn hay các
Video cài đặt một cách dễ dàng.
2. Hướng dẫn sử dụng phần mềm Quatus II
Các bước cần thực hiện:
• Bước 1: Tạo project, viết code VHDL của mạch cần thiết kế.
• Bước 2: Mô phỏng code VHDL (Verification Tools of Quartus / ModelSim) để kiểm
chứng chức năng của mạch.
• Bước 3: Tổng hợp code VHDL sử dụng công cụ của Altera – Quartus.
• Bước 4: Sử dụng công cụ Programmer của Quartus để thực hiện mạch trên FPGA.
• Bước 5: Sử dụng các ngoại vi (switch, nút nhấn, LED,…) để thay đổi ngõ vào và quan
sát các ngõ ra trên Kit DE2.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 5
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
III.
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
Sample lab
Thiết kế mạch điều khiển LED sử dụng các Switch trên kit FPGA DE2
1. Tạo project
Sau khi mở phần mềm Quartus, người dùng sẽ tạo một dự án (project) cho riêng mình. Sau
đây là từng bước để tạo một dự án:
du
o
ng
th
an
co
ng
.c
om
• Step 1: Trên thanh menu chọn File/New Project Wizard (như Hình 6) để bắt đầu quá
trình tạo project.
Hình 6 Tạo một dự án mới
cu
u
Sau đó một giao diện giới thiệu như Hình 7 xuất hiện nhấn Next để tiếp tục.
Hình 7 Giao diện giới thiệu
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 6
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
• Step 2: Đặt tên project và thiết lập đường dẫn đến thư mục làm việc của project.
Trong bước này bạn có thể đặt tên cho project của mình, và thiết lập đường dẫn đến thư mục
làm việc của project.
an
co
ng
.c
om
Trong Hình 8 thiết lập tên project là “test01” và đường dẫn đến thu mục làm việc của project
là “C:\altera\Project”. Bạn hoàn toàn có thể thay đổi thiết lập này nếu muốn.
Hình 8 Nhấn Next để tiếp tục sau khi thiết lập đường dẫn và tên dự án
th
• Step 3: Add Files
cu
u
du
o
ng
Trong bước này bạn có thể add thêm các file thiết kế trước đó nếu muốn (Lưu ý các file này
có thể add thêm vào project sau khi bạn hoàn thành quá trình tạo project). Nhấn Next để tiếp
tục quá trình.
Hình 9 Add file
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 7
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
Step 4: Chọn device cho project muốn thiết kế
co
ng
.c
om
•
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
an
Hình 10 Chọn họ và mã chip FPGA
th
Trong phần Family chọn dòng “Cyclone II” và trong phần Available device tìm và chọn dòng
“EP2C35F672C6” như Hình 10.
du
o
ng
Mã chip“EP2C35F672C6” là mã của dòng chip được thiết kế trên kít, mã này có ghi trên chip
FPGA của kít mà người dùng sử dụng. Nếu người dùng sử dụng kít khác thì phải xem họ của
chip FPGA và mã tương ứng.
u
→ Người đọc lưu ý phần mềm Quartus II là phần mềm dùng chung cho tất cả các chip FPGA,
việc chọn họ và mã tùy thuộc vào đối tượng ghip FPGA mà người dùng muốn sử dụng trên
kít.
cu
Ở đây, Hình 11 sẽ giải thích ý nghĩa của mã chip “EP2C35F672C6” mà chip này đang được
tích hợp trên kit Altera-DE2:
- EP2C: Mã cho họ Cyclone.
- 35: 35000 thành phần Les.
- F: Kiểu FPGA.
- 672: Số chân của FPGA CHIP.
- C: Tầm nhiệt độ.
- 6: Tốc độ.
Sau khi chọn device cho project nhấn Next để tiếp tục quá trình. Một giao diện thiết lập EDA
tool như Hình 12 xuất hiện chọn Next để tiếp tục. Đến đây một giao diện tóm tắt về thông tin
của project xuất hiện như Hình 13 nhấn Finish để hoàn thành quá trình.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 8
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
an
co
ng
.c
om
BỘ MÔN ĐIỆN TỬ
cu
u
du
o
ng
th
Hình 11 Giải thích mã FPGA CHIP học Cyclone II
Hình 12 Thiết lập cho EDA tool
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 9
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
ng
.c
om
BỘ MÔN ĐIỆN TỬ
• Step 5: Tạo file thiết kế cho project
co
Hình 13 Tóm tắt thông tin Project
cu
u
du
o
ng
th
an
Trên thanh menu chọn File → New như Hình 14. Một hộp hội thoại được mở ra, trong phần
Design File chọn VHDL File cho định dạng file thiết kế bằng ngôn ngữ VHDL như Hình 15
(hoặc Verilog HDL File cho định dạng file thiết kế bằng ngôn ngữ Verilog). Nhấn OK để
hoàn thành quá trình tạo file.
Hình 14 Tạo file thiết kế
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 10
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
co
ng
.c
om
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
Hình 15 Chọn định dạng VHDL/ Verilog file cho thiết kế
an
• Step 6: Viết code chương trình cho thiết kế bằng ngôn ngữ VHDL (hoặc Verilog)
du
o
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
u
entity test01 is
port (
SW: in std_logic_vector (1 downto 0) ;
LEDR : out std_logic_vector (1 downto 0)
);
end entity;
cu
➢
➢
➢
➢
➢
➢
➢
➢
➢
➢
➢
➢
➢
➢
➢
➢
ng
th
Đoạn code sau sử dụng ngôn ngữ VHDL để kết nối SW thứ 0 và thứ 1 trên kit DE2 đến các
LEDR thứ 0 và thứ 1 thông qua FPGA
architecture behavior of test01 is
begin
LEDR (1 downto 0) <= SW (1 downto 0) ;
end architecture;
Nếu sử dụng ngôn ngữ Verilog, chương trình có nội dung như sau
➢
➢
➢
➢
➢
module test01 (SW, LEDR);
input[1:0] SW;
output[1:0] LEDR;
➢
endmodule
assignLEDR = SW;
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 11
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
Tên của entity
trùng với tên của
project
co
ng
.c
om
Ví dụ tín hiệu SW
được chuyển đến
LEDR
an
Hình 16 Soạn thảo chương trình bằng ngôn ngữ VHDL
cu
u
du
o
ng
th
Sau khi hoàn thành thiết kế chọn File-> Save As để lưu file thiết kế. Lưu ý tên của file thiết kế
phải trùng với tên của project và file thiết kế phải cùng chung thư mục với project như Hình
17.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 12
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
ng
.c
om
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
➢
co
Hình 17 Lưu chương trình và đổi tên file giống tên project
an
• Step 7: Tiến hành gán pin cho thiết kế bằng cách import Assignments
du
o
ng
th
Bước này giúp phần mềm hiểu được các tên khai báo ngõ vào và ngõ ra. Trong ví dụ này phần
mềm hiểu ngõ vào được đặt tên “SW” sẽ trùng với tên ngõ vào “SW” của FPGA CHIP (Tham
khảo bảng file bảng tên chân - 01_DE2_Pin_Table.pdf) và ngõ ra LEDR cũng tương tự. Nếu
không có bước này khi chương trình được nạp lên kit sẽ không báo lỗi nhưng chương trình sẽ
không chạy được.
cu
u
Trên thanh menu chọn Assignments -> Import Assignments như Hình 18.
Hình 18 Tìm nạp file gán chân bằng công cụ Assigments
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 13
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
Một giao diện gán pin xuất hiện như Hình 19, chọn file gán pin để import.
co
ng
.c
om
Trong ví dụ này sẽ chọn file “03_DE2_pin_assignments” đi kèm với bộ tài liệu.
Hình 19 Giao diện gán pin từ file
cu
u
du
o
ng
th
an
Trường hợp người dùng thích đặt tên ngõ vào và ngõ ra không trùng với tên của các chân quy
định cho FPGA CHIP, người dùng phải gán chân bằng cách vào Assignments/Assignment
Editor như Hình 20. Một giao diện chỉnh sửa xuất hiện như Hình 21, trong này cột “To” là tên
đã được gán sẵn trong file “03_DE2_pin_assignments” được add vào ở bước trên có thể sửa
tên trong cột này thành tên trùng với tên tín hiệu trong file thiết kế.Tuy nhiên, cách này không
được khuyến khích vì vấn đề thời gian, không đồng nhất tên gọi dễ gây nhầm lẫn và gây lỗi.
Bước gán chân cần được thực hiện trước khi biên dịch và nạp chương trình ở các bước tiếp
theo sau đây.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 14
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
.c
om
BỘ MÔN ĐIỆN TỬ
cu
u
du
o
ng
th
an
co
ng
Hình 20 Tiến hành edit Assignment pin
Hình 21 Giao diện edit Assignment pin
• Step 8: Tiến hành biên dịch chương trình
Để tiến hành biên dịch chương trình chọn nút Start Compilation như Hình 22 hoặc chọn
Processing ->Start Compilation.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 15
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
ng
.c
om
Tiến hành biên dịch
sau khi gán pin
co
Hình 22 Tiến hành biên dịch chương trình bởi tác vụ nút Start Compilation
cu
u
du
o
ng
th
an
Quá trình biên dịch sẽ được tiến hành giống Hình 23. Sau khi biên dịch thành công chương
trình sẽ thông báo như Hình 24 trong đó chỉ có Warning và Info messages.
Hình 23 Tiến trình biên dịch chương trình
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 16
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
du
o
ng
th
an
co
ng
.c
om
BỘ MÔN ĐIỆN TỬ
u
Hình 24 Biên dịch thành công (chỉ có Warning và Info messagess)
cu
Đối với các thiết kế đơn giản và trong tài liệu này, người dùng có thể không cần quan tâm đến
các báo cáo kiểu “Warning”. Tuy nhiên với các thiết kế có quy mô lớn hay trong môi trường
công nghiệp, tất cả các báo cáo “Warning” luôn được kiểm tra và rà soát,một số lỗi tiềm ẩn sẽ
được phát hiện thông qua loại báo cáo này. Nhìn cửa số biên dịch “Compilation”, ý nghĩa các
bước trong quá trình biên dịch được mô tả:
+ Analysis & Synthesis: Phân tích lỗi cú pháp chương trình và biên dịch nội dung chương
trình sang dạng thông tin sao cho kit hiểu và chọn các LEs cũng như các phần cứng sẵn có cần
thiết.
+ Filter: Tiến hành thực biên dịch tạo các dạng thông tin kết nối, tối ưu các tài nguyên sử dụng
để có số LEs hay các thành phần khác nhỏ nhất có thể.
+ Assembler: Tiến hành biên dịch dạng dạng file mà phần cứng hiểu để tạo thiết kế cuối cùng.
Quá trình hợp dịch dựa vào kết quả của quá trình Fitter sẽ tạo ra hình ảnh của thiết kế, có thể
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 17
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
trong các dạng sau:Programmer Object Files (.pof), SRAM Object Files (.sof), Hexadecimal
(Intel-Format) Output Files (.hexout),Tabular Text Files (.ttf), and Raw Binary Files (.rbf),
+ TimeQuest Timing Analysis: Bước này cần các thiết lập trước đó mà không đề cập trong
tài liệu. Bước này sẽ tạo ra các báo cáo giúp người dùnghình dung được thiết kế của mình sẽ
chiếm bao nhiêu tài nguyên, chạy được với tần số tối đa là bao nhiêu,… Nói chung là những
thông số liên quan đến thuộc tính vật lý của thiết kế chứ không báo rằng thiết kế có chạy đúng
hay sai, có lỗi cú pháp hay không .
cu
u
du
o
ng
th
an
co
ng
.c
om
Nếu có lỗi cú pháp thì báo cáo kiểu “Error” sẽ được thể hiện ở Hình 25.
Hình 25 Thiết kế có lỗi và người đọc phải sửa lỗi thông qua những báo cáo Error ở cửa sổ
“Type Message”
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 18
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
co
ng
.c
om
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
an
Hình 26 Báo cáo tổng kết sau khi hoàn tất việc biên dịch
cu
u
du
o
ng
th
Phân tích báo cáo thiết kế như Hình 26 thấy tài nguyên được sử dụng chỉ là 4 pins. Không một
tài nguyên nào khác được sử dụng vì đoạn code chỉ đơn thuần là nối ngõ vào SW thứ 0 và thứ
1 vào ngõ ra LEDR thứ 0 và thứ 1. Sau khi biên dịch xong, người đọc có thể xem thiết kế ở
mức cổng bằng cách sử dụng công cụ “Tools/Netlist Viewers/RTL Viewer” như Hình 27.
Hình 27 Công cụ xem thiết kế ở mức cổng
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 19
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
ng
.c
om
BỘ MÔN ĐIỆN TỬ
Hình 28 Xem thiết kế ở mức cổng
an
co
Ở đây, thiết kế chỉ đơn thuần nối trực tiếp ngõ vào đến ngõ ra nên không một cổng logic hay
FF nào được thấy ở kết quả Hình 28.
2. Thực hiện mô phỏng
ng
th
Mô phỏng là một bước cần thiết để kiểm tra hành vi của thiết kế có đúng như mong muốn của
thiết kế hay không trước khi thực hiện đổ chương trình xuống kít.
du
o
Các bước sau đây mô tả việc thực hiện tạo giản đồ xung mô tả hành vi của thiết kế để kiểm tra
xem thiết kế có chạy như mong muốn hay không.
• Step 1: Tạo file waveform
cu
u
Trên thanh menu chọn File/new trong phần Verification/Debugging files chọn Vector
Waveform File để tạo file waveform như Hình 29.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 20
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
.c
om
BỘ MÔN ĐIỆN TỬ
Hình 29 Tạo file waveform
ng
• Step 2: Insert tín hiệu vào file waveform.
co
Bước này sẽ thêm các tín hiệu cần tiến hành mô phỏng vào file waveform, tiến hành tạo dạng
sóng đầu vào và quan sát kết quả dạng sóng đầu ra.
cu
u
du
o
ng
th
an
Trên thanh menu chọn Edit/Insert/Inset Node or Bus…như Hình 30.
Hình 30 Thêm các tín hiệu cần mô phỏng
Một giao diện Insert Node or Bus xuất hiện như Hình 31.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 21
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
.c
om
BỘ MÔN ĐIỆN TỬ
Hình 31 Giao diện Insert Node or Bus
cu
u
du
o
ng
th
an
co
ng
Trên giao diện Insert Node or Bus chọn Node Finder…sẽ xuất hiện một giao diện Node Finder
như Hình 32, trong giao diện này ở trường Filter chọn Pins: assigned và click chuột vào List
để chương trình liệt kê các pin được gán trong thiết kế như Hình 33. Trong danh sách này chọn
tín hiệu muốn add vào waveform bên cột trái và add vào bên cột phải như Hình 34. Tiếp theo
nhấn OK -> OK như Hình 35 và Hình 36.
Hình 32 Giao diện Node Finder
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 22
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
an
co
ng
.c
om
BỘ MÔN ĐIỆN TỬ
cu
u
du
o
ng
th
Hình 33 List danh sách tín hiệu trong thiết kế
Hình 34 Chọn chính xác tín hiệu cần mô phỏng bằng cách đưa tín hiệu được liệt kê ở cửa
sổ bên trái qua bên phải bằng cách ấn vào biểu tượng (>)
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 23
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
.c
om
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
Hình 35 Chọn hết các tín hiệu muốn xem rồi nhấn OK
du
o
ng
th
an
co
ng
Chỉ xem những tín hiệu đầu vào và đầu ra
Hình 36 Chọn OK sau khi thiết lập các thông số
cu
u
• Step 3: Vẽ dạng sóng cho tín hiệu đầu vào
Sau khi thiết lập xong các tín hiệu mô phỏng sẽ xuất hiện trên waveform. Trên giao diện này
ta có thể vẽ dạng sóng cho từng tín hiệu bằng cách kéo chuột chọn đoạn tín hiệu muốn set và
chọn nó là giá trị 1 hay 0 trên thanh công cụ như Hình 37. Sau khi vẽ dạng sóng các tín hiệu
đầu vào cho quá trình mô phỏng hoàn thành lưu file lại cùng chung thư mục với file project
như Hình 38.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 24
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
ng
.c
om
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
cu
u
du
o
ng
th
an
co
Hình 37 Giao diện dạng sóng với tín hiệu ngõ vào SW
Hình 38 Lưu file waveform
• Step 4: Thiết lập thời gian chạy mô phỏng
Trên thanh menu chọn Edit -> End Time như Hình 39 để tiến hành thiết lập thời gian chạy mô
phỏng cho project. Sau đó nhập thời gian chạy mô phỏng rồi nhấn OK (Hình 40).
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 25
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
ng
.c
om
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
cu
u
du
o
ng
th
an
co
Hình 39 Thiết lập thời gian kết thúc mô phỏng
Hình 40 Nhập thông số thời gian kết thúc rồi chọn OK
• Step 5: Tiến hành chạy mô phỏng
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 26
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
an
co
ng
.c
om
Trên thanh menu chọn Processing -> Generate Functional Simulation Netlist để tạo ra
Netlist function cho quá trình mô phỏng như Hình 41. Sau đó click chuột vào nút Start
Simulation để bắt đầu chạy mô phỏng như Hình 42.
Start Simulation
cu
u
du
o
ng
th
Hình 41 Tạo Netlist cho mô phỏng
Hình 42 Bắt đầu chạy mô phỏng
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 27
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
co
ng
.c
om
BỘ MÔN ĐIỆN TỬ
an
Hình 43 Kết quả quá trình chạy mô phỏng
th
Hình 43 cho thấy tín hiệu ngõ ra LEDR theo đúng như tín hiệu ngõ vào SW. Điều này đúng
theo mong muốn thiết kế SW thứ 0 gán cho LEDR thứ 0 và SW thứ 1 gán cho LEDR thứ 1.
ng
3. Thực hiện nạp chương trình xuống kít
cu
u
du
o
Tiếp theo, phần này sẽ hướng dẫn nạp chương trình xuống kít. Tuy nhiên, trước khi nạp chương
trình xuống kit, thì các kết nối giữa máy tính với kít thông qua cổng USB Blaster được mô tả
như Hình 44.
Hình 44 Kết nối kít với máy tính thông qua cổng USB Blaster
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 28
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
ng
.c
om
Sau khi biên dịch hoàn tất, người dùng có thể nạp lên kit thông qua công cụ (Tool>Programmer) như Hình 45.
co
Hình 45 Công cụ nạp chương trình
Giao diện nạp lệnh như Hình 46 cần chú ý những điểm sau:
an
+ Kiểm tra chính xác họ FPGA trên kit đang dùng.
cu
u
du
o
ng
th
+ Mục “HardwareSetup” cần kiểm tra lại đã nhận “Driver” chưa. Nếu chưa nhận sẽ hiện chữ
“No Hardware”. Còn nếu nhận thì sẽ hiện chữ “USB- Blaster”. Người dùng có thể sẽ cần
dùng file “04_usb-blaster_driver” trong gói tài liệu để cài driver cho máy tính của mình hoặc
sử dụng mạng Internet để kiểm tra và cài đặt.
Hình 46 Giao diện nạp lệnh chưa nhận được USB
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 29
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
ng
.c
om
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
co
Hình 47 Giao diện nạp lệnh đã nhận được USB-Blaster
cu
u
du
o
ng
th
an
Sau khi đã nhận được USB, nhấn “Start” để bắt đầu nạp file lên kit và kiểm tra. Tuy nhiên phải
chú ý là báo cáo “100% (Successful)” phải được hiển thị như Hình 48 để đảm bảo toàn bộ
chương trình được nạp thành công.
Hình 48 Chương trình được nạp xuống thành công
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 30
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 0: GIỚI THIỆU
co
ng
.c
om
Kết quả được khảo sát thông qua Hình 49. Khi SW thứ 0 bật lên thì đèn LEDR thứ 0 sáng và
ngược lại cho SW thứ 1 và LEDR thứ 1. Các SW thứ 2 cho đến 17 được bật lên nhưng đèn
LEDR thứ 2 đến 17 không sáng vì trong đoạn mã chỉ khai báo sử dụng từ 0 đến 1.
cu
u
du
o
ng
th
an
Hình 49 Kiểm tra kết quả bằng các Switch và đèn LEDR
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 31
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 1
BÀI THÍ NGHIỆM 1
❖ Mục tiêu:
Sinh viên cần tìm hiểu về kit DE2, cách sử dụng công cụ Quartus, và cách cài đặt chương trình
trên kit Altera DE2 FPGA dùng Programmer.
❖ Đánh giá của GVHD:
Kết quả thực hiện trên
kit DE2
Các câu hỏi liên quan
.c
om
Kết quả mô phỏng
TN 1.1
cu
u
du
o
ng
th
an
co
ng
TN 1.2
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 32
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
I.
BÀI THÍ NGHIỆM 1
Thí nghiệm 1.1 – Tutorial:
Sinh viên đọc phần III. của Bài thí nghiệm 0 và thực hiện chương trình Test01 theo từng bước
đã được đưa ra.
• Giáo viên hướng dẫn sẽ kiểm tra kết quả thực hiện của sinh viên thông qua kết quả mô
phỏng.
II.
Thí nghiệm 1.2
1. Yêu cầu:
.c
om
Thực hiện và mô phỏng các cổng logic.
2. Thiết kế:
th
an
co
ng
a. Sơ đồ khối (Block Diagram):
cu
u
du
o
ng
b. Sơ đồ mạch logic (Logic Diagrams):
c. Bảng chân trị (Truth Table):
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 33
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 1
d. VHDL Code:
• //VHDL code for all logic gates
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
ng
co
architecture dataflow of gates is
begin
not_op <= not a_in;
and_op <= a_in and b_in;
nand_op <= a_in nand b_in;
or_op <= a_in or b_in;
nor_op <= a_in nor b_in;
xor_op <= a_in xor b_in;
xnor_op <= a_in xnor b_in;
end dataflow;
.c
om
entity gates is
port (a_in,b_in: in std_logic;
not_op,and_op,nand_op,or_op,nor_op,xor_op,xnor_op: out std_logic);
end gates;
an
e. Kết quả mô phỏng ModelSim/VWF (Results)
(SV chèn kết quả mô phỏng vào mục này)
du
o
ng
th
f. Kết quả thực hiện trên kit DE2
Gán ngõ vào a_in và b_in vào SW[0] và SW[1], các ngõ ra vào LEDG[0]-[6]. Mô phỏng và
báo giáo viên hướng dẫn ghi nhận.
g. Tham khảo – Verilog Code
• //Verilog code for all logic gates
cu
u
module gates(a_in, b_in,not_op,and_op,nand_op,or_op,nor_op,xor_op,xnor_op);
input a_in,b_in;
output not_op,and_op,nand_op,or_op,nor_op,xor_op,xnor_op;
assign
assign
assign
assign
assign
assign
assign
not_op = ~a_in;
and_op = a_in&b_in;
nand_op = ~(a_in&b_in);
or_op = a_in|b_in;
nor_op = ~(a_in|b_in);
xor_op = a_in^b_in;
xnor_op = ~(a_in^b_in);
endmodule
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 34
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 2
BÀI THÍ NGHIỆM 2
❖ Mục tiêu:
Nắm được phương pháp thiết kế mạch tổ hợp cơ bản bằng ngôn ngữ VHDL và thực hiện trên
kit FPGA.
❖ Prelab:
Thiết kế bộ cộng toàn phần (Full-Adder), bộ dồn kênh 4-1 (MUX 4-1), bộ giải mã 2-4 (Decoder
2-4) có ngõ ra tích cực thấp. Mô phỏng sử dụng VWF / ModelSim
.c
om
SV in code VHDL/Verilog cho 3 bộ thiết kế và 3 hình mô phỏng dạng sóng, nộp cho GV trước
khi vào phòng thí nghiệm.
❖ Đánh giá của GVHD:
ng
Kết quả thực hiện trên
kit DE2
Các câu hỏi liên quan
co
Kết quả mô phỏng
an
TN 2.1
cu
u
du
o
ng
th
TN 1.2
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 35
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
I.
BÀI THÍ NGHIỆM 2
Thí nghiệm 2.1 – Thiết kế bộ cộng 2 số 4-bit
1. Yêu cầu:
Thiết kế bộ cộng 2 số 4-bit sử dụng bộ cộng toàn phần (Full Adder)
2. Thiết kế:
a. Sơ đồ khối (Block Diagram):
ng
th
an
co
ng
.c
om
b. VHDL Code:
• //VHDL code
du
o
c. Kết quả mô phỏng ModelSim/VWF (Results)
cu
u
d. Kết quả mô phỏng trên kit DE2
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 36
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
II.
BÀI THÍ NGHIỆM 2
Lab 2.2 – Thiết kế bộ ALU 4-bit
1. Yêu cầu:
Thiết kế bộ ALU (Arithmetic and Logic Unit) thực hiện 8 hàm tính toán số học và logic đơn
giản. Mã điều khiển và mô tả các phép toán tương ứng với các mã ấy được trình bày trong
Bảng 1.
Bộ ALU 4-bit có các ngõ vào sau:
.c
om
A, B: 4-bit input
Cin: 1-bit input
Output: 4-bit output
Cout: 1-bit output
Control: 3-bit control input
Bảng 1 Các ngõ vào và ngõ ra của ALU
ng
Comment
➢ SW[3..0]
➢ B
➢ SW[7..4]
➢ 4-bit input to be displayed on HEX4
➢ Cin
➢ SW[8]
➢ 1-bit input to be displayed on LEDR[0]
➢ Control
➢ SW[17..15] ➢ 2-bit input to be displayed on LEDR[17..16]
th
➢ ALU_out ➢ HEX0
➢ LEDG[0]
u
➢ Cout
➢ 4-bit input to be displayed on HEX6
an
➢ A
du
o
Outputs
Assigned
Port
ng
Inputs
Signal
Name
co
Signal
Type
cu
•
•
•
•
•
➢ 4-bit output result to be displayed on HEX0
➢ 1-bit output result to be displayed on LEDG[0]
Bảng 2 Tập lệnh của ALU
Control
Instruction
Operation
000
Add
Output <= A + B + Cin; Cout chứa số nhớ (carry)
001
Sub
Output <= A – B – Cin; Cout chứa số mượn (borrow)
010
Or
Output <= A or B
011
And
Output <= A and B
100
Shl
Output <= A(2 downto 0) & ’0’
101
Shr
Output <= ‘0’ & A(3 downto 1)
110
Rol
Output <= A(2 downto 0) & A(3)
111
Ror
Output <= A(0) & A(3 downto 1)
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 37
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 2
Những điểm cần lưu ý:
• Sử dụng lệnh CASE (hoặc các câu lệnh thiết kế tương đương) kiểm tra ngõ vào “Code”
để xác định phép toán cần thực hiện.
• Với mạch tổ hợp, ngõ vào thay đổi sẽ làm ngõ ra thay đổi ngay lập tức.
• Có thể dùng các phép toán số học và logic trong thiết kế.
• Mô phỏng thiết kế sử dụng lệnh “force” và “run” trong cửa sổ Transcript để thiết lập giá
trị ngõ vào và quan sát giản đồ xung của ngõ ra ở cửa sổ Waveform.
2. Thiết kế:
an
co
ng
.c
om
a. Sơ đồ khối (Block Diagram):
cu
u
du
o
ng
th
b. Sơ đồ mạch logic (Logic Diagrams):
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 38
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 2
d. Kết quả mô phỏng ModelSim/VWF (Results)
cu
u
du
o
ng
th
an
co
ng
e. Kết quả mô phỏng trên kit DE2
.c
om
c. VHDL Code:
• //VHDL code
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 39
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 3
BÀI THÍ NGHIỆM 3
❖ Mục tiêu:
Nắm được phương pháp thiết kế mạch tuần tự cơ bản và thực hiện trên FPGA. (To learn
designing basic sequential circuits in VHDL and implementing them on an FPGA.)
❖Prelab:
Thiết kế D-Flip Flop (D-FF). Mô phỏng sử dụng VWF / ModelSim
.c
om
SV in code VHDL/Verilog cho thiết kế và mô phỏng dạng sóng, nộp cho GV trước khi vào
phòng thí nghiệm.
❖ Đánh giá của GVHD
Kết quả thực hiện trên
kit DE2
Các câu hỏi liên quan
co
ng
Kết quả mô phỏng
an
TN 3.1
cu
u
du
o
ng
th
TN 3.2
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 40
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
I.
BÀI THÍ NGHIỆM 3
Thí nghiệm 3.1 – Bộ đếm mã BCD
1. Yêu cầu:
Thực hiện bộ đếm số BCD (Binary Coded Decimal) 1 digit có các đặc điểm sau:
Là mạch đồng bộ đếm lên/xuống 4-bit.
Trạng thái ngõ ra thay đổi khi ngõ vào CLK xuất hiện cạnh lên.
Khi ngõ vào bất đồng bộ CLR = 0, bộ đếm bị reset.
Chọn chu kỳ của tín hiệu CLK là 10ns khi mô phỏng thiết kế.
ng
.c
om
•
•
•
•
ENABLE
UP
1
1
X
Bộ đếm nạp giá trị từ ngõ vào D.
0
1
1
Mạch thực hiện đếm lên. Nếu giá trị của bộ đếm là
9, Carry output (CO) = 1.
0
1
0
ng
th
an
co
LOAD
Mạch thực hiện đếm xuống. Nếu giá trị của bộ đếm
là 0, Carry output (CO) = 1
cu
Inputs
Signal
Name
Outputs
Assigned
Port
Comment
D
SW[3..0]
4-bit input to be displayed on HEX6
ENABLE
SW[4]
1-bit input to be displayed on LEDR[0]
LOAD
SW[5]
1-bit input to be displayed on LEDR[1]
UP
SW[6]
1-bit input to be displayed on LEDR[2]
CLR
SW[7]
1-bit input to be displayed on LEDR[3]
Q
HEX0
4-bit output result to be displayed on HEX0
Cout
LEDG[0]
1-bit output result to be displayed on
LEDG[0]
u
Signal
Type
du
o
Bảng 3 Các ngõ vào, ngõ ra của bộ đếm mã BCD
• Gợi ý:
SV có thể tùy chọn cách thiết kế bộ đếm: đơn giản nhất là phương pháp mô tả hành vi
(behavioral description) sử dụng phép toán số học (Count <= Count +1) hoặc máy trạng thái
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 41
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 3
(State <= Next_State); có thể sử dụng phương pháp mô tả luồng dữ liệu (Dataflow Description)
hoặc mô tả cấu trúc (Structural description), nhưng chương trình sẽ phức tạp hơn.
• Thực hiện mô phỏng như sau:
➢
➢
➢
➢
Nạp vào bộ đếm giá trị 6
Tăng giá trị bộ đếm 4 đơn vị: bộ đếm sẽ tăng đến giá trị 9 và quay về giá trị 0.
Giảm giá trị bộ đếm 1 đơn vị, bộ đếm sẽ quay về giá trị 9.
Xóa bộ đếm.
2. Thiết kế:
co
ng
.c
om
a. Sơ đồ khối (Block Diagram):
th
c. VHDL Code:
Các ví dụ thiết kế của Clock_Divider:
an
b. Sơ đồ mạch logic (Logic Diagrams) (Nếu có):
ng
• //Example 1: VHDL code for Divider from 50MHz to 1Hz
du
o
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.numeric_std.ALL;
cu
u
entity Clock_Divider is
port ( clk,reset: in std_logic;
clock_out: out std_logic);
end Clock_Divider;
architecture bhv of Clock_Divider is
signal count: integer:=1;
signal tmp : std_logic := '0';
begin
process(clk,reset)
begin
if(reset='1') then
count <= 1;
tmp <= '0';
elsif(clk'event and clk='1') then
count <= count+1;
if (count = 25000000) then
tmp <= NOT tmp;
count <= 1;
end if;
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 42
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 3
end if;
clock_out <= tmp;
end process;
end bhv;
• //Example 2: VHDL code for Clock_Divider
library IEEE;
use IEEE.numeric_bit.ALL;
entity simpleCounter is
Port ( clk50Mhz : in bit;
led : out bit);
end simpleCounter;
co
ng
.c
om
architecture Behavioral of simpleCounter is
signal counter: unsigned (26 downto 0);
signal cnt_temp: bit_vector(26 downto 0);
begin
process (clk50Mhz)
begin
if clk50MHZ = '1' and clk50Mhz'event then
counter <= counter + 1;
--increment counter every 20 ns (1/ 50 Mhz)cycle.
end if;
end process;
cnt_temp <= bit_vector(counter);
led <= cnt_temp(26); -- (2^26 / 50E6) = 1.34 seconds
end Behavioral;
th
library IEEE;
use IEEE.numeric_bit.ALL;
an
• //Example 3: VHDL code for Clock_Divider
du
o
ng
entity complex is
Port ( clk50Mhz : in bit;
led : inout bit );
end complex;
cu
u
architecture Behavioral of complex is
signal counter: integer range 1 to 50000000;
begin
process (clk50Mhz)
begin
if clk50MHZ = '1' and clk50Mhz'event then
if counter = 50000000 then counter <= 1; led <= not led;
else counter <= counter + 1;
end if;
end if;
end process;
end Behavioral;
d. Kết quả mô phỏng ModelSim/VWF (Results)
e. Kết quả mô phỏng trên kit DE2
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 43
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
II.
BÀI THÍ NGHIỆM 3
Thí nghiệm 3.2 – Bộ đếm lên xuống thập phân từ 0 - 99
1. Yêu cầu:
Sử dụng 2 bộ đếm đã thiết kế ở trên, thiết kế bộ đếm thập phân các số có 2 chữ số. Mạch thực
hiện đếm lên từ 00 đến 99 hoặc đếm xuống từ 99 về 00.
ng
Nạp giá trị bộ đếm là 97.
Tăng giá trị bộ đếm thêm 5 đơn vị.
Chờ 2 chu kỳ CLK.
Giảm giá trị bộ đếm 4 đơn vị.
Xóa bộ đếm.
co
➢
➢
➢
➢
➢
.c
om
• Các ngõ vào, ngõ ra của mạch đếm: CLR, CLK, ENABLE, LOAD, UP, D1, D2, Q1, Q2,
CO.
• Dùng phương pháp mô tả cấu trúc (Structural Description): tạo 2 Instant của bộ đếm ở
Thí nghiệm 3.1.
• Mô phỏng thiết kế
2. Thiết kế:
an
a. Sơ đồ khối (Block Diagram):
th
b. Sơ đồ mạch logic (Logic Diagrams):
cu
u
du
o
ng
c. VHDL Code:
• //VHDL code
d. Kết quả mô phỏng ModelSim/VWF (Results)
e. Kết quả mô phỏng trên kit DE2
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 44
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 4
BÀI THÍ NGHIỆM 4
❖ Mục tiêu:
Bài này giúp sinh viên
1. Hiểu quy trình thiết kế ASIC/FPGA (ASIC/FPGA design flow).
2. Thiết kế mạch hỗn hợp (thiết kế bao gồm cả mạch tổ hợp và mạch tuần tự).
3. Biết cách tạo testbench để mô phỏng thiết kế.
4. Thực hiện mạch trên FPGA.
.c
om
❖Prelab:
SV trả lời phần 1, và chọn 1 trong các đề tài trong phần 2 để hoàn thành khóa học.
ng
SV nộp câu trả lời của phần 1 và thiết kế ở dạng sơ đồ khối của đề tài mình chọn cho GV trước
khi vào phòng thí nghiệm.
an
Kết quả thực hiện trên
kit DE2
Các câu hỏi liên quan
th
Kết quả mô phỏng
co
❖ Đánh giá của GVHD
cu
u
du
o
ng
Project
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 45
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
I.
BÀI THÍ NGHIỆM 4
ASIC/FPGA Design Flow
Dựa vào quy trình thiết kế ASIC/FPGA (design flow). Trả lời các câu hỏi sau:
du
o
ng
th
an
co
ng
.c
om
1) Vai trò, công dụng của từng bước thiết kế (trả lời ngắn gọn, 1 dòng cho mỗi bước)?
2) Trong bài thí nghiệm, công cụ nào được sử dụng đế thực hiện những bước thiết kế này?
Chỉ ra các bước đã bị bỏ qua.
3) Nêu dữ liệu đầu vào và sản phẩm ngõ ra của từng bước.
cu
u
SV tìm hiểu thêm trên Google, ebooks để trả lời các câu hỏi trên
II. Projects
❖ Phân loại gói hàng - Package Sorter:
1. Yêu cầu
Thiết kế hệ thống phân loại gói hàng dựa trên cân nặng của chúng và lưu trữ thông tin theo
các danh mục khác nhau. Bộ phân loại có tín hiệu Reset bất đồng bộ, tích cực mức cao. Thông
tin theo dõi các gói hàng được lưu trữ kể từ lần reset gần nhất trước đó. Các gói hàng được
chia thành 6 nhóm:
1) Từ 1 đếm 200 grams
2) Từ 201 đến 500 grams
3) Từ 501 đến 800 grams
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 46
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 4
4) Từ 801 đến 1000 grams
5) Từ 1000 grams đến 2000 grams
6) Lớn hơn 2000 grams
Mạch giải mã thông tin khối lượng của từng gói hàng và phân loại vào các nhóm khác nhau.
Ngõ vào của mạch là một số nhị phân 12-bit không dấu (thể hiện khối lượng của gói hàng),
tín hiệu clock và tín hiệu reset.
Các ngõ ra bao gồm:
ng
th
an
co
ng
.c
om
• currentGrp: số nhị phân 3-bit không dấu, thể hiện mã nhóm của gói hàng hiện tại. Nếu
cân nặng ban đầu là 0, currentGrp = 0. Ngõ ra sẽ được cập nhật ngay khi khối lượng ngõ
vào thay đổi.
• 6 ngõ ra Grp1 – Grp6: mỗi ngõ là một số nhị phân 8-bit không dấu, thể hiện số gói trong
từng nhóm khối lượng kể từ lần reset cuối cùng. Khi tín hiệu ngõ vào reset tích cực, các
ngõ ra sẽ bị xóa.
du
o
Chú ý: Mạch tạo tín hiệu currentGrp là mạch tổ hợp, do giá trị ngõ ra chỉ phụ thuộc vào khối
lượng của gói hàng hiện tại, không phụ thuộc vào giá trị ngõ ra trước đó. Tuy nhiên, mạch tạo
tín hiệu Grp1-Grp6 là mạch tuần tự, do các tín hiệu này phụ thuộc vào cả ngõ vào hiện tại và
ngõ vào trước đó.
cu
u
Các ngõ ra của mạch tuần tự sẽ thay đổi trạng thái khi có cạnh xuống của xung clock. Chú ý
rằng tín hiệu clk có tần số cao hơn tần số của tín hiệu khối lượng, thiết kế phải đảm bào mỗi
gói hàng chỉ được phân loại và cập nhật một lần. Một gói hàng chỉ được xác định và phân loại
khi biến cân nặng trở về 0, để chắc chắn rằng chỉ giá trị khối lượng đầu tiên nhận được sau khi
khối lượng được trả về 0 mới được lấy mẫu, mọi sự biến động ở ngõ vào sau đó sẽ bị bỏ qua,
không tính là một gói mới.
2. Mô phỏng thiết kế:
SV có thể tạo ra nhiều chuỗi ngõ vào khác nhau để kiểm chứng thiết kế của mình. Sau đây là
một ví dụ:
• Input Sequence:
Reset → Nhập gói 250 grams → Lấy gói hàng ra → Nhập gói 300 grams → Lấy gói hàng ra
→ Nhập gói 501 grams → Nhập thêm gói 512 grams
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 47
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 4
[Khi tạo waveforms, chuỗi tín hiệu ngõ vào có dạng: reset → 250 → 0 → 300 → 0 → 501 →
512]
• Kết quả thu được khi mô phỏng:
- Grp1 = Grp4 = Grp5 =0x00
- Grp2 = 0x02
- Grp3 =0x01
- currentGrp = 0x05
Chú ý: sau khi phân loại gói 501 grams vào nhóm 3, việc thêm gói 512 gram chỉ thay đổi giá
trị currentGrp, không ảnh hưởng đến giá trị Grp5.
.c
om
3. Thiết kế
a. Sơ đồ khối (Block Diagram):
ng
b. Sơ đồ mạch logic (Logic Diagrams):
th
an
co
c. VHDL Code:
• //VHDL code
ng
d. Kết quả mô phỏng ModelSim/VWF (Results)
cu
u
du
o
e. Kết quả mô phỏng trên kit DE2
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 48
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
BÀI THÍ NGHIỆM 4
❖ Traffic Light Control:
1. Yêu cầu
Thiết kế bộ điều khiển đèn giao thông cho một giao lộ bao gồm: 2 hướng A và B, và lối dành
cho người đi bộ qua đường. (Hướng A là hướng ưu tiên so với hướng B).
• Hướng A bao gồm 3 đèn tín hiệu: Xanh (Ga), Vàng (Ya) và Đỏ (Ra).
• Tương tự, hướng B bao gồm 3 đèn: Xanh (Gb), Vàng (Yb), và Đỏ (Rb).
• Tín hiệu cho người đi bộ gồm 2 đèn: Xanh (Gw) và Đỏ (Rw).
.c
om
Chuỗi tín hiệu điều khiển được sắp xếp theo trình tự sau: Ga Rb Rw, Ga Rb Rw, Ya Rb Rw,
Ra Gb Rw, Ra Yb Rw, Ra Rb Gw, Ra Rb Rw, Ga RbRw…
Với quy ước thời gian:
• Hướng ưu tiên (A):
co
an
th
ng
➢
Xanh: 3 giây.
➢
Vàng: 1 giây.
➢
Đỏ: 12 giây.
• Đèn dành cho người đi bộ:
ng
➢
Xanh: 4 giây
➢
Vàng: 2 giây.
➢
Đỏ: 10 giây.
• Hướng phụ (B)
du
o
u
•
➢
Xanh: 2 giây.
➢
Đỏ: sáng nhấp nháy 4 giây với tần số 1Hz sau đó sáng liên tục 10 giây.
Chế độ bảo dưỡng:
cu
➢
RST=1: Ra, Rb, and Rw nhấp nháy tần số 1Hz
➢
RST=0: các tín hiệu hoạt động như bình thường với trạng thái bắt đầu
từ Ga,Rb,Rw.
2. Các bước thiết kế:
1) Vẽ giản đồ trạng thái của bộ điều khiển. Sinh viên viết code VHDL theo kiểu mô tả hành
vi (behavioral), không cần tìm phương trình các hàm trạng thái; chú ý thời gian sáng của
các đèn để xác định thời điểm chuyển trạng thái.
2) Viết code VHDL theo giản đồ trạng thái đã thiết lập. Mô phỏng để kiểm tra chức năng của
bộ điều khiển. (chú ý: Giảm thời gian của các tín hiệu để rút ngắn thời gian mô phỏng).
3) Tổng hợp và thực hiện mạch trên FPGA.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 49
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BÀI THÍ NGHIỆM 4
ng
.c
om
BỘ MÔN ĐIỆN TỬ
co
3. Thiết kế
a. Sơ đồ khối (Block Diagram):
th
du
o
ng
c. VHDL Code:
• //VHDL code
an
b. Sơ đồ mạch logic (Logic Diagrams):
cu
u
d. Kết quả mô phỏng ModelSim/VWF (Results)
e. Kết quả mô phỏng trên kit DE2
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 50
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
1. Download và cài đặt chương trình
co
ng
.c
om
Download miễn phí chương trình ModelSim Student Edition (version 6.6d tại 12/2010) tại
www.model.com
an
Làm đúng theo 3 bước được hướng dẫn trên www.model.com
th
2. Hướng dẫn cơ bản
cu
u
du
o
ng
a. Khởi động ModelSim
b. Tạo Project
Bấm File ->New ->Project…
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 51
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
.c
om
Mạch tổ hợp
cần thiết kế bao
gồm
một
AND_GATE và
một OR_GATE.
ng
Nhập tên project là comb_ckt, thường chọn tên project giống với tên file chứa mã VHDL
(.vhd) và thông thường cũng giống với tên của entity của mã VHDL.
an
co
Bấm Browse để chọn thư mục chứa project. Nên tạo một thư mục riêng để chứa các file của
một project.
th
Bấm OK
cu
u
du
o
ng
c. Thêm file vào project
Bấm Create New File để tạo một file mới. (Nếu lười gõ đoạn mã ví dụ sau đây thì chọn Add
Existing File, rồi chọn fie comb_ckt.vhd kèm theo hướng dẫn này ☺)
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 52
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
Bấm Close.
du
o
ng
th
an
co
ng
.c
om
Nhập tên file là comb_ckt, chọn loại file là VHDL, giữ nguyên Folder là Top Level, rồi
bấm OK.
cu
u
Bấm đôi vào tên file comb_ckt.vhd để mở cửa sổ soạn thảo chương trình
Nhập vào đoạn mã VHDL sau
------------------------------------------------------------- Combinational Logic Design
-- (ESD book figure 2.4)
-- by Weijun Zhang, 04/2001
--- A simple example of VHDL Structure Modeling
-- we might define two components in two separate files,
-- in main file, we use port map statement to instantiate
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 53
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
-- the mapping relationship between each components
-- and the entire circuit.
-----------------------------------------------------------library ieee;
use ieee.std_logic_1164.all;
-- component #1
Mô tả linh kiện
thứ 1: OR_GATE
entity OR_GATE is
port( X:
in std_logic;
Y:
in std_logic;
F2:
out std_logic);
end OR_GATE;
-- behavior des.
------------------------------------------------------------library ieee;
use ieee.std_logic_1164.all;
-- component #2
an
th
-- behavior des.
ng
architecture behv of AND_GATE is
begin
process(A,B)
begin
F1 <= A and B;
end process;
end behv;
Mô tả linh kiện
thứ 2: AND_GATE
co
ng
entity AND_GATE is
port( A:
in std_logic;
B:
in std_logic;
F1:
out std_logic
);
end AND_GATE;
.c
om
architecture behv of OR_GATE is
begin
process(X,Y)
begin
F2 <= X or Y;
end process;
end behv;
--------------------------------------------------------------
du
o
library ieee;
use ieee.std_logic_1164.all;
use work.all;
-- top level circuit
Mô tả mạch tổ hợp:
comb_ckt
cu
u
entity comb_ckt is
port( input1: in std_logic;
input2: in std_logic;
input3: in std_logic;
output: out std_logic
);
end comb_ckt;
architecture struct of comb_ckt is
component AND_GATE is
port(
A: in std_logic;
B: in std_logic;
F1:
out std_logic
);
end component;
-- as entity of AND_GATE
component OR_GATE is
port(
X: in std_logic;
Y: in std_logic;
F2: out std_logic
);
end component;
-- as entity of OR_GATE
signal wire: std_logic;
-- signal just like wire
begin
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 54
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
-- use sign "=>" to clarify the pin mapping
Gate1: AND_GATE port map (A=>input1, B=>input2, F1=>wire);
Gate2: OR_GATE port map (X=>wire, Y=>input3, F2=>output);
end struct;
----------------------------------------------------------------
để lưu chương trình.
cu
u
du
o
ng
th
an
co
ng
.c
om
Bấm File ->Save hoặc bấm biểu tượng
d. Biên dịch (compile)
Bấm Compile ->Compile All (hoặc Compile Seleted nếu chỉ muốn biên dịch 1 file)
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 55
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
cu
u
du
o
ng
th
an
co
ng
.c
om
Nếu có thông báo lỗi thì bấm đôi vào dòng thông báo lỗi để mở ra cửa sổ báo lỗi.
Xem báo lỗi gì và tại dòng lệnh nào. (Trong ví dụ trên, lỗi thiếu dấu ; tại dòng lệnh 43)
Bấm Close để đóng cửa sổ báo lỗi.
Sửa lỗi, lưu và biên dịch lại cho đến khi không còn lỗi.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 56
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
th
an
co
ng
.c
om
e. Tạo Testbench
Bấm Project -> Add to Project -> New File… để tạo một file testbench. (Nếu lười gõ
đoạn mã ví dụ sau đây thì chọn Existing File, rồi chọn fie tb_ckt.vhd kèm theo hướng dẫn
này ☺)
cu
u
du
o
ng
Nhập vào tên file testbench là tb_ckt, , chọn loại file là VHDL, giữ nguyên Folder là Top
Level, rồi bấm OK.
Tương tự như phần tạo file comb_ckt.vhd, nhập đoạn mã VHDL sau cho file tb_ckt.vhd.
--------------------------------------------------------------------- Test Bench for comb_ckt.vhd
-- (ESD figure 2.4)
-- by Weijun Zhang, 04/2001
--- Testbench is used to ensure the design is working properly
-- according to the specification.
-------------------------------------------------------------------library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 57
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
entity CKT_TB is
end CKT_TB;
-- empty entity
------------------------------------------------------------------architecture TB of CKT_TB is
-- declare the whole circuit(entity of comb_ckt.vhd) as a component
component comb_ckt is
port(
input1: in std_logic;
input2: in std_logic;
input3: in std_logic;
output: out std_logic
);
end component;
signal T_input1, T_input2, T_input3, T_output: std_logic;
begin
.c
om
-- declare all I/O ports from unit under test as signals.
-- signals are usually declared within architecture
U_UT: comb_ckt port map (T_input1,T_input2,T_input3,T_output);
ng
process
co
variable err_cnt: integer := 0;
begin
th
du
o
-- Test case 2
T_input1 <= '1';
T_input2 <= '1';
T_input3 <= '1';
wait for 10 ns;
an
case 1
'0';
'0';
'0';
ns;
ng
-- Test
T_input1 <=
T_input2 <=
T_input3 <=
wait for 10
cu
u
-- Test case 3
T_input1 <= '1';
T_input2 <= '0';
T_input3 <= '1';
wait for 10 ns;
-- Test case 4
T_input1 <= '0';
T_input2 <= '1';
T_input3 <= '0';
wait for 10 ns;
wait;
-- stop running
end process;
end TB;
------------------------------------------------------------------configuration CFG_TB of CKT_TB is
for TB
end for;
end CFG_TB;
--------------------------------------------------------------------
Lưu và biên dịch file tb_ckt.vhd này cho đến khi không còn lỗi.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 58
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
co
ng
.c
om
BỘ MÔN ĐIỆN TỬ
cu
u
du
o
ng
th
an
f. Chạy mô phỏng
Bấm chọn tab Library
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 59
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
Bấm vào dấu cộng trước thư mục work trong cửa sổ Library, rồi bấm đôi vào dòng ckt_tb
để bắt đầu chạy mô phỏng
cu
u
du
o
ng
th
an
co
ng
.c
om
Bấm chọn tab Wave để thấy cửa sổ Wave
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 60
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
co
ng
.c
om
BỘ MÔN ĐIỆN TỬ
cu
u
du
o
ng
th
an
Bấm chọn cửa sổ Objects, rồi bấm Add -> To Wave -> Signals in Region để thêm các tín
hiệu cần quan sát vào cửa sổ Wave
g. Bắt đầu chạy mô phỏng
Cách 1: Bấm Simulate -> Run -> Run 100 để chạy mô phỏng trong 100 ns
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 61
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
(Run)
du
o
ng
th
an
co
ng
Cách 2: Nhập thời gian cần chạy mô phỏng, rồi bấm nút
.c
om
BỘ MÔN ĐIỆN TỬ
cu
u
Cách 3: Nhập lệnh run 100 vào dấu nhắc lệnh trong cửa sổ Transcript rồi Enter.
Quan sát dạng sóng thu được trên cửa sổ Wave. Để dễ quan sát, bấm nút phải chuột trên cửa
số Wave, rồi bấm Zoom Full.
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 62
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
du
o
ng
th
an
co
ng
Thời gian t_input1 t_input2 t_input3 t_output
0 – 10 ns
0
0
0
0
10 – 20
1
1
1
1
ns
20 – 30
1
0
1
1
ns
30 – 40
0
1
0
0
ns
…
Kết quả này chứng tỏ mạch tổ hợp đã thiết kế đúng ☺ !
.c
om
Kết quả từ dạng sóng:
cu
u
Trong ví dụ trên, ta đã viết mã VHDL của AND_GATE và OR_GATE chung với comb_ckt
trong cùng một file comb_ckt.vhd. Ta cũng có thể viết mã VHDL của AND_GATE và
OR_GATE trong hai file riêng rẽ là AND_GATE.vhd và OR_GATE.vhd. Khi đó, ta phải
thêm vào project tổng cộng là 4 file (comb_ckt.vhd, AND_GATE.vhd, OR_GATE.vhd và
tb_ckt.vhd).
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 63
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX B – VHDL CODES CHO CÁC IC THÔNG DỤNG
APPENDIX B – VHDL CODES CHO CÁC IC THÔNG
DỤNG
1. FULL-ADDER (Bộ cộng toàn phần):
.c
om
a. Sơ đồ khối:
b. Phương trình hàm ngõ ra:
ng
𝑺𝒖𝒎 = 𝒂𝒊𝒏 ⨁𝒃𝒊𝒏 ⨁𝒄𝒊𝒏
co
𝑪𝒂𝒓𝒓𝒚 = 𝒂𝒊𝒏 . 𝒃𝒊𝒏 + 𝒂𝒊𝒏 . 𝒄𝒊𝒏 + 𝒃𝒊𝒏 . 𝒄𝒊𝒏
cu
u
du
o
ng
th
an
c. Sơ đồ logic:
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 64
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
d. HDL Code
• // Full Adder (Dataflow)
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity fulladder is
port (a_in, b_in, c_in: in std_logic;
sum, carry: out std_logic);
end fulladder;
• // Full Adder (Structural)
an
co
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
ng
.c
om
architecture dataflow of fulladder is
begin
sum <= a_in xor b_in xor c_in;
carry<= (a_in and b_in) or (b_in and c_in) or (a_in andb_in);
end dataflow;
ng
th
entity fulladder is
port (a_in, b_in, c_in: in std_logic;
sum, carry: out std_logic);
end fulladder;
u
du
o
architecture structural of fulladder is
component halfadder is
port (p, q: in std_logic;
r, s: out std_logic);
end component;
cu
signal temp1, temp2, temp3: std_logic;
begin
ha1: halfadder port map (a_in, b_in, temp1,temp2);
ha2: halfadder port map (temp1, c_in, sum, temp3);
carry <=temp2 or temp3;
end structural;
Component program:
entity halfadder is
port (p, q: in std_logic;
c, s: out std_logic);
end halfadder;
architecture dataflow of halfadder is
begin
s <= p xor q;
c <= p and q;
end;
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 65
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
2. 2:4 DECODER(Bộ giải mã 2-4):
a. Sơ đồ khối:
ng
.c
om
b. Bảng chân trị:
u
du
o
ng
th
an
co
c. Sơ đồ logic:
cu
d. HDL Code
• //Decoder 2_4 (Dataflow)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity dec2_4 is
port (x1, x0, en :in std_logic ;
y0, y1, y2, y3:out std_logic);
end dec2_4;
architecture dataflow of dec2_4 is
begin
y0<= (not x1) and (not x0) and en;
y1<= (not x1) and x0 and en;
y2<= x1 and (not x0) and en;
y3<= x1 and x0 and en;
end dataflow;
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 66
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
3. MUX 4-1 (Bộ dồn kênh 4-1):
a. Sơ đồ khối và bảng chân trị
➢ Truth Table:
➢ Block Diagram:
➢
.c
om
➢
th
an
co
ng
b. Sơ đồ logic:
du
o
➢ //MUX 4-1
ng
c. HDL Code
u
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
cu
entity mux4_1 is
Port ( D0, D1, D2,D3 : in std_logic; -- mux inputs
sel : in std_logic_vector(1 downto 0); -- selection line
Y
: out std_logic); -- output data
end mux4_1;
architecture Behavioral of mux4_1 is
begin
-- This process for mux logic
process (sel, D0, D1, D2, D3)
begin
case SEL is
when "00" =>Y<= D0;
when "01" =>Y<= D1;
when "10" =>Y<= D2;
when "11" =>Y<= D3;
when others =>Y<= '0';
end case;
end process;
end Behavioral;
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 67
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
4. D-Flipflop:
a. Sơ đồ khối:
.c
om
b. Bảng chân trị
du
o
ng
th
an
co
ng
c. Sơ đồ logic
d. HDL Code
• // D-FF with asynchrnous Reset
cu
u
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity DFF1 is
Port (D, RESET_n, CLK : in STD_LOGIC;
Q : out STD_LOGIC);
end DFF1;
architecture Behavioral of DFF1 is
begin
process(CLK)
begin
if (RESET_n ='0')
then Q<='0';
elsif CLK'event and CLK ='1'
then Q <= D;
end if;
end process;
end Behavioral;
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 68
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
5. Counter 4-bit (Bộ đếm lên 4 bit):
a. Sơ đồ khối:
b. HDL Code:
.c
om
• //Bộ đếm lên với Reset bất đồng bộ
ng
LIBRARY ieee;
USE ieee.std_logic_1164.all
USE ieee.std_logic_unsigned.all;
ENTITY Upcnt4 IS
PORT (Clk, Rst : IN STD_LOGIC;
Q: OUT STD_LOGIC_VECTOR(3 downto 0));
END Upcnt4;
du
o
ng
th
an
co
ARCHITECTURE Behavioral OF Upcnt4 IS
BEGIN
PROCESS (Clk, Rst)
VARIABLE count: STD_LOGIC_VECTOR (3 downto 0);
BEGIN
IF Rst ='1' THEN
count := (others=>'0');
ELSIF rising_edge(clk) THEN
count := count + "0001";
END IF;
Q <= count;
END PROCESS;
END Behavioral;
• // Bộ đếm lên với Reset đồng bộ
cu
u
LIBRARY ieee;
USE ieee.std_logic_1164.all
USE ieee.std_logic_unsigned.all;
ENTITY Upcnt4 IS
PORT ( Clk, Rst : IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR(3 downto 0));
END Upcnt4;
ARCHITECTURE Behavioral OF Upcnt4 IS
SIGNAL count: STD_LOGIC_VECTOR (3 downto 0);
BEGIN
PROCESS (Clk, Rst)
BEGIN
IF rising_edge(clk) THEN
IF Rst ='1' THEN
count <= (others=>'0');
ELSE
count <= count + "0001";
END IF;
END IF;
END PROCESS;
Q <= count;
END Behavioral;
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 69
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ
APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
Tài liệu tham khảo
[1] EE 460M: Digital Systems Design Using HDL
(http://www.ece.utexas.edu/undergraduate/courses/460m)
[2] ECE-124 Lab: Digital Circuits and Systems (https://ece.uwaterloo.ca/~ece124/)
[3] Channabasaveshwara Institute of Technology
(http://www.cittumkur.org/manuals/ece/hdlmanual.pdf)
cu
u
du
o
ng
th
an
co
ng
.c
om
[4] Tài liệu hướng dẫn TN_KTS_DE2 – Phạm Đăng Lâm
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 70
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
Download