1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Bài giảng VHDL

74 1,6K 43
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 74
Dung lượng 819,5 KB

Nội dung

VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao, là một loại ngôn ngữ mô tra phần cứng được phát triển dùng cho chương trình VHSIC của bộ quốc phòng Mỹ

Trang 1

Lập trình VHDL

Trang 2

Nội dung

Giới thiệu VHDL

1

Cấu trúc lập trình2

Các đối tượng3

Các kiểu dữ liệu4

Các phép toán5

Các mệnh đề tuần tự6

DES với VHDL7

AES với VHDL8

Trang 3

I Giới thiệu VHDL

cứng

 VHSIC Hardware Description Language

 VHSIC = Very High Speed IC

 PLD (Programmable Logic Device)

• CPLD (Complex PLD)

• FPGA (Field Programmable Gate Array)

 ASIC (Application-Specific IC)

 Xilinx ISE và Altera Quartus

Trang 4

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

 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

Trang 5

Nội dung

Giới thiệu VHDL

1

Cấu trúc lập trình2

Các đối tượng3

Các kiểu dữ liệu4

Các phép toán5

Các mệnh đề tuần tự6

DES với VHDL7

AES với VHDL8

Trang 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

Trang 7

II Cấu trúc (tiếp)

Architecture

Trang 8

II.1 Library

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 ;

Trang 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.

Trang 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);

Trang 12

II.4 Khái niệm Process

thực hiện đồng thời (concurrent)

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 ;

Trang 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

sang một process khác ta phải dùng tín hiệu (signal)

Trang 14

Nội dung

Giới thiệu VHDL

1

Cấu trúc lập trình2

Các đối tượng3

Các kiểu dữ liệu4

Các phép toán5

Các mệnh đề tuần tự6

DES với VHDL7

AES với VHDL8

Trang 15

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

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ộ

Trang 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

Trang 17

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

Trang 18

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

Trang 19

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

Architecture Example1 of Example is

Trang 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”;

Trang 21

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

Architecture Example1 of Example is

Trang 22

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

Architecture Example1 of Example is

variable i: integer range 0 to 15;

constant pi: real := 3.14;

Begin

.

End Process

End Example1

Trang 23

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

 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

Trang 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 );

Trang 25

Nội dung

Giới thiệu VHDL

1

Cấu trúc lập trình2

Các đối tượng3

Các kiểu dữ liệu4

Các phép toán5

Các mệnh đề tuần tự6

DES với VHDL7

AES với VHDL8

Trang 26

IV Các kiểu dữ liệu

 bit, bit_vector

 thường dùng để định nghĩa biến (variable)

 chỉ nhận các giá trị ‘0’, ‘1’

 std_logic, std_logic_vector

 thường dùng để định nghĩa tín hiệu (signal)

 nhận các giá trị: ‘U’ (Uninitialized), ‘0’, ‘1’,

‘X’ (Forcing Unknown), ‘Z’ (High Impedance),

 true, false

Trang 27

IV Các kiểu dữ liệu (tiếp)

Trang 28

IV Các kiểu dữ liệu (tiếp)

 Kiểu dữ liệu tự định nghĩa

 1 Kiểu dữ liệu liệt kê

• Thường dùng khi mô tả trạng thái

 2 Kiểu dữ liệu mảng 1 chiều

TYPE MyState IS : (Start, S1, S2, S3, Stop);

Trang 29

IV Các kiểu dữ liệu (tiếp)

 Kiểu dữ liệu tự định nghĩa

 3 Kiểu dữ liệu mảng nhiều chiều

• Thường dùng với chức năng bảng tra giá trị (Lookup Table)

TYPE LUT IS ARRAY (0 TO 3, 0 TO 3) OF std_logic ;

constant MyLUT : LUT :=

((‘0’, ‘0’, ‘0’),

(‘0’, ‘0’, ‘0’),

(‘0’, ‘0’, ‘1’));

Trang 30

IV Các kiểu dữ liệu (tiếp)

Trang 31

IV Các kiểu dữ liệu (tiếp)

 Có thể nói: không có khái niệm “ép kiểu” trong VHDL Một số ngoại lệ:

 integer +/- bit_vector/std_logic_vector

 Xét ví dụ:

TYPE long is integer range -100 to 100;

TYPE short is integer range -10 to 10;

Trang 32

IV Các kiểu dữ liệu (tiếp)

 Để chuyển đổi kiểu dữ liệu, có 2 cách:

 Tự viết một đoạn mã để chuyển dữ liệu.

 Khai báo thư viện và dùng hàm có sẵn.

 Gói std_logic_arith trong thư viện IEEE có một số hàm chuyển đổi kiểu dữ liệu:

 conv_integer(p)

 conv_unsigned(p, b)

 conv_signed(p, b)

 conv_std_logic_vector(p, b)

Trang 33

Nội dung

Giới thiệu VHDL

1

Cấu trúc lập trình2

Các đối tượng3

Các kiểu dữ liệu4

Các phép toán5

Các mệnh đề tuần tự6

DES với VHDL7

AES với VHDL8

Trang 34

V Các phép toán

 đối với tín hiệu: “<=”, đối với biến: “:=”

 kiểu và kích thước dữ liệu 2 vế của phép gán

phải giống nhau

 dùng với kiểu bit_vector/std_logic_vector

signal DI1 : bit_vector (7 downto 0) := “11000110”;

signal DI2 : bit_vector (3 downto 0) := “0010”;

signal DO : bit_vector (7 downto 0);

DO <= DI1(7 downto 4) & DI2; 1100 0010

Trang 35

V Các phép toán (tiếp)

 Phép toán logic

 Toán tử: and or not xor nor nand xnor

 Toán hạng: boolean, bit, bit_vector, std_logic,

std_logic_vector

 Các toán hạng vector phải cùng kích thước và

phép toán được thực hiện trên các bit tương ứng

Trang 36

 *, /, ** (exp) chỉ dùng với integer, real, time.

 mod, rem chỉ dùng với integer.

 +,- dùng với cả integer, real, time và

bit_vector, std_logic_vector

 +,- cho phép 1 toán hạng integer và 1 toán

hạng bit_vector/std_logic_vector (THĐB)

Trang 37

V Các phép toán (tiếp)

 Phép toán shift (dịch bit)

 Toán tử: sll, srl, sla, sra, rol, ror

 Toán hạng trái: bit_vector/std_logic_vector

 Toán hạng phải: integer

signal DI : bit_vector (7 downto 0) := “11000110”;

signal DO : bit_vector (7 downto 0);

Trang 38

Ví dụ 1: (câu hỏi)

Thiết kế bộ cộng đầy đủ (Full Adder) 16bit

 Chú ý: ví dụ chỉ mang tính minh họa vì phép cộng

“C <= A + B” đã được định nghĩa sẵn.

Full Adder

s <= a xor b xor cin;

cout <= (a and b) or (cin and (a xor b));

Trang 39

ARCHITECTURE Adder16 OF Adder IS

signal Cr : STD_LOGIC_VECTOR (16 downto 0);

S(i) <= A(i) xor B(i) xor Cr(i);

Cr(i+1) <= (A(i) and B(i)) or (Cr(i) and (A(i) xor B(i))); End loop;

C <= Cr(16);

END PROCESS;

Trang 40

Ví dụ 2: (câu hỏi)

 Xây dựng bộ nhân 2 số 8bit đối với kiểu

std_logic_vector

x3 x2 x1 x0 y3 y2 y1 y0

x3 x2 x1 x0 x3 x2 x1 x0 x3 x2 x1 x0 x3 x2 x1 x0

and and and and

y0 y1 y2 y3

z3 z2 z1 z0 z3 z2 z1 z0

(phần trả lời

tham khảo

mã nguồn

kèm theo)

Trang 41

Ví dụ 3: (câu hỏi)

 Xây dựng bộ chia chia số 16bit cho số 8bit đối với kiểu std_logic_vector

Trang 42

Bài tập 1:

 Xây dựng bộ cộng 2 số dấu phẩy động

 (học viên tự tìm hiểu số dấu phẩy động)

Trang 43

Bài tập 2:

 Xây dựng bộ nhân 2 số dấu phẩy động

 (học viên tự tìm hiểu số dấu phẩy động)

Trang 45

Nội dung

Giới thiệu VHDL

1

Cấu trúc lập trình2

Các đối tượng3

Các kiểu dữ liệu4

Các phép toán5

Các mệnh đề tuần tự6

DES với VHDL7

AES với VHDL8

Trang 47

elsif (Sel = “01”) then S <= B;

elsif (Sel = “10”) then S <= C;

elsif (Sel = “11”) then S <= D;

else S <= “0000”;

end if ;

end process ;

M U X

A B C D

S

Sel

Trang 48

A B C D

S

Sel

Trang 49

VI.2 Mệnh đề CASE (tiếp)

đề CASE hoặc IF.

Trang 50

VI.2 Mệnh đề CASE (tiếp)

Architecture Bad of MUX is

Begin

S <= A when Sel = “00” else “0000”;

S <= B when Sel = “01” else “0000”;

S <= C when Sel = “10” else “0000”;

S <= D when Sel = “11” else “0000”;

 Xét ví dụ

 Cú pháp hoàn toàn đúng.

 S có thể được gán cùng lúc 1 giá trị A và 3 giá

trị “0000” S trong trường hợp này được gọi là

“multi-driver signal”

 Có thể tổng hợp được nhưng kết quả sai!

Trang 51

VI.2 Mệnh đề CASE (tiếp)

 Kết quả sai là do hiện tượng “chập mạch”

(short-circuit) khi tổng hợp

 Thực tế có rất nhiều tín hiệu nhận giá trị từ

nhiều nguồn (source) khác nhau (nguồn tín hiệu của S là A, B, C, D)

 Cách xử lý

 Người thiết kế/lập trình phải phân giải giá trị

từ nhiều nguồn khác nhau để tín hiệu chỉ

nhận 1 giá trị duy nhất tại 1 thời điểm source - single-driver)

Trang 52

(multi-VI.3 Mệnh đề LOOP

PROCESS (A_Sig, B_Bus)

variable i : integer ;

Begin

for i in 7 downto 0 loop

C_Bus(i) <= A_Sig and B_Bus(i); end loop ;

Trang 53

VI.3 Mệnh đề LOOP (tiếp)

chuyển sang vòng lặp tiếp theo: NEXT.

hẳn khỏi vòng lặp: EXIT.

 Có thể có nhiều vòng lặp lồng nhau, nhưng

lệnh Exit chỉ có tác dụng đối với vòng lặp trực tiếp chứa nó

Trang 54

VI.4 Mệnh đề WAIT

trong một khoảng thời gian nào đó:

 Wait on tín_hiệu_nào_đó_thay_đổi_giá_trị

 Wait until biểu_thức_logic_nhận_giá_trị_true

 Wait for khoảng_thời_gian_xác_định

Trang 55

VI.4 Mệnh đề WAIT (tiếp)

Trang 56

VI.4 Mệnh đề WAIT (tiếp)

tường minh (explicit) hoặc không tường

C <= A and B;

End Process ;

Trang 57

Output

(phần trả lời tham khảo mã nguồn kèm

Trang 58

Bài tập

Trang 59

Nội dung

Giới thiệu VHDL

1

Cấu trúc lập trình2

Các đối tượng3

Các kiểu dữ liệu4

Các phép toán5

Các mệnh đề tuần tự6

DES với VHDL7

AES với VHDL8

Trang 60

VII Mã hóa DES với VHDL

 Là thuật toán mã hóa khối, làm việc với

khối dữ liệu 64bit.

 Khóa mã hóa 64bit (thực tế chỉ có 56bit vì 8bit còn lại dùng để kiểm tra)

 Vì khóa không đủ độ dài, DES được cải

tiến thành Triple_DES (thức hiện DES 3

lần với 3 khóa)

Trang 61

VIII Mã hóa DES với VHDL (tiếp)

16 rounds

Trang 62

VIII Mã hóa DES với VHDL (tiếp)

Trang 63

VIII Mã hóa DES với VHDL (tiếp)

Trang 64

Nội dung

Giới thiệu VHDL

1

Cấu trúc lập trình2

Các đối tượng3

Các kiểu dữ liệu4

Các phép toán5

Các mệnh đề tuần tự6

DES với VHDL7

AES với VHDL8

Trang 65

VIII Mã hóa AES với VHDL

 Là thuật toán mã hóa khối, làm việc với khối dữ liệu 128bit.

dụng để thay thế Triple_DES.

Trang 66

VIII Mã hóa AES với VHDL (tiếp)

Ciphertext

Trang 67

VIII Mã hóa AES với VHDL (tiếp)

Trang 68

VIII Mã hóa AES với VHDL (tiếp)

Trang 69

VIII Mã hóa AES với VHDL (tiếp)

Trang 70

VIII Mã hóa AES với VHDL (tiếp)

Trang 71

So sánh với Embedded C

 Vi xử lý, vi điều khiển có sẵn tập lệnh nên

có thể dùng Embedded C để lập trình, các lệnh C sẽ được dịch sang ngôn ngữ máy ở dạng nhị phân.

bản nên phải sử dụng VHDL để mô phỏng

và tổng hợp dưới dạng ghép nối các phần

tử logic.

 Làm việc với VHDL đòi hỏi hiểu sâu hơn

về cấu trúc và hoạt động của vi mạch.

Trang 72

 VHDL yêu cầu cấu trúc chặt chẽ hơn (đặc biệt

về kiểu dữ liệu) nên dễ phát hiện lỗi hơn, tuy nhiên lại thường dài dòng hơn và khó phân

tích mã nguồn hơn

 VHDL được dùng nhiều ở Châu Âu, Verilog được dùng nhiều ở Mỹ (mặc dù cả 2 đều sinh

ra ở Mỹ)

Trang 73

Tài liệu tham khảo

L.Perry, McGraw Hill.

 Circuit Design with VHDL, Volnei

A.Pedroni, MIT Press.

Manual, IEEE Computer Society.

Ngày đăng: 15/10/2012, 14:22

Xem thêm

HÌNH ẢNH LIÊN QUAN

• Thường dùng với chức năng bảng tra giátrị (Lookup Table) - Bài giảng VHDL
h ường dùng với chức năng bảng tra giátrị (Lookup Table) (Trang 29)
thông dụng trong mô hình hoá, 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. - Bài giảng VHDL
th ông dụng trong mô hình hoá, 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 (Trang 55)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w