Tải bản đầy đủ (.pdf) (18 trang)

Bài thí nghiệm 1 Thiết kế hệ thống số chuyên dụng

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

PHẦN HƯỚNG DẪN THỰC HÀNH
I. THỰC HÀNH NGÔN NGỮ MÔ TẢ PHẦN CỨNG
1. BÀI THÍ NGHIỆM SỐ 1: MÔ PHỎNG BỘ CỘNG 4-BIT

1.1. Mục đích, yêu cầu
a) Mục đích
Đây là bài thực hành mạch logic tổ hợp cơ bản, sinh viên sẽ được giới thiệu
về lý thuyết xây dựng một khối mạch tổ hợp thông qua ví dụ về khối cộng
4-bit, cách sử dụng các kiểu mô tả kiến trúc kiểu luồng dữ liệu và kiểu cấu trúc.
Ngoài ra, bài thực hành sẽ có hướng dẫn chi tiết việc mô phỏng bằng
ModelSim, Xilinx ISE.
b) Yêu cầu
Sinh viên nắm vững các câu lệnh và cú pháp sử dụng trong mạch tổ hợp
phục vụ cho việc viết mã nguồn mô tả phần cứng cho bộ cộng 4-bit.
1.2. Tóm tắt lý thuyết
Bộ cộng được thiết kế đơn giản nhất bằng cách ghép nối tiếp 4 khối
full_adder 1-bit.
A
Cout

B
Cin

Σ
s

Sum

A(3)

B(3)



Σ

Cout

A(2)

C(2)

B(2)

Σ

A(1)

C(1)

B(1)

Σ

A(0)

C(0)

B(0) Cin

Σ

full_adder


full_adder

full_adder

full_adder

Sum(3)

Sum(2)

Sum (1)

Sum (0)

Hình 1.1. Cấu trúc của 4 bit-adder
Khối full_adder như trên lý thuyết có thể mô tả theo các kiểu kiến trúc
khác nhau, ở đây để đơn giản chọn kiểu mô tả theo luồng dữ liệu (dataflow).
23


1.3. Nội dung thí nghiệm
Nội dung 1: Viết mã nguồn bộ cộng 4-bit bằng ngôn ngữ VHDL.
Nội dung 2: Thực hành mô phỏng bộ cộng 4-bit trên ModelSim.
Nội dung 3: Thực hành mô phỏng bộ cộng 4-bit trên Xilinx ISE.
Nội dung 4: Thực hành mô phỏng bộ cộng 4-bit trên Xilinx Vivado.
Nội dung 5: Bài tập phát triển thêm.
1.4. Trình tự thí nghiệm
a) Chuẩn bị thí nghiệm
- Vị trí thực hành bài thí nghiệm:

+ Các bài thí nghiệm môn học Thiết kế logic số được tiến hành tại
phòng thí nghiệm của Bộ môn Kỹ thuật Xung Số & Vi xử lý.
+ Mỗi nhóm học viên được bố trí ngồi một bàn thí nghiệm.
- Dụng cụ, vật tư và trang thiết bị thí nghiệm:
+ Trên mỗi bàn thí nghiệm bố trí 01 máy tính, 01 panel thí nghiệm.
+ Học viên tự đăng ký mượn thêm các dụng cụ phục vụ thí nghiệm và
các linh kiện liên quan đến bài thí nghiệm với giáo viên hướng dẫn thí nghiệm.
+ Trong trường hợp khi giáo viên hướng dẫn thí nghiệm đã hướng dẫn
đầy đủ các quy tắc an toàn về nguồn điện, an toàn mạch thí nghiệm mà học viên
làm sai, không tuân thủ theo các nguyên tắc, gây ra hiện tượng chập cháy,
hỏng hóc linh kiện sẽ phải hoàn toàn chịu trách nhiệm.
b) Tiến hành thí nghiệm
Nội dung 1: Viết mã nguồn bộ cộng 4-bit bằng ngôn ngữ VHDL.
Bước 1. Tạo thư mục làm việc.
Tạo thư mục con có tên adder4 trong thư mục D:\DLD_Labs. Thư mục
làm việc sẽ là D:\DLD_Labs\Basic_Labs\adder4.
Bước 2. Tạo file mã nguồn cho bộ cộng toàn phần trên Notepad++.
Mở phần mềm Notepad++, soạn thảo file mã nguồn của bộ cộng 4-bit,
soạn thảo xong chọn File/Save, và lưu file dưới tên full_adder.vhd trong thư
mục làm việc D:\DLD_Labs\Basic_Labs\adder4, lưu ý để lưu dưới dạng .vhd
tại ô File types chọn All files (*).
Nội dung của file code VHDL full_adder.vhd
--------------------------------------------------- full_adder.vhd 1 bit adder --------

24


-------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-------------------------------------------entity full_adder is

port (A
: in std_logic;
B
: in std_logic;
Cin : in std_logic;
S
: out std_logic;
Cout: out std_logic);
end full_adder;
architecture dataflow of full_adder is
begin
S
<= A xor B xor Cin;
Cout <= (A and B) or (Cin and (a or b));
end dataflow;
--------------------------------------------

Hình 1.2. Tạo file mã nguồn VHDL mới
Bước 3. Tạo file mã nguồn của bộ cộng 4-bit.
Quy trình làm như Bước 2, sau khi tạo xong lưu file thành adder4.vhd
với nội dung như sau:
---------------------------------------------------------------------- 4-bit adder (adder4.vhd) ---------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-------------------------------------------------------entity adder4 is
port(A : in std_logic_vector(3 downto 0);
B : in std_logic_vector(3 downto 0);
Ci : in std_logic;
Sum: out std_logic_vector(3 downto 0);
Co : out std_logic);
end adder4;


25


-------------------------------------------------------architecture dataflow of adder4 is
signal C: std_logic_vector(2 downto 0);
component full_adder
port(A
: in std_logic;
B
: in std_logic;
Cin : in std_logic;
S
: out std_logic;
Cout: out std_logic);
end component;
begin
u0: component full_adder
port map (A => A(0), B => B(0), Cin => Ci,
S => Sum(0), Cout => C(0));
u1: component full_adder
port map (A => A(1), B => B(1), Cin => C(0),
S =>Sum(1), Cout => C(1));
u2: component full_adder
port map (A => A(2), B => B(2), Cin => C(1),
S =>Sum(2), Cout => C(2));
u3: component full_adder
port map (A => A(3), B => B(3), Cin => C(2),
S =>Sum(3), Cout => Co);
end dataflow;

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

Nội dung 2: Mô phỏng bộ cộng 4-bit trên ModelSim.
Bước 1. Thiết lập thư mục làm việc.

Hình 1.3. Chọn đường dẫn tới thư mục làm việc
Khởi động ModelSim, tại menu File chọn Change Directory, tại hộp
thoại Change directory chọn đường dẫn tới thư mục làm việc
D:\DLD_Labs\Basic_Labs\adder4 (Hình 1.3).
Bước 2. Tạo thư viện work trong ModelSim.
26


Gõ lệnh sau vào cửa sổ Transcript của ModelSim:
vlib work

Hình 1.4. Tạo thư viện work trên cửa sổ Transcript
Bước 3. Biên dịch các file mã nguồn.
Gõ các lệnh sau vào cửa sổ Transcript.
vcom full_adder.vhd
vcom adder4.vhd

Hình 1.5. Biên dịch các file mã nguồn VHDL
Khi trình biên dịch phát hiện ra lỗi về mặt cú pháp thì nó sẽ thông báo
vị trí và nội dung gây ra lỗi trong mã nguồn. Nếu như mã nguồn của thiết kế
không có lỗi thì biên dịch xong sẽ cho ra kết quả như hình trên.
Bước 4. Kiểm tra nhanh thiết kế.
27



Tiến hành kiểm tra nhanh thiết kê bằng cách đưa vào đầu vào của DUT
các giá trị cố định và kiểm tra trực tiếp kết quả đầu ra. Kiểm tra nhanh cho phép
phát hiện và sửa những lỗi về mặt chức năng đơn giản trước khi bước vào
kiểm tra với số lượng lớn tổ hợp giá trị đầu vào.
Để kiểm tra nhanh bộ cộng thiết kế ở trên tạo thêm một file
adder4_test.vhd trong thư mục làm việc với nội dung như sau:
-------------------------------------------------------------------- adder4_test ------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-------------------------------------------------entity adder4_test is
end adder4_test;
-------------------------------------------------architecture test of adder4_test is
component adder4 is
port(A : in std_logic_vector(3 downto 0);
B : in std_logic_vector(3 downto 0);
CI : in std_logic;
SUM: out std_logic_vector(3 downto 0);
CO : out std_logic);
end component;
signal A : std_logic_vector(3 downto 0):= "0101";
signal B : std_logic_vector(3 downto 0):= "0110";
signal Ci : std_logic
:= '1';
signal Sum: std_logic_vector(3 downto 0);
signal Co : std_logic;
begin
DUT: component adder4
port map(A => A, B => B, CI => CI,
Sum => Sum, Co => Co);
end test;
--------------------------------------------------


Mã nguồn kiểm tra thiết kế adder4_test là thiết kế không nhất thiết
chứa bất cứ cổng vào ra nào ở phần khai báo. Kiến trúc của nó gồm hai phần,
phần khai báo tín hiệu sẽ khai báo các tín hiệu đầu vào của adder4; đối với
các tín hiệu đầu ra để trống. Phần hai là khai báo sử dụng adder4 như một
khối con có tên là DUT và gán các cổng vào ra tương ứng như trên.
Bước 5. Tiến hành biên dịch file mã nguồn.
Biên dịch file adder4_test.vhd bằng lệnh sau trong cửa sổ Transcript:
vcom adder4_test.vhd

Bước 6. Khởi tạo mô phỏng thiết kế.
Tiến hành khởi tạo mô phỏng thiết kế bằng lệnh:
28


vsim adder4_test

Hình 1.6. Khởi tạo mô phỏng thiết kế
Bước 7. Bổ sung các tín hiệu vào cửa sổ wave form để quan sát, để
thực hiện gõ lệnh sau vào cửa sổ Transcript.
add wave sim:/adder4_test/*

Lệnh trên sẽ hiển thị toàn bộ các tín hiệu tương ứng trong component
adder4 lên giản đồ sóng. Sau khi thực hiện các bước trên có thể tiến hành
chạy mô phỏng bằng nút công cụ Run trên thanh công cụ cửa sổ giản đồ sóng:
Bước 8. Chạy mô phỏng và quan sát kết quả trên waveform bằng cách
gõ lệnh sau vào cửa sổ Transcript.
run 1000 ns

Khi gặp lệnh này chương trình sẽ chạy mô phỏng trong thời gian 1000 ns.

Kết quả mô phỏng được thể hiện trên hình 1.7.
Quan sát trên hình 1.7 và so sánh với mã nguồn của adder4_testbench
có thể thấy với a = “0101” = 5, b = “0110” = 6, CI = ‘1’ thì cho ra kết quả
sum = “1100” = 12.
Bước 9. Để có thể dùng lại nhiều lần mà không phải gõ lại mã phục vụ
mô phỏng, tạo file run.do lưu vào trong thư mục làm việc với nội dung sau.
quit -sim
vlib work
vcom full_adder.vhd
vcom adder4.vhd
vcom adder4_test.vhd
vsim adder4_test
add wave sim:/adder4_test/*
run 1000 ns

29


Dòng thứ nhất để kết thúc bất kỳ mô phỏng nào đang thực thi nếu nó
tồn tại, dòng thứ hai tạo thư viện work nếu nó chưa tồn tại, tiếp đến là các
lệnh vcom để biên dịch các file mã nguồn, lệnh vsim để tiến hành mô phỏng,
sau đó là các lệnh bổ sung tín hiệu cần theo dõi vào giản đồ sóng. Lệnh cuối
run 1000 ns dùng để chạy mô phỏng trong thời gian đã được ấn định.

Hình 1.7. Kết quả mô phỏng adder4 trên giản đồ sóng ModelSim
Bước 10. Để biên dịch và chạy lại mô phỏng một cách tự động, tiến hành
gõ lệnh như sau trong cửa sổ Transcript của ModelSim.
do run.do

Lưu ý rằng việc tạo tệp kịch bản mô phỏng (script) này sẽ rất tiện lợi

cho các thiết kế lớn và phức tạp. Trên thực tế người lập trình có thể phải thực hiện
mô phỏng nhiều lần trước khi có thể kết luận về tính đúng đắn của thiết kế,
script run.do giúp quá trình mô phỏng được thực thi nhanh chóng, chính xác
mà không phải lặp lại các thao tác lệnh như trong các bước từ 2-9.
Nội dung 3: Thực hành mô phỏng bộ cộng 4-bit trên Xilinx ISE.
Bước 1. Khởi động Xilinx ISE.
Tại menu File chọn New Project, tại của sổ thiết lập thuộc tính chọn
đường dẫn tới thư mục làm việc D:\DLD_Labs\Basic_Labs\adder4\ chứa các
tệp mã nguồn vừa tạo adder4.vhd, full_adder.vhd.
Đặt tên Project là project_ise_adder4 (học viên chú ý rằng tên này có
thể thay đổi tùy biến).
30


Hình 1.8. Tạo New Project trên phần mềm Xilinx ISE

Hình 1.9. Đặt tham số chip FPGA trên phần mềm Xilinx ISE
31


Chọn các thuộc tính mô tả mạch FPGA và nhấn Next, tiếp đó là Finish,
kết thúc việc tạo Project (Hình 1.9).
Lưu ý, tùy vào mạch cụ thể mà sẽ chọn cấu hình FPGA tương ứng
gồm: Family, Device, Package and Speed. Đối với mạch thí nghiệm FPGAVXL-2017 của Bộ môn, học viên chọn các thuộc tính như sau: Family Spartan6, Device - XC6LSX25, Package - FTG256, Speed - -3.
Bước 2. Bổ sung mã nguồn.
Tiến hành thêm tất cả các tệp mã nguồn vào Project đã tạo, bằng cách
nhấn chuột phải vào biểu tượng Project đã tạo và chọn Add Source:

Hình 1.10. Bổ sung file mã nguồn VHDL trên phần mềm Xilinx ISE
Click chuột để chọn các tệp nguồn, chọn thuộc tính “Simulation”

nhằm chỉ ra tệp này chỉ để mô phỏng mà không tạo ra thiết kế trên mạch.

Hình 1.11. Chọn thuộc tính Simulation trên phần mềm Xilinx ISE
32


Bước 3. Chọn chế độ làm việc.
Trên cửa sổ thiết kế (Design) của Xilinx ISE có hai nút tùy chọn:
Implementation dùng để mô phỏng thực thi và Simulation dùng để mô phỏng
logic, nhấn chọn Simulation.

Hình 1.12. Cửa sổ Simulation trên phần mềm Xilinx ISE
Bước 4. Kiểm tra nhanh thiết kế.

Hình 1.13. Kiểm tra lỗi mã nguồn trên phần mềm Xilinx ISE
Tại mục Hierarchy, click chuột chọn phần kiểm tra nhanh (add4_test),
tại mục Process ở cửa sổ bên dưới, click chọn Behavioral Check Syntax để
kiểm tra thiết kế có lỗi hay không, nếu có lỗi cú pháp chương trình, tiến hành
sửa, chọn lại Behavioral Check Syntax đến khi chương trình báo không còn lỗi.
Bước 5. Mô phỏng và quan sát trên giản đồ sóng.
Tại mục Process, click đúp chuột vào Simulate Behavioral Model nằm
bên dưới mục Behavioral Check Syntax, thu được kết quả trên giản đồ sóng.
33


Hình 1.14. Giản đồ sóng mô phỏng trên phần mềm Xilinx ISE
Nội dung 4: Thực hành mô phỏng bộ cộng 4-bit trên Xilinx Vivado.
Bước 1. Tạo Project mới.

Hình 1.15. Khởi tạo Project mới trên phần mềm Xilinx Vivado

Khởi động phần mềm Xilinx Vivado, tại cửa sổ Quick Start nhấn vào
biểu tượng “Create New Project”, sẽ xuất hiện hộp thoại ở bên cạnh, nhấn
Next để tiến hành các bước tiếp theo trong quá trình tạo Project mới.
Bước 2. Tạo đường dẫn cho và đặt tên cho Project.
34


Hình 1.16. Tạo đường dẫn và đặt tên cho Project trên Vivado
Tại thư mục adder4 đã tạo ra và chứa code VHDL của bộ cộng 4-bit
tạo một Project mới và đặt tên là project_vidado_adder4 nhằm gợi nhớ
Project này được tạo ra trên Xilinx Vivado.
Bước 3. Chọn kiểu Project cần tạo.

Hình 1.17. Chọn kiểu cho Project mới là RTL
35


Bước 4. Bổ sung tệp mã nguồn VHDL vào Project mới.

Hình 1.18. Thực hiện lệnh bổ sung mã nguồn vào Project trên Vivado
Nhấn chuột vào nút “Add Files” như trên hình 1.18, khi đó sẽ xuất hiện
một cửa sổ mới cho phép tùy chọn bổ sung các tệp mã nguồn vào Project của
bộ cộng 4-bit vừa tạo trên Vivado.

Hình 1.19. Lựa chọn các file mã nguồn để bổ sung vào Project
36


Hình 1.20. Các file mã nguồn được bổ sung vào Project mới trên Vivado
Tiếp đó, nhấn Next liên tiếp để bỏ qua hai tùy chọn Add Existing IP

và Add Constraints, ở những Project đơn giản chưa cần dùng tới hai tùy chọn này.
Bước 5. Chọn cấu hình chip FPGA dùng thực thi trên mạch.

Hình 1.21. Tùy chọn cấu hình chip FPGA dùng để thực thi
Sau hai lần bỏ qua các cửa sổ bổ sung thêm tệp nguồn, cửa sổ cuối
Default Part sẽ xuất hiện phục vụ cho việc lựa chọn cấu hình chip FPGA
dùng để thực thi. Khác với ISE, trong Vivado bước này thực hiện sau cùng.
37


Việc đặt các tham số cũng tùy thuộc vào mạch FPGA cụ thể, ví dụ trong
trường hợp này có thể chọn Artix 7, XC7A100T, FTG256.
Sau khi Project mới được tạo ra, có thể quan sát các thông tin về
Project này trong bảng tổng hợp dưới đây sau khi nhấn nút lệnh Next trên
của sổ Default Part ở hình bên trên.

Hình 1.22. Kết quả tổng hợp các thông tin liên quan đến Project mới
Bước 6. Tiến hành chạy mô phỏng trên Vivado cho bộ cộng 4-bit.

Hình 1.23. Thực hiện mô phỏng bộ cộng 4-bit trên Vivado
38


Trên cửa sổ Project Manager ở mép trái của giao diện phần mềm
Xilinx Vivado (Hình 1.23) là chuỗi các lệnh được sắp xếp theo trình tự thứ bậc
từ trên xuống dưới tương ứng với quá trình từ mô phỏng logic cho đối tượng
cho tới thực thi trên mạch FPGA.

Hình 1.24. Kết quả mô phỏng bộ cộng 4-bit trên phần mềm Vivado
Trên cửa sổ Sources nhấn chọn đối tượng cần mô phỏng (adder4_test),

tiếp đó tại cửa sổ Project Manager ở mép trái giao diện Vivado nhấn chuột
phải vào tùy chọn “Run Simulation”, tiếp đó nhấn vào lệnh “Run Behavioral
Simulation” trên menu xổ xuống, quá trình mô phỏng bộ cộng 4-bit sẽ bắt
đầu được tiến hành trên Vivado. Kết quả mô phỏng trên giản đồ sóng của
phần mềm Vivado được thể hiện trên hình 1.24.
Nội dung 5: Bài tập phát triển thêm.
Bài 1. Thiết kế khối cộng 8 bit bằng cách ghép nối tiếp hai khối cộng 4 bit.
Bài 2. Thiết kế khối biến đổi từ mã nhị phân sang thermometer code
cho số nhị phân 3 bit, ví dụ chuỗi đầu ra có 8 bit hiển thị theo thermometer
code với số lượng bit ‘1’ từ bên phải sang quy định bởi mã nhị phân đầu vào
Ví dụ: 010 → 00000011, 110 → 0011111111.
Bài 3. Thiết kế khối tính toán số lượng bit 1 trong một chuỗi 8 bit nhị
phân, đầu ra là một số 4 bit nhị phân biểu diễn không dấu của số lượng bit 1.
Ví dụ: Đầu vào là 11011101, đầu ra là 0110.

39


Bài 4. Thiết kế bộ cộng hai số mã NBCD, đầu ra là một số dạng mã
NBCD có hai chữ số thể hiện bằng 8 bit như ví dụ sau.
Ví dụ: A+B = CD, A = 6(0110), B = 9(1001); 6+9 = 15,
nên C = 1(0001) D = 5(0101), kết quả 8 bit CD = 0001 0101.

Bài 5. Thiết kế khối cộng, trừ sử dụng toán tử, tín hiệu SUB = 1 thực hiện
phép trừ và SUB = 0 thực hiện phép cộng.
B

A

Sub Cin


3

3

0

1

N bit

s_B

A
Cout

Σ

B
Cin

Sum
3
ADDER/SUBTRACTOR

c) Tổng hợp, xử lý và đánh giá kết quả thí nghiệm
Qua buổi thí nghiệm, giáo viên sẽ tiến hành đánh giá sơ bộ về kết quả
thí nghiệm và ý thức khi tham gia thí nghiệm của các học viên. Kết hợp với
phần báo cáo kết quả thí nghiệm, giáo viên sẽ tiến hành chấm điểm bài thí nghiệm
đối với từng học viên.

1.5. Báo cáo thí nghiệm
a) Hướng dẫn viết báo cáo thí nghiệm
Sau mỗi buổi thí nghiệm, học viên sẽ viết báo cáo thí nghiệm theo
mẫu, và nộp bản báo cáo vào đầu buổi thí nghiệm tiếp theo cho giáo viên.
b) Mẫu báo cáo thí nghiệm
Mẫu báo cáo ở Phụ lục của giáo trình.

40



×