Professional Documents
Culture Documents
Huong Dan Thiet Ke Mach So Dung Vivado
Huong Dan Thiet Ke Mach So Dung Vivado
Huong Dan Thiet Ke Mach So Dung Vivado
HÀ NỘI - 2018
BÀI 1. HƯỚNG DẪN SỬ DỤNG PHẦN MỀM VIVADO
1.1. Cơ sở lý thuyết.
a). Tổng quan.
Phần cứng được sử dụng trong các bài thực hành là chip Artix_7 của hãng
Xilinx, các thiết kế mẫu được test trên kit Basys 3 sử dụng chip xc7a35tscg326-1.
Trong khuôn khổ tài liệu thực hành và chương trình đào tạo, phiên bản Vivado
được sử dụng là phiên bản Vivado 2015.2.
Yêu cầu cấu hình máy tính đáp ứng:
Máy tính sử dụng hệ điều hành Windows 7 ( hoặc mới hơn) phiên bản 64 bit.
(Lưu ý: Đối với phiên bản windows 32 bit chỉ có thể cài đặt và sử dụng được phiên
bản Vivado 2014 hoặc thấp hơn).
Lưu ý: Dự án chỉ có thể được mở bằng các phiên bản Vivado bằng hoặc cao hơn
phiên bản Vivado tạo dự án.
b). Các thành phần phần cứng sẽ được sử dụng trên Kit Basys 3 trong
chương trình đào tạo và thiết kế thực tế:
+ Các cổng kết nối thiết bị ngoại vi:
Cổng nạp chương trình đồng thời là cổng cấp nguồn sử dụng chuẩn
Micro USB thông dụng.
1 cổng COM, 1 cổng USB và 4 hàng Jump.
+ Hệ thống nút nhấn và cần gạt:
Basys 3 cung cấp cho người dùng một hệ thống bao gồm 5 nút nhấn và 16 cần
gạt chuyển đổi trạng thái. Tất cả sử dụng nguồn nuôi DC 3,3V. Đối với nút nhấn sẽ
tích cực ở mức cao, cần gạt có thể chuyển đổi giữa 2 mức trạng thái cao thấp tùy thuộc
vị trí của cần gạt.
+ Hệ thống Led đơn:
Cùng với 16 cần gạt, Basys 3 cung cấp 16 Led đơn tương ứng với 16 đầu ra
dưới dạng nhị phân. 16 Led này được mắc Katot chung. Như vậy, Led sẽ sáng khi đầu
ra ở mức cao và ngược lại.
1
+ Hệ thống Led 7 thanh:
Ngoài 16 Led đơn, Basys 3 cũng trang bị 4 Led 7 thanh sử dụng để hiển
thị kết quả thập phân. Sử dụng phương pháp quét Led thông qua 4 Transistor..
+ Hệ thống phát xung:
Trên Kit Basys 3 đã tích hợp sẵn 1 bộ phát xung có tần số 100MHz được
cấp bởi chân W5.
Trong bài này, chúng ta sẽ thực hiện tạo dự án và mô phỏng cổng logic And 2
đầu vào.
Click chuột vào mục Creat New Project để tạo một dự án mới.
Hộp thoại thông báo tạo Project xuất hiện, nhấn Next để tiếp tục.
2
Hộp thoại New Project xuất hiện, ta quan tâm tới 2 mục:
+ Project Name: Tên của thư mục chứa dự án.
+ Project Location: Đường dẫn chứa dự án.
Trong ví dụ này, ta đặt tên Project là And2 và vị trí lưu là Desktop trong thư mục
vi_du_1:
Điền tên thư mục vào mục File Name sau đó nhấn OK
3
Nhấn Next 3 lần để qua bước tiếp theo.
Tại bước này, thực hiện chọn Chip sẽ sử dụng như hình dưới và nhấn Next để tiếp tục.
Kiểm tra lại các thông tin 1 lần nữa rồi nhấn Finish để hoàn thành việc tạo dự án.
Cửa sổ tạo các thực thể (chân vào ra) cho dự án hiện lên, thực hiện tạo các chân
vào ra theo yêu cầu bài toán.
Ở đây, cổng logic And 2 đầu vào ta quuy định 2 đầu vào tương ứng là A và B,
đầu ra C. sau khi tạo xong các thực thể, nhấn OK để hoàn thành việc tạo chân.
Để tạo thêm chân click chuột vào dấu +. Để xóa chân, chọn chân cần xóa sau đó
nhấn dấu -.
4
Phần mềm sẽ tạo ra các file liên quan tới dự án, quan tâm tới mục Design
Sources.
Bước 2: Viết chương trình VHDL.
Kích đúp chuột vào file And2 – Behavioral (and2.vhd) để thực hiện việc mô
tả mạch bằng ngôn ngữ VHDL.
Lưu ý: Với mỗi bước thực hiện thành công, phần mềm đều đưa ra 1 hộp thoại thông
báo kết thúc quá trình. Tích chọn ô Don’t Show the Dialog again sau đó nhấn Cancel
để đóng hộp thoại. Chẳng hạn:
Mặc định phần mềm đã tạo sẵn cho ta thư viện cơ bản và khung chương trình
chính, thực hiện việc viết chương trình mô tả mạch điện theo yêu cầu đặt ra.
Trong ví dụ này, ta thực hiện việc mô tả cổng And 2 đầu vào như sau:
5
Code chương trinh:
---------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity and2 is
Port ( a : in STD_LOGIC;
b : in STD_LOGIC;
c : out STD_LOGIC);
end and2;
architecture Behavioral of and2 is
begin
c <= a and b;
end Behavioral;
Sau khi đã hoàn thành chương trình, tiến hành lưu file bằng cách nhấn Save
hoặc tổ hợp phím Ctrl + S.
Bước 3: Mô phỏng thiết kế.
Click chuột vào tùy chọn Run Simulation và chọn Run Behavioral Simulation
để chạy mô phỏng mạch điện.
Chuột phải vào chân cần tạo xung chọn mục Force Clock.
Cửa sổ tạo xung xuất hiện, thực hiện điền các thong số như sau:
6
+ Leading edge value: Giá trị đầu của xung cần tạo.
+ Trailing edge value: Giá trị sau của xung cần tạo.
+ Starting after time offset: Thời gian bắt đầu mô phỏng.
+ Cancel after time offset: thời gian kết thúc mô phỏng.
+ Period: Chu kì của một xung.
Trong ví dụ này, ta sẽ quy định thời gian mô phỏng là 8s. Trong đó chu kì của
xung A là 8s và của xung B là 4s.
Xung A Xung B
Chọn thời gian mô phỏng là 8s và đơn vị thời gian là second. Sau đó click chuột
vào Run hoặc nhấn tổ hợp phím Shift + F2 để tiến hành chạy mô phỏng.
Sau khi mô phỏng thành công và xung ra đúng với yêu cầu bài toán, tiếp tục tới
bước tiếp theo – tổng hợp mạch điện.
Bước 4: Tổng hợp mạch điện (Run synthesis).
7
Kích chuột vào Run Synthesis để tiến hành tổng hợp mạch điện.
Sau khi tạo mạch điện thành công và không có lỗi, tiến hành chạy tùy chọn
Schematic trong mục Open Elaborated Design.
Quá trình tổng hợp sẽ diễn ra nhanh hay chậm tùy thuộc vào độ phức tạp của
mạch điện.
Sau khi quá trình tổng hợp kết thúc, mạch điện được phần mềm tạo ra sẽ có dạng
như hình dưới ứng với mô tả về mạch điện.
8
Bước 6: Quay định các I/O Port cho các tín hiệu vào ra.
Sau khi đã tổng hợp mạch thành công, tiến hành quy định các I/O Port cho các
tín hiệu A, B, C bằng cách click chuột vào 3I/OPorts.
Ta sẽ quy định các I/O Port cho các tín hiệu dựa vào sơ đồ bên dưới. Trong đó:
+ Button: Các nút nhấn nhả.
+ Slide Switches: Các cần gạt chuyển mức điện áp (3,3v tương ứng mức
cao, 0v tương ứng mức thấp).
+ Leds: Các LED đơn được mắc Katot chung.
+ 7 Segment Display: Khối Led 7 thanh.
Trong ví dụ này ta sử dụng 2 cần gạt tương ứng với chân V17 và V16 để đưa tín
hiệu đầu vào A và B, sử dụng Led đơn tương ứng với chân U16 để biểu thị trạng thái
đầu ra C.
9
Sơ đồ chân Chip Artix-7 trong kit Basys 3
Các Switches và Led đều sử dụng nguồn DC3,3v làm nguồn cấp, vì thế từ các
quy định ở trên ta có thể điền đầy đủ bảng quy định chân như sau:
10
Bước 7: Tổng hợp file Bit.
Sau khi thực hiện quy định các I/O Port cho các tín hiệu, tiến hành tổng hợp file
bit bằng cách chạy tùy chọn Generate Bitstream.sau đó nhấn Save.
Cửa sổ Save Constraints hiện lên, Nhập tên file bit vào mục File Name và nhấn
OK để tiến hành tạo ra file Bit.
Bước 8: Kết nối Kit Basys 3 với máy tính và nạp chương trình.
Cuối cùng, chạy tùy chọn Open Hardware Design để thực hiện nạp chương
trình vào Kit Basys 3.
11
Sau đó kết nối kit Basys 3 với máy tính thông qua cáp MicroUSB. Click vào
Open target chọn Auto connect. Máy tính sẽ tự nhận kit nếu kết nối đúng cách.
Lưu ý: Cần đảm bảo sự kết nối giữa Kit Basys 3 và máy tính ổn định.
Cửa sổ chọn file bit xuất hiện, mặc định phần mềm đã chọn sẵn file bit vừa tạo.
Nhấn Program để nạp file bit vào Kit.
Cửa sổ Manage License hiện lên, click vào mục Load license sau đó chọn
Coppy License… sau đó link tới nơi chứa file License và nhấn open.
Một hộp thoại thông báo add License thành công hiện lên, nhấn OK để hoàn tất.
44
b). Hướng dẫn sửa lỗi Place Design khi tạo file bit.
Trong quá trình tạo file bit, có thể sinh ra lỗi place design do việc tạo thiếu chân.
Để khắc phục lỗi này, đầu tiên chuột phải vào lỗi sau đó chọn Coppy Message.
Tiếp theo, trong mục Source tìm tới mục Constraints. Trong mục Constrs_1
Trong ví dụ này, kích đúp chuột vào file dem10.xdc(target) .
Sau đó Paste đoạn message vừa coppy ở trên vào cửa sổ soạn thảo. xóa các dòng
lệnh không cần thiết. sau đó ta thu được dòng lệnh như sau:
Dòng lệnh:
--------------------------------------------------------------------------
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_IBUF]
-------------------------------------------------------------------------
Sau khi đã sửa lỗi thành công, tiến hành tạo lại file bit.
45
2. Mô phỏng mạch điện bằng Simulation TestBench.
Với việc mô phỏng mạch điện bằng Simuliation TestBench cho phép người sử
dụng mô tả được các mạch điện lớn một cách nhanh chóng và hiệu quả hơn so với việc
phải cài đặt thủ công các thông số cho từng tín hiệu như cách truyền thống.
Trong phần này, ta sẽ đi tìm hiểu cách thức để có thể mô phỏng được 1 mạch
điện sử dụng Simulation TestBench.
Để dễ dàng trong việc học tập và tiếp thu hiệu quả, ta sẽ thực hiện mô tả cổng
AND 2 đầu vào. Đây là 1 trong những cổng logic cơ bản nhất.
Các bước thực hiện:
Viết chương trình mô tả mạch điện bằng VHDL
Bước này ta sẽ thực hiện viết chương trình mô tả mạch điện giống với phương
pháp đã học (bước 1 và 2).
46
Giả sử, đặt tên file là and2_tb. Sau khi đặt tên file nhấn OK sau đó nhấn Finish để
hoàn tất.
Cửa sổ Define Module xuất hiện, nhấn OK sau đó chọn Yes để hoàn tất việc tạo file.
Kết thúc quá trình tạo file, thu được 2 file như sau:
Tiếp theo, kích đúp vào file and2_tb – Behavioral (and2_tb.vhd) để viết
chương trình.
Khai báo component And 2 cho cổng And vừa viết ở trên. Đồng thời khai báo 3
tín hiệu tương ứng với 3 tín hiệu của cổng And vừa tạo.
47
Bắt đầu chương trình, ta sẽ sử dụng component vừa khai báo ở trên và sử dụng
Port map để gán tín hiệu vừa khai báo.
Tiếp theo, sử dụng 1 process để liệt kê các trường hợp có thể xảy ra của 2 tín
hiệu vừa tạo, tương ứng với đó sẽ được tín hiệu đầu ra. Với mỗi trường hợp, độ trễ là
100 ns.
Lưu ý: Đơn vị sử dụng là ns ( nano giây), thời gian mô phỏng tối đa là 1000 ns.
Code chương trình:
-------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity and2_tb is
end and2_tb;
architecture Behavioral of and2_tb is
component and2_vhd
Port ( a : in STD_LOGIC;
b : in STD_LOGIC;
c : out STD_LOGIC);
end component;
signal aa,bb : STD_LOGIC;
signal cc : STD_LOGIC;
begin
UUT : and2_vhd port map (a => aa, b => bb, c => cc);
process
begin
aa<='0';
bb<='0';
wait for 100 ns;
aa<='0';
bb<='1';
wait for 100 ns;
aa<='1';
bb<='0';
wait for 100 ns;
aa<='1';
bb<='1';
wait;
end process;
end Behavioral;
Sau khi viết xong chương trình, ta sẽ thu được file simulation sources:
48
Tiếp theo, chạy tùy chọn Run Behavioral simulation trong mục Run
Simulation để chạy mô phỏng:
Click vào tùy chọn zoom Fit để xem toàn bộ xung mô phỏng.
entity mux41_vhd is
Port ( a : in STD_LOGIC;
b : in STD_LOGIC;
d0 : in STD_LOGIC;
49
d1 : in STD_LOGIC;
d2 : in STD_LOGIC;
d3 : in STD_LOGIC;
y : out STD_LOGIC);
end mux41_vhd;
entity mux41_tb is
end mux41_tb;
51
4. Một số tài liệu và thiết kế tham khảo.
Bạn đọc có thể tham khảo 1 số tài liệu như:
+ EVITA VHDL.
+ MIT Press - Circuit Design with VHDL (2005)
+ Introduction to Digital Design Using Digilent FPGA Boards
+ Digital Design Using Digilent FPGA Boards (RETIRED)
+ VHDL Tutorial: Learn by Ẽample.
Một số thiết kế mẫu:
+ Sử dụng mã tuần tự để thiết kế mạch tổ hợp (trang 118 – MIT).
+ Bộ tiếp nhận dữ liệu nối tiếp (trang 208 – MIT).
+ Trò chơi sử dụng led 7 thanh ( trang 212 – MIT).
+ Máy bán kẹo (trang 214 – MIT).
+ Máy phát tín hiệu (trang 217 – MIT).
+ Thiết kế bộ nhớ (trang 220 – MIT).
+ Mạng noron (trang 294 – MIT).
Bộ đếm 0-9999 sử dụng bộ chia tần, kết quả thập phân hiển thị trên led 7
thanh và nhị phân hiển thị trên led đơn. Mỗi hàng tương ứng với 4 bit nhị phân.
Code chương trình:
----------------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity dem_9999 is
Port ( clk : in STD_LOGIC;
rst : in STD_LOGIC;
led7 : out STD_LOGIC_VECTOR (7 downto 0);
led : out STD_LOGIC_VECTOR (3 downto 0);
ledd : out STD_LOGIC_VECTOR(15 downto 0));
end dem_9999;
54