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 đủ
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:
bai_giang_thiet_ke_logic_so_chuong_2_ngon_ngu_vhdl_phat_bieu.pdf

