Bài 1
Vấn đề Mô hình hoá
phần cứng
(Hardware Modeling)
Hardware Modeling - 1 - 1
VHDL là gì?
•
Một từ viết tắt cho một từ viết tắt khác, VHDL là từ viết
tắt của VHSIC Hardware Description Language
–
•
Còn VHSIC là từ viết tắt của Very High Speed Integrated
Circuit
Tiếp theo, chúng ta bắt đầu tìm hiểu về xuất xứ và mục
đích của ngôn ngữ này
Hardware Modeling - 1 - 2
VHDL - Mục đích và sự
hình thành
•
VHDL, trước hết và chủ yếu là một công cụ để mô hình
hoá phần cứng (hardware modeling)
–
Để mô phỏng (simulation) và tổng hợp (synthesis) mạch
•
Chuẩn IEEE 1076 rất hoàn chỉnh cho việc mô hình hoá
thiết bị, nhưng nó mới chỉ định nghĩa các tham số khái
quát cho việc tổng hợp thiết bị
•
Kết quả: một mô hình phần cứng đã cho không hẳn đã
phù hợp với một thiết kế ở mức cổng logic đã có thông
qua các công cụ và các công nghệ đích (target) khác
nhau
Hardware Modeling - 1 - 3
Chuẩn hoá VHDL
•
Tổ chức IEEE chính thức phê chuẩn chấp nhận ngôn ngữ
VHDL như là một chuẩn của họ vào năm 1987, chuẩn
IEEE 1076
–
•
Giống như các chuẩn kác của IEEE, chuẩn IEEE 1076 được
sửa đổi theo chu kỳ tối thiểu là 5 năm
Sửa đổi đầu tiên được thực hiện năm 1993, và VHDL-93
hiện nay được coi là phiên bản chính thức của ngôn ngữ
này, hiện nay bắt đầu xuất hiện VHDL 200X
Tuy nhiên, hầu hết các công cụ (tool)
đều hỗ trợ phiên bản đầu tiên (VHDL-87)
–
Các bộ phận của VHDL 200X
được hỗ trợ bởi một số tool
–
VHDL-2X
VHDL-93
VHDL-87
Hardware Modeling - 1 - 4
Language Subsets
IEEE 1076
(synthesis)
•
IEEE 1076
(modeling)
Không phải tất cả các cấu trúc VHDL đều có thể tổng hợp
được. Ví dụ, wait for 10 ns là một cấu trúc mô hình hoá
thông dụng, nhưng nó không tương ứng với và cũng không
thể tạo ra một phần tử ở mức cổng logic
Hardware Modeling - 1 - 5
Các mức trừu tượng trong
mô tả phần cứng
Ít chi tiết hơn,
thiết kế và mô
phỏng nhanh
hơn
F
Behavioral
RTL
AND_OR2
Chi tiết hơn, phụ
thuộc công nghệ,
thiết kế và mô
phỏng chậm hơn
Hardware Modeling - 1 - 6
DFF
Logic
Layout
CLB_
R5C5
CLB_
R5C6
Sự chồng chéo
trong VHDL
Sum <= A + B after 3 ns ;
Sum <= A + B ;
component Xlx_add2
port ( A: in bit ;
B: in bit ;
Sum: out bit
);
end component ;
Hardware Modeling - 1 - 7
Behavioral
Hardware Model
RTL
Synthesizable Code
Logic
FPGA Vendor Library
Layout
Place & Route Utility
Trình tự thiết kế Top-Down
•
VHDL hỗ trợ hướng tiếp cận top-down trong thiết kế
Hardware Modeling - 1 - 8
Nguyên tắc phân đoạn
•
Khi tiến hành phân đoạn một thiết kế trong VHDL, cần
lưu tâm cân nhắc một số các điểm chính sau
–
–
–
–
Tín hiệu ra có chốt (Register) tại biên giới các module
• Phù hợp với cấu trúc mã nguồn dạng RTL
Giảm đến tối thiểu số clock trên mỗi block
• Quan trọng đối với các ràng buộc về thời gian, Important
for timing constraints, tối ưu hoá cấu trúc mạch
Duy trì các tín hiệu then chốt trong phạm vi mỗi block
• Hầu hết các công cụ đều không tối ưu thông qua biên
giới hierarchy
Kích thước của từng block đủ nhỏ để có thể kiểm tra nhanh
chóng
• Mẫu thử nhanh, đơn giản cho mỗi sub-module
Hardware Modeling - 1 - 9
Cấu trúc Top - Down
A[3:0]
entity
Add_4
SUM [3:0]
B[3:0]
C_out
C_in
A
B
entity
Full_Add
C_out
C_in
A
B
entity
Half_Add
Sum
Carry
Hardware Modeling - 1 - 10
Sum
Macro
Leaf Cell
Kiểm tra thiết kế
•
Khi sử dụng VHDL, có thể thực hiện các bước kiểm tra
thiết kế, bắt đầu từ Behavioral Simulation
VITAL
VHDL
modules
VHDL Initiative Toward
ASIC Libraries
Synthesis
Gate-Level Functional
(Netlist-driven )
Place & Route
Gate-Level Timing
(Back-annotated netlist )
SDF (Standard Delay
Format)
& Structural VHDL File
Hardware Modeling - 1 - 11
Behavioral Simulation
(Testbench driven)
Các bước kiểm tra thiết kế
(1) Mô phỏng Behavioral
•
Thực hiện mã nguồn mô tả hành vi, dùng testbench
(2) Mô phỏng RTL
Thực hiện file mã nguồn RTL,
dùng testbench
•
VHDL
modules
(3) Mô phỏng chức năng trong VHDL
Thực hiện file .vhd mô tả cấu trúc,
dùng testbench
•
Synthesis
(4) Mô phỏng chức năng thiết bị ở mức cổng
Mô phỏng netlist pre-P&R EDN
dùng công cụ mức cổng
•
(5) Mô phỏng theo quan hệ thời gian trong VHDL
Place & Route
Thực hiện file cấu trúc .vhd và file SDF;
dùng testbench
•
(6) Mô phỏng quan hệ thời gian ở mức cổng
•
Hardware Modeling - 1 - 12
Mô phỏng netlist post P&R EDN netlist, sử dụng các delays
Kiểm tra thiết kế?
Test-Bench
•
•
•
•
•
•
Chip level
Board level
Std parts model
Model bus operation
Discrete event-driven
Flexibility over strictly
netlist-driven
Behavioral Module
MCU
FPGA
Memory
Hardware Modeling - 1 - 13
PLD
Kết luận
•
•
•
•
VHDL là một ngôn ngữ dùng để mô hình hoá phần cứng
của thiết bị
Tổng hợp logic là một tập con của toàn bộ ngôn ngữ
Các vấn đề về công cụ và công nghệ có ảnh hưởng đến
việc tổng hợp logic của một thiết kế
Các mô phỏng HDL có thể bao gồm các dữ liệu định thời
(back-annotated timing data)
Hardware Modeling - 1 - 14
Bài 2
Ngôn ngữ VHDL
Hardware Modeling - 1 - 15
Design Units trong
VHDL
•
•
•
•
•
•
Entity
Architecture
Configuration
Package
Package Body
Library
Hardware Modeling - 1 - 16
Chương trình VHDL bao gồm
các design units.
Một số design units độc lập với
các design unit khác.
Các loại Design Unit
•
Trong VHDL có hai loại design unit, đó là:
–
–
•
•
Primary
• Không phụ thuộc vào các design unit khác
Secondary
• Phụ thuộc vào primary design unit
Mỗi khi có thay đổi trong primary design unit, cần phải
kiểm tra lại secondary design unit. Nếu không, chương
trình sẽ có lỗi.
Các secondary unit không thể tồn tại độc lập
-- tức là, phải phụ thuộc primary unit
Hardware Modeling - 1 - 17
Entity
•
Entity mô tả external interface của thực thể được thiết
kế, cùng các thuộc tính liên quan với interface đó
entity Half_Add is
port (A, B : in std_logic ;
A
Carry, Sum : out std_logic) ; B
Sum
Carry
end Half_Add ;
Chú thích: VHDL’93 cho phép dùng optional reserved word entity ngay
sau reserved word end, ví dụ, ‘end entity Half_Add ; ’
Hardware Modeling - 1 - 18
Architecture
•
Architecture mô tả hoạt động bên trong của thực thể
(entity) gắn với nó (primary unit)
–
Một architecture thể hiện một chức năng của thực thể gắn
với nó, có thể có nhiều architecture cho một thực thể
architecture My_Arch of Half_Add is
begin
Sum <= A xor B ;
Carry <= A and B ;
end My_Arch ;
Hardware Modeling - 1 - 19
Note: VHDL’93 cho
phép sử dụng
reserved word
architecture sau
reserved word end
Multiple Architecture
•
Có thể có nhiều architecture cùng tồn tại để mô tả hoạt
động của một thực thể
–
Chúng có thể biểu diễn các giai đoạn khác nhau của quá
trình thiết kế hoặc các cách tiếp cận khác nhau cho cùng
một chức năng (optimization for speed verus area, etc.)
entity Half_Add is
...
entity Cnt64 is
...
end Half_Add ;
end Cnt64 ;
architecture BEH of Half_Add is
...
architecture BEH of Cnt64 is
...
end BEH ;
end BEH ;
architecture RTL of Half_Add is
...
architecture RTL of Cnt64 is
...
end RTL ;
end RTL ;
architecture XLX of Half_Add is
...
architecture XLX of Cnt64 is
...
end XLX ;
end XLX ;
Hardware Modeling - 1 - 20
Package
•
Một package declaration được dùng để khai báo các dữ
liệu dùng cho toàn bộ thiết kế, bao gồm:
–
Constants, data types, subtypes, subprogram và function
declarations, v.v…
package My_Pack is
constant. . .
...
function. . .
...
component . . .
...
subtype. . .
end package My_pack ;
Hardware Modeling - 1 - 21
library IEEE;
use IEEE.std_logic_1164.all ;
...
use work.My_Pack.all ;
entity . . .
Package Body
•
Một package body là một dependent unit của một
package, nó chứa các thông tin chi tiết về các đối tượng
trong package
–
Subprograms, deferred constants
package My_Pack is
package body My_Pack is
constant. . .
declaration
...
function bv_to_integer (
...
details
component . . .
...
subtype. . .
function bv_to_integer (BV: bit_v..
return integer is
variable …
begin
for index in BV'range loop
....
end My_Pack ;
Hardware Modeling - 1 - 22
...
end My_Pack ;
Library
•
Về cơ bản, tất cả các đối tượng VHDL đều được lưu trong
các thư viện
–
–
Theo định nghĩa, thư viện là một tập hợp các đơn vị thiết kế
(design unit) đã được kiểm chứng
Work và std là hai thư viện dùng được cho mọi design unit
library IEEE ;
package std_logic_1164 is..
package std_logic_unsigned is..
package std_logic_arith is..
Hardware Modeling - 1 - 23
Library
•
Libraries và Packages comprise the VHDL Design
Management structure
–
Theo một nghĩa nào đó, nó tương tự như directories và
subdirectories
library IEEE ;
package std_logic_1164 is..
package std_logic_unsigned is..
package std_logic_arith is..
Hardware Modeling - 1 - 24
Khởi tạo các Library
•
Tên của library đơn thuần là một tham trỏ về mặt logic
–
Chuẩn VHDL không quy định các yêu cầu chặt chẽ về cấu
trúc của library, do vậy chúng không dễ được chuyển giao
giữa các tool
library My_Lib
package Fast_Counters is..
library My_Lib ;
use My_Lib.Fast_Counters.all ;
entity Mod1 is
port ( . . .
Hardware Modeling - 1 - 25
package DSP_Filters is..