Huong Dan Thiet Ke Mach So Dung Vivado

You might also like

You are on page 1of 26

KHOA ĐIỆN TỬ

TÀI LIỆU THỰC HÀNH


THIẾT KẾ VI MẠCH SỐ

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.

1.2. Hướng dẫn thiết kế.


Thiết kế cổng AND 2 đầu vào.
Các bước thực hiện:
Bước 1: Tạo Project mới:
Mở phần mềm Vivado theo đường dẫn
C:\Xilinx\Vivado\2015.2\bin\vivado.bat hoặc nháy đúp chuột vào biểu tượng vivado

trên màn hình.


Tại giao diện đầu tiên của phần mềm, ta quan tâm tới 3 tùy chọn:
+ Create New Project : Tạo một dự án mới.
+ Open Project: Mở một dự án đã có sẵn.
+ Recent Projects: Các dự án được mở gần đây.

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:

Nhấn Next 2 lần để tiếp tục.


Trong mục này, ngôn ngữ sử dụng là VHDL.
Click chuột vào biểu tượng dấu + sau đó chọn Create File....

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

Tiến hành đặt xung cho các đầu vào.

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.

Kết quả của quá trình 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.

Bước 5 : Tạo mạch điện.


Chạy Run Implementaion để tạo 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.

Click chuột vào Program device sau đó chọn tên chip.

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.

Bước 9: Thực hiện test trên kit.


Sử dụng 2 cần gạt V17 và V16 để tạo 2 tín hiệu đầu vào A và B. Quan sát sự
thay đổi trạng thái của LED U16 tương ứng với tín hiệu ra C.

1.3. Bài tập ứng dụng.


1.3.1 Thiết kế cổng OR 3 đầu vào, kiểm chứng trên kit Basys 3.
1.3.2 Thiết kế cổng NAND 2 đầu vào, kiểm chứng trên kit Basys 3.
1.3.3 Thiết kế cổng XOR 3 đầu vào, kiểm chứng trên kit Basys 3.
1.3.4 Thiết kế cổng XOR 3 đầu vào, kiểm chứng trên kit Basys 3.
12
1.3.5 Thiết kế JK-FF, kiểm chứng trên kit Basys 3.
1.3.6 Thiết kế bộ hợp kênh MUX 2-1, kiểm chứng trên kit Basys 3.
1.3.7 Thiết kế và mô phỏng ic 74138,74139, kiểm chứng trên kit Basys 3.
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
13
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
......................................................................................................................................
43
PHỤ LỤC

1. Một số lưu ý trong quá trình cài đặt và sử dụng Vivado.


a). Hướng dẫn Add License:
Để có thể sử dụng được các tính năng của phần mềm, nhà sản xuất cung cấp 1 bộ
license giúp người dùng có thể mở khóa và sử dụng Vivado một cách đầy đủ nhất.
Để add file này, click chuột vào mục help trên thanh công cụ sau đó chọn
Manage License:

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

Tạo simulation sources file.


Sau khi đã thực hiện viết chương trình xong, tiến hành tạo simulation sources
file bằng cách click vào mục Add Sources sau đó chọn tùy chọn Add or Create
simulaton sources sau đó nhấn Next để tiếp tục.

Tiếp theo, click vào dấu + sau đó chọn create file:

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.

Mô phỏng bộ hợp kênh MUX 4-1 sử dụng Simulation Testbench.


Áp dụng các kiến thức ở trên, tiến hành viết chương trình mô tả và mô phỏng mạch
MUX 4-1 sử dụng Simulation Testbench.
Với bộ hợp kênh MUX 4-1 như các thiết kế đã học, ta chỉ quan tâm tới phần mô
phỏng của nó.
Code mô tả bộ MUX 4-1
----------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

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;

architecture Behavioral of mux41_vhd is


begin
process(a,b)
begin
if a='0' and b='0' then
y <= d0;
elsif a='0' and b='1' then
y <= d1;
elsif a='1' and b='0' then
y <= d2;
else
y <= d3;
end if;
end process;
end Behavioral;
-------------------------------------------------------------------------------------
Tương tự, ta sẽ khai báo 1 component chính là mạch MUX 4-1. Đồng thời khai báo
các tín hiệu tương ứng với các tín hiệu vào ra của bộ MUX.
Bắt đầu chương trình, sử dụng component và các tín hiệu vừa khai báo ở trên và
Port map để gán các tín hiệu với chân tương ứng trong component.
Tiếp theo, sử dụng 1 process để liệt kê các trường hợp có thể xảy ra của bộ MUX.
Mỗi trường hợp cách nhau 1 khoảng là 100 ns.
Từ các mô tả trên, ta có đoạn chương trình sau:
-------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity mux41_tb is
end mux41_tb;

architecture Behavioral of mux41_tb is


component mux41_vhd
Port ( a : in STD_LOGIC;
b : in STD_LOGIC;
d0 : in STD_LOGIC;
d1 : in STD_LOGIC;
d2 : in STD_LOGIC;
d3 : in STD_LOGIC;
y : out STD_LOGIC);
50
end component;

signal aa,bb,dd0,dd1,dd2,dd3,yy : STD_LOGIC;


begin
UUT : mux41_vhd port map (a => aa, b => bb, d0 => dd0,
d1 => dd1, d2 => dd2, d3 => dd3, y => yy);
process
begin
aa <= '0';
bb <= '0';
dd0 <= '1';
dd1 <= '0';
dd2 <= '0';
dd3 <= '0';
wait for 100 ns;
aa <= '0';
bb <= '1';
dd0 <= '0';
dd1 <= '1';
dd2 <= '0';
dd3 <= '0';
wait for 100 ns;
aa <= '1';
bb <= '0';
dd0 <= '0';
dd1 <= '0';
dd2 <= '1';
dd3 <= '0';
wait for 100 ns;
aa <= '1';
bb <= '1';
dd0 <= '0';
dd1 <= '0';
dd2 <= '0';
dd3 <= '1';
wait for 100 ns;
wait;
end process;
end Behavioral;
------------------------------------------------------------------------
Xung sau khi thực hiện mô phỏng.

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;

architecture Behavioral of dem_9999 is


signal demt : integer range 0 to 9999;
signal n,tr,c,dv,ql : integer range 0 to 9;
signal clkl : STD_LOGIC :='1';
begin
52
--------bo dem 9999------
process(clk,rst)
variable demx : integer range 0 to 49999999 :=0;
variable dem : integer range 0 to 9999 :=0;
begin
if rst='1' then
demx :=0;
dem :=0;
elsif rising_edge(clk) then
if demx=49999999 then
demx :=0;
if dem=9999 then
dem :=0;
else
dem := dem +1;
end if;
else
demx := demx +1;
end if;
end if;
demt <= dem;
end process;

-----bo giai ma led don-------


process(n,tr,c,dv)
begin
ledd(15 downto 12) <= conv_std_logic_vector(n, 4);
ledd(11 downto 8) <= conv_std_logic_vector(tr, 4);
ledd(7 downto 4) <= conv_std_logic_vector(c, 4);
ledd(3 downto 0) <= conv_std_logic_vector(dv, 4);
end process;

-------bo tach so ket hop cong don-------


process(demt)
variable tam : integer range 0 to 9999;
begin
tam := demt;
n <= tam/1000;
tr <= (tam rem 1000)/100;
c <= (tam rem 100)/10;
dv <= tam rem 10;
end process;

---------bo tao cung 1KHz quet led----------


process(clk)
variable dddd : integer range 0 to 99999;
begin
if rising_edge(clk) then
if dddd=99999 then
dddd :=0;
clkl <= not(clkl);
53
else
dddd := dddd +1;
end if;
end if;
end process;

----------bo quet led-------------


process(clkl,n,tr,c,dv)
variable quet : STD_LOGIC_VECTOR (3 downto 0) := "1110";
begin
if rising_edge(clkl) then
case quet is
when "1110" => quet := "1101";
ql <= c;
when "1101" => quet := "1011";
ql <= tr;
when "1011" => quet := "0111";
ql <= n;
when others => quet := "1110";
ql <= dv;
end case;
end if;
led <= quet;
end process;

------------bo giai ma led----------


process(ql)
begin
case ql is
when 0 => led7 <= x"c0";
when 1 => led7 <= x"f9";
when 2 => led7 <= x"a4";
when 3 => led7 <= x"b0";
when 4 => led7 <= x"99";
when 5 => led7 <= x"92";
when 6 => led7 <= x"82";
when 7 => led7 <= x"f8";
when 8 => led7 <= x"80";
when others => led7 <= x"90";
end case;
end process;
end Behavioral;
-----------------------------------------------------------------------------------------------------------------

54

You might also like