Tải bản đầy đủ (.ppt) (74 trang)

Bài giả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 (787.62 KB, 74 trang )


1
Lập trình VHDL
www.viethung-idt.com.vn

2
Nội dung
Giới thiệu VHDL
1
Cấu trúc lập trình
2
Các đối tượng
3
Các kiểu dữ liệu
4
Các phép toán
5
Các mệnh đề tuần tự
6
DES với VHDL
7
AES với VHDL
8

3
I. Giới thiệu VHDL

Là ngôn ngữ mô phỏng và tổng hợp phần
cứng

VHSIC Hardware Description Language



VHSIC = Very High Speed IC

Ứng dụng

PLD (Programmable Logic Device)

CPLD (Complex PLD)

FPGA (Field Programmable Gate Array)

ASIC (Application-Specific IC)

Công cụ

Xilinx ISE và Altera Quartus

4
I. Giới thiệu VHDL (tiếp)

Đặc điểm ngôn ngữ

Không phân biệt chữ hoa – thường

Các lệnh được phân cách bởi dấu “;”

Các chú thích được bắt đầu bởi dấu “--”

Mô phỏng phần cứng theo hướng Top-down


Yêu cầu chặt chẽ về kiểu dữ liệu

5
Nội dung
Giới thiệu VHDL
1
Cấu trúc lập trình
2
Các đối tượng
3
Các kiểu dữ liệu
4
Các phép toán
5
Các mệnh đề tuần tự
6
DES với VHDL
7
AES với VHDL
8

6
II. Cấu trúc

Library

Library chứa các phép toán đã được xây
dựng sẵn trên 1 kiểu dữ liệu nào đó.

Entity


Entity thể hiện giao diện bên ngoài của vi
mạch (các cổng vào/ra).

Architecture

Architecture thể hiện cấu trúc bên trong, chức
năng, hoạt động của vi mạch.

7
II. Cấu trúc (tiếp)
LIBRARY IEEE;
USE ...;
--------------------
ENTITY Example IS
GENERIC (...);
PORT (...);
END Example;
--------------------
ARCHITECTURE Ex1 OF Example IS
COMPONENT (...);
GENERIC MAP (...);
PORT MAP (...);
BEGIN
Process(...);
End Process;
END Ex1;
ARCHITECTURE Ex1 OF Example IS
...
END Ex2;

Library
Entity
Architecture

8
II.1. Library

Các thành phần (package) của thư viện
chuẩn IEEE:

Dùng chung với tất cả các công cụ lập trình.

IEEE công khai mã nguồn của thư viện này.

Các công cụ phát triển của các hãng khác
nhau có thể có thư viện riêng.
-- Các thư viện này được khai báo sẵn khi tạo Project
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

9
II.2. Entity

Xác định: số lượng, chiều, kiểu các cổng
vào/ra và một số tham số khác.
-- Entity Declaration
ENTITY Adder IS
GENERIC

(iCount : INTEGER);
PORT
(A : IN STD_LOGIC_VECTOR(15 downto 0);
B : IN STD_LOGIC_VECTOR(15 downto 0);
S : OUT STD_LOGIC_VECTOR(15 downto 0);
C : OUT STD_LOGIC);
END Adder;

10
II.3. Architecture

Giữa 2 từ khóa “Architecture” và “Begin”
là khai báo, liệt kê các phần tử bên trong
của vi mạch, bao gồm:

Tín hiệu (signal)

Thành phần (component)

Giữa 2 từ khóa “Begin” và “End” là đoạn
mã mô tả kết nối giữa các thành phần bên
trong và hoạt động của vi mạch.

11
II.3. Architecture (tiếp)

Cùng 1 Entity ta có thể định nghĩa nhiều
Architecture khác nhau. Tuy nhiên, 1
Architecture chỉ gắn với một Entity xác định.
-- Architecture Body

ARCHITECTURE Adder16 OF Adder IS
signal Cr : STD_LOGIC_VECTOR(16 downto 0);
BEGIN
...
PROCESS (...)
...
END PROCESS;
END Adder16;

12
II.4 Khái niệm Process

Các câu lệnh nằm ngoài Process được
thực hiện đồng thời (concurrent)

Các câu lệnh nằm trong Process được
thực hiện tuần tự (sequential)

Process được kích hoạt khi 1 trong các tín
hiệu trong “sensitivity list” thay đổi giá trị.

Các tín hiệu trong “sensitivity list” thường là
các tín hiệu đầu vào của vi mạch.
PROCESS (Clk, Rst,...)
...
END PROCESS;

13
II.4 Khái niệm Process (tiếp)


Nếu có nhiều Process thì các Process này
được thực hiện đồng thời

Để chuyển giá trị từ một process
sang một process khác ta phải dùng
tín hiệu (signal)
S <= “0000”
P1: Process (Rst)
DO <= S and A
P2: Process (S)
S
S
S <= DI and B
P3: Process (Clk)

14
Nội dung
Giới thiệu VHDL
1
Cấu trúc lập trình
2
Các đối tượng
3
Các kiểu dữ liệu
4
Các phép toán
5
Các mệnh đề tuần tự
6
DES với VHDL

7
AES với VHDL
8

15
III. Các đối tượng trong VHDL

Component: Một thiết kế VHDL hoàn
chỉnh có thể được chia thành nhiều thành
phần nhỏ hơn.

Signal: biểu diễn dây nối, kết nối các cổng
của các thành phần với nhau.

tín hiệu chỉ đổi giá trị khi kết thúc 1 chu kỳ
lệnh vì yêu cầu về đồng bộ

16
III. Các đối tượng trong VHDL (tiếp)

Variable: là các biến được sử dụng để tính
toán, lưu các giá trị trung gian.

biến nhận giá trị ngay khi được gán, giá trị
mới này có thể được sử dụng ngay trong
dòng lệnh tiếp theo

biến chỉ sử dụng được trong phạm vi Process

17

III. Các đối tượng trong VHDL (tiếp)
Key
Plain
Data
Clk
Cipher
Component_1
Component_2
Encryptor
Key_In
Key_Out
Key_In
Key_1_2
Clk1

18
III. Các đối tượng trong VHDL (tiếp)
entity
architecture
Input Ports
Signals
Output Ports
component
1
component
2
process
Variables

19

III. Các đối tượng trong VHDL (tiếp)
Architecture Example1 of Example is
-- Khai báo các thành phần
Component Component_1
Port ( Clk1: in std_logic;
Key_In: in std_logic_vector(1 to 32);
Key_Out: out std_logic_vector(1 to 32));
End Component;
...
-- Khai báo tín hiệu
...
-- Khai báo các kết nối
...
-- Mô tả hoạt động
...
End Example1

20
III. Các đối tượng trong VHDL (tiếp)
Architecture Example1 of Example is
-- Khai báo các thành phần
...
-- Khai báo các tín hiệu
signal Key_1_2: std_logic_vector(1 to 32);
-- Khai báo các kết nối
...
-- Mô tả hoạt động
...
End Example1
-- Có thể gán trị mặc định cho tín hiệu khi khai báo

signal wire: std_logic := ‘1’;
signal bus: std_logic_vector(3 downto 0) := “1010”;

21
III. Các đối tượng trong VHDL (tiếp)
Architecture Example1 of Example is
-- Khai báo các thành phần
...
-- Khai báo các tín hiệu
...
-- Khai báo các kết nối
Com1: Component_1
Port map (Clk => Clk1,
Key_In => Key,
Key_Out => Key_1_2);
-- Mô tả hoạt động
...
End Example1

22
III. Các đối tượng trong VHDL (tiếp)
Architecture Example1 of Example is
-- Khai báo các thành phần
...
-- Khai báo các tín hiệu
...
-- Khai báo các kết nối
...
-- Mô tả hoạt động
Begin

Process (...)
variable i: integer range 0 to 15;
constant pi: real := 3.14;
Begin
...
End Process
End Example1

23
III. Các đối tượng trong VHDL (tiếp)

Generic

Sử dụng Generic cho phép khai báo các tham
số chung để có thể sử dụng một cách linh
hoạt, mềm dẻo trong nhiều tình huống.

Generic là thành phần không bắt buộc trong
thiết kế VHDL.
Entity Example is
Generic (iCount: integer; iTime: time);
Port (...);
End Example;

24
III. Các đối tượng trong VHDL (tiếp)
LIBRARY IEEE;
Use IEEE.std_logic_1164.ALL;
ENTITY Example IS
GENERIC (rise, fall: time; load: integer);

PORT (inA, inB, inC, inD: In std_logic;
out1, out2: Out std_logic);
END Example;
ARCHITECTURE Ex1 OF Example IS
COMPONENT Com1
GENERIC (rise, fall: time:= 10 ns; load: integer:= 0);
PORT (a, b: In std_logic; c: Out std_logic);
END COMPONENT;
BEGIN
U1: Com1
GENERIC MAP (10 ns, 12 ns, 3);
PORT MAP (inA, inB, out1);
U2: Com1
PORT MAP (inC, inD, out2);
END Ex1;

25
Nội dung
Giới thiệu VHDL
1
Cấu trúc lập trình
2
Các đối tượng
3
Các kiểu dữ liệu
4
Các phép toán
5
Các mệnh đề tuần tự
6

DES với VHDL
7
AES với VHDL
8

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×