slide vhdl 12345

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

Upload: lxq-snail

Post on 23-May-2017

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Slide Vhdl 12345

1

Lập trình VHDL

www.viethung-idt.com.vn

Page 2: Slide Vhdl 12345

2

Nội dungGiới thiệu VHDL1

Cấu trúc lập trình2Cá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

Page 3: Slide Vhdl 12345

3

I. Giới thiệu VHDLLà 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

Page 4: Slide Vhdl 12345

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

Page 5: Slide Vhdl 12345

5

Nội dungGiới thiệu VHDL1

Cấu trúc lập trình2Cá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

Page 6: Slide Vhdl 12345

6

II. Cấu trúcLibrary

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.

Page 7: Slide Vhdl 12345

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

Page 8: Slide Vhdl 12345

8

II.1. LibraryCá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 ProjectLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;

Page 9: Slide Vhdl 12345

9

II.2. EntityXá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 DeclarationENTITY 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;

Page 10: Slide Vhdl 12345

10

II.3. ArchitectureGiữ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.

Page 11: Slide Vhdl 12345

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 BodyARCHITECTURE Adder16 OF Adder IS

signal Cr : STD_LOGIC_VECTOR(16 downto 0);

BEGIN ... PROCESS (...) ... END PROCESS;END Adder16;

Page 12: Slide Vhdl 12345

12

II.4 Khái niệm ProcessCá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;

Page 13: Slide Vhdl 12345

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)

Page 14: Slide Vhdl 12345

14

Nội dungGiới thiệu VHDL1

Cấu trúc lập trình2Cá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

Page 15: Slide Vhdl 12345

15

III. Các đối tượng trong VHDLComponent: 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ộ

Page 16: Slide Vhdl 12345

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

Page 17: Slide Vhdl 12345

17

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

Key

Plain Data

Clk

Cipher

Component_1

Component_2

Encryptor

Key_In Key_Ou

t

Key_In

Key_1_2

Clk1

Page 18: Slide Vhdl 12345

18

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

entity

architecture

Input Ports

Signals

Output Ports

component

1

component

2

process

Variables

Page 19: Slide Vhdl 12345

19

III. Các đối tượng trong VHDL (tiếp)Architecture Example1 of Example is

-- Khai báo các thành phầnComponent 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

Page 20: Slide Vhdl 12345

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ệusignal 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áosignal wire: std_logic := ‘1’;signal bus: std_logic_vector(3 downto 0) := “1010”;

Page 21: Slide Vhdl 12345

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ốiCom1: Component_1Port map (Clk => Clk1, Key_In => Key, Key_Out => Key_1_2);-- Mô tả hoạt động...

End Example1

Page 22: Slide Vhdl 12345

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 độngBegin Process (...) variable i: integer range 0 to 15; constant pi: real := 3.14; Begin ... End ProcessEnd Example1

Page 23: Slide Vhdl 12345

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;

Page 24: Slide Vhdl 12345

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 ISCOMPONENT Com1 GENERIC (rise, fall: time:= 10 ns; load: integer:= 0); PORT (a, b: In std_logic; c: Out std_logic);END COMPONENT;

BEGINU1: Com1 GENERIC MAP (10 ns, 12 ns, 3); PORT MAP (inA, inB, out1);U2: Com1 PORT MAP (inC, inD, out2);END Ex1;

Page 25: Slide Vhdl 12345

25

Nội dungGiới thiệu VHDL1

Cấu trúc lập trình2Cá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

Page 26: Slide Vhdl 12345

26

IV. Các kiểu dữ liệubit, 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),

boolean true, false

Page 27: Slide Vhdl 12345

27

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

32 bit (-2,147,483,647 ... +12,147,483,647) a := 1; a := -1; -- đúng a := 1.0; -- sai

Real 32 bit (-10^38 ... +10^38) độ chính xác: 7 chữ số phần thập phân a := 1; a := -1; -- sai a := 1.0; -- đúng a := -1.0E10; a := 1.5E-20; -- đúng

Page 28: Slide Vhdl 12345

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ềuTYPE MyState IS : (Start, S1, S2, S3, Stop);...variable S : MyState;...S := S1;

TYPE MyRegister IS ARRAY (0 to 255) OF INTEGER;...variable R : MyRegister;...R(1) := 1;

Page 29: Slide Vhdl 12345

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

Page 30: Slide Vhdl 12345

30

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

Thời gian là kiểu dữ liệu vật lý duy nhất được định nghĩa sẵn trong VHDL

Dùng để xác định trễ và đồng bộ tín hiệu (với từ khóa “wait”)

Đơn vị: fs, ps, ns, us, ms, sec, min, hrvariable T : time;...T := 1 ns;

Page 31: Slide Vhdl 12345

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;Signal x: short;Signal y: long;...

y <= 2 * x + 5; -- Saiy <= long(2 * x + 5); -- OK-- trong trường hợp này, thực chất x và y-- có cùng kiểu là integer

Page 32: Slide Vhdl 12345

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)

Page 33: Slide Vhdl 12345

33

Nội dungGiới thiệu VHDL1

Cấu trúc lập trình2Cá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

Page 34: Slide Vhdl 12345

34

V. Các phép toánPhép gá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 nhauPhép ghép vector (concatenation)

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; -- 11000010

Page 35: Slide Vhdl 12345

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

Page 36: Slide Vhdl 12345

36

V. Các phép toán (tiếp)Phép toán so sánh

Toán tử: =, /=, <, <=, >, >= Trả về giá trị boolean (true/false)

Phép toán số học *, /, ** (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)

Page 37: Slide Vhdl 12345

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

DO <= DI sll 2;DO <= DI sla 2DO <= DI srl 2; DO <= DI sra 2;DO <= DI ror 3

-- 00011000-- 00011000-- 00110001-- 11110001-- 11011000

Page 38: Slide Vhdl 12345

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.

FullAdder

a

b

cincout

s

a b cin s cout0 0 0 0 00 1 0 1 01 0 0 1 01 1 0 0 10 0 1 1 00 1 1 0 11 0 1 0 11 1 1 1 1

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

Page 39: Slide Vhdl 12345

39

Ví dụ 1: (trả lời)ENTITY Adder IS PORT (B : IN STD_LOGIC_VECTOR(15 downto 0); A : IN STD_LOGIC_VECTOR(15 downto 0); S : OUT STD_LOGIC_VECTOR(15 downto 0); C : OUT STD_LOGIC);END Adder;

ARCHITECTURE Adder16 OF Adder ISsignal Cr : STD_LOGIC_VECTOR(16 downto 0);BEGIN PROCESS (A, B) variable i : integer; Begin Cr(0) <= '0'; For i in 0 to 15 loop 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;END Adder16;

Page 40: Slide Vhdl 12345

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 z0z3 z2 z1 z0

(phần trả lờitham khảomã nguồnkèm theo)

Page 41: Slide Vhdl 12345

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.

Page 42: Slide Vhdl 12345

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)

Page 43: Slide Vhdl 12345

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)

Page 44: Slide Vhdl 12345

44

Page 45: Slide Vhdl 12345

45

Nội dungGiới thiệu VHDL1

Cấu trúc lập trình2Cá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

Page 46: Slide Vhdl 12345

46

VI. Các mệnh đề tuần tự1. IF2. CASE3. LOOP

For ... Loop While ... Loop

4. WAIT Wait on ... Wait for ... Wait until ...

Page 47: Slide Vhdl 12345

47

VI.1. Mệnh đề IFIF (biểuthứclogic1) THEN...ELSIF (biểuthứclogic2) THEN –- có thể có nhiều ELSIF...ELSE –- nhưng chỉ có 1 ELSE...END IF;

process (A, B, C, D, Sel )begin if (Sel = “00”) then S <= A; 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;

MUX

AB

C

D

S

Sel

Page 48: Slide Vhdl 12345

48

VI.2. Mệnh đề CASECASE (biến / tínhiệu) IS WHEN giátrị1 => ... WHEN giátrị2 => ... WHEN OTHERS => ...END CASE;

process (A, B, C, D, Sel )begin case (Sel) is when “00” => S <= A; when “01” => S <= B; when “10” => S <= C; when “11” => S <= D; when others => S <= “0000”; end case;end process;

MUX

AB

C

D

S

Sel

Page 49: Slide Vhdl 12345

49

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

if (x = 12 to 14) then...end if;

case (D_In) iswhen “1000” to “1010” => ......end case;

Ta có thể sử dụng 1 dải giá trị hữu hạn trong biểu thức logic của mệnh đề CASE hoặc IF.

Page 50: Slide Vhdl 12345

50

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

Architecture Bad of MUX isBegin 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”;End Bad;

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!

Page 51: Slide Vhdl 12345

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 (multi-source - single-driver).

Page 52: Slide Vhdl 12345

52

VI.3. Mệnh đề LOOPPROCESS (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;END PROCESS;

PROCESS (A_Sig, B_Bus)variable i : integer;Begin i := 7; while (i >= 0) loop C_Bus(i) <= A_Sig and B_Bus(i); i := i – 1; end loop;END PROCESS;

Page 53: Slide Vhdl 12345

53

VI.3. Mệnh đề LOOP (tiếp)Dừng vòng lặp đang thực hiện dở để

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

Dừng vòng lặp đang thực hiện dở và thoát 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ó.

Page 54: Slide Vhdl 12345

54

VI.4. Mệnh đề WAITMệnh đề WAIT dùng để tạm dừng

Process 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 Wait (khoảng_thời_gian_không_xác_định)Wait on A, B;

...Wait until Clk = ‘1’;...Wait for 10 ns;...Wait;

Page 55: Slide Vhdl 12345

55

VI.4. Mệnh đề WAIT (tiếp)Không phải tất cả các mệnh đề VHDL

đều có thể tổng hợp được. Ví dụ, wait for 10 ns là một mệnh đề

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.

Page 56: Slide Vhdl 12345

56

VI.4. Mệnh đề WAIT (tiếp)Mệnh đề Wait có thể được viết dưới

dạng tường minh (explicit) hoặc không tường minh (implicit).

Một số công cụ tổng hợp mạch không hỗ trợ explicit ‘wait’.

-- Implicit WAITProcess (A, B)Begin C <= A and B;End Process;

-- Explicit WAITProcessBegin Wait on A, B; C <= A and B;End Process;

Page 57: Slide Vhdl 12345

57

Ví dụ 4: (câu hỏi)Xây dựng hệ dãy đoán nhận xâu

“1101”

A B C D E1 1 0 1

0 0 1

0 0

1

Input

Output

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

Page 58: Slide Vhdl 12345

58

Bài tập

Page 59: Slide Vhdl 12345

59

Nội dungGiới thiệu VHDL1

Cấu trúc lập trình2Cá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

Page 60: Slide Vhdl 12345

60

VII. Mã hóa DES với VHDLDES = Data Encryption StandardLà 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)

Page 61: Slide Vhdl 12345

61

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

IP F F FPF F

...

...

16rounds

Page 62: Slide Vhdl 12345

62

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

Page 63: Slide Vhdl 12345

63

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

Page 64: Slide Vhdl 12345

64

Nội dungGiới thiệu VHDL1

Cấu trúc lập trình2Cá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

Page 65: Slide Vhdl 12345

65

VIII. Mã hóa AES với VHDLAES = Advanced Encryption

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

với khối dữ liệu 128bit.Khóa mã hóa có thể 128, 192 hoặc

256bitĐược chính phủ Hoa Kỳ chính thức sử

dụng để thay thế Triple_DES.

Page 66: Slide Vhdl 12345

66

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

SubBytes

ShiftRows

MixColumn

AddRoundKey

AddRoundKey

SubBytes

ShiftRows

AddRoundKey

CipherKey

RoundKey 10

RoundKey 1-9

Plaintext

Ciphertext

Page 67: Slide Vhdl 12345

67

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

Page 68: Slide Vhdl 12345

68

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

Page 69: Slide Vhdl 12345

69

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

Page 70: Slide Vhdl 12345

70

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

Page 71: Slide Vhdl 12345

71

So sánh với Embedded CVi 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.

FPGA chỉ bao gồm các phần tử Logic cơ 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.

Page 72: Slide Vhdl 12345

72

So sánh với VerilogGiống nhau:

Cùng là ngôn ngữ mô phỏng và tổng hợp phần cứng. Có thể so sánh như C++ và Java.

Khác nhau: 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ỹ)

Page 73: Slide Vhdl 12345

73

Tài liệu tham khảoVHDL Programming by Examples,

Douglas L.Perry, McGraw Hill.Circuit Design with VHDL, Volnei

A.Pedroni, MIT Press.1076 IEEE Standard VHDL Reference

Manual, IEEE Computer Society.

Page 74: Slide Vhdl 12345

74