You are on page 1of 72

ĐẠ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Ử

om
.c
ng
co
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ
an

PHẦN II
th

THÍ NGHIỆM TRÊN KIT ALTERA - DE2


o ng
du
u
cu

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
BÀI THÍ NGHIỆM 1 .......................................................................................................32

om
I. Thí nghiệm 1.1 – Tutorial: ......................................................................................33
II. Thí nghiệm 1.2 ........................................................................................................33

.c
BÀI THÍ NGHIỆM 2 .......................................................................................................35
I. Thí nghiệm 2.1 – Thiết kế bộ cộng 2 số 4-bit .........................................................36

ng
II. Lab 2.2 – Thiết kế bộ ALU 4-bit .............................................................................37
co
BÀI THÍ NGHIỆM 3 .......................................................................................................40
I. Thí nghiệm 3.1 – Bộ đếm mã BCD .........................................................................41
an

II. Thí nghiệm 3.2 – Bộ đếm lên xuống thập phân từ 0 - 99 .......................................44
th

BÀI THÍ NGHIỆM 4 .......................................................................................................45


I. ASIC/FPGA Design Flow .......................................................................................46
ng

II. Projects ...................................................................................................................46


o

APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM .............................................51


du

APPENDIX B – VHDL CODES CHO CÁC IC THÔNG DỤNG ...............................64


u
cu

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.
Đồ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í

om
nghiệm nên được chuẩn bị tại nhà.
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

.c
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.

ng
co
an
th
o ng
du
u
cu

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
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)

om
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

.c
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ể.

ng
co
an
th
o ng
du
u
cu

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.

➢ 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.

om
- Cổng VGA-out.
- Bộ giải mã TV và cổng nối TV-in.

.c
- 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.

ng
- 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.
co
- 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.
an

- Cổng giao tiếp hồng ngoại.


th

➢ Bộ nhớ:
ng

- SRAM 512-Kbyte.
- SDRAM 8-Mbyte.
o

- Bộ nhớ Flash 4-Mbyte (1 số mạch là 1-Mbyte).


du

- Khe SD card.
u

➢ Switch, các đèn led, LCD, xung clock


cu

- 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


➢ Ứng dụng làm TV box

om
.c
Hình 2 TV box

➢ Chương trình vẽ bằng chuột USB (paintbrush)

ng
co
an
th
o ng
du

Hình 3 Chương trình vẽ (paintbrush)


u

➢ Máy hát Karaoke và máy chơi nhạc SD


cu

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Ử BÀI THÍ NGHIỆM 0: GIỚI THIỆU

II. Cài đặt và sử dụng phần mềm Quatus II


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.

om
.c
ng
co
an
th
ng

Hình 5 Giao diện cơ bản Tool Quartus II


o

1. Cài đặt phần mềm Quartus II


du

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
u

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
cu

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Ử BÀI THÍ NGHIỆM 0: GIỚI THIỆU

III. 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:
• 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.

om
.c
ng
co
an
th
ng

Hình 6 Tạo một dự án mới


o

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.
du
u
cu

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.
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.

om
.c
ng
co
an

Hình 8 Nhấn Next để tiếp tục sau khi thiết lập đường dẫn và tên dự án
• Step 3: Add Files
th

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
ng

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.
o
du
u
cu

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Ử BÀI THÍ NGHIỆM 0: GIỚI THIỆU

• Step 4: Chọn device cho project muốn thiết kế

om
.c
ng
co
Hình 10 Chọn họ và mã chip FPGA
an

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.
th

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
ng

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.
o

→ 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,
du

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.
u

Ở đây, Hình 11 sẽ giải thích ý nghĩa của mã chip “EP2C35F672C6” mà chip này đang được
cu

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Ộ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
.c
ng
co
an

Hình 11 Giải thích mã FPGA CHIP học Cyclone II


th
o ng
du
u
cu

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Ộ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
.c
ng
Hình 13 Tóm tắt thông tin Project
co
• Step 5: Tạo file thiết kế cho project
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
an

Design File chọn VHDL File cho định dạng file thiết kế bằng ngôn ngữ VHDL như Hình 15
th

(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.
o ng
du
u
cu

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Ử BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
.c
ng
co
Hình 15 Chọn định dạng VHDL/ Verilog file cho thiết kế
• Step 6: Viết code chương trình cho thiết kế bằng ngôn ngữ VHDL (hoặc Verilog)
an

Đ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
th

LEDR thứ 0 và thứ 1 thông qua FPGA


ng

➢ library ieee;
➢ use ieee.std_logic_1164.all;
➢ use ieee.std_logic_unsigned.all;
o


du

➢ entity test01 is
➢ port (
➢ SW: in std_logic_vector (1 downto 0) ;
u

➢ LEDR : out std_logic_vector (1 downto 0)


cu

➢ );
➢ end entity;

➢ 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;

➢ assignLEDR = SW;

➢ endmodule

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

Ví dụ tín hiệu SW
được chuyển đến
LEDR

om
.c
ng
co
Hình 16 Soạn thảo chương trình bằng ngôn ngữ VHDL
an

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
th

17.
o ng
du
u
cu

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Ử BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
.c
ng

Hình 17 Lưu chương trình và đổi tên file giống tên project
co
• Step 7: Tiến hành gán pin cho thiết kế bằng cách import Assignments
an

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
th

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ẽ
ng

không chạy được.


o

Trên thanh menu chọn Assignments -> Import Assignments như Hình 18.
du
u
cu

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.
Trong ví dụ này sẽ chọn file “03_DE2_pin_assignments” đi kèm với bộ tài liệu.

om
.c
ng
co
Hình 19 Giao diện gán pin từ file
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
an

đị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
th

đã đượ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
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
o

theo sau đây.


du
u
cu

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Ộ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
.c
Hình 20 Tiến hành edit Assignment pin

ng
co
an
th
o ng
du
u
cu

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

Tiến hành biên dịch


sau khi gán pin

om
.c
ng
Hình 22 Tiến hành biên dịch chương trình bởi tác vụ nút Start Compilation
co
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.
an
th
o ng
du
u
cu

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Ộ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
.c
ng
co
an
th
o ng
du

Hình 24 Biên dịch thành công (chỉ có Warning và Info messagess)
u

Đố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
cu

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 .
Nếu có lỗi cú pháp thì báo cáo kiểu “Error” sẽ được thể hiện ở Hình 25.

om
.c
ng
co
an
th
o ng
du
u
cu

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Ử BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
.c
ng
co
Hình 26 Báo cáo tổng kết sau khi hoàn tất việc biên dịch
an

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
th

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ế ở
ng

mức cổng bằng cách sử dụng công cụ “Tools/Netlist Viewers/RTL Viewer” như Hình 27.
o
du
u
cu

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Ộ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
.c
ng
Hình 28 Xem thiết kế ở mức cổng
Ở đâ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
co
FF nào được thấy ở kết quả Hình 28.
an

2. Thực hiện mô phỏng


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
th

thiết kế hay không trước khi thực hiện đổ chương trình xuống kít.
ng

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.
o

• Step 1: Tạo file waveform


du

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.
u
cu

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Ộ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
Hình 29 Tạo file waveform

.c
• Step 2: Insert tín hiệu vào file waveform.

ng
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. co
Trên thanh menu chọn Edit/Insert/Inset Node or Bus…như Hình 30.
an
th
o ng
du
u
cu

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Ộ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
Hình 31 Giao diện Insert Node or Bus
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

.c
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

ng
nhấn OK -> OK như Hình 35 và Hình 36. co
an
th
o ng
du
u
cu

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Ộ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
.c
ng
co
an

Hình 33 List danh sách tín hiệu trong thiết kế


th
o ng
du
u
cu

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Ử BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
Hình 35 Chọn hết các tín hiệu muốn xem rồi nhấn OK

.c
Chỉ xem những tín hiệu đầu vào và đầu ra

ng
co
an
th
o ng
du

Hình 36 Chọn OK sau khi thiết lập các thông số


• Step 3: Vẽ dạng sóng cho tín hiệu đầu vào
u
cu

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Ử BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
.c
ng
Hình 37 Giao diện dạng sóng với tín hiệu ngõ vào SW
co
an
th
o ng
du
u
cu

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Ử BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
.c
ng
Hình 39 Thiết lập thời gian kết thúc mô phỏng
co
an
th
o ng
du
u
cu

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

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.

om
.c
ng
co
an

Hình 41 Tạo Netlist cho mô phỏng


th

Start Simulation
o ng
du
u
cu

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Ộ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
.c
ng
co
Hình 43 Kết quả quá trình chạy mô phỏng
an

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.
th

3. Thực hiện nạp chương trình xuống kít


ng

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ả
o

như Hình 44.


du
u
cu

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

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.

om
.c
ng
Hình 45 Công cụ nạp chương trình
co
Giao diện nạp lệnh như Hình 46 cần chú ý những điểm sau:
+ Kiểm tra chính xác họ FPGA trên kit đang dùng.
an

+ 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ữ
th

“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
ng

sử dụng mạng Internet để kiểm tra và cài đặt.


o
du
u
cu

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Ử BÀI THÍ NGHIỆM 0: GIỚI THIỆU

om
.c
ng
Hình 47 Giao diện nạp lệnh đã nhận được USB-Blaster
co
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ộ
an

chương trình được nạp thành công.


th
o ng
du
u
cu

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

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.

om
.c
ng
co
Hình 49 Kiểm tra kết quả bằng các Switch và đèn LEDR
an
th
o ng
du
u
cu

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ả mô phỏng Kết quả thực hiện trên Các câu hỏi liên quan
kit DE2

om
TN 1.1

.c
TN 1.2

ng
co
an
th
o ng
du
u
cu

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Ử BÀI THÍ NGHIỆM 1

I. 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:
Thực hiện và mô phỏng các cổng logic.

om
2. Thiết kế:

.c
a. Sơ đồ khối (Block Diagram):

ng
co
an
th

b. Sơ đồ mạch logic (Logic Diagrams):


o ng
du
u
cu

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;

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;

architecture dataflow of gates is


begin
not_op <= not a_in;

om
and_op <= a_in and b_in;
nand_op <= a_in nand b_in;
or_op <= a_in or b_in;

.c
nor_op <= a_in nor b_in;
xor_op <= a_in xor b_in;
xnor_op <= a_in xnor b_in;

ng
end dataflow;
co
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)
an

f. Kết quả thực hiện trên kit DE2


th

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à
ng

báo giáo viên hướng dẫn ghi nhận.


o

g. Tham khảo – Verilog Code


du

• //Verilog code for all logic gates


module gates(a_in, b_in,not_op,and_op,nand_op,or_op,nor_op,xor_op,xnor_op);
u
cu

input a_in,b_in;
output not_op,and_op,nand_op,or_op,nor_op,xor_op,xnor_op;

assign not_op = ~a_in;


assign and_op = a_in&b_in;
assign nand_op = ~(a_in&b_in);
assign or_op = a_in|b_in;
assign nor_op = ~(a_in|b_in);
assign xor_op = a_in^b_in;
assign 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
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.

om
❖ Đánh giá của GVHD:

.c
Kết quả mô phỏng Kết quả thực hiện trên Các câu hỏi liên quan

ng
cokit DE2

TN 2.1
an

TN 1.2
th
o ng
du
u
cu

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Ử BÀI THÍ NGHIỆM 2

I. 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):

b. VHDL Code:
• //VHDL code

om
.c
ng
co
an
th
ng

c. Kết quả mô phỏng ModelSim/VWF (Results)


o

d. Kết quả mô phỏng trên kit DE2


du
u
cu

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Ử BÀI THÍ NGHIỆM 2

II. 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:
• A, B: 4-bit input
• Cin: 1-bit input
• Output: 4-bit output
• Cout: 1-bit output

om
• Control: 3-bit control input

.c
Bảng 1 Các ngõ vào và ngõ ra của ALU
Signal Signal Assigned Comment

ng
Type Name Port
Inputs
co
➢ A ➢ SW[3..0] ➢ 4-bit input to be displayed on HEX6

➢ B ➢ SW[7..4] ➢ 4-bit input to be displayed on HEX4


an

➢ Cin ➢ SW[8] ➢ 1-bit input to be displayed on LEDR[0]


th

➢ Control ➢ SW[17..15] ➢ 2-bit input to be displayed on LEDR[17..16]


ng

Outputs
➢ ALU_out ➢ HEX0 ➢ 4-bit output result to be displayed on HEX0
o

➢ Cout ➢ LEDG[0] ➢ 1-bit output result to be displayed on LEDG[0]


du

Bảng 2 Tập lệnh của ALU


u
cu

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ế:
a. Sơ đồ khối (Block Diagram):

om
.c
ng
co
an

b. Sơ đồ mạch logic (Logic Diagrams):


th
o ng
du
u
cu

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

c. VHDL Code:
• //VHDL code

om
.c
d. Kết quả mô phỏng ModelSim/VWF (Results)

e. Kết quả mô phỏng trên kit DE2

ng
co
an
th
o ng
du
u
cu

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
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.

om
❖ Đánh giá của GVHD

.c
Kết quả mô phỏng Kết quả thực hiện trên Các câu hỏi liên quan

ng
kit DE2

TN 3.1
co
an

TN 3.2
th
o ng
du
u
cu

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Ử BÀI THÍ NGHIỆM 3

I. 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ế.

om
.c
LOAD ENABLE UP
ng
co
1 1 X Bộ đếm nạp giá trị từ ngõ vào D.
an

Mạch thực hiện đếm lên. Nếu giá trị của bộ đếm là
0 1 1
9, Carry output (CO) = 1.
th

Mạch thực hiện đếm xuống. Nếu giá trị của bộ đếm
0 1 0
ng

là 0, Carry output (CO) = 1

Bảng 3 Các ngõ vào, ngõ ra của bộ đếm mã BCD


o
du

Signal Signal Assigned Comment


Type Name Port
u

Inputs D SW[3..0] 4-bit input to be displayed on HEX6


cu

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]
Outputs Q HEX0 4-bit output result to be displayed on HEX0
Cout LEDG[0] 1-bit output result to be displayed on
LEDG[0]
• 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ế:
a. Sơ đồ khối (Block Diagram):

om
.c
ng
co
b. Sơ đồ mạch logic (Logic Diagrams) (Nếu có):
an

c. VHDL Code:
th

Các ví dụ thiết kế của Clock_Divider:


• //Example 1: VHDL code for Divider from 50MHz to 1Hz
ng

library IEEE;
o

use IEEE.STD_LOGIC_1164.ALL;
du

use IEEE.numeric_std.ALL;

entity Clock_Divider is
port ( clk,reset: in std_logic;
u

clock_out: out std_logic);


cu

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;

architecture Behavioral of simpleCounter is


signal counter: unsigned (26 downto 0);
signal cnt_temp: bit_vector(26 downto 0);
begin

om
process (clk50Mhz)
begin
if clk50MHZ = '1' and clk50Mhz'event then

.c
counter <= counter + 1;
--increment counter every 20 ns (1/ 50 Mhz)cycle.
end if;

ng
end process;
cnt_temp <= bit_vector(counter);
led <= cnt_temp(26); -- (2^26 / 50E6) = 1.34 seconds
end Behavioral;
co
• //Example 3: VHDL code for Clock_Divider
an

library IEEE;
use IEEE.numeric_bit.ALL;
th

entity complex is
Port ( clk50Mhz : in bit;
led : inout bit );
ng

end complex;
o

architecture Behavioral of complex is


signal counter: integer range 1 to 50000000;
du

begin
process (clk50Mhz)
begin
u

if clk50MHZ = '1' and clk50Mhz'event then


if counter = 50000000 then counter <= 1; led <= not led;
cu

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Ử BÀI THÍ NGHIỆM 3

II. 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.
• 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ế

om
➢ Nạp giá trị bộ đếm là 97.
➢ Tăng giá trị bộ đếm thêm 5 đơn vị.

.c
➢ Chờ 2 chu kỳ CLK.
➢ Giảm giá trị bộ đếm 4 đơn vị.

ng
➢ Xóa bộ đếm.
co
2. Thiết kế:
a. Sơ đồ khối (Block Diagram):
an

b. Sơ đồ mạch logic (Logic Diagrams):


th

c. VHDL Code:
ng

• //VHDL code
o
du
u
cu

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.

❖Prelab:

om
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.

.c
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.

ng
❖ Đánh giá của GVHD co
Kết quả mô phỏng Kết quả thực hiện trên Các câu hỏi liên quan
an

kit DE2
th

Project
o ng
du
u
cu

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Ử BÀI THÍ NGHIỆM 4

I. 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:
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.

om
.c
ng
co
an
th
o ng
du

SV tìm hiểu thêm trên Google, ebooks để trả lời các câu hỏi trên
u
cu

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:
• 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.

om
• 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

.c
ngõ ra sẽ bị xóa.

ng
co
an
th
ng

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
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à
du

ngõ vào trước đó.


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ú ý
u

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
cu

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.

3. Thiết kế

om
a. Sơ đồ khối (Block Diagram):

.c
b. Sơ đồ mạch logic (Logic Diagrams):

ng
c. VHDL Code:
• //VHDL code
co
an
th

d. Kết quả mô phỏng ModelSim/VWF (Results)


ng

e. Kết quả mô phỏng trên kit DE2


o
du
u
cu

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).
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…

om
Với quy ước thời gian:
• Hướng ưu tiên (A):

.c
➢ Xanh: 4 giây
➢ Vàng: 2 giây.

ng
➢ Đỏ: 10 giây. co
• Hướng phụ (B)


an

Xanh: 3 giây.
➢ Vàng: 1 giây.
th

➢ Đỏ: 12 giây.
• Đèn dành cho người đi bộ:
ng

➢ Xanh: 2 giây.
o

➢ Đỏ: 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.
du

• Chế độ bảo dưỡng:


u

➢ RST=1: Ra, Rb, and Rw nhấp nháy tần số 1Hz


cu

➢ 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Ộ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 4

om
.c
ng
3. Thiết kế co
a. Sơ đồ khối (Block Diagram):

b. Sơ đồ mạch logic (Logic Diagrams):


an

c. VHDL Code:
th

• //VHDL code
o ng
du

d. Kết quả mô phỏng ModelSim/VWF (Results)


u
cu

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
Download miễn phí chương trình ModelSim Student Edition (version 6.6d tại 12/2010) tại
www.model.com

om
.c
ng
co
Làm đúng theo 3 bước được hướng dẫn trên www.model.com
an

2. Hướng dẫn cơ bản


th

a. Khởi động ModelSim


o ng
du
u
cu

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

Mạch tổ hợp
cần thiết kế bao
gồm một
AND_GATE và
một OR_GATE.

om
.c
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.

ng
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
co
một project.
an

Bấm OK
th

c. Thêm file vào project


o ng
du
u
cu

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

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.

om
.c
ng
co
an
th
o ng
du

Bấm Close.

Bấm đôi vào tên file comb_ckt.vhd để mở cửa sổ soạn thảo chương trình
u
cu

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; -- component #1


use ieee.std_logic_1164.all;

entity OR_GATE is Mô tả linh kiện


port( X:
Y:
in std_logic;
in std_logic;
thứ 1: OR_GATE
F2: out std_logic);
end OR_GATE;

architecture behv of OR_GATE is


begin
process(X,Y)
begin
F2 <= X or Y; -- behavior des.
end process;
end behv;

om
-------------------------------------------------------------

library ieee; -- component #2


use ieee.std_logic_1164.all;

.c
entity AND_GATE is
port( A: in std_logic; Mô tả linh kiện

ng
B:
F1:
in std_logic;
out std_logic
thứ 2: AND_GATE
);
end AND_GATE;
co
architecture behv of AND_GATE is
begin
an

process(A,B)
begin
F1 <= A and B; -- behavior des.
th

end process;
end behv;
ng

--------------------------------------------------------------

library ieee; -- top level circuit


o

use ieee.std_logic_1164.all;
use work.all; Mô tả mạch tổ hợp:
du

entity comb_ckt is comb_ckt


port( input1: in std_logic;
input2: in std_logic;
u

input3: in std_logic;
cu

output: out std_logic


);
end comb_ckt;

architecture struct of comb_ckt is

component AND_GATE is -- as entity of AND_GATE


port( A: in std_logic;
B: in std_logic;
F1: out std_logic
);
end component;

component OR_GATE is -- as entity of OR_GATE


port( X: in std_logic;
Y: in std_logic;
F2: out std_logic
);
end component;

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;

----------------------------------------------------------------

Bấm File ->Save hoặc bấm biểu tượng để lưu chương trình.

om
.c
ng
co
an
th
o ng
du
u
cu

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

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.

om
.c
ng
co
an
th
o ng
du
u
cu

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

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

om
này ☺)

.c
ng
co
an
th

Nhập vào tên file testbench là tb_ckt, , chọn loại file là VHDL, giữ nguyên Folder là Top
ng

Level, rồi bấm OK.


o
du
u
cu

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 -- empty entity


end CKT_TB;

-------------------------------------------------------------------

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;

-- declare all I/O ports from unit under test as signals.


-- signals are usually declared within architecture

om
signal T_input1, T_input2, T_input3, T_output: std_logic;

begin

.c
U_UT: comb_ckt port map (T_input1,T_input2,T_input3,T_output);

process

ng
variable err_cnt: integer := 0; co
begin

-- Test case 1
T_input1 <= '0';
an

T_input2 <= '0';


T_input3 <= '0';
wait for 10 ns;
th

-- Test case 2
ng

T_input1 <= '1';


T_input2 <= '1';
T_input3 <= '1';
o

wait for 10 ns;


du

-- Test case 3
T_input1 <= '1';
T_input2 <= '0';
T_input3 <= '1';
u

wait for 10 ns;


cu

-- 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
BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM

om
.c
ng
co
f. Chạy mô phỏng
an

Bấm chọn tab Library


th
o ng
du
u
cu

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

Bấm chọn tab Wave để thấy cửa sổ Wave

om
.c
ng
co
an
th
o ng
du
u
cu

TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 60

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM

om
.c
ng
co
Bấm chọn cửa sổ Objects, rồi bấm Add -> To Wave -> Signals in Region để thêm các tín
an

hiệu cần quan sát vào cửa sổ Wave


th
o ng
du
u
cu

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
BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM

om
Cách 2: Nhập thời gian cần chạy mô phỏng, rồi bấm nút (Run)

.c
ng
co
an
th
o ng
du

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.
u
cu

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

Kết quả từ dạng sóng:

om
Thời gian t_input1 t_input2 t_input3 t_output
0 – 10 ns 0 0 0 0

.c
10 – 20 1 1 1 1
ns

ng
20 – 30 1 0 1 1
ns
co
30 – 40 0 1 0 0
ns
an


Kết quả này chứng tỏ mạch tổ hợp đã thiết kế đúng ☺ !
th
o ng
du

Trong ví dụ trên, ta đã viết mã VHDL của AND_GATE và OR_GATE chung với comb_ckt
u

trong cùng một file comb_ckt.vhd. Ta cũng có thể viết mã VHDL của AND_GATE và
cu

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):
a. Sơ đồ khối:

om
b. Phương trình hàm ngõ ra:

.c
𝑺𝒖𝒎 = 𝒂𝒊𝒏 ⨁𝒃𝒊𝒏 ⨁𝒄𝒊𝒏

ng
𝑪𝒂𝒓𝒓𝒚 = 𝒂𝒊𝒏 . 𝒃𝒊𝒏 + 𝒂𝒊𝒏 . 𝒄𝒊𝒏 + 𝒃𝒊𝒏 . 𝒄𝒊𝒏
co
c. Sơ đồ logic:
an
th
o ng
du
u
cu

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;

architecture dataflow of fulladder is

om
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);

.c
end dataflow;

ng
• // Full Adder (Structural)
library ieee;
co
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
an

entity fulladder is
th

port (a_in, b_in, c_in: in std_logic;


sum, carry: out std_logic);
end fulladder;
ng

architecture structural of fulladder is


component halfadder is
o

port (p, q: in std_logic;


du

r, s: out std_logic);
end component;
u

signal temp1, temp2, temp3: std_logic;


cu

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:

b. Bảng chân trị:

om
.c
c. Sơ đồ logic:
ng
co
an
th
o ng
du
u

d. HDL Code
cu

• //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:


om
b. Sơ đồ logic:

.c
ng
co
an
th

c. HDL Code
ng

➢ //MUX 4-1
o

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
du

use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
u

entity mux4_1 is
cu

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:

b. Bảng chân trị

om
.c
c. Sơ đồ logic

ng
co
an
th
o ng

d. HDL Code
du

• // D-FF with asynchrnous Reset


library IEEE;
u

use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
cu

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:
• //Bộ đếm lên với Reset bất đồng bộ

om
LIBRARY ieee;
USE ieee.std_logic_1164.all
USE ieee.std_logic_unsigned.all;
ENTITY Upcnt4 IS

.c
PORT (Clk, Rst : IN STD_LOGIC;
Q: OUT STD_LOGIC_VECTOR(3 downto 0));
END Upcnt4;

ng
ARCHITECTURE Behavioral OF Upcnt4 IS
BEGIN
co
PROCESS (Clk, Rst)
VARIABLE count: STD_LOGIC_VECTOR (3 downto 0);
BEGIN
an

IF Rst ='1' THEN


count := (others=>'0');
ELSIF rising_edge(clk) THEN
th

count := count + "0001";


END IF;
Q <= count;
ng

END PROCESS;
END Behavioral;
o
du

• // Bộ đếm lên với Reset đồng bộ


LIBRARY ieee;
u

USE ieee.std_logic_1164.all
USE ieee.std_logic_unsigned.all;
cu

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)
[4] Tài liệu hướng dẫn TN_KTS_DE2 – Phạm Đăng Lâm

om
.c
ng
co
an
th
o ng
du
u
cu

TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ PHẦN II – KIT ALTERA DE2 70

CuuDuongThanCong.com https://fb.com/tailieudientucntt

You might also like