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

Chương 3 NGÔN NGỮ mô tả PHẦN CỨNG VHDL

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 (3.72 MB, 40 trang )

1
Chương 3:
NGÔN NG
NGÔN NG


MÔ T
MÔ T


PH
PH


N C
N C


NG
NG
-
-
VHDL
VHDL
ThS
ThS
.
.
Nguy
Nguy



n
n
H
H


u
u
Kh
Kh
á
á
nh
nh
Nhân
Nhân
Tài liệu tham khảo
 Text Book:
 Circuit Design with VHDL, Volnei A.Pedroni, MIT press.
 VHDL Programming by Examples, Douglas L.Perry,
McGraw Hill.
 Reference Books:
 1076 IEEE Standard Vhdl Language Reference Manual
2002, IEEE Computer Society.
 Microprocessor Design Principles and Practices with
VHDL, Enoch O. Hwang.
 HDL Chip Design- A Practical Guide for Designing,
Synthesizing and Simulating ASICs and FPGAs using
VHDL or Verilog, Douglas J.Smith.

Phần mềm học tập
 Active-HDL 7.1.sp2
 Quartus (for Altera FPGAs)
 ISE (for Xilinx FPGAs)
 www.opencores.org
2
NỘI DUNG
 Giới thiệu về ngôn ngữ mô tả phần cứng –
HDL
 Cấu trúc của một thiết kế được mô tả bằng
VHDL
 Kiểu dữ liệu
 Toán tử và thuộc tính
 Phát biểu đồng thời
 Phát biểu tuần tự
 Hàm và thủ tục
1. Giới thiệu ngôn ngữ VHDL.
Phương pháp
thiết kế
bằng HDL
Phương pháp
thiết kế
truyền thống
1. Giới thiệu ngôn ngữ VHDL.
 VHDL là gì?
 Một ngôn ngữ mô tả phần cứng:
 VHDL - VHSIC Hardware Description Language.
 VHSIC - Very High Speed Integrated Circuits.
 Là chuẩn do Bộ QP Mỹ phát triển từ thập niên
70. Dựa trên ngôn ngữ lập trình ADA, nhằm tạo

ra tài liệu mô tả hoạt động của các mạch điện
tử.
 1987 được IEEE chuẩn hóa trong IEEE 1076-1987.
 1993 hoàn thiện lại thành IEEE 1076-1993.
 2002 giải quyết vấn đề protected types=>IEEE
1076-2002
3
1. Giới thiệu ngôn ngữ VHDL.
 VHDL là chuẩn độc lập mô tả hệ thống:
 Các nhà phát triển hệ thống dựa trên VHDL để

tả
,
thiết kế
hệ thống.
 Các phần mềm
mô phỏng
có thể thực hiện mô
phỏng hoạt động của hệ thống mô tả.
 Các phần mềm
tổng hợp
có thể thực hiện tổng
hợp sinh ra mạch thực để thực hiện hệ thống.
 Mạch sau khi tổng hợp có thể được nạp xuống chip
để thực hiện chức năng mô tả.
 Chức năng: mô tả hoạt động của các hệ thống
hoặc mạch điện tử nhằm thực hiện các hệ thống
hoặc mạch này trên linh kiện thực.
1. Giới thiệu ngôn ngữ VHDL.
 Ưu điểm của VHDL:

 Cho phép hoạt động của hệ thống được mô tả
(modeled) và kiểm thử (simulated) trước khi
các công cụ tổng hợp “dịch” thiết kế sang phần
cứng thực tế (gates and wires).
 Cho phép mô tả hệ thống song song.
 Khi các mô hình VHDL được “dịch” sang “gates
and wires” thì nó có thể được nạp lên phần
cứng CPLD và FPGA để thực thi.
1. Giới thiệu ngôn ngữ VHDL.
 Hai ứng dụng chính của VHDL là:
 PLD (Programmable Logic Device):
 CPLD (Complex PLD)
 FPGA (Field Programmable Gate Array).
 ASIC (Application-Specific IC)
4
Quy trình thiết kế mạch dựa trên VHDL
5
Design Entry
 Text Editor
 Language Sensitive Text Editor
 Keyword coloring
 Statement Template
 Visual Entry Tools
 Template & Translate (Structural)
 Testbench
 Converter (Waveformer)
HDL Design Entry (Text Editor)
6
HDL & Schematic Mixed
HDL Design Entry (Visual Tools)

HDL Simulation
7
HDL Synthesis
Các công cụ thiết kế VHDL
 Bộ công cụ của nhà sản xuất chip:
 Quartus/Maxplus => tổng hợp VHDL code lên
chip CPLD/FPGA của Altera.
 ISE => tổng hợp VHDL code lên chip
CPLD/FPGA của Xilinx.
 Một số công cụ của các hãng thứ ba:
 ActiveHDL
 Leonardo Spectrum (Mentor Graphics).
 Synplify (Synplicity).
 ModelSim (Mentor Graphics).
8
Một ví dụ VHDL đơn giản
Một ví dụ VHDL đơn giản
2. Code structure
library IEEE;
use IEEE.std_logic_1164.all;
ENTITY full_adder IS
PORT (a,b,cin: in bit;
s,cout:out bit);
END full_adder;
Architecture dataflow of full_adder is
begin
s <= a xor b xor cin;
cout <= (a and b) or (a and cin)
or (b and cin);
end dataflow;

9
Cấu trúc của một thiết kế được mô tả bằng VHDL
Một đọan Code chuẩn của VHDL gồm tối thiểu 3 mục sau:
• Khai báo LIBRARY: chứa một danh sách của tất cả các thư
viện được sử dụng trong thiết kế. Ví dụ: ieee, std, work, ….
• ENTITY: Mô tả các chân vào ra (I/O pins) của mạch
• ARCHITECTURE: chứa mã VHDL, mô tả mạch sẽ họat
động như thế nào.
Thư viện LIBRARY
 A LIBRARY là một
tập các đoạn mã
thường được sử
dụng. Đặt các đoạn
mã thường sử dụng
vào thư viện cho
phép chúng có thể
được tái sử dụng
hoặc chia sẻ giữa
các thiết kế khác
nhau.
Khai báo Library.
10
Thư viện LIBRARY
 Các thư viện thường sử dụng:
 ieee.std_logic_1164 (from the ieee library),
 standard (from the std library), and
 work (work library).
LIBRARY ieee; A semi-colon (;) indicates
USE ieee.std_logic_1164.all; the end of a statement or
LIBRARY std; declaration, while a double

USE std.standard.all; dash ( ) indicates a comment.
LIBRARY work;
USE work.all;
Thư viện LIBRARY
 std_logic_1164
 Gói của thư viện IEEE hỗ trợ multi-level logic.
 std
 Gói thư viện tài nguyên (kiểu dữ liệu, text IO…)
cho môi trường thiết kế VHDL.
 work
 Gói thư viện chứa các thiết kế của người dùng
mới tạo ra.
Thư viện LIBRARY
 Thư viện IEEE:
 std_logic_1164
 std_logic (8 mức logic),std_ulogic (9 mức logic)
 std_logic_arith
 Thực hiện các phép toán số học và so sánh.
 std_logic_signed
 Thực hiện các phép toán với kiểu DL
std_logic_vector, dữ liệu coi là có dấu
 std_logic_unsigned
 Thực hiện các phép toán với kiểu DL
std_logic_vector, dữ liệu coi là không dấu.
11
ENTITY (thực thể)
 ENTITY là danh sách đặc tả của các cổng vào
ra (input/output pins) của mạch.
 PORT là giao diện của mạch với các mạch bên
ngoài khác, PORT thường là các chân pin.

BLACK_BOX
rst
d[7:0]
clk
q[7:0]
co
ENTITY
 signal_mode: chiều truyền dữ liệu
 IN, OUT, INOUT (2chiều), BUFFER (khi tín hiệu ra
được dùng cho các tín hiệu khác bên trong).
 signal_type:
 bit, std_logic, integer…
 Port_name:
 Đặt tên theo quy tắc đặt tên chuẩn, tránh các từ
khóa.
ENTITY
Chế độ signal_mode cho biết chiều dữ liệu được truyền nhận:
 IN Dữ liệu chỉ đi vào ENTITY
 OUT Dữ liệu chỉ đi ra khỏi ENTITY
(và không được sử dụng bên trong)
 INOUT Dữ liệu là hai chiều (đi vào và ra)
 BUFFER Dữ liệu đi ra khỏi ENTITY và cũng
được đưa quay trở lại vào trong
Entity
12
Ví dụ: khai báo entity
ARCHITECTURE
 Phần ARCHITECTURE mô tả mạch hoạt
động như thế nào.
Một ARCHITECTURE luôn gắn với một ENTITY và mô tả

hoạt động của ENTITY đó.
Một ARCHITECTURE chỉ gắn với một ENTITY nhưng
Một ENTIY có thể có nhiều ARCHITECTURE khác nhau
ARCHITECTURE
 ARCHITECTURE có hai phần:
 Phần khai báo (optional)
 Khai báo tín hiệu và biến.
 Phần mã code:
 Mô tả cách kết nối, hoạt động của mạch.
13
ARCHITECTURE
 Ví dụ về mạch NAND:
Mô tả kết nối mạch:
Mạch thực hiện thao
tác NAND trên 2 đầu
vào (a,b) và gán (<=)
kết quả cho đầu ra x.
ARCHITECTURE
 Behavioral (hành vi)
 Dataflow (dòng dữ liệu)
 Structural (cấu trúc)
 Tổng hợp (hybrid)
Ví dụ: code cho mạch ghép kênh 2 : 1
ARCHITECTURE
 Mô hình hành vi tuần tự (Behavioral)
14
ARCHITECTURE
 Mô hình dòng dữ liệu (dataflow)
ARCHITECTURE
 Mô hình cấu trúc (structural)

ARCHITECTURE
 Mô hình cấu trúc (structural)
ENTITY multiplexer IS PORT (
d0, d1, s: IN BIT;
y: OUT BIT);
END multiplexer;
ARCHITECTURE Structural OF
multiplexer IS
COMPONENT and2 PORT (
i1, i2: IN BIT;
o: OUT BIT);
END COMPONENT;
COMPONENT or2 PORT (
i1, i2: IN BIT;
o: OUT BIT);
END COMPONENT;
COMPONENT inv PORT (
i: IN BIT;
o: OUT BIT);
END COMPONENT;
SIGNAL sn, asn, sb: BIT;
BEGIN
U1: inv PORT MAP(s, sn);
U2: and2 PORT MAP(d0, sn, asn);
U3: and2 PORT MAP(s, d1, sb);
U4: or2 PORT MAP(asn, sb, y);
END Structural;
15
Ví dụ
 Viết code theo mô hình cấu trúc cho flip

flop RS sau:
 Viết code theo mô hình cấu trúc cho bộ
cộng đầy đủ
VD1: Full_adder
 Bộ cộng hai số 1 bit đầy đủ theo dataflow
VD2: Full_adder
Adder
A(7:0)
B(7:0)
C(7:0)
Bộ cộng vector 8 bit đầy đủ theo dataflow
16
VD2: D Flip-flop, asyn reset
D flip-flop tích cực theo sườn dương của xung
đồng hồ clk với tín hiệu reset không đồng bộ.
Hoạt động:
+ rst = ‘1’ => q<=‘0’ không phụ thuộc clk.
+ rst = ‘0’, sườn dương clk => q<=d.
Mô hình hành vi tuần tự
BT1: Bộ dồn kênh Multilpexor
a,b: hai kênh vào 8 bit
sel: các bit chọn kênh
c: kênh ra 8 bit
Bộ dồn kênh Multilpexor
17
BT2: RS Flip-flop, asyn reset
Viết VHDL code mô tả flip-flop RS đồng bộ theo
sườn âm với tín hiệu reset không đồng bộ.
RS Flip-flop, asyn reset
3. Các kiểu dữ liệu.

 3.1. Các kiểu đối tượng.
 3.1.1. Signal
 3.1.2. Variable
 3.1.3. Constant
 3.2. Các kiểu dữ liệu.
18
3.1. Các kiểu đối tượng
 Một đối tượng VHDL bao gồm 1 trong các
loại sau:
 Signal: biểu diễn cho dây kết nối giữa các cổng
của các thành phần trong hệ thống.
 Variable: được sử dụng lưu trữ dữ liệu nội bộ
tạm thời, chỉ visible bên trong process.
 Constant: hẳng số
3.1.1. Signal
 Các đối tượng signal được sử dụng để
kết
nối
-
truyền thông
giữa các entity nhằm tạo
nên hệ thống.
Signal
3.1.1. Signal
 Phân loại:
 External Signal: là các tín hiệu kết nối hệ thống
với bên ngoài, tạo nên giao diện ghép nối của
hệ thống với các hệ thống khác.
 Internal Signal: là các tín hiệu chỉ nhúng bên
trong hệ thống, không nhìn thấy từ bên ngoài,

tạo ra sự truyền thông giữa các thành phần
bên trong hệ thống.
19
3.1.1. Signal
 External Signal & Internal Signal:
External
Signal
Internal
Signal
Khai báo
trong Entity
Khai báo
trong Architecture
ENTITY myboard IS
PORT ( [SIGNAL] a,b,c: inout bit;
data,extbus,result: inout bit_vector(0 to 7));
END myboard;
ARCHITECTURE structure OF myboard IS
SIGNAL x,y: bit;
SIGNAL intbus: bit_vector(0 to 7);
BEGIN
3.1.1. Signal
 Vị trí khai báo signal:
 Phần khai báo của ENTITY
 Phần khai báo của ARCHITECTURE
 Phần khai báo của PACKAGE
 Khai báo signal:
SIGNAL name: mode type [:=initial_value]
Không cần trong ENTITY
Chỉ cần trong ENTITY

3.1.1. Signal
 Ví dụ khai báo signal trong package:
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
PACKAGE sigdecl IS
TYPE bus_type IS ARRAY(0 to 7) OF std_logic;
SIGNAL vcc : std_logic := ‘1’;
SIGNAL ground : std_logic := ‘0’;
FUNCTION magic_function( a : IN bus_type) RETURN bus_type;
END sigdecl;
=> USE WORK.sigdecl.ALL;
20
3.1.1. Signal
 Ví dụ về phạm vi tác động của signal
A
B
C
D
E
F
3.1.1. Signal
 Một đặc điểm quan trọng của signal khi
được sử dụng bên trong một phần của mã
tuần tự (vd PROCESS, FUNCTION,
PROCEDURE) là:
 Giá trị không được cập nhật ngay lập tức sau
câu lệnh, mà phải đến kết thúc đoạn mã tuần
tự đó.
VD: asyn-reset DFF & NAND
Sự kết hợp giữa mạch

tổ hợp và mạch tuần tự
signal
21
3.1.2. Biến (variable)
 Biến variable chỉ biểu diễn các dữ liệu nội
bộ, chỉ có thể sử dụng bên trong PROCESS,
FUNCTION, hoặc PROCEDURE.
 Giá trị của biến variable không thể truyền
ra ngoài trực tiếp.
 Giá trị của biến được cập nhật trực tiếp sau
từng dòng mã lệnh.
3.1.2. Biến (variable)
 Khai báo biến:
VARIABLE name: type [range] [:= init_value];
VARIABLE control: BIT := '0';
VARIABLE count: INTEGER RANGE 0 TO 100;
VARIABLE y: STD_LOGIC_VECTOR (7 DOWNTO 0) := "10001000";
Ví dụ về sử dụng variable trong VHDL
22
LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY mux IS
PORT ( a, b, c, d, s0, s1: IN STD_LOGIC;
y: OUT STD_LOGIC);
END mux;

ARCHITECTURE ok OF mux IS
SIGNAL sel : INTEGER RANGE 0 TO 3;
BEGIN

PROCESS (a, b, c, d, s0, s1)
BEGIN
sel <= 0;
IF (s0='1') THEN sel <= sel + 1;END IF;
IF (s1='1') THEN sel <= sel + 2;END IF;
CASE sel IS
WHEN 0 => y<=a;
WHEN 1 => y<=b;
WHEN 2 => y<=c;
WHEN 3 => y<=d;
END CASE;
END PROCESS;
END not_ok;
LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY mux IS
PORT ( a, b, c, d, s0, s1: IN STD_LOGIC;
y: OUT STD_LOGIC);
END mux;

ARCHITECTURE ok OF mux IS
BEGIN
PROCESS (a, b, c, d, s0, s1)
VARIABLE sel : INTEGER RANGE 0 TO 3;
BEGIN
sel := 0;
IF (s0='1') THEN sel := sel + 1; END IF;
IF (s1='1') THEN sel := sel + 2; END IF;
CASE sel IS

WHEN 0 => y<=a;
WHEN 1 => y<=b;
WHEN 2 => y<=c;
WHEN 3 => y<=d;
END CASE;
END PROCESS;
END ok;
NOT OK
So sánh giữa Signal & Variable
3.1.3. Hằng số (Constant)
 Hằng số Constant là các tên được gán cho các giá
trị cụ thể của 1 kiểu DL. Sử dụng hằng số cho
phép người thiết kế xây dựng mô hình dễ hiểu
(better-documented) và dễ thay đổi.
 Khai báo hằng số:

CONSTANT name : type := value;
CONSTANT name : type := value;
 Hằng số có thể khai báo trong package, entity hoặc
architecture. Phạm vi tác động giống như tín hiệu
signal.
CONSTANT set_bit : BIT := '1';
CONSTANT pi: REAL := 3.1414;
CONSTANT datamemory : memory := ( ('0','0','0','0'),
('0','0','0','1'),
('0','0','1','1'));
23
3.2. Các kiểu dữ liệu VHDL
- Kiểu dữ liệu được định nghĩa trước
- Kiểu dữ liệu do người dùng định nghĩa

Các kiểu dữ liệu được định nghĩa trước
BIT, BIT_VECTOR
24
STD_LOGIC và STD_LOGIC_VECTOR
 STD_LOGIC (and STD_LOGIC_VECTOR): 8-valued
logic system introduced in the IEEE 1164
standard.
‘X’ Forcing Unknown (synthesizable unknown)
‘0’ Forcing Low (synthesizable logic ‘1’)
‘1’ Forcing High (synthesizable logic ‘0’)
‘Z’ High impedance (synthesizable tri-state buffer)
‘W’ Weak unknown
‘L’ Weak low
‘H’ Weak high
‘–’ Don’t care
Ví dụ
Nếu 2 tín hiệu std_logic bất
kỳ được nối đến cùng một
node, thì các mức logic đối
lập được tự động giải quyết
theo bảng
STD_ULOGIC và STD_ULOGIC_VECTOR
 hệ thống logic 9 mức trong chuẩn IEEE 1164:
(“U‟, “X‟, “0‟, “1‟, “Z‟, “W‟, “L‟, “H‟, “–‟).
Thật vậy, hệ STD_LOGIC mô tả ở trên là một
tập con của STD_ULOGIC. Hệ thống thứ 2 này
thêm giá trị logic “U‟ (Unresolve).
25
Một số kiểu khác
Ví dụ về các kiểu

×