Professional Documents
Culture Documents
www.viethung-idt.com.vn
1
Ni dung
1 2 3 4 5 6 7 Gii thiu VHDL Cu trc lp trnh Cc i tng Cc kiu d liu Cc php ton Cc mnh tun t DES vi VHDL AES vi VHDL
2
ng dng
PLD (Programmable Logic Device)
CPLD (Complex PLD) FPGA (Field Programmable Gate Array)
Cng c
Xilinx ISE v Altera Quartus
3
Ni dung
1 2 3 4 5 6 7 Gii thiu VHDL Cu trc lp trnh Cc i tng Cc kiu d liu Cc php ton Cc mnh tun t DES vi VHDL AES vi VHDL
5
Entity
Entity th hin giao din bn ngoi ca vi mch (cc cng vo/ra).
Architecture
Architecture th hin cu trc bn trong, chc nng, hot ng ca vi mch.
Library Entity
Architecture
II.2. Entity Xc nh: s lng, chiu, kiu cc cng vo/ra v mt s tham s khc.
-- 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;
II.3. Architecture Gia 2 t kha Architecture v Begin l khai bo, lit k cc phn t bn trong ca vi mch, bao gm:
Tn hiu (signal) Thnh phn (component)
Gia 2 t kha Begin v End l on m m t kt ni gia cc thnh phn bn trong v hot ng ca vi mch.
10
Cng 1 Entity ta c th nh ngha nhiu Architecture khc nhau. Tuy nhin, 1 Architecture ch gn vi mt Entity xc nh.
11
II.4 Khi nim Process Cc cu lnh nm ngoi Process c thc hin ng thi (concurrent) Cc cu lnh nm trong Process c thc hin tun t (sequential) Process c kch hot khi 1 trong cc tn hiu trong sensitivity list thay i gi tr.
Cc tn hiu trong sensitivity list thng l cc tn hiu u vo ca vi mch.
PROCESS (Clk, Rst,...) ... END PROCESS;
12
II.4 Khi nim Process (tip) Nu c nhiu Process th cc Process ny c thc hin ng thi chuyn gi tr t mt process sang mt process khc ta phi dng tn hiu (signal)
P1: Process (Rst) S <= 0000
Ni dung
1 2 3 4 5 6 7 Gii thiu VHDL Cu trc lp trnh Cc i tng Cc kiu d liu Cc php ton Cc mnh tun t DES vi VHDL AES vi VHDL
14
III. Cc i tng trong VHDL Component: Mt thit k VHDL hon chnh c th c chia thnh nhiu thnh phn nh hn. Signal: biu din dy ni, kt ni cc cng ca cc thnh phn vi nhau.
tn hiu ch i gi tr khi kt thc 1 chu k lnh v yu cu v ng b
15
III. Cc i tng trong VHDL (tip) Variable: l cc bin c s dng tnh ton, lu cc gi tr trung gian.
bin nhn gi tr ngay khi c gn, gi tr mi ny c th c s dng ngay trong dng lnh tip theo bin ch s dng c trong phm vi Process
16
Key
Key_1_2
Key_In Plain Data Component_2 Cipher
17
18
-- Khai bo cc thnh phn ... -- Khai bo cc tn hiu ... -- Khai bo cc kt ni Com1: Component_1 Port map (Clk => Clk1, Key_In => Key, Key_Out => Key_1_2); -- M t hot ng ...
End Example1
21
23
Ni dung
1 2 3 4 5 6 7 Gii thiu VHDL Cu trc lp trnh Cc i tng Cc kiu d liu Cc php ton Cc mnh tun t DES vi VHDL AES vi VHDL
25
std_logic, std_logic_vector
thng dng nh ngha tn hiu (signal) nhn cc gi tr: U (Uninitialized), 0, 1, X (Forcing Unknown), Z (High Impedance),
boolean
true, false
26
Real
32 bit (-10^38 ... +10^38) chnh xc: 7 ch s phn thp phn a := 1; a := -1; -- sai a := 1.0; -- ng a := -1.0E10; a := 1.5E-20; -- ng
27
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));
29
30
IV. Cc kiu d liu (tip) C th ni: khng c khi nim p kiu trong VHDL. Mt s ngoi l:
integer +/- bit_vector/std_logic_vector Xt 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; -- Sai y <= long(2 * x + 5); -- OK -- trong trng hp ny, thc cht x v y -- c cng kiu l integer
31
Ni dung
1 2 3 4 5 6 7 Gii thiu VHDL Cu trc lp trnh Cc i tng Cc kiu d liu Cc php ton Cc mnh tun t DES vi VHDL AES vi VHDL
33
35
Php ton s hc
*, /, ** (exp) ch dng vi integer, real, time. mod, rem ch dng vi integer. +,- dng vi c integer, real, time v bit_vector, std_logic_vector +,- cho php 1 ton hng integer v 1 ton hng bit_vector/std_logic_vector (THB)
36
37
V d 1: (cu hi)
Thit k b cng y (Full Adder) 16bit
Ch : v d ch mang tnh minh ha v php cng C <= A + B c nh ngha sn.
a a b cin b 0 1 cin 0 0 s 0 1 cout 0 0 0 0
Full Adder
s cout
1
1 0 0 1
0
1 0 1 0
0
0 1 1 1
1
0 1 0 0
0
1 0 1 1
s <= a xor b xor cin; cout <= (a and b) or (cin and (a xor b));
1
38
V d 1: (tr li)
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 IS signal 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;
39
x3 x2 x1 x0 and y0
x3 x2 x1 x0 x3 x2 x1 x0 x3 x2 x1 x0 z3 z2 z1 z0 z3 z2 z1 z0
40
V d 3: (cu hi) Xy dng b chia chia s 16bit cho s 8bit i vi kiu std_logic_vector.
41
42
43
44
Ni dung
1 2 3 4 5 6 7 Gii thiu VHDL Cu trc lp trnh Cc i tng Cc kiu d liu Cc php ton Cc mnh tun t DES vi VHDL AES vi VHDL
45
4. WAIT
Wait on ... Wait for ... Wait until ...
46
VI.1. Mnh IF
IF (biuthclogic1) THEN ... ELSIF (biuthclogic2) THEN - c th c nhiu ELSIF ... ELSE - nhng ch c 1 ELSE ... A END IF; M B U S process (A, B, C, D, Sel ) C X begin D 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;
47
Sel
C
<= A; <= B; <= C; <= D; S <= 0000; D
Sel
48
VI.2. Mnh CASE (tip) Ta c th s dng 1 di gi tr hu hn trong biu thc logic ca mnh CASE hoc IF.
if (x = 12 to 14) then ... end if; case (D_In) is when 1000 to 1010 => ... ... end case;
49
Cch x l
Ngi thit k/lp trnh phi phn gii gi tr t nhiu ngun khc nhau tn hiu ch nhn 1 gi tr duy nht ti 1 thi im (multisource - single-driver).
51
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;
52
VI.3. Mnh LOOP (tip) Dng vng lp ang thc hin d chuyn sang vng lp tip theo: NEXT. Dng vng lp ang thc hin d v thot hn khi vng lp: EXIT.
C th c nhiu vng lp lng nhau, nhng lnh Exit ch c tc dng i vi vng lp trc tip cha n.
53
VI.4. Mnh WAIT Mnh WAIT dng tm dng Process trong mt khong thi gian no :
Wait on tn_hiu_no__thay_i_gi_tr Wait until biu_thc_logic_nhn_gi_tr_true Wait for khong_thi_gian_xc_nh Wait (khong_thi_gian_khng_xc_nh)
Wait on A, B; ... Wait until Clk = 1; ... Wait for 10 ns; ... Wait;
54
55
VI.4. Mnh WAIT (tip) Mnh Wait c th c vit di dng tng minh (explicit) hoc khng tng minh (implicit). Mt s cng c tng hp mch khng h tr explicit wait.
-- Implicit WAIT Process (A, B) Begin C <= A and B; End Process; -- Explicit WAIT Process Begin Wait on A, B; C <= A and B; End Process;
56
Input Output
Bi tp
58
Ni dung
1 2 3 4 5 6 7 Gii thiu VHDL Cu trc lp trnh Cc i tng Cc kiu d liu Cc php ton Cc mnh tun t DES vi VHDL AES vi VHDL
59
VII. M ha DES vi VHDL DES = Data Encryption Standard L thut ton m ha khi, lm vic vi khi d liu 64bit. Kha m ha 64bit (thc t ch c 56bit v 8bit cn li dng kim tra) V kha khng di, DES c ci tin thnh Triple_DES (thc hin DES 3 ln vi 3 kha)
60
...
IP
16 rounds
FP
...
61
62
63
Ni dung
1 2 3 4 5 6 7 Gii thiu VHDL Cu trc lp trnh Cc i tng Cc kiu d liu Cc php ton Cc mnh tun t DES vi VHDL AES vi VHDL
64
VIII. M ha AES vi VHDL AES = Advanced Encryption Standard L thut ton m ha khi, lm vic vi khi d liu 128bit. Kha m ha c th 128, 192 hoc 256bit c chnh ph Hoa K chnh thc s dng thay th Triple_DES.
65
Plaintext
AddRoundKey CipherKey
SubBytes ShiftRows
MixColumn
SubBytes ShiftRows Ciphertext AddRoundKey RoundKey 10 AddRoundKey RoundKey 1-9
66
67
68
69
70
So snh vi Embedded C Vi x l, vi iu khin c sn tp lnh nn c th dng Embedded C lp trnh, cc lnh C s c dch sang ngn ng my dng nh phn. FPGA ch bao gm cc phn t Logic c bn nn phi s dng VHDL m phng v tng hp di dng ghp ni cc phn t logic. Lm vic vi VHDL i hi hiu su hn v cu trc v hot ng ca vi mch.
71
Khc nhau:
VHDL yu cu cu trc cht ch hn (c bit v kiu d liu) nn d pht hin li hn, tuy nhin li thng di dng hn v kh phn tch m ngun hn. VHDL c dng nhiu Chu u, Verilog c dng nhiu M (mc d c 2 u sinh ra M)
72
Ti liu tham kho VHDL 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.
73
74