Professional Documents
Culture Documents
IC
Msc. Nguyn c Tin tiennd@soict.hut.edu.vn +84-91-313-7399
Nm bt c kin thc c bn v ng dng ca cc IC lp trnh m t phn cng c. Nm bt c cc nguyn l lp trnh m t phn cng v cc cu trc lp trnh c bn, minh ha bng ngn ng VHDL.. C kin thc v k nng thit k mch s Hiu bit v nguyn l hot ng phn cng ca b vi iu khin v c kh nng thit k b vi iu khin.
http://dce.hut.edu.vn 2
http://dce.hut.edu.vn
1/2
Cng ha cc ng dng mm, to sn phm u vit v tc . Hiu r nguyn tc hot ng ca b x l, lm cn bn gip vic lp trnh phn mm, lp trnh h thng tr nn hp l, logic hn.
http://dce.hut.edu.vn
2/2
D dng thit k cc bo mch x l s. Nhanh chng to ra cc b x l mi, mch s chuyn dng da trn m ngun m v ty bin theo nhu cu. Khuynh hng to ra cc gii php tng th hardware/soft ware (Oracle & Sun, Google& Motorola Mobility), v cc khi x l tng tc.
http://dce.hut.edu.vn
1/2
Nguyn l mch tch hp. Tng Vn On. NXB Lao ng x hi. 2007. Thit k mch s vi VHDL & Verilog. Tng Vn On. NXB Lao ng x hi. 2007. Digital VLSI Systems Design. Dr. S. Ramachandran. Springer. 2007. Digital Integrated Circuits - A Design Perspective. Jan M. Rabaey, Anantha Chandrakasan, Borivoje Nikolic. Mc Graw Hill.
http://dce.hut.edu.vn 6
2/2
Analysis and Design of Digital IC. David A.Hodges, Horace G.jackson, Resve A.Saleh. Mc Graw Hill. The Design Warriors Guide to FPGA. Clive Max Maxfield. 2004. Circuit Design with VHDL. Volnei A. Pedroni. MIT Press. 2006. Fundamentals Of Digital Logic With VHDL Design 2nd Edition. Stephen Brown, Zvonko Vranesic. McGraw Hill. 2005.
http://dce.hut.edu.vn 7
FPGA4U, kit, usb-powered, altera, niosII & linux, http://fpga4u.epfl.ch/wiki/Main_Page SecretBlaze, b x l RISC 32bit da trn MicroBlaze, Xilinx, m m VHDL, 5 cng on, cache, ngt. http://www.lirmm.fr/~barthe/index.php/page/Secret Blaze.html Cc project v module m ngun m http://www.opencores.org/ Cc th thut trn VHDL http://vhdlguru.blogspot.com/
http://dce.hut.edu.vn 8
Phn I:
IC, Integrated Circuit, l mt mch in t m tt c cc thnh phn u c t trn mt bn dn, khng th tch ri nhau c.
Tt c cc thnh phn ca IC c sn xut ng thi v hng lot, ch khng phi tng IC n l. t tn linh kin. c ti u v khng gian, 1 triu transitor/mm2 Module ha qu trnh thit k mch in t.
Gim chi ph nghin cu, trin khai, nng cp... Gim gi thnh thit b, chc nng.
http://dce.hut.edu.vn/ 12
Tiu th t nng lng. c ti u ha v tc ... ng b v tin cy. c kim th bi nh sn xut. Tui th cao.
http://dce.hut.edu.vn
13
1/2
Die: khun, chip sillicon. Leadframe: khung dn, cha cc chn ni ra ngoi rp rp ln board d hn Wire: ni cc chn IO trn die ra cc chn tng ng trn leadframe. V: ph kn, ng gi leadframe & die bng ceramic, plastic bo v, tn nhit.
http://dce.hut.edu.vn 14
2/2
Lin kt khung dn
http://dce.hut.edu.vn
15
1/2
2/2
Quy trnh x l N nm s cho transistor nh nht c chiu di N nm. V d, qui trnh 28 nm.
Kch thc c trng nh nht chiu di transistor nh nht. Cc b phn chc nng cu thnh IC c phn vng r rng. (FGPA h tr).
Intel Core i7
Intel Pentium 5
1/2
NPN
PNP
nMOS
http://dce.hut.edu.vn
Knh N
Knh P
19
2/2
http://dce.hut.edu.vn
20
Transistor lng cc
Transistor MOSFET
base emitor
collector
http://dce.hut.edu.vn
21
Hiu nng:
Tn s xung clock nhn i sau mi 3 nm
http://dce.hut.edu.vn
22
Nhu cu
ng dng
Kim th
ASIC
Sn xut
Kim th prototype
Ti u
http://dce.hut.edu.vn
1/2
ng gi
24
2/2
To ct mi wafer
Nh my
Ct v siliicon
Phn II:
Field Programmable Gate Array Application Specific Integrated Circuit Tng quan (1) Kin trc (2) Qui trnh thit k FPGA, ASIC (1) Gii thiu cng c thit k v trin khai (4)
1/4
2/4
Silicon, 2010
DRAM
Mt (Mgate/cm2) Custom 25
Std. Cell
Gate Single-Mask GA FPGA
10
5 2.5 0.3
27
18 12.5 4.5
1.5
1 0.7 0.25
http://dce.hut.edu.vn
29
3/4
Intel 4004 (1971) - thit k th cng
http://dce.hut.edu.vn
30
4/4
http://dce.hut.edu.vn
31
1/3
Qui tc ph bin: Nu mt IC xut hin trong sch tra cu, th khng phi l ASIC.
1/2
ASIC em li c hi sn xut vi s lng ln; cc b phn c tiu chun ha nhanh chng tr thnh sn phm thng mi.
Gi thnh gim theo s lng. None Reducing Cost. Quy trnh Cost Down trong cc nh my.
http://dce.hut.edu.vn
33
2/2
http://dce.hut.edu.vn
34
tng thit k
Simulink c := a + b; if (c = 1) then cf := 1;
Synopsys
Th vin cell
Tng hp Gi lp
Cadence
Novelus
http://dce.hut.edu.vn
36
Mc h thng
Mc m-un chc nng
Mc cng
Mc mch
Mc thit b
http://dce.hut.edu.vn
37
1/2
CPLD
Cell Base IC Programable Logic Device Full Custom IC
FPGA
Cc trans to sn thnh mng, v nh thit k thc hin vic to cc lin kt ni gia chng bng cch s dng cc th vin cell v CAD.
Sn xut n l c.
http://dce.hut.edu.vn
Gate Array
38
2/2
http://dce.hut.edu.vn
39
1/4
Pht sinh th 1: Mt khi chip ASIC cng mnh th thit k cng tinh vi, phc tp, cng tim tng nhng sai st ln. Cc phn mm h tr, gi lp cha thc s phn nh ht c hot ng thc t ca h thng. kim tra thit k, ngi k s buc phi t cc nh sn xut sn xut chip n l v kim tra trn cc ng dng, mi trng thc tn thi gian, v tin bc. cn h nn kim th phn cng nhanh chng.
http://dce.hut.edu.vn 40
2/4
Nm 1984, Ross Freeman, Bernard Vonderschmitt, ng sng lp cng ty Xillinx. Nm 1985, Xilinx a ra dng FPGA thng mi u tin, XC2064. Nm 2006, Freeman c vinh danh ti National Inventors Hall of Fame v sng ch ny. FPGA da trn cc cng ngh nn tng nh PROM v PLD, nhng vi kin trc mi hiu qu hn. Cc thit k IC c th nghim prototype trn cc chip FPGA ngay lp tc tit kim thi gian v tin bc.
http://dce.hut.edu.vn 41
3/4
Pht sinh th 2: Cc nh sn xut ln ch cung cp cc chip thng dng trn th trng, vi s lng ln. b qua nhu cu v cc IC chuyn dng c s lng thp, nhng tng nhu cu th rt ln. Pht sinh th 3: Ban u, cc chip lp trnh c c gi thnh kh cao v tc chm, ch s dng trong cc phng th nghim. Khi cng ngh sn xut pht trin vt bc, th cc chip lp trnh c ngy cng mnh v r ng dng i tr.
http://dce.hut.edu.vn 42
4/4
H qu: Chn tri mi FPGA khng ch l chip prototype trong cc phng th nghim, m thc s tr thnh sn phm thng mi i chng. Th trng phn cng c cung cp mt dng sn phm c th thit k v s dng c ngay. Cc cng ty va nh, cc k s hot ng c lp, khng phi l thuc vo cc IC ca cc nh sn xut ln t do sng to.
http://dce.hut.edu.vn
43
vs
CustomIC FPGA
http://dce.hut.edu.vn
44
1/2
Nguyn nhn s dng chip ASIC prototyping
Easiest to use 4% Quality, Reliability 9% Complete Solution 18% Other 3%
Lowest Power 3%
http://dce.hut.edu.vn
System On Chip
EDA Tools
IP-based
EDA Integrator
http://dce.hut.edu.vn
... ...
EDA Tools
Platform-based
Derivative
46
http://dce.hut.edu.vn
48
Lp trnh
A
http://dce.hut.edu.vn
http://dce.hut.edu.vn
50
Generic Array Logic nng cp t PAL, gm mt ma trn AND lp trnh c (cu to t EEPROM) v ma trn OR c nh. Tuy nhin, cc cng OR nm trong cc macrocell c ni vi flip-flop v cc b dn knh c th chn tn hiu ra. Tn gi chung ca cc thit b nh PAL, PLA, GAL l Programable Logic Device
http://dce.hut.edu.vn
51
I/O Block
Connect Connec t
http://dce.hut.edu.vn
52
1/3
C 3 thnh phn: khi logic, khi vo ra, lin kt ni, u lp trnh c. Lp trnh cho khi logic l hnh ng: c kt ni hay khng phn t logic A vi phn t logic B? Lp trnh cho khi vo ra l hnh ng: c kt ni hay khng u ra logic A vi chun ngoi vi B? Lp trnh cho lin kt ni l hnh ng: c kt ni hay khng khi logic A vi khi logic/vo ra B?
http://dce.hut.edu.vn
53
2/3
Vi FPGA, lp trnh l qu trnh nh tuyn gia cc phn t logic, flipflop c ch to c nh sn, thc thi mt tc v no . Mt tuyn u c ch to sn, v nh km mt kha ng m. Tuyn c thit lp hoc hy, tng ng vi trng thi kha ng hay m. Mi trng thi ca kha ng/m ng vi mt bit nh trng thi 0/1 tng ng. Tp hp cc bt nh to thnh b nh cu hnh cho FPGA. Bng nh tuyn c lu tr trong b nh. Cng c EDA s dch HDL thnh bng nh tuyn.
3/3
Phn tch
HDL
c := a + b; if (c == 1) then cf := 1;
nh x vo FPGA c th
BIT file
01000100 11010101 10001001
RTL
B nh cu hnh
http://dce.hut.edu.vn
55
LB
Tt c ASIC lp trnh c, bao gm FPGA, u cha cc khi logic (cell logic) c bn ging nhau to thnh di.
C 4 loi khi logic: Da vo bng tm kim (LUT Lookup Table) Xilinx Da vo b ghp knh (Multiplexers) Actel Da vo PAL/PLA Altera Transistor Pairs
http://dce.hut.edu.vn
I/O Cell I/O Cell I/O Cell I/O Cell I/O Cell I/O Cell LB LB LB I/O Cell I/O Cell I/O Cell
LB
LB
LB
LB
LB
LB
56
A0
0 MUX 1 S
A1
SA
Cell ACT 1 ch c mt module logic. Cell ACT 2, 3 c nhiu module logic hn v c Flip Flop ring. Cu to Flip Flop
http://dce.hut.edu.vn 57
1/3
Bng tm kim, LUT, Look-Up Table, l mt SRAM c K u vo vi 2K bit nh, thc hin c mi hm logic c K bin. Thng thng, K = 4.
RAM 16bit
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1
WE G4 G3 G2 G1
G4 G3 G2 G1
G Func. Gen.
1
G4 G3 G2 G1
Tn hiu ra ca mt LUT c th quay tr li, thnh u vo ca chnh LUT , hoc LUT khc. Trong mt LB, thng c 3 LUT v c gi l b thc hin hm F, G v H.
http://dce.hut.edu.vn 58
2/3
Cc LUT F v G tng ng v c lp vi nhau, thc thi cc hm 4 bin v a kt qu tnh ton ra ngoi CLB, hoc nh vo FF. Nu php ton c nhiu hn 4 bin th LUT F, G s a kt qu ti LUT H m rng thm. Flip-Flop ng vai tr: Bit nh hoc Cht d liu Hai FF c th set/reset ng b/khng ng b, tch cc theo sn m/dng
Cu trc c bn ca LB dng LUT
http://dce.hut.edu.vn 59
3/3
S liu a vo LB c th c x l bi cc hm 4 u vo, c th c cht thanh ghi, c th c chn knh, hoc bi c 3 thao tc trn.
http://dce.hut.edu.vn
60
http://dce.hut.edu.vn
61
http://dce.hut.edu.vn
62
FPGA k tha nhiu tng thit k ca cc sn phm trc s quen thuc trong kin trc. Nhng s chc nng, mc tch hp, kh nng tnh ton ca tng n v x l trong FPGA c khc nhau, gm Coarse /k:s/ , v Fine. Coarse-grained: n v x l l mt tp hp ca cc PLD, cc khi cu hnh c CLB, thc thi c hm phc tp, c yu cu tnh ton ln. V d: Actel Mux, Xilinx LUT. Fine-grained: n v x l ch gm cc khi cu hnh c CLB nh, thc thi cc hm logic n gin. V d Transistor Pairs.
http://dce.hut.edu.vn 63
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
Sea-of-Gates
PLD PLD
PLD PLD
http://dce.hut.edu.vn
64
1/3
Kt ni a nng
Kt ni di
Kt ni trc tip
LB
LB
SM
SM
SM
Lin kt ni di, tn hiu clk lin thng ton b di. Lin kt ni trc tip gia 2 khi LB. Lin kt ni a nng gm nhiu kt ni v cc chuyn mch.
http://dce.hut.edu.vn 65
2/3
Kt ni di
Kt ni trc tip
Kt ni a nng
http://dce.hut.edu.vn
66
3/3
Phn ln cc kt ni to thnh cc li kt ni theo hng v theo ct. Giao ct gia cc kt ni theo hng v theo ct s tp trung cc im cn lp trnh kt ni, to thnh ma trn chuyn mch (Switching Matrix), nm phn tn trong FPGA.
SM
http://dce.hut.edu.vn
67
Kt ni di
LB
LB
LB
LB
LB
LB
http://dce.hut.edu.vn
68
http://dce.hut.edu.vn
69
Xilinx 36%
Altera 31%
http://dce.hut.edu.vn
70
Ngn ng HDL ph hp. B cng c CAD, EDA ph hp. c lng c s lng cc CLB cn thit D kin s lng cc chn I/O cn thit. in p hot ng. Cc FPGA mi s dng mc in p thp LVTTL, LVCMOS, i hi phi chuyn i in p tng thch vi in p TTL, cung cp mt hoc nhiu vng s dng ng thi a mc in p. Tc FPGA. Kh nng ti chnh.
http://dce.hut.edu.vn 71
1/4
Thit k h thng (System Design)
2/4
Bc 1 - Thit k h thng
Phn chc nng thc hin trn FPGA Phn chc nng ny tch hp (kt hp) vi phn cn li ca h thng nh th no
73
3/4
Bc 3 - c t thit k
M t chc nng ca thit k bng:
Cc trnh son s logic Cc ngn ng c t phn cng
Kt hp m phng
Bc 4 - Tng hp logic
Ging bc Tng hp logic trong quy trnh y Kt hp ti u:
tr nng lng hao ph
Copyright (c) 10/2006 by NPB
74
4/4
1/3
Spactan II 200
Spactan II 300 PCI 32bits RS232
Userguide.pdf
http://dce.hut.edu.vn
76
2/3
http://dce.hut.edu.vn
77
1/2
Atera
Xilinx
Actel
Ch c nh sn xut mi thu hiu nguyn tc hot ng ca FPGA ca h. ch c cc IDE ca nh sn xut mi routing, timing, cu hnh c cho FPGA. EDA ca bn th 3 ch x l mc logic, ri gi IDE ca nh sn xut m nhim mc vt l.
http://dce.hut.edu.vn 78
2/2
Mt s gi chng trnh ca bn th 3:
Leonardo Spectrum, CT tng hp ca Mentor Graphics Synplify, CT tng hp ca Synplicity ModelSim , CT m phng ca Mentor Graphics. Active-HDL, CT thit k v m phng ca Aldec Active
http://dce.hut.edu.vn
79
http://dce.hut.edu.vn
80
To thc th thit k bng code mu, ly t Language Assistant. To thc th thit k, bng giao din Block Diagram. Tra cu li v x l port mapping trong qu trnh thit k bng Block Diagram. Chy gi lp mc logic, Cch a gi tr vo cc tn hiu gi lp logic.
http://dce.hut.edu.vn
81
Phn III:
Gii thiu cc ngn ng HDL (2) Cu trc m ngun VHDL (2) M hnh lp trnh VHDL Cc phng php thit k
1/3
C <= 1
5V
A := B + C
M1 M2
2/3
M t c kin trc x l tng tranh (c trng ring ca phn cng so vi phn mm).
C L X C <= A and B; L <= P and Q; X <= C and L; C <= A and B; B <= C;
S dng cc lnh tun t m phng x l song song ca phn cng d lm quen, d lp trnh.
+
b b b a a a
a a a
thay 3 bng J?
3/3
Cho php gi lp cc iu kin u vo kim th thit k phn cng -> thc hin test-driven, unitest.
001100010
Khi p dng source HDL ln 1 chip lp trnh c no th cc trnh gi lp c th tnh ton chnh xc tr truyn lan, dng sng ti mi im.
Gi : nu khng chc chn v thit k mch s t cc phn t logic, c th vit bng VHDL ri tham kho phn tch RTL.
http://dce.hut.edu.vn
86
L ngn ng lp trnh tru tng, i lp vi thit k mc logic, mc transistor. Ph hp vi phng php thit k top-down. Gim thi gian thit k, kim th, sn xut Gim chi ph k thut khng lp li None Recurring Enginnering. Ti s dng thit k. D debug, tnh ti nguyn.
http://dce.hut.edu.vn
C <= A + B
HDL
M t phn cng bng HDL. Kim th nguyn l bng gi lp trn HDL. Kim tra chi tit bng phn tch RTL. Chn IC lp trnh c. Gn kt cc chn IO ca phn cng HDL vi IC. Bin dch phn cng HDL theo IC. Np phn cng HDL ln IC.
http://dce.hut.edu.vn
88
1/3
Very high speed integrated circuit Hardware Description Language 1980, ngn ng HDL u tin, VHDL c ra i theo mnh lnh ca b quc phng M. VHDL dng ghi nhn cch hot ng ca cc ASIC m cc cng ty cung cp s dng trong thit b qun s ging c t c php ti liu. B QP yu cu VHDL phi k tha c php v cc nh ngha ca ngn ng Ada (m rng ca Pascal) ti s dng.
http://dce.hut.edu.vn 89
2/3
1983, , , Intermetrics, gp kinh nghim v ngn ng bc cao v thit k top-down pht trin VHDL. 1987, b QP tuyn b: Tt c mch in t s u c m t trong VHDL. VHDL cng c cng nhn l chun IEEE 1076. Mi h thng con in t ca my bay F-22 u c t bi VHDL.
Lc ny, VHDL l mt chun cng nghip, nhng t cng c h tr.
http://dce.hut.edu.vn 90
3/3
1996, cc cng c gi lp logic, c th hiu c php VHDL xut hin nhanh chng. Sau , cc cng c tng hp, vi u vo l VHDL, u ra l m t mch phn cng thc thi.
Chun IEEE 1164 c b sung,vi nhiu kiu logic a gi tr khc nhau (U, Z, X)
VHDL
library IEEE; IEEE.std_logic_1164.all;
VHDL wiki
91
1/2
C tnh nh kiu mnh. Khng phn bit ch hoa, thng. Cho php to mng vi index tng dn hoc gim dn. V d: bienx : out STD_LOGIC_VECTOR(2 downto 1) C th c/ghi file, thng dng gi lp, to s liu vo, v thm nh kt qu. Mt ngi t kinh nghim cng c th vit VHDL v gi lp thnh cng, nhng khng chc tng hp c ln mt thit b vt l, hoc vt qu kh nng thc t. Ngi dng c th dng cc VHDL IDE nh Altera Quatus, Xilinx ISE to s RTL.
http://dce.hut.edu.vn 92
2/2
C th chy gi lp xem dng sng tn hiu vi cc testbench tng ng. Khi source VHDL c dch di dng cng v kt ni, tc l c nh x ln mt thit b vt l nh CPLD, FPGA, th chnh l mt phn cng thc s. Ph hp vi thit k mc h thng, v cho php kim tra hnh vi ca h thng, gi lp m khng cn thng qua cng c tng hp ln phn cng. M t c tnh tng tranh ca phn cng concurrent system. 1 m ngun VHDL ph hp vi nhiu phn cng.
http://dce.hut.edu.vn 93
1/3
1983~1984, Phil Moorby v Prabhu Goel pht trin xong mt ngn ng HDL, v c Gateway Design Automation cng b vi tn Verilog, cng trnh m phng Verilog. 1985, ra mt bn nng cp ca ngn ng v trnh m phng Verilog XL, c th m phng thit k trn 1 triu cng, d dng debug, m phng phn cng v c tc nhn kch thch. 1987, Verilog tha mn mong i ca cc k s thit k v ngy cng ph bin. 1989, mua li Gateway.
http://dce.hut.edu.vn 94
2/3
1990, Cadence chia ngn ng Verilog v trnh m phng Verilog-XL thnh cc sn phm ring bit. cng khai Verilog thnh chun m, cnh tranh vi VHDL. Hu ht cc xng ch to ASIC u h tr Verilog v s dng Verilog-XL lm trnh m phng. 1993, 85% thit k v thm tra ASIC dng Verilog. 1995, tr thnh chun IEEE 1364, hay cn gi l Verilog-95 Cng lc, Cadence pht trin Verilog-A dnh cho mch tng t, v l mt b phn ca VerilogAMS (Analog and Mixed-Signal)
http://dce.hut.edu.vn 95
3/3
2005, l chun IEEE 1634-2005, cn gi l Verilog 2005. SystemVerilog l tp bao qut hn, gm c Verilog 2005 bn trong, vi nhiu tnh nng mi v kh nng h tr thm nh thit k, m hnh ha thit k (nh tch hp Hardware Verification Language). 2009, SystemVerilog v Verilog u c hp nht li trong IEEE 1800-2009, cn gi l SystemVerilog 2009.
http://dce.hut.edu.vn
96
vs
Kh nng tru tng
System Algorithm RTL Logic
Verilog
1/4
VHDL
Kiu d liu
VHDL: c nhiu kiu, hm chuyn kiu, ngi dng t nh ngha kiu. Verilog: kiu n gin, gn vi phn cng, ngi dng khng t nh ngha kiu c.
http://dce.hut.edu.vn 97
vs
Ti s dng thit k
2/4
VHDL: cc procedure v function c th t trong mt package v c th c dng li trong thit k khc. Verilog: cc procedure v function phi t trong mt module, trong cc file ring r v c bao gm bng cch s dng ch dn bin dch include.
Tnh d hc
VHDL: do tnh nh kiu mnh nn c li cho ngi nhiu kinh nghim, v c nhiu cch m hnh cng mt mch s. Verilog: tng i d hc vi ngi mi bt u. Tuy nhin, cc ch nh bin dch v ngn ng PLI nh km li khng n gin.
http://dce.hut.edu.vn 98
vs
nh thi
3/4
Verilog cho kh nng lin kt thng tin gia cng c layout vi cng c tng hp/m phng tt hn VHDL,nn kh nng biu din nh thi chnh xc hn.
Th vin
VHDL: th vin l min lu tr trong mi trng my ch cc thc th (entity), kin trc (architecture), gi (package) v cu hnh (configuration) bin dch c. Verilog: khng tn ti.
Tnh d c
VHDL: ging ngn ng Ada, Pascal. Verilog: ging ngn ng C (50%C + 50%Ada)
http://dce.hut.edu.vn 99
vs
M hnh thng s ha
4/4
http://dce.hut.edu.vn
100
1/5
06/2011, http://blogs.mentor.com/verificationhorizons/blog/tag/vhdl/
http://dce.hut.edu.vn 101
2/5
Ngoi tr System Verilog, vic s dng cc ngn ng HDL ang gim dn.
06/2011, http://blogs.mentor.com/verificationhorizons/blog/tag/vhdl/
http://dce.hut.edu.vn 102
3/5
06/2011, http://blogs.mentor.com/verificationhorizons/blog/tag/vhdl/
http://dce.hut.edu.vn 103
4/5
Duy nht System Verilog ang tng dn khuynh hng s dng trong thm nh thit k.
06/2011, http://blogs.mentor.com/verificationhorizons/blog/tag/vhdl/
http://dce.hut.edu.vn 104
vs
5/5
S lng tm kim v VHDL nhiu hn Verilog, nhng s khc bit ang gim dn.
http://dce.hut.edu.vn
105
S khi, s cu trc
S trng thi
Kt hp
Thit k bng s s c sinh t ng ra ngn ng HDL, khng i hi nhiu k nng v HDL. Thit k bng s mang tnh trc quan hn, kh nng tng hp c ln phn cng cao hn.
http://dce.hut.edu.vn 106
http://dce.hut.edu.vn
108
http://dce.hut.edu.vn
109
S trng thi Thit k x l mt thut ton, t thc th con. Thit k c m t vi nhiu mnh nu.. th..
S khi Thit k khng c tnh thut ton, nhiu thc th con. Thit k mang tnh giao tip v phi php thc th.
Vit m ngun HDL Thit k nh, d kim sot hot ng; hoc thut ton, thit k c tnh tun t cao. Gi lp mi trng hot ng test. Thit k tm mc h thng (khng c kh nng tng hp), sau c thay th dn bng cc thit k kh tng hp, vi tip cn top-down. Thit k FlipFlop, Mux, ALU,
http://dce.hut.edu.vn
110
http://dce.hut.edu.vn
111
Khai bo th vin
Phn v bn ngoi
Hot ng x l
http://dce.hut.edu.vn
Khai bo th vin
#include <stdio.h>
Hot ng x l
void Mach_AND(..) { o = a & b; }
http://dce.hut.edu.vn
library IEEE; use IEEE.STD_LOGIC_1164.all; entity Mach_AND is port( a : in STD_LOGIC; b : in STD_LOGIC; o : out STD_LOGIC ); end Mach_AND; architecture Cach_Hoat_Dong_01 of Mach_AND is begin o <= a and b; end Cach_Hoat_Dong_01;
architecture Cach_Hoat_Dong_02 of Mach_AND is begin o <= not ( (not a) or (not b) ); end Cach_Hoat_Dong_01;
Package Gi
Generic
Architecture (Dataflow) Dng lung Lnh song song
Entity Thc th
Ports
Architecture (Structural) Dng cu trc
Ti mua ti nhiu linh kin, trong c 6 con IC. 2 con IC c 14 chn vo ra vi 6 NOT TTL, v 4 con IC c 8 chn vo ra vi 3 NOT CMOS.
Process
Lnh tun t
Component Th hin
116
http://dce.hut.edu.vn
http://dce.hut.edu.vn
117
2.1. Cc n v c bn ca VHDL
M lnh VHDL gm 3 phn c bn sau:
Khai bo LIBRARY (th vin): gm danh sch cc th vin s dng trong thit k (VD: ieee, std, work, ) ENTITY (thc th): m t cc chn vo-ra ca mch ARCHITECTURE (kin trc): m t hot ng ca mch
LIBRARY:
Tp hp cc on lnh thng c s dng Cho php s dng li cc on m lnh v chia s vi cc ng dng khc M lnh c vit theo khun dng ca cc FUNCTION, PROCEDURE hay COMPONENT v c t bn trong cc PACKAGE.
Copyright (c) 10/2006 by NPB 118
Cc n v c bn ca VHDL (tip)
119
Ni dung chng 2
2.1. Cc n v c bn ca VHDL 2.2. Khai bo th vin (Library) 2.3. Thc th (Entity) v th hin (Component) 2.4. Kin trc (Architecture) 2.5. Cc v d
120
121
std_logic_signed: cho php x l d liu STD_LOGIC_VECTOR nh l d liu kiu SIGNED std_logic_unsigned: cho php x l d liu STD_LOGIC_VECTOR nh l d liu kiu UNSIGNED
Copyright (c) 10/2006 by NPB 122
Ni dung chng 2
2.1. Cc n v c bn ca VHDL 2.2. Khai bo th vin (Library) 2.3. Thc th (Entity) v th hin (Component) 2.4. Kin trc (Architecture) 2.5. Cc v d
123
125
Thc th (Entity)
C php:
ENTITY entity_name IS GENERIC ( -generic_name : generic_type := <Gi tr mc nh>; ... ); PORT ( port_name : signal_mode signal_type; port_name : signal_mode signal_type; ...); END entity_name;
Trong :
Signal mode: IN, OUT, INOUT, BUFFER Signal type: BIT, STD_LOGIC, INTEGER,
V d 1
128
entity Eight_bit_register is generic ( LENGTH : integer := 8 -- Gi tr mc nh Fmax: integer := 50 -- n v MHz ); port( CLK : in STD_LOGIC; DIN : in STD_LOGIC_VECTOR(LENGTH downto 0); DOUT : out STD_LOGIC_VECTOR(LENGTH downto 0) ); end Eight_bit_register;
V d 2: (tip)
-- Nu to component t entity vi -- rng bus mc nh, 8 bit. U1 : eight_bit_register port map( CLK => NET2342 );
-- Nu to component t entity vi -- rng bus 5 bit. U1 : eight_bit_register generic map ( LENGTH => 5 ) 130 port map( CLK => NET2342);
Th hin (Component)
Th hin l mt thc th vt l c em vo s dng, c nhng vo mt kin trc ca mt thc th khc. Ging nh khi nim th hin trong class ca C++
{
Mach_And U1, Mach_And U2; U1(a,b,tmp); U2(tmp,c,o); return o; }
V d:
U1 : Mach_And generic map ( LENGTH => 5 ) port map( CLK => NET2342);
Copyright (c) 10/2006 by NPB 131
Ni dung chng 2
2.1. Cc n v c bn ca VHDL 2.2. Khai bo th vin (Library) 2.3. Thc th (Entity) v th hin (Component) 2.4. Kin trc (Architecture) 2.5. Cc v d
132
Mi thc th phi i km vi t nht 1 kin trc. Mi thc th c th c nhiu kin trc, ging nh hm o trong cc class ca C++. Vic kin trc no c dng, s ty vo cu hnh lc s dng Cc thnh phn c trng ca VHDL ca ngi pht trin.
Copyright (c) 10/2006 by NPB 133
V d:
ARCHITECTURE myarch1 OF nand_gate IS BEGIN x <= a NAND b; END myarch1; ARCHITECTURE myarch2 OF nand_gate IS BEGIN x <= NOT ( (NOT a) OR(NOT b) ); END myarch2;
Copyright (c) 10/2006 by NPB 134
135
Ni dung chng 2
2.1. Cc n v c bn ca VHDL 2.2. Khai bo th vin (Library) 2.3. Thc th (Entity) 2.4. Kin trc (Architecture) 2.5. Cc v d
136
V d 1
Trigger D xc pht sn dng c tn hiu Reset tch cc mc cao.
Nu rst = 1 th q = 0 Ngc li:
Nu clk chuyn t 0 ln 1 th q = d Cn li th h gi nguyn trng thi.
137
V d 1 (tip)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 --------------------------------------LIBRARY ieee; USE ieee.std_logic_1164.all; --------------------------------------ENTITY dff IS PORT (d, clk, rst: IN STD_LOGIC; q: OUT STD_LOGIC); END dff; --------------------------------------ARCHITECTURE behavior OF dff IS BEGIN PROCESS (rst, clk) BEGIN IF (rst='1') THEN q <= '0'; ELSIF (clk'EVENT AND clk='1') THEN q <= d; END IF; END PROCESS; END behavior; --------------------------------------Copyright (c) 10/2006 by NPB 138
V d 2
Trigger D xc pht sn dng c u vo D l u ra ca 1 cng NAND 2 u vo.
139
V d 2 (tip)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 --------------------------------------ENTITY example IS PORT ( a, b, clk: IN BIT; q:OUT BIT); END example; --------------------------------------ARCHITECTURE example OF example IS SIGNAL temp : BIT; BEGIN temp <= a NAND b; PROCESS (clk) BEGIN IF (clk'EVENT AND clk='1') THEN q<=temp; END IF; END PROCESS; END example; ---------------------------------------- C th thay dng 8 v 10 bng q <= a NAND b dng 13
Copyright (c) 10/2006 by NPB 140
http://dce.hut.edu.vn
141
Ni dung chng 3
3.1. Khi nim chung v tn hiu 3.2. Phn loi tn hiu 3.3. Khai bo tn hiu v phm vi s dng
tn hiu (Signal)
V d tn hiu
Tn hiu (Signal)
Tn hiu trong cc thit b in t l tn hiu in
Tn hiu (Signal)
Tm quan trng ca tn hiu in (electrical signal) Tn hiu in ng vai tr rt quan trng trong hot ng ca cc thit b in t -> VHDL: tn hiu ng vai tr rt quan trng trong vic m t qu trnh trao i d liu gia cc mch, cc khi chc nng vi nhau
bit_vector(7 downto 0)
bit_vector(0 to 7)
External Signals
ARCHITECTURE
Internal Signals
Phm vi s dng
Cc tn hiu khai bo trong mt package c th s dng trong tt c cc i tng s dng package Cc tn hiu ca interface (external signals) c th s dng trong tt c cc architecture ca interface Cc tn hiu khai bo bn trong mt architecture th ch c th s dng trong architecture
V d
MUX5-1
V d
entity mux5_1 is port(u, v, w, x, y: IN std_logic_vector(2 downto 0); s: IN std_logic_vector(2 downto 0); m: OUT std_logic_vector(2 downto 0)); end mux5_1; architecture structure1 of mux5_1 is signal out1, out2, out3: std_logic_vector(2 downto 0); begin --Khai bao va noi chan cac component voi nhau mux21_1: entity work.mux2_1(behavior) port map(u, v, out1, s(0)); mux21_2: entity work.mux2_1(behavior) port map(w, x, out2, s(0)); mux21_3: entity work.mux2_1(behavior) port map(out1, out2, out3, s(1)); mux21_4: entity work.mux2_1(behavior) port map(out3, Y, m, s(2)); end structure1;
1/3
Tr truyn lan ca tn hiu l khong thi gian cn thit tn hiu i t u vo ti u ra v c trng thi n nh v hp l.
out
2ns t in out
n nh
Tr truyn lan tng khi nhit mi trng hot ng, in p ngun cp, ko ti u ra tng.
http://dce.hut.edu.vn
158
2/3
Dy dn di 6 inch, c tr truyn lan khong 1ns. Cng logic, ty cng ngh ch to, tr khong 10ns~1ps. Tr trn mt ng dn bng tng tr ca tng thnh phn trn ng dn . T = ti tr ca mt IC c tnh bng tr ln nht trong cc ng dn gia u vo v u ra.
http://dce.hut.edu.vn
15,2cm, tr ~1 ns
3/3
tr ln nht ca mt IC chnh bng chu k hot ng ca IC quyt nh tn s lm vic ti a Fmax. tr thay i theo tng cch ti u ha thit k, IC vt l (FGPA, CPLD, etc). tr xc nh c c th trong qu trnh tng hp ln phn cng, khng xc nh c nu ch tng hp mc logic.
http://dce.hut.edu.vn
161
Ni dung chng 4
4.1. Khai bo thc th (entity) 4.2. Khai bo cng (ports) 4.3. Khai bo thuc tnh, thng s(generic)
162
163
164
165
166
167
Ch hot ng ca cng (Port mode) Ch hot ng ca cng (Port mode) xc nh chiu d liu trn cng Cc ch cng thng s dng
In: ch vo, cho php c tn hiu Out: ch ra, cho php xut tn hiu Inout: ch hai chiu, c vo v ra
168
type :=value;
169
V d khai bo generic
170
http://dce.hut.edu.vn/
171
Ni dung chng 3
3.1. Cc kiu d liu c sn 3.2. Cc kiu d liu do ngi dng nh ngha 3.3. Cc kiu d liu dn xut 3.4. Kiu d liu mng 3.5. Kiu d liu bn ghi 3.6. Cc kiu d liu c du v khng du 3.7. Chuyn i kiu d liu 3.8. Cc v d
172
Ngoi ra VHDL cn cung cp c kiu access (pointer) v kiu file (ta khng nghin cu).
Copyright (c) 10/2006 by NPB 173
C php
type type_name is type_definition; Trong type_definition c th thuc kiu scalar, composite, access, file. V d: type Sreg0_type is (S1, S2, S3, S4); type small is range 0 to 23;
http://dce.hut.edu.vn/
174
175
176
Kiu STD_LOGIC
Kiu STD_LOGIC v STD_LOGIC_VECTOR gm 8 gi tr sau:
'X' : khng xc nh '0' : mc thp '1' : mc cao 'Z' : tr khng cao 'W' : khng xc nh yu 'L' : mc thp (yu) 'H' : mc cao (yu)
177
Kiu STD_ULOGIC
H thng logic 9 mc c gii thiu trong chun IEEE 1164 (U, X, 0, 1, Z, W, L, H, ) STD_LOGIC l subtype ca STD_ULOGIC (c thm gi tr logic 'U' Unresolved)
178
179
type CAPACITY is range 0 to 1E8 units pF; -- picofarad nF = 1000 pF; -- nanofarad uF = 1000 nF; -- microfarad mF = 1000 uF; -- milifarad F = 1000 mF; -- farad end units CAPACITY; variable SomeVar : CAPACITY; SomeVar := 1mF + 23pF;
type DISTANCE is range 0 to 1E5 units um; -- micrometer mm = 1000 um; -- millimeter in_a = 25400 um; -- inch end units DISTANCE;
variable Dis1, Dis2 : DISTANCE; Dis1 := 28 mm; Dis2 := 2 in_a - 1 mm; if Dis1 < Dis2 then ...
Cc k t c biu din trong cp du nhy n, v d: 'A' '*' ''' '' Ni dung ca mt xu k t c biu din trong cp du nhy kp, v d:
"A string" "" xu rng "A string in a string: ""A string"". " xu c cha k t "
182
x0 <= '0';
-- bit, std_logic, or std_ulogic value '0'
x6 <= X"2F";
S 2F theo h c s 16.
x1 <= "00011111";
bit_vector, std_logic_vector, std_ulogic_vector, signed, or unsigned
n <= 1200;
S nguyn.
x3 <= "101111";
-- Biu din dng nh phn
m <= 1_200;
S nguyn, c php c du gch di
x4 <= B"101111";
Biu din dng nh phn
y <= 1.2E-5;
S thc
x5 <= O"57";
S 57 theo h c s 8.
Copyright (c) 10/2006 by NPB
a: b: c: d: e:
BIT; BIT_VECTOR(7 DOWNTO 0); STD_LOGIC; STD_LOGIC_VECTOR(7 DOWNTO 0); INTEGER RANGE 0 TO 255;
a <= c;
Khng hp l (khc kiu BIT & STD_LOGIC)
a <= b(5);
Hp l (cng kiu BIT)
b <= d;
Khng hp l (khc kiu BIT_VECTOR & STD_LOGIC_VECTOR)
b(0) <= a;
Hp l (cng kiu BIT)
e <= b;
Khng hp l (khc kiu INTEGER & BIT_VECTOR)
c <= d(5);
Hp l (cng kiu STD_LOGIC)
e <= d;
Khng hp l (khc kiu INTEGER & STD_LOGIC_VECTOR)
Copyright (c) 10/2006 by NPB
d(0) <= c;
Hp l (cng kiu STD_LOGIC)
184
185
V d:
type type type type type byte_int is range 0 to 255; signed_word_int is range 32768 to 32767; bit_index is range 31 downto 0; my_integer is range -32 to 32; student_grade is range 0 to 100;
186
V d:
type logic_level is (unknown, low, undriven, high); type alu_function is (disable, pass, add, subtract, multiply, divide); type octal_digit is ('0', '1', '2', '3', '4', '5', '6', '7');
187
189
190
191
S dng mng:
SIGNAL signal_name: type_name [:= initial_value]; SIGNAL cng c th l CONSTANT hoc VARIABLE
192
V d v khai bo mng
Mng 1Dx1D:
TYPE row IS ARRAY (7 DOWNTO 0) OF STD_LOGIC; TYPE matrix IS ARRAY (0 TO 3) OF row; SIGNAL x: matrix;
Mng 2D:
TYPE matrix2D IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC;
Khi to mng:
... :="0001"; -- mng 1D ... :=('0','0','0','1') -- mng 1D ... :=(('0','1','1','1'), ('1','1','1','0')); -- 1Dx1D / 2D
193
V d v s dng mng
TYPE row IS ARRAY (7 TYPE array1 IS ARRAY TYPE array2 IS ARRAY TYPE array3 IS ARRAY SIGNAL x: row; SIGNAL y: array1; SIGNAL v: array2; SIGNAL w: array3; DOWNTO 0) OF STD_LOGIC; (0 TO 3) OF row; (0 TO 3) OF STD_LOGIC_VECTOR(7 DOWNTO 0); (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC;
x(0) <= y(1)(2); x(1) <= v(2)(3); x(2) <= w(2,1); y(1)(1) <= x(6); y(2)(0) <= v(0)(0); y(0)(0) <= w(3,3); w(1,1) <= x(7); w(3,0) <= v(0)(3);
x <= y(0); x <= v(1); x <= w(2); x <= w(2,2 DOWNTO 0); v(0) <= w(2,2 DOWNTO 0); v(0) <= w(2); y(1) <= v(3); y(1)(7 DOWNTO 3) <= x(4 DOWNTO 0); v(1)(7 DOWNTO 3) <= v(2)(4 DOWNTO 0); w(1,5 DOWNTO 1) <= v(2)(4 DOWNTO 0); -- Lnh t m l cc php gn sai
Copyright (c) 10/2006 by NPB 194
V d v gn mng
Gi s c mt mng c khai bo l:
type a is array (1 to 4) of character;
gn gi tr cho cc phn t ca mng theo th t 'f', 'o', 'o', 'd' ta c th dng cch vit nh sau:
a := ('f', 'o', 'o', 'd'); a := (1 => 'f', 3 => 'o', 4 => 'd', 2 => 'o'); a := ('f', 4 => 'd', others => 'o');
195
196
V d v kiu bn ghi
V d 1:
TYPE birthday IS RECORD day: INTEGER RANGE 1 TO 31; month: month_name; END RECORD;
V d 2:
type instruction is record op_code : processor_op; address_mode : mode; operand1, operand2: integer range 0 to 15; end record;
200
V d 1
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ... SIGNAL a: IN SIGNED (7 DOWNTO 0); SIGNAL b: IN SIGNED (7 DOWNTO 0); SIGNAL x: OUT SIGNED (7 DOWNTO 0); ... v <= a + b; w <= a AND b;
201
V d 2
LIBRARY ieee; USE ieee.std_logic_1164.all; ... SIGNAL a: IN STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); ... v <= a + b; w <= a AND b;
202
V d 3
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ... SIGNAL a: IN STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); ... v <= a + b; w <= a AND b;
203
204
Cc hm chuyn i
conv_integer(p): chuyn i p thuc kiu INTEGER, UNSIGNED, SIGNED, hoc STD_ULOGIC thnh mt gi tr INTEGER. conv_unsigned(p, b): chuyn i p thuc kiu INTEGER, UNSIGNED, SIGNED, hoc STD_ULOGIC thnh mt gi tr UNSIGNED vi kch thc l b bit. conv_signed(p, b): chuyn i p ca kiu INTEGER, UNSIGNED, SIGNED, hoc STD_ULOGIC thnh mt gi tr SIGNED vi kch thc l b bit. conv_std_logic_vector(p, b): chuyn i p thuc kiu d liu INTEGER, UNSIGNED, SIGNED, hoc STD_LOGIC thnh mt gi tr STD_LOGIC_VECTOR vi kch thc b bit.
Copyright (c) 10/2006 by NPB 205
V d 1
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; y <= long(2*x + 5);
206
V d 2
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ... SIGNAL a: IN UNSIGNED (7 DOWNTO 0); SIGNAL b: IN UNSIGNED (7 DOWNTO 0); SIGNAL y: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); ... y <= CONV_STD_LOGIC_VECTOR ((a+b), 8); Php ton hp l: a+b c chuyn i t UNSIGNED thnh mt gi tr 8-bit STD_LOGIC_VECTOR, sau gn cho y.
207
5.8. Cc v d
V d 1: cho cc khai bo sau
TYPE byte IS ARRAY (7 DOWNTO 0) OF STD_LOGIC; TYPE mem1 IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC; TYPE mem2 IS ARRAY (0 TO 3) OF byte; TYPE mem3 IS ARRAY (0 TO 3) OF STD_LOGIC_VECTOR(0 TO 7); SIGNAL a: STD_LOGIC; SIGNAL b: BIT; SIGNAL x: byte; SIGNAL y: STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL v: BIT_VECTOR (3 DOWNTO 0); SIGNAL z: STD_LOGIC_VECTOR (x'HIGH DOWNTO 0); SIGNAL w1: mem1; SIGNAL w2: mem2; SIGNAL w3: mem3;
208
V d 1 (tip)
Xt tnh hp l ca cc php gn sau:
x(2) <= a; y(0) <= x(0); z(7) <= x(5); b <= v(3); w1(0,0) <= x(3); w1(2,5) <= y(7); w2(0)(0) <= x(2); w2(2)(5) <= y(7); w1(2,5) <= w2(3)(7); b <= a; w1(0)(2) <= x(2); w2(2,0) <= a;
209
V d 1 (tip)
Xt tnh hp l ca cc php gn sau:
x <= "11111110"; x <= (OTHERS => '1'); x <= y; y <= ('1','1','1','1','1','1','0','Z'); y <= (7 =>'0', 1 =>'0', OTHERS => '1'); y(2 DOWNTO 0) <= z(6 DOWNTO 4); y(5 TO 7) <= z(6 DOWNTO 0); z <= "11111" & "000"; z <= y; z <= w3(1); z(5 DOWNTO 0) <= w3(1)(2 TO 7);
210
V d 1 (tip)
Xt tnh hp l ca cc php gn sau:
w1 <= ((OTHERS=>'Z'), "11110000" ,"11110000", (OTHERS=>'0')); w1 <= (OTHERS => '1'); w1(0, 7 DOWNTO 0) <="11111111"; w2 <= (OTHERS => 'Z'); w2(0, 7 DOWNTO 0) <= "11110000"; w2(0)(7 DOWNTO 0) <= "11110000"; w2 <= ((OTHERS=>'0'), (OTHERS=>'0'), (OTHERS=>'0'), (OTHERS=>'0')); w3(2) <= y; w3(1) <= "00000000"; w3(1) <= (OTHERS => '0'); w3 <= ("11111100", ('0','0','0','0','Z','Z','Z','Z',), (OTHERS=>'0'), (OTHERS=>'0'));
Copyright (c) 10/2006 by NPB 211
V d 2
212
V d 2 (tip)
213
214
Ni dung chng 6
6.1. Cc ton t 6.2. Cc thuc tnh 6.3. Cc thuc tnh do ngi dng nh ngha 6.4. Chng ton t 6.5. GENERIC
215
6.1. Ton t
VHDL cung cp mt s loi ton t sau:
Ton t gn Ton t logic Ton t s hc Ton t so snh Ton t dch
216
Cc ton t gn
<= dng gn gi tr cho SIGNAL := dng gn gi tr cho VARIABLE, CONSTANT, GENERIC => dng gn gi tr cho tng phn t ca kiu vector hoc dng vi t kha OTHERS
217
VD v ton t gn
SIGNAL x : STD_LOGIC; VARIABLE y : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL w : STD_LOGIC_VECTOR(0 TO 7);
x y w w <= := <= <= '1'; "0000"; "10000000"; (0 =>'1', OTHERS =>'0');
218
Cc ton t logic
VHDL nh ngha cc ton t logic sau:
NOT, AND, OR, NAND, NOR, XOR, XNOR
D liu cho cc ton t ny phi l kiu: BIT, STD_LOGIC, STD_ULOGIC, BIT_VECTOR, STD_LOGIC_VECTOR, STD_ULOGIC_VECTOR. V d:
y <= NOT (a AND b); y <= a NAND b;
219
Cc ton t s hc
Dng cho cc kiu d liu s nh l:INTEGER, SIGNED, UNSIGNED, REAL. Bao gm:
+ Ton t cng Ton t tr * Ton t nhn / Ton t chia ** Ton t ly m MOD Php chia ly phn nguyn (Y MOD X c du ca X) REM Php chia ly phn d (Y REM X c du ca Y) ABS Php ly gi tr tuyt i
220
Ton t so snh
C cc ton t so snh sau:
= So snh bng /= So snh khc nhau < So snh nh hn > So snh ln hn <= So snh nh hn hoc bng >= So snh ln hn hoc bng
Ch tc ng ln 2 ton hng c cng kiu Kt qu l mt gi tr Boolean Cc ton hng ng vi php so snh bng v khc (= v /=) c th c kiu bt k. Vi cc kiu c cu trc, 2 gi tr c coi l bng nhau nu tt c cc thnh phn tng ng ca chng l nh nhau. Cc ton t so snh cn li phi c ton hng l kiu v hng hoc kiu mng 1 chiu ca cc kiu ri rc.
Copyright (c) 10/2006 by NPB 221
Ton t dch
C php s dng ton t dch l:
<left operand> <shift operation> <right operand>
Trong :
<left operand> : kiu l BIT_VECTOR <right operand> : kiu l INTEGER
V d:
signal x: bit_vector(bus_width-1 downto 0); x<= x sll 2;
222
Ton t ghp ni
Ton t ghp ni (&) tc ng ln cc mng 1 chiu cho ra mt mng mi vi ni dung ca ton hng bn phi c ghp ni theo sau ni dung ca ton hng bn tri. N cng c s dng thm 1 phn t vo mng hoc hnh thnh 1 mng t 2 phn t. Ton t ny thng c s dng vi kiu xu k t.
223
Th t u tin ca cc ton t
Th t u tin gim dn t trn xung:
** * / + (sign) + = /= and or abs not mod rem (sign) & < <= nand nor
> xor
>=
224
225
V d
Gi s d l mt vector c khai bo nh sau:
SIGNAL d : STD_LOGIC_VECTOR(0 TO 7)
Ta s c:
d'LOW = 0, d'HIGH = 7, d'LEFT = 0, d'RIGHT = 7, d'LENGTH = 8, d'RANGE = (0 to 7), d'REVERSE_RANGE = (7 downto 0)
226
227
V d
4 cu lnh sau kim tra s kin xut hin sn dng ca xung clk:
IF (clk'EVENT AND clk='1')... IF (NOT clk'STABLE AND clk='1')... WAIT UNTIL (clk'EVENT AND clk='1'); IF RISING_EDGE(clk)...
228
M t thuc tnh:
ATTRIBUTE attribute_name OF target_name: class IS value;
Trong :
attribute_type: kiu d liu bt k (BIT, INTEGER, STD_LOGIC_VECTOR, ...) class: TYPE, SIGNAL, FUNCTION, ... value: '0', 27, "00 11 10 01", ...
229
V d 1
ATTRIBUTE number_of_inputs: INTEGER; ATTRIBUTE number_of_inputs OF nand3: SIGNAL IS 3; ... inputs <= nand3'number_of_pins; -- kt qu = 3
230
V d 2
M ha kiu lit k:
TYPE color IS (red, green, blue, white);
Ngm nh th red = "00", green = "01", blue = "10", white = "11". thay i li ta c th dng:
ATTRIBUTE enum_encoding OF color: TYPE IS "11 00 10 01";
Thuc tnh do ngi dng nh ngha c th khai bo bt c v tr no, ngoi tr trong thn ca PACKAGE.
231
S dng:
SIGNAL inp1, outp: INTEGER RANGE 0 TO 15; SIGNAL inp2: BIT; (...) outp <= 3 + inp1 + inp2; (...)
232
6.5. GENERIC
GENERIC l cch to ra 1 tham s tnh dng chung cho ton b thit k. => Lm cho chng trnh mm do hn v tng tnh s dng li. GENERIC phi c khai bo trong ENTITY vi c php nh sau:
GENERIC (parameter_name : parameter_type := parameter_value);
233
V d
Tham s n sau y lun c gi tr ngm nh l 8:
ENTITY my_entity IS GENERIC (n : INTEGER := 8); PORT (...); END my_entity; ARCHITECTURE my_architecture OF my_entity IS ... END my_architecture;
234
1/2
architecture FSM_ARCH of entity_name is attribute enum_encoding: string; -- Khai bo cc trng thi type Sreg_type is ( Stop, Init, Go ); -- Nu cn, ch nh r gi tr binary ca tng trng thi attribute enum_encoding of Sreg_type: type is c ounter := c ounter + 1 "00 " & -- Stop Button='1' and "01 " & -- Init c ounter < Thres hold "10" ; -- Go Res et='1' Stop /00/ StopLam p<='1' -- Bin ch trng thi hin ti signal Sreg: Sreg_type; c ounter := 0 begin process (CLK) if CLK'event and CLK = '1' then .. -- xem slide tip theo end if; end process; end architecture FSM_ARCH
Copyright (c) 10/2006 by NPB
Init /01/ StopLam p <='0' GoLam p<='0' c ounter := c ounter * 2 c ounter >= Thres hold
235
1/2
-- Qu trnh bin i trng thi case Sreg is -- Bin i t State1 thnh ?? when State1 => State Action if (condition) then Sreg <= State2; Transition Action; else if (condition) then Transition Action; else Sreg <= Default State end if -- Bin i t State2 thnh ?? when State2 => -- Bin i t trng thi cn li when others => Sreg <= Init State; // or null; end case
Copyright (c) 10/2006 by NPB
c ounter := c ounter + 1 Button='1' and c ounter < Thres hold Res et='1' Stop /00/ c ounter := 0 StopLam p<='1'
c ounter := c ounter * 2
236
Phn IV:
B dn knh / phn knh ALU RAM/Thanh ghi a nng B nh chng trnh Truy cp b nh chnh
B nh thi Thanh ghi chuyn dng B gii m lnh tun t B gii m lnh r nhnh
Process (I,S) Begin If (S='1') Then O <= I(1); Else O <=I(0); End If; End Process;
I0 I1 I2 I3 S
http://dce.hut.edu.vn/
238
Process (I,S) Begin If (S='1') Then O(0) <= I; Else O(1) <=I; End If; End Process;
O0 O1 O2 S O3
http://dce.hut.edu.vn/
239
B ghp knh
ng thit k phn cng, phn mm. Va thit k phn cng, va thit k trnh bin dch, m phng tng ng. Code VHDL tng ng code C. Khai thc u th phn cng: song song, etc.
http://dce.hut.edu.vn/ 240
mch 3 mch 4
http://dce.hut.edu.vn
1/3
M t entity, biu tng CI A M t architecture
Q CO OV
architecture adder_arch of adder is signal TEMP_RESULT : std_logic_vector(7 downto 0); signal TEMP_RESULT2 : std_logic_vector(1 downto 0); begin TEMP_RESULT <= ('0' & A(6 downto 0)) + ('0' & B(6 downto 0)) + CI; TEMP_RESULT2 <= ('0' & A(7)) + ('0' & B(7)) + TEMP_RESULT(7); Q <= TEMP_RESULT2(0) & TEMP_RESULT(6 downto 0); CO <= TEMP_RESULT2(1); OV <= TEMP_RESULT2(1) xor TEMP_RESULT(7); end architecture;
http://dce.hut.edu.vn 242
2/3
A - B = - ((-A ) + B ) = - (A + 1 + B ) = - (A + B ) - 1 = A + B + 1 - 1 = A + B
Php tr bng cch dng s b 2 cn 2 ln thc hin php cng tr ln. Php tr bng cch dng s b 1 chi cn 1 php cng tr gim ~ .
CI A
0 1
B
Q CO OV
0 1
ADD/SUB
http://dce.hut.edu.vn 243
3/3
0 1
0 1
Q CO OV
B 1 ADD/INC
0 1
ADD/SUB
DO = DI
architecture move_arch of mover is Begin DO <= DI; end architecture;
http://dce.hut.edu.vn/
245
DO = DI1 shr 1
architecture shr_arch of shr is begin DO <= '0' & DI(7 downto 1) ; CF <= DI(0); end architecture;
0 MSB LSB
DO = DI1 rr 1
architecture rr_arch of rr is begin DO <= DI(6 downto 0) & D(7); CF <= DI(7); end architecture;
C
MSB LSB
http://dce.hut.edu.vn/
246
1/4
S nguyn l
opcode b ALU
x
+ cls << >>
opcode
0 1 2 3
00x
010 011
axb
a+b a b
10x
110 111
clear a
a << b a >> b
http://dce.hut.edu.vn
247
2/4
Ngoi ra, cc b ghp knh cn c s dng phi ghp trng thi c t cc php ton, theo cch tng t. Nhn xt: cho d m lnh ch yu cu thc hin 1 php ton, nhng tt c cc mch php ton u hot ng. C th tit kim nng lng bng cch ngt cc mch tnh ton v ch khi ngun cp.
Dng chnh opcode iu khin cp ngun in. iu ny v c bn khng nh hng ti tc tnh ton, v mi mach php ton u thc hin song song.
248
3/4
Opcode dng chn mch tnh ton trn ALU, chnh l opcode ca tp lnh CPU, c th vi mt cht thay i nh. Thit lp b m cho opcode (v d php + ng vi m 010) c nh hng ti hiu nng ca ALU, v s lm tng/gim hiu qu gii m opcode. Lu thit k ALU:
Mt s mch php ton c th thc hin nhiu php ton (v d b cng/tr). Khi opcode cho cc php ton ny cn sai khc bit cng t cng tt d ti thiu ha.
http://dce.hut.edu.vn/
249
4/4
V d v 2 cch m opcode khc nhau. Cch th 2 gy kh khn cho vic t chc b cng.
Cch 1 opcode 00x 010 011 10x 110 111 ALU axb a+b a b clear a a << b a >> b 00x 010 011 10x 110 111 Cch 2 opcode ALU axb a+b clear a a b a << b a >> b
http://dce.hut.edu.vn/
250
ALU nhm thc hin php ton PreALU nhm cung cp cc ton hng vo cho ALU Ton hng vo c th ly t tp thanh ghi, b nh chnh, etc.
Thanh ghi AX Thanh ghi BX B nh chnh
0 1 2 3
Ton hng 1
0 1 2 3
Ton hng 2
http://dce.hut.edu.vn/
251
1/2
Thanh ghi dng lu tr thng tin bn trong CPU, c tc cao nht trong phn cp b nh. C th cha c d liu v a ch. Ch gm bit nh, khng c phn cng c th km theo.
DIN( 7:0)
DOUT(4)
DIN(4)
DOUT(5)
DIN(5)
DOUT(6)
DIN(6)
DOUT(7)
DIN(7)
DO UT ( 2:0)
U1
U2
U3
U4
D I N D OUT C LK
D I N D OUT C LK
D I N D OUT C LK
D I N D OUT C LK
C E R ESET
C E R ESET
C E R ESET
C E R ESET
DF F
DF F
DF F
DF F
CE
CLK Reset
DIN(7:0) DOUT(7:0)
DOUT(0)
DIN(0)
DOUT(1)
DIN(1)
DOUT(2)
DIN(2)
DOUT(3)
DIN(3)
U5
D I N D OUT C LK C E R ESET
U6
D I N D OUT C LK C E R ESET
U7
D I N D OUT C LK C E R ESET
U8
D I N D OUT C LK C E R ESET
DF F
DF F
DF F
DF F
http://dce.hut.edu.vn/
252
2/2
entity IPCore_GPR is port ( CLR : in std_logic; -- xa d liu CLK : in std_logic; -- ng h CE : in std_logic; -- cho php hot ng --! cng vo d liu, ni dung cn nh DATA : in std_logic_vector(7 downto 0); --! cng ra d liu ~ ni dung nh Q : out std_logic_vector(7 downto 0) ); end entity;
architecture GPR_arch of IPCore_GPR is begin process (CLK) begin --! ti sn dng ca ng h if rising_edge(CLK) then --! Nu c php hot ng if CE = '1' then --! xa d liu ng b if CLR = '1' then Q <= (others => '0'); else --! hoc cht d liu Q <= DATA; end if; -- CLR end if; -- CE end if; -- clk end process; end GPR_arch;
253
http://dce.hut.edu.vn/
1/2
n v nh
0 1 2 3
a ch
http://dce.hut.edu.vn/
D liu ra
254
2/2
architecture rom_arch of IPCore_rom is begin process(ADDRESS, OE) entity IPCore_rom is variable ADDR_TEMP: std_logic_vector(1 port ( downto 0); OE : in std_logic; -- cho php d liu begin -- ng a ch ADDR_TEMP := ADDRESS(1 downto 0); ADDRESS : in std_logic_vector(2 downto 0); if (OE = '1') then -- ng liu if (ADDRESS(2) = '0') then Q : out std_logic_vector(7 downto 0) case (ADDR_TEMP) is ); when "00" => Q <= "01100001"; end entity; when "01" => Q <= "01100010"; when "10" => Q <= "00110100"; when others => Q <= "00000000"; end case; else mi gi tr cn li trong ROM = 0 Q <= "00000000"; end if; else nu OE = 0 Q <= "ZZZZZZZZ"; -- tr khng cao end if; end process; end architecture; http://dce.hut.edu.vn/ 255
1/2
C nhiu kiu thit k khc nhau: n/a cng, chung/ring ng a ch/d liu.
D liu vo n v nh CE0
0 1 2 3
D liu ra
256
2/2
entity IPCore_ram is port ( WE : in std_logic; CLK : in std_logic; ADDR : in std_logic_vector(3 downto 0); DATA : in std_logic_vector(7 downto 0); Q : out std_logic_vector(7 downto 0) ); end entity; architecture ram_arch of IPCore_ram is
type IPCore_ram_mem_type is array (15 downto 0) of std_logic_vector(7 downto 0); signal IPCore_ram_mem: IPCore_ram_mem_type;
begin process (CLK) begin if rising_edge(CLK) then if (WE = '1') then IPCore_ram_mem(CONV_INTEGER(ADDR)) <= DATA; end if; end if; end process; Q <= IPCore_ram_mem(CONV_INTEGER(ADDR)); end architecture;
http://dce.hut.edu.vn/
257
Thanh ghi lnh IR, Instruction Register, cha m lnh ang c gii m. c trng phn cng: ng d liu vo c ni trc tip vi b nh chng trnh, v d liu u ra a ti b gii m lnh.
ROM
Gii m lnh
http://dce.hut.edu.vn/
258
1/5
Thanh ghi b m chng trnh PC, Program Counter hoc Instruction Pointer, cha a ch ca lnh s c thc hin. Phn ln cc lnh trong chng trnh l tun t a ch ca lnh k tip = a ch ca lnh hin ti + lch a ch gia 2 lnh . d liu vo. Vi b x l RISC, lch ny l khng i. Thit k PC s bao gm mt b cng. Vi lnh r nhnh, PC phi ghi nh a ch mi (a ch nhy ti) bt k. d liu vo. Ngt xy ra r nhnh ti 1 chng trnh con phc v ngt a ch no d liu vo.
http://dce.hut.edu.vn/ 259
2/5
R nhnh do tr v t chng trnh con a ch tr v s c a vo PC t Stack d liu vo. Do c nhiu ngun d liu vo nn thit k PC phi bao gm mt b ghp knh.
a ch lnh hin ti lch a ch
Thanh ghi PC
Mux
ROM
a ch
Phn x logic
http://dce.hut.edu.vn/
3/5
http://dce.hut.edu.vn/
261
4/5
STACK2
D (1 0: 0 ) C L K Q (1 0: 0 )
C EST2
CE
U2
R e set se su a xo a SP1, SP2(kh on g nh o ct c nu a ) va re se t lai bo de m
STACK1 REG11CNN
D (1 0: 0 ) C L K Q (1 0: 0 )
InterruptVectorTable
IB3 (IN SN UM: 0 )
S E L(1 :0 ) O B (IN S NU M :0 )
I B 2 (I N S N U M: 0 )
U1
I B 1 (I N S N U M: 0 ) O B (IN S NU M :0 ) I B 3 (I N S N U M: 0 ) D (1 0: 0 ) CLK I B 0 (I N S N U M: 0 )
IntSel(1:0)
ST(1 0: 0 )
C EST1
CE
R e se t
C (1 0: 0 ) P R E SE T CE
MUX11X04
IB0 (8: 0 ) R e se t
REG11CNN PRC(10:0)
P RL
IB0(8 dow...
BUC11CPP
Tin h ie u t ich cu c ta i cu o i ch u ki t h u nh a t cu a le n h re nh a n h d e d e n ch u ki t hu 2 ch o p h e p Bu c n a p g ia t ri mo i
CPR
PC_Logic
Re se t P C M S (1 :0 )
CCE = C EST2
not PWRDN
CE S T2
C EST1
CE S T1 P re Lo ad
P RP C
pclogic
CLK
Tin hieu tich cuc khi dung hoat dong, tiet kiem nang luong
http://dce.hut.edu.vn/
262
5/5
Lu :
Tn hiu reset gi tr trong thanh ghi PC s a a ch khi ng h thng.
http://dce.hut.edu.vn/
263
1/2
B m thi gian, Time Counter, m s chu k xung nhp. ng dng: to xung nhp c nh vi chu k l s nguyn ln xung nhp h thng, to hm delay()
xung nhip h thng system clock C trn ca b m thi gian
Thit k:
Mt b cng m s chu k xung nhp h thng. Thanh ghi lu tr kt qu m hin ti ca b cng. Thanh ghi lu tr gi tr khi to ca b cng. Xc nh thi im trn b cng.
http://dce.hut.edu.vn/ 264
2/2
0 1
Gi tr hin thi
+1
B cng
AND / OR
C trn
Lu :
Thanh ghi nh thi l mt thnh phn ca tp thanh ghi, nhn gi tr t ALU. Ngt nh thi s c chuyn ti b gii m x l, gi chng trnh con phc v ngt tng ng.
http://dce.hut.edu.vn/ 265
1/2
5V qu 2.5V Regs 5V 2.5V
lnh n+1
CE
0V
t vai tr cch ly
xc lp t
0V
lnh n
http://dce.hut.edu.vn/
266
2/2
out
2ns t
Pipeline: thm thanh ghi ngn qu trnh qu ca lnh mi vi gi n nh ca lnh c. v tr t thanh ghi
in
R cht d liu
?
0.8ns t
Rout
http://dce.hut.edu.vn/
267
1/2
Cng on
Lnh 1 Lnh 2
Mch 2
Mch 3
Mch 4
Mch 5
http://dce.hut.edu.vn/
268
2/2
B cng
http://dce.hut.edu.vn/
269
1/4
Mi b x l c mt tp lnh xc nh. Tp lnh thng c hng chc n hng trm lnh. Mi lnh l mt chui s nh phn m b x l hiu c thc hin mt thao tc xc nh. Cc lnh c m t bng cc k hiu gi nh dng text chnh l cc lnh ca hp ng.
http://dce.hut.edu.vn/
270
2/4
MIPS 150 http://inst.eecs.berkeley.edu/~cs15 0/sp11/checkpoint_1/#block-ramgeneration hoc xem offline
http://dce.hut.edu.vn/
271
3/4
PicoBlaze
4/4
MIPS 150 rt = temporary reg, rs = source reg, rd = destination reg, shamt = shift amount Dng lnh: <opcode><operand>n
1/8
B gii m lnh nhm bin i cc opcode u vo thnh cc tn hiu iu khin chn ton t v chn ton hng u ra. Tn hiu iu khin chn ton t thng l chn Select ca cc b ALU Mux, cho bit php ton cn thc hin l g. Tn hiu iu khin chn ton hng l chn Chip Enable ca cc thanh ghi v b nh cho bit kt qu php ton s c lu tr vo u.
Gii m lnh
Chn ton t ca ALU CE ca Reg A CE ca Reg B CE ca b nh chnh
http://dce.hut.edu.vn/ 274
opcode
2/8
opcode
Nhiu lnh trong tp lnh c th ch tng ng vi mt ton t duy nht trong ALU. V d, php rd = rs + 10 v php rd = rs + rt vi ALU l nh nhau. phi bin i opcode ca lnh mt cht, trc khi gi ti chn chn ton t ca ALU
http://dce.hut.edu.vn/ 275
3/8
Gii m khun dng lnh MIPS
O pcode(31:0)
O pcode(31) O pcode(30)
Load_Store
O pcode(31) O pcode(30)
I_type
O pcode(29)
Lenh JR / JA LR
Jump_B ranch
O pcode(31) O pcode(30) O pcode(29)
R_type
http://dce.hut.edu.vn/
276
4/8
Trong mt khun dng, ngha v kch thc ca cc nhm bit l ging nhau. chung cch gii m dng chung module gii m.
Cc lnh cng khun dng th thng chung c tnh iu khin nh thay i c, r nhnh, etc.
Khun dng 1 Khun dng 2 Khun dng 3
3 bit 1 bit
2 bit
2 bit
3 bit
2 bit
3 bit
4 bit
3 bit 1 bit
http://dce.hut.edu.vn/
277
5/8
Trong m lnh, chui bit cha thng tin v ton hng ngun s c gi ti cc b mux chn ton hng u vo cho ALU.
Thanh ghi AX Thanh ghi BX B nh chnh
opcode
112
0 1 2 3
Ton hng 1
0 1 2 3
Ton hng 2
Opcode cng c th l cha lun ton hng theo phng php a ch tc th. V d c = a + 112. Vi ton hng ngm nh th cn tin hnh gii m theo qui tc ngm nh c c t.
http://dce.hut.edu.vn/ 278
6/8
http://dce.hut.edu.vn/
279
7/8
http://dce.hut.edu.vn/
280
8/8
Nguyn tc x l r nhnh:
nh du cc chu k r nhnh c th nhn bit c CPU ang giai on no ca lnh r nhnh. Nu mt thnh phn no ca CPU khng c dng n, (v d ALU, c cng on sau) th phi chn lnh NOP vo cc thnh phn (v d NOP l lnh trung tnh).
Vi ALU: b gii m phi a tn hiu chn ton t NOP ti ALU. Vi iu khin cng on: b gii m y gi tr NOP vo cc thanh ghi iu khin cng on, bng cch reset cc thanh ghi ny. B gii m phi tnh ton s lng lnh NOP c a vo ALU v cc cng on sao cho ph hp vi s cng on b thiu trong ng khi r nhnh. Gii php: s dng thanh ghi dch.
http://dce.hut.edu.vn/ 281
Ph lc:
1/2
RS Latch
74HC573
http://dce.hut.edu.vn
283
1/2
Transparent Latch: xut hin trng thi u ra khng chu nh hng ca tn hiu vo. gn khng hon ton. Khi tng hp mch trn cc thit b ca Altera, Xilinx, u xut hin d thng c thng bo warning.
-- ! @brief Transparent Latch library ieee; use ieee.std_logic_1164.all; entity tran_latch is port (vi : in std_logic; en : std_logic; vo : out std_logic; end entity tran_latch ; architecture RTL of tran_latch is begin process(vi, en) thay bng begin CLK if en = '1' then vo <= vi; end if; -- Oh!. Khi en=0 thi sao?? end process; end architecture RTL;
284
Mt s lnh ch c s dng trong cc testbench, khng th c tng hp ln mt phn cng c th. Hoc cc lnh ch s dng thit k mc logic. Nu mun tng hp c, phi chuyn i thnh dng khc.
process begin CLK <= '1'; wait for 10 ns; CLK <= '0'; wait for 10 ns; end process;
http://dce.hut.edu.vn
285
http://dce.hut.edu.vn
286
V d: Qui nh gi tr c bit 0 hoc 1 chnh l thanh ghi, nhm hp nht php ton a+b v a+1 (bng cch coi 1 chnh l thanh ghi c bit). V d: thanh ghi gi tr trong cache. Thanh ghi ny nm trong khi cache ri, khng cn phi to li trong tp thanh ghi na.
http://dce.hut.edu.vn 287
Phn V:
B x l 8 bit, m ngun m Phin bn nng cp pT-BDC 8x c thit k dng Block Diagram trc quan.
Lnh cha 1 a ch ton hng. C ch gim tiu th nng lng Giao tip RS232, ngt H thng pipeline 4 cng on Thit k chi tit mc phn t logic c bn
http://dce.hut.edu.vn/
290
1/2
L kin trc my tnh m trong phn bit r rng b nh d liu v b nh chng trnh.
Von Neumann
http://dce.hut.edu.vn/
291
2/2
Ngy nay, CPU tc cao ngy ny thng kt hp hai kin trc Harvard v Von Neumann. B nh cache trn chip c phn thnh cache chng trnh v cache d liu. Kin trc Harvard c dng khi CPU truy cp vo cache. Trong trng hp khng c cache, d liu c ly t b nh chnh, m b nh chnh khng c chia thnh vng nh chng trnh v vng nh d liu. Kin trc Von Neumann dng mc truy cp b nh chnh.
http://dce.hut.edu.vn/ 292
Ghp ni Ngoi vi
iu khin
Thao tc vi s liu
Ngt
PC
text
IR ALU
UART
text
B gii m Dn knh
B nh
m/ nh thi
ROM
text RAM
RF
Entity thc th
B mn k thut my tnh
H thng
H thng
CLK Reset ExT Int IP0 IP1 ExDB RxD ROM PP OE RD WR Standby OP0 OP1 ExAB TxD InsAdr
B nh RAM/ROM
Vi x l
iu khin
Thao tc vi s liu
Ngoi vi Ghp ni
PC
IR
Dn knh
Thanh ghi
Ngt
UART
B gii m
ALU
m/nh thi
B mn k thut my tnh
Tp lnh gm 50 lnh vi 4 nhm: lnh s hc, lnh logic, lnh chuyn d liu, lnh iu khin .
S dng 4 phng php a ch ton hng: tc th, a ch trc tip, a ch thanh ghi, a ch gin tip qua thanh ghi. Thit k tp lnh c vai tr quyt nh ti hiu qu x l.
B mn k thut my tnh
Opcode
00000 0000 0000 00000 0000 0001 00000 0000 0011 00011 1TDR RRRR 01100 0PDR RRRR 10000 VVVR RRRR 10001 VVVR RRRR 1011V VVVV VVVV 11000 VVVV VVVV
Tn lnh
NOP PWRDN RET CMP CAZP CLRB SETB JC MOVI
ALU
PASN PASN PASN CMP CAZP CLRB SETB PASN PASN
ALF
S chu k
1 1 2 1
11000
11000 11001 00000
1
1 1 1(2)
1 1 2
XORI CALL
XOR PASN
http://dce.hut.edu.vn/
296
Tp thanh ghi khng lp trnh c: SSR, LSR, STACK Tp thanh ghi lp trnh c: SBUF, Acc
a ch
0x00 0x01 0x02 0x03
IP 0,1 OP 0,1
0x04
0x05 0x06 0x07 0x08. ...... 0x0F 0x10. ...... 0x1F
PP
INDEX SBUF STATUS Vng b nh khng soi gng Vng b nh khng soi gng
Tp lnh khng c bit phn bit a ch thanh ghi v a ch nh qui nh soi gng.
B mn k thut my tnh
.........
Vng 0
Vng 1
Vng 7
Tp lnh khng c bit phn bit a ch thanh ghi v a ch nh. V d: lnh yu cu thao tc vi a ch 0xEF, l a ch thanh ghi hay b nh?
Qui nh mi a ch c dng xx0x.xxxx u qui v a ch 0000.xxxx Qui tc soi gng, gii m lnh nhanh trong 1 chu k lnh, tn khng gian a ch. Qui nh duy nht a 0000.xxxx l a ch thanh ghi tit kim khng gian a ch, kh gii m, c th tn nhiu chu k ng h mi xc nh c a ch.
a ch cui cng = thng tin trn m lnh (DI) [ kt hp gi tr trong thanh ghi a ch (WO) ]
Tp lnh ch l qui nh m bit, nhng c vai tr ht sc quan trng trong kin trc v hiu nng ca b x l.
http://dce.hut.edu.vn 298
B nh (1)
Kt qu
Cht PC a ch lnh Lnh m/nh thi ngoi m/nh thi UART TxD RxD iu khin ngt C C ROM IR Gii m SSR LSR
ALU
M thao tc
Ngt ngoi
B mn k thut my tnh
Nhn lnh: PC, IR Gii m lnh:tun t, r nhnh, ngt. Thc hin lnh: nhn ton hng, thc hin. Ct ton hng: tn hiu cho php cht t b gii m lnh.
Lnh 1 Lnh 2 Lnh 3 Lnh 4 Lnh 5 Lnh 6 Lnh 7 Lnh 11 Lnh 12 1 2 3 4 5 6 7 8
FI DI FI EI DI FI WO EI DI FI WO EI DI FI DI FI EI DI FI FI DI FI EI DI WO EI WO WO WO
10
11
12
B mn k thut my tnh
ROM PCReg
MCL K CL K
Status_Reg
STA(2 ) :0 CESTA MCL K AL :0 U(7 ) CE CL K Re s e t Re t se Re F(2:0 ) Re :0 F(2 ) Re tI Re tI STAT : 0 US(7 )
STA(2:0 ) STATUS(7:0 )
STATUS(7 :6 )
Co tra ng tha i m oi
OP0Reg
D(7 ) :0 CL K CE PR
OP0Reg
D(7:0)
Q(7 CLK :0 )
CE
Q(7:0)
IRReg
D(1 :0 2 ) CL K Re s e t Q(1 :0 2 ) RST End Cy c CE MCL K
REG13CRN
INS(8:0 ) INS(8 ) :0 PWRDN PW RDN Re s e t Re t se STATUS(7:6 ) STR(7 ) :6 PRPC PRPC PRC(1 :0 0 ) CALL INS CAL L RETINS RET In tSo rc e ( :0 ) u 1 In l (1 ) tSe :0 Ac tIn t ActIn t
Sel_SpecialRegs
STATUS(7:0 ) IB7 :0 (7 ) IP_DB(7:0 ) IB6(7:0 ) IB6 :0 (7 ) STATUS(3:0 ) STATUS(3)
OP0(7:0) PR
reg_cpn OP1Reg
MCL K Ce Op 1 D(7 ) :0 CL K CE PR
Re s e t reg_cpn
Out Space
Q(7 ) :0
statusreg
INDEX(7:0 ) TL o a d ( :0 ) 7 IM(7:0 )
From ALU (7:0 ) D(7 ) :0 MCL K CL Q(7 ) K :0 CEIDX CE CETL MCL K CE CL K D(7 ) :0 Re s e t IP_DB(7:0 ) RST Q(7 ) :0
Index_Reg
A rithmeticLogicUnit
SEL_FirstOpr
IB4 :0 (7 ) IB3 :0 (7 ) IB2 :0 (7 ) OB(7 ) :0 (7 ) INS2(7:0 ) IB1 :0 SEL :0 (2 ) IB0 :0 (7 )
pccntr
TLoadReg
OP1(7:0)
reg_cpn
STA(2 ) :0 OSEn a INS2(2:0 ) I
Re s e t Ce Op 0 O0 O1 CEOp 1
IODemux
S(2 ) :0
IP1Reg IP1(7:0)
MCL K D(7 ) :0 CL K Q(7 ) :0 IP1DB(7:0 )
IOmux
IB0 :0 OB(7 ) (7 ) :0
AL :0 F(4 ) ALF(4:0 ) AL :0 U(7 ) MCL K Se r(7 ) Op :0 INS2(7:5 ) INS(7 ) :5 Sel SeOp r PL D1 D2 ASe t L ExAB(7:0 ) L Do u t( :0 ) 7 RAM(7:0 ) Q1 Q2 CEACC
reg_nnn IP0Reg
D(7 ) :0 CL K Q(7 ) :0
MUX08X07
IP0(7:0)
MCL K
Mux08x08 In Sp ace
reg_nnn
TemplateReg
Demux08x01 A CCReg
D(7 ) :0 CL Q(7 ) K :0 CE
PT0Reg
PTIN(:0 DOUT(7 ) 7 ) :0 MCL K CEPT0 DIN(7 ) PTOUT(:0 :0 7 ) CL K CE PTOUT(7:0 )
AB(2:0 )
alu
L n RD L n WR
reg08cnn
PTOUT(7:0 ) PWRDN
PTIN(7:0)
INS2(7:0 ) INS(7:0 ) INS2 :0 (7 ) INS(7 ) :0 L AB(7:0 ) L AB(2:0 ) AB(2 ) :0 ADR(7 ) :0 L AB(2 ) :0 L SEL 2 :0 ) ( SEL :0 (2 ) Se (2 ) l :0 L (2 ) SEL :0 Sel SeOp r MCL K CL K L Sel SeOp r Se Se r l Op Se Se r l Op L l Se r Se Op INDEX(7:0 ) ALF(4:0 ) IDX(7 ) :0 L ALF( :0 ) 4 AL :0 F(4 ) INS(12 :0 ) AL :0 F(4 ) L F(4 ) AL :0 INS(1 :0 2 ) c lear Re t se MCL K CL K STA(2:0 ) selsignalreg Fl a (2 ) g :0 Ac tIn t
nRD nWR
DeM
ActIn t
SSR
n RERAM
L n RERAM
portsreg
SEL (2:0 )
AB(2:0 )
EMCL K
ClockGen
CL K in K CL e K xCL MCL K EMCL K MCL K IM(7:0 ) Re tI Re s e t J um p Ena
Din(7:0) AssertInterrupt
CL K Re tI Re t se Ju En mp a ActIn t Afte t rIn Ac tIn t
Di n :0 (7 )
emctrl
From ALU (7:0 )
IModeReg M(
M(6:0 ) AL :0 IM(7 ) U(6 ) :0 ActIn t In u (1 ) tSo rce :0 Ce IM Ce IM Re t se CL K
IM(7:0 )
clockdiv
Di e u k h i e c h d o I/O n e c u a c o n g Pa l l ral e
L OSEn a
Re s e t INS _ PWRDN
L CEACC CEACC L CESTA En Cyc d CES TA L n WERAM CAL INS n ERAM L W L CETL PRPC CETL L CEPT0 RETI S N CEPT0 L CESB CESB L CEIDX CEIDX L CETMP Re t se CET MP L CEIM PW RDN CEIM L Ce TM Ce TM L Ce PM Ce PM Re tI Ju En mp a Re tI J um p Ena
L OSEn a OSEn a OSEn a L CEACC CEACC CEACC L CESTA CESTA CES TA CETL CETL L CEPT0 CEPT0 CEPT0 L CESB CESB CESB L CEIDX CEIDX CEIDX L CETMP CETMP CET MP L CEIM CEIM CEIM L CETM CETM CETM L CEPM CEPM c lear CEPM Re t se MCL K CL K L CETL
LSR
In tSo rc e ( :0 ) u 1
FStore
Afte rIn t CE Q(2 ) :0 CL K D(2 ) :0 Re F(2:0 ) MCL K STA(2:0 )
Re s e t MCL K
assint
PCONReg
MCL K Ce PM D(7 ) :0 CL K CE PR Q(7 ) :0
PM(7:0) ExT
MCL K
TimerCounter
ExTC In K CL L a D(7 ) o d :0 Re t T_ se CF FCL K TCON(5 ) :0 T_ CF From ALU (7:0 ) Re s e t CESB MCL K T_ CF TL o a d ( :0 ) 7 Re s e t Ra wCL K TCTL ( :0 ) 5
SaveFlags
reg_cpn Re s e t TCONReg
Re s e t Afte rIn t MCL K c lear Ce TM D(7 ) :0 CL Q(7 ) K :0 CE R Re s e t TCTL ( :0 ) 7
Advance Modul e
UART
CL 6 K1 x Di n :0 (7 ) Re t se Rx W S MCL K Tx Do t(7 ) u :0 IB6(7:0 ) RxIn t TxIn t T_ CF RxIn t TxIn t
intreg
tcmodule RxD
Reset_syn ExReset
Re s e t INS _ MCL K ExtRe t se Re t se In se Re t CL K Re s e t
TxD
latchsignalreg
B mn k thut my tnh
decoder
Cac tham ghi ngam dinh, chi doc de dieu khien ngat, cong.... INT
resetsyn
Giai_ma_IMPLICIT
INS(12:0) INS(4:0)
INS(12:0)
INS(12:0)
Phan_nhom_lenh
I MPLICI T I MMEDI ATE
I NS(4:0) Reset
Gii m /k khc
LPWRDN
Gii m r nhnh
IP_PC
Ju mp Enab l e CLK ActIn t
PWRDN ENDCYC JumpEnable SkipNext PRPC CLK ActI nt
INS(12:5)
Giai_ma_BRA_IMP
PWRDN RET SC SP SZ JumpEnable SkipNext
subgroup
BI TWI SE
BITWISE
end_of_ins
INS(4:0)
INS(12:0)
implicit_decode
Operand1_is_A cc
Giai_m a_toan_tu
BITWISE IMMED IATE STANDARD
BI TWI SE I MMEDI ATE STANDARD ALF(4:0) I NS(11:7)
INS(12:7)
Dia_chi_thanh_ghi
INS(4:0) ADR(7:0) INDEX(7:0) LADR(7:0)
M OV A <= S T A NDA RD and (not I NS(11)and not I NS(10) and not I NS (9) and not I NS(8 and not I NS (7));
specialins
MOVA
INS(11:7)
alu_function
iu khin r nhnh
Chon toan tu cho ALU ALF(4:0) Chon so lieu In ADR(7:0) Sel(2:0) nRERAM
IDX(7:0)
Chon_kieu_toan_hang1
MOVA Read P WriteP IMMED IATE Imp l icit Stan d ard ISEn a OSEn a IMMED IATE Imp l icit Sel (2:0) n ReRAM
addressdecoder
Gii m a ch
Tao d ia ch i ch o th a h g h i n Ng u on va Dich
Gii m m thao tc
Cong dieu khien ngam dinh, writeonly
Mod P Mod T
SelSeOpr
LatchReg
OSEna CESTA CEACC nW ERAM CETL CEPT0 CEIDX CESB CETMP CEIM
CePM CeTM
Dieu khien phuc hoi co Z,C,P va trang thai ngat trong thanh ghi IM RetI
RetI
Ju mp Enab l e JumpEna
B mn k thut my tnh
Lnh
Lnh tun t Lnh r nhnh hoc ngt CK1 CK2
SecHalf
0 0 1
EndCyc
1 0 1
FirstCyc
0 1 0
PC
Cng 1 Cht a ch Cng 1
IR
Cht lnh Khng cht Cht lnh
ENDCYC
PRPC
ActIn t Ju mp Enab le
ENDCYC
FirstCyc
D C LK
DFF
B mn k thut my tnh
Hm logic 0 Hm logic 1
...
Hm logic 3, 4, 5, 6, 10, 11 B cng B dn knh 22 ng 8 bit Ton hng ch
...
Hm logic 25 Hm logic 27
B mn k thut my tnh
m/nh thi: dng ngun xung nh thi bn trong hoc ngun xung m ngoi Module UART: phc v truyn, nhn tip, tc boud thay i c, khung truyn c nh Ngt: 3 vector ngt 4 c ngt: ngt ngoi, ngt m/nh thi, ngt truyn v nhn ni tip C ngt ngoi v m/inh thi xo bng phn cng, c ni tip xo bng phn mm Chng xung t iu khin vi lnh r nhnh
B mn k thut my tnh
iu khin ngt
Cho phep ngat toan cuc
7 6 5 4 3 2 1 0
LProcessin g In t
DetectPEdge
CLK
CLK PSynLevel PEdge
U8
D
IM
JumpEna
Q Set
TxF
RxF
TF
EF
SE
TE
EE
IE
CLK Reset
PEdge2Level
CLK Reset
Co ngat
IM(7:0)
RetI
AfterActInt
D
CLK S1
CLK
AfterInt
Co mot n g at d u oc g oi S1
ActInt
LActIn t
CLK Reset
B mn k thut my tnh
IM(7:0)
TPro
S0 Cal lIn t
EPro
X l xung t iu khin
In tSou rce(0)
Phn x ngt
Reset In tSou rce(1)
IntSource(1:0)
ExABLatch
CE
CLK
CLK
Q (7 :0 )
AQ(7:0)
AD(7:0)
D (7 :0 )
reg08cnn RDLatch
CLK Q
D1 ASet
DFF
Q1
DelR
U2 CLK WRLatch
CLK Q CLK Q
Q2
DFF
D2
DFF
CLK
FWMReg
CE CLK Q (7 :0 )
LDout(7:0)
Dout(7:0)
ALU(7:0)
D (7 :0 )
reg08cnn
S
Din(7:0)
RR(7:0)
MUX08X02
B mn k thut my tnh
Yu cu ti nguyn
FPGA XC2S100-5PQ208 XC2S30-5PQ208 XC2S50E-7TQ144 XC2S100E-6PQ208 XC2S300E-6FG456 Cng IO 89 / 144 89 / 136 89 / 102 89 / 146 89 / 329 62% 75% 82% 61% 27% LUT 712 / 2400 612 / 864 711 / 1536 712 / 2400 764 / 6144 29% 70% 46% 29% 12% Flip Flop 320 / 2400 316 / 864 318 / 1536 318 / 2400 329 / 6144 13% 36% 20% 13% 5% Fmax 26 MHz 26 MHz 34 MHz 31 MHz 31 MHz
B mn k thut my tnh
Cu hnh FPGA hot ng theo thit k thng qua cng JTAG Kim tra qu trnh cu hnh FPGA Ghp ni chip vi b nh ngoi Thit k cc jumper tng ng vi cc chn vo ra Xy dng sn mt s thit b vo ra c bn kim tra hot ng ca phn mm nh DIP, Led Bo mch pht trin thc hin tt c cc ghp ni phn cng c bn. Ngi s dng ch cn np chng trnh vo ROM s dng chip
B mn k thut my tnh
ng thit k phn cng - phn mm: vic thit k phn cng v phn mm din ra song song
S dng phn mm kim th hot ng ca chip Cc giai on pht trin phn mm
Vit chng trnh tng bit mt. S dng chng trnh dch pT-BDC Compiler
B mn k thut my tnh
B mn k thut my tnh
B x l m ngun m
http://dce.hut.edu.vn/
312
PicoBlaze
http://www.xilinx.com/products/intellectualproperty/picoblaze.htm 100% code VHDL.
PicoBlaze Userguide
Vi iu khin nhng 8 bit c cu trc RISC. c ti u pht trin cho cc h FPGA ca Xillinx nh Spartan 3, Virtex II v Virtex II Pro. Vi iu khin PicoBlaze c ti u v mt hiu sut v chi ph pht trin thp. M ngun m VHDL, li mm. PicoBlaze FPC c h tr bi cc cng c assembler v IDE lp trnh, gi lp, etc , v bi cc cng c ca Xilinx nh System Generator hay ISE.
http://dce.hut.edu.vn
314
16 thanh ghi d liu chc nng chung c rng 8 bit. Lu tr c 1K lnh trong chng trnh c th lp trnh c trong chip v t ng np khi cu hnh FPGA hay khi khi ng FPGA. ALU vi cc c CARRY v ZERO. Mt bng RAM 64 byte. 256 u vo v 256 u ra d dng c th m rng thm. Stack cho php gi lng 31 ln CALL/RETURN.
http://dce.hut.edu.vn
315
Predictable performance, lun lun dng 2 xung nhp h thng cho mt cu lnh, c th t ti 200 MHz hoc 100 MIPS trong Virtex II Pro FPGA. p ng ngt nhanh; worst-case 5 clock cycles. c ti u cho cu truc Spartan 3, Virtex II, v Virtex II Pro FPGA ca Xilinx ch chim 96 slices v 0.5 ti 1 block RAM. H tr m phng tp lnh assembler.
http://dce.hut.edu.vn
316
8 8 8
iu khin a ch cng
8
IN_PORT
OUT_PORT
8
ALU
A CH 10
NGT
iu khin ngt
18
D LiU HNG
Stack ca PC
http://dce.hut.edu.vn
317
1/3
Chc nng chuyn mch Front panel v chc nng hin th trn Set Top Box. Link layer trong IEEE 1394 Interface. B vi iu khin trong Compact Flash Programming engine. DECT Radio/Repeater.
http://dce.hut.edu.vn
318
2/3
iu khin lp trnh cho PCI board. iu khin truyn thng. Thc hin tin x l cho cc b x l network. B iu khin ng c. iu khin cc ngun cp lp trnh c. L mt thnh phn ca Media Access Controller Vi iu khin trong cc thit b broadcast video.
http://dce.hut.edu.vn
319
3/3
http://youtu.be/hbtsz3m1wgQ
http://youtu.be/3hMara9qc-E
http://youtu.be/88FPBOOwSIg
http://dce.hut.edu.vn
320
Hng dn s dng Altera Quatus Hng dn s dng Altera Quatus, Xillinx ISE, Actel Libero Hng dn s dng kit Spartan II LC VN
http://dce.hut.edu.vn
321
Group project for our FPGA class. We took 80 phototransistors which sent signals out to the DE2 board via 8-bit parallel-to-serial registers (165) and then sent the signals out to an 8x10 array of LEDs via 8-bit serial-toparallel shift registers (595). http://youtu.be/LCIjWp7LDl8
http://dce.hut.edu.vn
322
Create your own 8x8x8 LED Cube 3dimensional display. Guide to build. http://youtu.be/6mXM-oGggrM http://youtu.be/ea8aG2aQ5FY http://www.instructables.com/id/LedCube-8x8x8/?ALLSTEPS
http://dce.hut.edu.vn
323
B mn K thut My tnh Vin Cng ngh thng tin v Truyn thng, HBKHN
The End
Msc. Nguyn c Tin tiennd@soict.hut.edu.vn +84-91-313-7399