Professional Documents
Culture Documents
om
.c
ng
co
TÀI LIỆU THÍ NGHIỆM KỸ THUẬT SỐ
an
PHẦN II
th
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ LỜI NÓI ĐẦU
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU
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
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.
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
➢ Bộ nhớ:
ng
- SRAM 512-Kbyte.
- SDRAM 8-Mbyte.
o
- Khe SD card.
u
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 2 TV box
ng
co
an
th
o ng
du
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
ng
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU
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
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
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
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 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
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
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
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
➢ 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
➢ );
➢ 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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 0: GIỚI THIỆU
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
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
Trên thanh menu chọn Assignments -> Import Assignments như Hình 18.
du
u
cu
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
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
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 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
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ể
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”
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
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
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
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
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
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
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 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 (>)
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
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.
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
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
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
Start Simulation
o ng
du
u
cu
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
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
Hình 44 Kết nối kít với máy tính thông qua cổng USB Blaster
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
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
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ 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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 1
om
2. Thiết kế:
.c
a. Sơ đồ khối (Block Diagram):
ng
co
an
th
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;
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
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
input a_in,b_in;
output not_op,and_op,nand_op,or_op,nor_op,xor_op,xnor_op;
endmodule
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ 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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 2
2. Thiết kế:
a. Sơ đồ khối (Block Diagram):
b. VHDL Code:
• //VHDL code
om
.c
ng
co
an
th
ng
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 2
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
Outputs
➢ ALU_out ➢ HEX0 ➢ 4-bit output result to be displayed on HEX0
o
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 2
2. Thiết kế:
a. Sơ đồ khối (Block Diagram):
om
.c
ng
co
an
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)
ng
co
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ 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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 3
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
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:
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
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
end Clock_Divider;
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;
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;
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
begin
process (clk50Mhz)
begin
u
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 3
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
c. VHDL Code:
ng
• //VHDL code
o
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ 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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 4
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 4
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
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.
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ BÀI THÍ NGHIỆM 4
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
➢ 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.
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):
c. VHDL Code:
th
• //VHDL code
o ng
du
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
Làm đúng theo 3 bước được hướng dẫn trên www.model.com
an
b. Tạo Project
Bấm File ->New ->Project…
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
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 ☺)
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
om
-------------------------------------------------------------
.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
--------------------------------------------------------------
use ieee.std_logic_1164.all;
use work.all; Mô tả mạch tổ hợp:
du
input3: in std_logic;
cu
begin
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
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
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.
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
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;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
-------------------------------------------------------------------
architecture TB of CKT_TB is
component comb_ckt is
port( input1: in std_logic;
input2: in std_logic;
input3: in std_logic;
output: out std_logic
);
end component;
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
-- Test case 2
ng
-- Test case 3
T_input1 <= '1';
T_input2 <= '0';
T_input3 <= '1';
u
-- Test case 4
T_input1 <= '0';
T_input2 <= '1';
T_input3 <= '0';
wait for 10 ns;
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.
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
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
om
.c
ng
co
an
th
o ng
du
u
cu
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
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.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
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).
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ APPENDIX B – VHDL CODES CHO CÁC IC THÔNG DỤNG
om
b. Phương trình hàm ngõ ra:
.c
𝑺𝒖𝒎 = 𝒂𝒊𝒏 ⨁𝒃𝒊𝒏 ⨁𝒄𝒊𝒏
ng
𝑪𝒂𝒓𝒓𝒚 = 𝒂𝒊𝒏 . 𝒃𝒊𝒏 + 𝒂𝒊𝒏 . 𝒄𝒊𝒏 + 𝒃𝒊𝒏 . 𝒄𝒊𝒏
co
c. Sơ đồ logic:
an
th
o ng
du
u
cu
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;
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
r, s: out std_logic);
end component;
u
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;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
om
.c
c. Sơ đồ logic:
ng
co
an
th
o ng
du
u
d. HDL Code
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
➢
➢
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
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:
om
.c
c. Sơ đồ logic
ng
co
an
th
o ng
d. HDL Code
du
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;
CuuDuongThanCong.com https://fb.com/tailieudientucntt
BỘ MÔN ĐIỆN TỬ APPENDIX A – MÔ PHỎNG SỬ DỤNG MODELSIM
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
END PROCESS;
END Behavioral;
o
du
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;
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
an
th
o ng
du
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt