Bài giảng Thiết kế logic số - Chương 2: Ngôn ngữ VHDL - Phát biểu đồng thời, mô hình FSM và testbench trên VHDL

Thiết kế logic số  
(VLSI design)  
Chương 2: Ngôn ngữ VHDL  
Bài giảng 5: Phát biểu đồng thời, mô hình FSM  
và testbench trên VHDL  
Giáo viên: Hoàng Văn Phúc  
Bộ môn KT Xung-Số-Vi xử lý, Khoa Vô tuyến Điện tử  
02/2017  
Giới thiệu Bài giảng  
Nội dung: Phát biểu đồng thời; mô tả FSM; VHDL  
testbench  
Thời lượng: 3 tiết bài giảng  
Phương pháp: Thuyết trình (Slides, Bảng), Thảo luận,  
Minh hoạ trên ModelSim  
Yêu cầu: Đọc trước Slides và tài liệu GV đã gửi  
Mục tiêu: Nắm được cách sử dụng các phát biểu đồng  
thời; cách mô tả FSM và viết testbench trên VHDL  
Tài liệu tham khảo:  
Giáo trình “Thiết kế logic số”, HVKTQS, 2012, chương 2.  
Circuit design with VHDL, MIT Press, 2005, chapter 5.  
2
Chương 2: Ngôn ngữ VHDL  
Nhắc lại bài cũ  
VHDL khác với các ngôn ngữ lập trình khác như thế  
nào?  
Hai loại phát biểu trong VHDL: tuần tự và đồng thời  
Các phát biểu tuần tự cơ bản: If, case, loop  
Ứng dụng chính của phát biểu tuần tự: các mạch số  
tuần tự, cấu trúc mô phỏng kiểm tra  
3
Chương 2: Ngôn ngữ VHDL  
Câu hỏi thảo luận chính  
Điểm khác biệt giữa phát biểu tuần tự và  
đồng thời?  
Phân biệt generic và constant trong VHDL?  
Phân biệt các phát biểu loop và generate?  
Phân biệt các phát biểu gán tín hiệu có điều  
kiện và các phát biểu if, case?  
Khi nào dùng kiểu testbench tự động?  
4
Chương 2: Ngôn ngữ VHDL  
VHDL statements (Phát biểu VHDL)  
VHDL  
statements  
Concurrent  
Sequential  
Đồng thời  
Tuần tự  
5
Chương 2: Ngôn ngữ VHDL  
Concurrent statements (Phát biểu đồng thời)  
KN: Là các phát biểu được thực thi đồng thời  
-> Việc thực thi không phụ thuộc vào vị trí xuất  
hiện của chúng trong chương trình  
Vị trí: Trực tiếp trong mô tả kiến trúc  
Ứng dụng: Dùng mô tả cho mạch dạng cấu trúc  
hoặc dataflow  
Cách gọi khác: phát biểu song song, dataflow  
6
Chương 2: Ngôn ngữ VHDL  
Concurrent statements (Phát biểu đồng thời)  
Gán tín hiệu (dùng toán tử)  
Mô tả PROCESS  
Cài đặt component (COMPONENT INSTALLATION)  
GENERATE  
Gán tín hiệu đồng thời (Concurrent Signal Assignment)  
7
Chương 2: Ngôn ngữ VHDL  
Gán tín hiệu (dùng toán tử)  
S <= (A xor B) xor Cin;  
Cout <= (A and B) or  
(Cin and (A xor B));  
Phần cứng tạo ra:  
8
Chương 2: Ngôn ngữ VHDL  
Nhắc lại về PROCESS  
Mỗi khối câu lệnh PROCESS là một khối lệnh tuần tự  
Mô tả mạch theo hành vi  
Khối PROCESS không có danh sách Sensitive list thì bắt buộc  
phải xuất hiện lệnh WAIT  
Không giới hạn số lệnh PROCESS trong một mô tả kiến trúc  
9
Chương 2: Ngôn ngữ VHDL  
COMPONENT INSTALLATION  
Khai báo (Declaration):  
COMPONENT component_name IS  
GENERIC (generic_declarations );  
PORT (input,_output_declarations);  
END COMPONENT component_name;  
Cài đặt (Installation):  
instant_name: COMPONENT component_name  
GENERIC MAP( generics => generic values)  
PORT MAP (inputs_and_outputs => signals);  
10  
Chương 2: Ngôn ngữ VHDL  
Ví dụ 1: Thanh ghi dịch  
CLK  
Din  
Dout  
SET  
CLR  
SET  
SET  
CLR  
D
Q
Q
D
Q
Q
D
Q
Q
CLR  
Sử dụng thiết kế D-FF ba lần  
Khai báo và cài đặt component  
11  
Chương 2: Ngôn ngữ VHDL  
Ví dụ 1: Thanh ghi dịch (tiếp)  
library IEEE;  
Dạng đầy đủ  
use IEEE.STD_LOGIC_1164.ALL;  
-----------------------------  
entity shift_reg is  
port(  
begin  
DFF1: D_flipflop  
port map (D => Din, CLK  
=> CLK, Q => Q1);  
DFF2: D_flipflop  
port map (D => Q1, CLK  
=> CLK, Q => Q2);  
DFF3: D_flipflop  
Din : in std_logic;  
CLK : in std_logic;  
Dout : out std_logic  
);  
end shift_reg;  
-----------------------------  
architecture struct of  
shift_reg is  
port map (Q2, CLK, Dout);  
signal Q1, Q2 : std_logic;  
component D_flipflop  
port(  
end structure;  
D : in std_logic;  
CLK : in std_logic;  
Q : out std_logic  
);  
Dạng rút gọn  
end component;  
12  
Ví dụ 2: Bộ đếm cấu hình được (configurable counter)  
entity counter is  
generic (  
N
: natural;  
top_value : std_logic_vector(15 downto 0);  
SETTOP : boolean := FALSE );  
port (  
count :out std_logic_vector(N-1 downto 0);  
enable :in std_logic;  
clk :in std_logic;  
reset :in std_logic);  
end entity;  
13  
Chương 2: Ngôn ngữ VHDL  
Khai báo component cho bộ đếm  
component counter is  
generic (  
N
: natural;  
top_value : std_logic_vector(15 downto 0);  
SETTOP : boolean := FALSE );  
port (  
count :out std_logic_vector(N-1 downto 0);  
enable :in std_logic;  
clk :in std_logic;  
reset :in std_logic);  
end component;  
14  
Chương 2: Ngôn ngữ VHDL  
Cài đặt component cho các bộ đếm  
-- installation of 4-bit and 8-bit counters  
counter1: counter  
generic map (N => 16, top_value => x"000a",  
SETTOP => TRUE)  
port map (count => cnt1, enable => enable,  
clk => clk, reset => reset);  
Dạng  
đầy đủ  
counter2: counter  
generic map (4, x"000b", FALSE)  
port map (cnt2, enable, clk, reset);  
Dạng  
rút gọn  
counter3: counter  
generic map (8, x"001b", TRUE)  
port map (cnt3, enable, clk, reset);  
15  
Chương 2: Ngôn ngữ VHDL  
CONCURENT SIGNAL ASSIGNMENT  
Gán tín hiệu dùng When  
Gán tín hiệu dùng With … Select  
___________________________________________  
Concurrent signal assignment: Gán tín hiệu đồng thời  
16  
Chương 2: Ngôn ngữ VHDL  
Gán tín hiệu dùng When  
target <= waveform1 when condition1 else  
waveform2 when condition2 else  
•
•
•
waveformN–1 when conditionN–1 else  
waveformN when conditionN else  
default_waveform;  
17  
Chương 2: Ngôn ngữ VHDL  
Gán tín hiệu dùng With … Select  
WITH expression SELECT  
target <= waveform1 WHEN choice_list1,  
waveform2 WHEN choice_list2,  
•
•
•
waveformN–1 WHEN choice_listN–1,  
waveformN WHEN choice_listN,  
default_value WHEN OTHERS;  
18  
Chương 2: Ngôn ngữ VHDL  
Thiết kế MUX dùng phát biểu đồng thời và tuần tự  
library ieee;  
library ieee;  
use ieee.std_logic_1164.all;  
use ieee.std_logic_1164.all;  
-----------------------------  
-----------------------------  
entity mux2 is  
entity mux2 is  
port (  
port (  
din_0 :in std_logic;  
din_0 :in std_logic;  
din_1 :in std_logic;  
din_1 :in std_logic;  
sel :in std_logic;  
sel :in std_logic;  
dout :out std_logic);  
dout :out std_logic);  
end entity;  
end entity;  
-----------------------------  
-----------------------------  
architecture bhv of mux2 is  
architecture bhv of mux2 is  
begin  
process(din_0, din_1,sel)  
begin  
begin  
case sel is  
with (sel) select  
when '0' => dout <= d_in0;  
when others => dout <= d_in1;  
end case;  
end process;  
end bhv;  
dout <= din_0 when '0',  
din_1 when others;  
.
end bhv;  
19  
GENERATE  
[label]:for generate_parameter_specification  
generate  
{ concurrent_statement }  
end generate [label];  
[label]: if condition  
generate  
{ concurrent_statement }  
end generate [label];  
20  
Chương 2: Ngôn ngữ VHDL  
Tải về để xem bản đầy đủ
pdf 42 trang Mãnh Khiết 12/01/2024 10540 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Thiết kế logic số - Chương 2: Ngôn ngữ VHDL - Phát biểu đồng thời, mô hình FSM và testbench trên VHDL", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_thiet_ke_logic_so_chuong_2_ngon_ngu_vhdl_phat_bieu.pdf