Professional Documents
Culture Documents
Ngôn ngữ mô tả phần cứng VHDL
Ngôn ngữ mô tả phần cứng VHDL
MC C 6.3.
6.4.
IF. ------------------------------------------------------------------------------------------------------------------------------- 73
WAIT. -------------------------------------------------------------------------------------------------------------------------- 76
6.5. CASE. --------------------------------------------------------------------------------------------------------------------------- 79
Á LB Ê K ------------------------------------------------------------------------------------------------------------------- 3
6.6. LOOP. -------------------------------------------------------------------------------------------------------------------------- 84
1.1. GI TVHDL ------------------------------------------------------------------------------------------------------------ 3 6.7. BAD CLOCKING.----------------------------------------------------------------------------------------------------------------- 91
1.2. GI Â ( V Ã ) THI ÂÁ VHDL. ------------------------------------------------------ 4 6.8. S Ã À THI Â Â Â ÚH E.----------------------------------------------------------------------- 94
1.2.1 H H D HH Q E H A ----------------------------------------------------------- 4
Á LB Ê B VARIABLE ---------------------------------------------------------------------------------------------------- 97
1.2.2 Quy trinh thi k Q E H A -------------------------------------------------------------------------------- 5
1.2.3. H A -------------------------------------------------------------------------------------------------------------- 6 7.1. CONSTANT.------------------------------------------------------------------------------------------------------------------- 97
1.2.4. Chuy H A Q ------------------------------------------------------------------------------------------ 6 7.2. SIGNAL. ------------------------------------------------------------------------------------------------------------------------ 97
7.3. VARIABLE --------------------------------------------------------------------------------------------------------------------- 99
Á LB Á DÁ A--------------------------------------------------------------------------------------------------------------- 9
7.4. SU .---------------------------------------------------------------------------------------------------------------- 107
2.1. C Â VHDL Â Á . ----------------------------------------------------------------------------------------------------------- 9
Á LB HÊ B ------------------------------------------------------------------------------------------------------- 119
2.2. K Á DLIBRARY.--------------------------------------------------------------------------------------------------------------------- 9
2.3. ENTITY (TH Â ). -------------------------------------------------------------------------------------------------------------------11 8.1. GI .-------------------------------------------------------------------------------------------------------------------- 119
2.4. ARCHITECTURE ( CS Â). ------------------------------------------------------------------------------------------------------12 8.2. THI D 1 (THI D BH MAY MOORE).----------------------------------------------------------- 121
2.5. C Â CÃ . -------------------------------------------------------------------------------------------------------------17 8.3. THI 2. -------------------------------------------------------------------------------------------------------------- 129
8.4. KI À D : TW EA Ê ONEHOT. ------------------------------------------------------------------------------- 143
Á LB GÊ K ---------------------------------------------------------------------------------------------------------------21
Á LB Ê ÁÁ Á ------------------------------------------------------------------------------------------ 145
3.1. C Â Ã T . -------------------------------------------------------------------------------------------------21
3.2. C Â Ã R Ã A. ---------------------------------------------------------------------------------24 9.1. BARREL SHIFTER. ------------------------------------------------------------------------------------------------------------- 145
3.3. C Â ÂD (SUBTYPES).-----------------------------------------------------------------------------------------------------------25 9.2. B ÊDÊ ÃS ÂĐÃS . --------------------------------------------------------------------------------------- 148
3.4. M (ARRAYS). ---------------------------------------------------------------------------------------------------------------26 9.3. B Â CARRY R EE ÁÂ CARRY LOOK AHEAD.---------------------------------------------------------------- 152
3.5. M ÂÚ ( PORT ARRAY). --------------------------------------------------------------------------------------------------29 9.4. B Â ÃS Â S . ---------------------------------------------------------------------------------------------------- 156
3.6. KI Á (RECORDS). ------------------------------------------------------------------------------------------------------31 9.5. B T FÁ G. --------------------------------------------------------------------------------------------- 161
3.7. KI Ã ÂĐÃS ÃS ( SIGNED AND UNSIGNED).-----------------------------------------------------------31 9.6. B Ã U I E.--------------------------------------------------------------------------------------------------- 166
3.8. CHUY ÚÃ . -----------------------------------------------------------------------------------------------------------33 9.7. B Â F ÊD ÊD U E.----------------------------------------------------------------------------------- 169
3.9. TĐ .-------------------------------------------------------------------------------------------------------------------------------35 9.8. T Â Ã7 THANH. ----------------------------------------------------------------------------------------------- 170
3.10. C Â CÃ .----------------------------------------------------------------------------------------------------------------------------35 9.9. B E C .------------------------------------------------------------------------------------------------------------ 175
9.10. THI Á . ------------------------------------------------------------------------------------------------------------- 178
Á LB ÊC B THU Á B ---------------------------------------------------------------------------------------------43
Á LB Ê B B B B MÁ ------------------------------------------------------------- 185
4.1. TD . ------------------------------------------------------------------------------------------------------------------------43
4.1.1. H H -----------------------------------------------------------------------------------------------------------------43 10.1 T QUAN Â ÂPH M H TRPCQ PLD ---------------------------------------------------------------- 185
4.1.2. H ------------------------------------------------------------------------------------------------------------43 10.1.1. PALASM 2 (PAL ASSEMBLER) --------------------------------------------------------------------------------------- 185
H H T -----------------------------------------------------------------------------------------------------------44 10.1.2. AMAZE -------------------------------------------------------------------------------------------------------------------- 185
4 H H ------------------------------------------------------------------------------------------------------------44 10.1.3. PLAN ( Programmable Logic Analysis) --------------------------------------------------------------------------- 185
O H -----------------------------------------------------------------------------------------------------------------44 10.1.4. HELD (Harris Enhanced Language for Programmable Logic)---------------------------------------------- 185
4.2. THU Â C .---------------------------------------------------------------------------------------------------------------------44 10.1.5. PLPL (Programmable Logic Programming Language)------------------------------------------------------- 185
4.2.1. ThuU H ----------------------------------------------------------------------------------------------------------44 10.1.6. APEEL (Assembler for Programmable Electrically Erasable Logic)--------------------------------------- 185
4.2.2. ThuU H H ---------------------------------------------------------------------------------------------------------45 10.1.7. IPLDS II (Intel Programmable Logic Devolopment System II)---------------------------------------------- 186
4.3. THU Â C R Â NGH Á R Ã . ---------------------------------------------------------------------------46 10.1.8. CUPL ( Universal Compiler for Programmable Logic ) ------------------------------------------------------- 186
4.4. CHÙ D . ----------------------------------------------------------------------------------------------------------------------46 10.1.9. ABEL (Advanced Boolean Expression Language)-------------------------------------------------------------- 186
4.5. GENERIC. ----------------------------------------------------------------------------------------------------------------------47 XX : H B QVI MQ B -------------------------------------------------------------------------------------- 187
4.6. VCÃ . ----------------------------------------------------------------------------------------------------------------------------------48 10.2. S D PH M ISE WEDPACK 9.2 ------------------------------------------------------------------------------- 187
10.2. H H HD S I RH ------------------------------------------------------------ 187
Á LB Ê A CB CNG -----------------------------------------------------------------------------------------------------------53
10.2.2. TQ U Ì -------------------------------------------------------------------------------------------------- 189
5.1. SD ÊD .-------------------------------------------------------------------------------------------------------53 10.2.3. TQ U HQI Q ------------------------------------------------------------------------ 195
5.1.1. MQ I Q -----------------------------------------------------------------------------------------------53 10.2.4. Thi H H H ------------------------------------------------------------------------------------- 199
O H H RH -------------------------------------------------------------------------------------------53 10.3. GI THI PH M MODELSIM ISE WEB PACK------------------------------------------------------------------- 204
5.2. S Ã ÂÂ D .---------------------------------------------------------------------------------------------------------54
5.3. M TWHEN. --------------------------------------------------------------------------------------------------------------------55
5.4. GENERATE.--------------------------------------------------------------------------------------------------------------------64
5.5. BLOCK. -------------------------------------------------------------------------------------------------------------------------66
5.5.1. Simple BLOCK ----------------------------------------------------------------------------------------------------------------66
5.1.2. Guarded BLOCK -------------------------------------------------------------------------------------------------------------68
Á LB ÊA B M---------------------------------------------------------------------------------------------------------------71
ThikI kGd D iHA 2 Trang 1 / 208 Trang 2 / 208 ThikI kGd D iHC 2
DY HC 0 09 0
n: DY HC 0 09 0
n:
nhau tuêf
ZgUUxY YZ U
Zfõ
abZ U Y_ [d
Sã [ vU
vfZ ã Um
bV Y YS
k
3Q àWP GI 9C89 D
UZaU mUZ f
Z Yãpf
Z[f
1.1. Gi Rthi v E84
Th T
cSPâVVOUl âU ùVO/
K=9A n Yx Y _xf úbZ U YU ZaU m
U_õ UZft
UZZ bfUã d ùfUSa n_ faõ [
K=9AU ZabZqb_xf
úZaõfã YUSbZ U Yf _ UZ f Z Ye U
Zaã _ U
Yx Y _xf úbZ U Yã UbZm ffd
[ V YU ZaUZ í Yfd
uZK=H> 8(Very High
c Y K=9AU v Zú Y_xf úZaõ
fã YUSZ fZ Yf
ds Z[g_ U Z YU
Ze
Speed Itergrated Circuit) c ST cgUbZwYB B Uf [s
gUSh[UbZm ffd
[ K=9A
d Y_ fU zbZm
bUZfUZfZ Y ZùfU
Za_ [_ UCZ f
ZfSUvf
Z _xbZ Y_ f
nUvã U_ f Yx Y _xbZ YbZ U Yf [
sgUZg hnf Z Y Zù fUZabZq bfZ
bú f
Z[f TS aY_UúUmUZ U
a ã U_xfúUZ[f
[f
nghi _ U mUZ f Z Ye ZSZZí U èY Z U ZabZqbV VnYã SU mUZ f Z Yãv
hna YV Yf d
aYf Z Uf CYx Y K=9Aã UTSU xYf k>fWd_W f
[Ue>7B hn
Th VUT
cSPâVVO IW õS
í â/
Texas Instruments b fãg YZ[ s UgbZmffd
[ hn af
ZmY _ /.)EZ[ s Tú ãg
f[
s ã UU xYT hn af ZmY.- /.+ HSgãvK=9Aã Uã jgù fã f U Z U>::: KuK=9A n_ ff[
sgchu ã UU Zù
b Z s _ f_xZuZK=9AU vf
ZUZõkf
ds
jW_ jq ffZnZ_ ff [sgU Zg UZgY C _ /. ãpã Sd Sf [
sgUZg h K=9A f [sg m [T _xfúãm
b Yã Uf [
sgU
Zg K=9A 8m U fcgú_xf
úZ fZ YUvf
Zã U
chu > :::-1076-1987). fdS
aã[Y[SU mU ZnfZ[f e V YU xYU fZ[f Zm U ZSg Z YU Yfgo
fZWaf
[sgU
Zg K=9A 8èY Z _ f Zv_ fZ[f U vfZfd
Saã[_xf ú_ UUSa
K=9Aã UbZm ff
d[ ã Y[
ú[cgkfUm
U Zv Z f d
aYh[UbZm
ffd[ fZS
kã[hn b c SUm
UZ fZ YUaf d
aY_ fZ fZ Y U
mUZ Ua ãvã UfZ[f ãU b
fn[[gUZaUmUZ fZ Ye K=9A n_ f Yx Y ãU b ZxYY h[Tù f ê_ f
bZ íYbZmbfZ[f _ fT _xf úZSkUxY YZ bZ U Y n a CY [fZ[f Uv Th bT
cSPâVVOPú PíS
íU KTV cS
PâVVO LVOT
àKbKPíS
í/
th f Va SU Z U xY YZ bZ íYbZmbf Z[f fd
aY Z[UZ e V Y_ f Yx K=9Aã UbZm ff
d[ Z _ f Yx Y bf duZTUU S
a huhk vUvf
Z ã Ue
ng Vgk Zù
fKn Z[ãW _eaemZh[U mU Yx Y _xbZ YbZ U Y Zm Uf
SfZù
k d Yã f Z[f _ fZ fZ Y h[e fZS
_ Y[SUS_ f Zv_ Z[g Y [7s
K=9AU v_ fe gã[_Zí Z n 0 fdaY Yx Y K=9AU v Z[gf
tZ YZ f d h[Ucgú f
Z YZ[_ hnU
Z[Se
thi f Kn vU
èYU ZabZq
bV Yõ [U
mUbZ ãpU ve
Th VP T
chVPK
lVOK
ùVO/
K=9Aã UbZm ff
d[ V [e Tú
af d USUZtZbZ B hnZ[ S k n_ ff
[sg 1.2. Gi R QR L
nWPWPQ _d WPM WP QR T VòL
Q K WP
chu US>::: K=9Aã Ue Z fd US Z[g Zne
ú jgù
ffZ[fT U
èY Z Z[g VHDL.
ZnUgYU
ùbUxYU fZ[f _xbZ YZ fZ Y 1.2.1 WPM WPL L
nWPWP
Q QR T VòL
QK WPE84
Hi Sk( YV YU ZtZhnfdUf [bUSK=9A nU mU YV Yf daYU m
UfZ[fT
Th PI T
cSPâVVO KPú VPì K
lVOVOP cVPì XP VOXPbX Pí
aY[UU
vf Z bfd
uZã U EdaYdS
__S TWAaY[U9Whices PLD) (bao g _ UmUfZ[f
kí:
b aY[UbZ Ufõ
bU vf
Z bf d
uZã UhnU m
U;E<6 - Field Programmable Gate
K=9AU ZabZqbf
Z[f T Y Z[gbZ í YbZm
bhtV bZ íYbZm
bfZ[f f fd s 6d d
Ske hn YV YfdaY6H>8e6bb[ U
Sf[
a HbWU
[X[U>fWYd
SfW
V8[ dUg[f
e
xu YZS kf V [s V Shn
aUmUf
Z h[ e U vK=9AUèYZ fdU Za Z[g aõ[
UxYU jo kV Y_õUZ Z e V YUxY YZ ã YT ZSk ZxYã YT e V Y Z[UZzYfS bf
duZUZaUmUfZ[fT f
ZuU
ZzYf SUZ U h[f_pVHDL m f e Sg
ma tr bfd
uZã UZSke V Y_úY Yg Z[ s ãvf SUvfZmbV YUZaUmUfZ[fT ZmU ZS
g Z 6f W
dSM[[j6f _W ZaUUv
th ã U Zfõ
a_ fUaUZ[b6H>8 =[ S kU v Z[gfZ íY_õ[bZ Uf
õb ZU m
Uh[
Th IT
chVP ùKTX K
lVOVOP/ ã[g Z[ ã Uf Z[f f ZWaV Sfd
s Yx Y K=9A
K=9AZan f an ãU bh[UxY YZ U
Zf õ
abZ U Y B f_xf
úZ f
Z YV Y
VHDL thi f _ UU YU
vfZ ã UUZgk f
ZnZUm
UTú f YZb_õ U
Z Zm
U
ThikI kGd D iHC 2 Page 3 / 208 Trang 4 / 208 ThikI kGd D iHC 2
DY HC 0 09 0
n: DY HC 0 09 0
n:
8i
VP 2. A õVO b ì ùK
ùVO ãa
IdaYãvS T nU
mUT
[fhn
aUZaT U Ycin nT[
fZ gd
SenT[
ff Ycout nT[
f
nh d
S=aõ
fã YUS_õ UZã UUZdSV [VõYTúYUZo 0
8i
VP 1. Bj
Ué ai
VPPíS
íD84
3I
BId
NnM : <[
S[ã
aõU
Z tõ
a
2 L1: 7[
s dich U
Z íYf
duZFg
mfd
uZ n
ks U
Zgk _pK=9Ah
na_ f W
f[e
f
t YU Y
2 L : Ant [ gZ
vSFg
mfd
uZ n
kã Uf
Z UZ
[ f
ds netlist f YU Yh fUã
h
nbZ
õ_h [
Id
aYY [
S[ã
aõ n kf
Z[f Uvth ã U_xb
Z Yã [_ f
dSbZ
mfZ
[ Z Y [
kd
xú Sf
daYcgmf
duZU
Zfõa
8i
VP 3. BâVOK
PdVT
yKI ùK
ùVO ãa
3I
BId
NnM : <[
S[ã
aõY
Zqb [ãvYY
v[b
Z __
Y[S[ãaõ n
ke f
õad
Se ebjbhf U
ZaU
Z[bEA9;E<6 ZaUf
õad
S_ f õ Bit s hncout ã Uf
tZ Z e
Sg0 s = a b cin _dL
out = a.b + a.cin + b.cin
cho ASIC.
Trang 5 / 208 ThikI kGd D iHd VHDL Trang 6 / 208 ThikI kGd D iHC 2
DY HC 0 09 0
n: DY HC 0 09 0
n:
T U
xYf
Z Uf
tZehnU
out ta vi fãaõ _pK=9A Z V [ão
k0 Id
aYf
d YZb n
k
N gm Uãt
UZU
xY YZ nf
Z[fT oY[
UUvf
Zs bf
duZã U EA9 ;E<6 f
Zu(
k fcgúcho cout thoú_p n ZuZ T hnZuZ U (cout = a.b + a.cin + b.cin).
N gm Uãt
UZU
xY YZ n6H>
8f ZuUZzYf SUvf
Z e V YZuZ V =uZd s
d YUxY YZ 8BDHh[U
mUf YfdSe[e
fadhnUm
U_ f õbZ
BùfU _ fU
m[_õU
Zn aã Uf
Sad
St _p fZu Z Yf
ZSaf
m UUS ve gx gx
ã U [_ fd
S _ UfZ[f ZfSãpUZdS ZuZ Iù f Z[s UZzYf
SUèYUv
th [_fdS v f Yhf Z YeSgãvnh YfZSkã[ndù
ffS[Zõ
[
=uZV [ão
k n_xbZ Y fcgúUSãaõ U
Z íYf
duZãph[f f
dsU
Za_õ
UZT
c Yãkã ZuZ )
8i
VP 4. ePíS
í ùK
ùVO
8i
VP 5. 3bK hL ì UàK
PKjP K
j VO UeVP Pi
VP (
Trang 7 / 208 ThikI kGd D iHd VHDL Trang 8 / 208 ThikI kGd D iHC 2
DY HC2: C :97R 3N DY HC2: C :97R 3N
ZS[T maA>7G6GN0UZ S_ fV
SZe
mUZUSf
ùfU
úUm
UfZ h
[ ã Ue V Y
trong thi f KtV0[W
WWe f
Viad 8i
VP2. 1. 3bKPcVPXPãVK âVKIUù WàVUeD84
ENI>
IN0Bxf
úUm
UUZo h
nad
S>Db
[s) c S_õ
UZ
ARCHITECTURE: Ch S_pK=9A _xf
ú_õ
UZe ZS
fã Y Z f
Z n
a5
M fA>
7G6GN n_ ffbU m
UãS 8aVWfZ Yã Ue V Y K[UU v_ ff
Zh [
Z hkUZab
ZqbUZzYã Uf m
[e V Yhnã UUZ[
Se UZaU
mU YV Y Z mUBp
fZ Y ã Uh [ffZ
WaU m
Uã Z VõY US ;JC8I>DCH EGD8:9JG:H ZaU
8DBEDC:CIH ã UfZ
SkfZT sfd
aYE68 6<:Hh ne
Sgãvã UVUZfZ
nZfZ
vi ãt
UZ
:Q RKc R
K b
Z
S [T
maLibrary U
ZzYfSU ZS
[VwY_pe
SgV
wYf
Z hù
fUZ Sf
sfZh
[
8i
VP2. 2. 3bKXPãVK âVKIUù Ia
V
wYf[bfZW
aU Z S_ f_ Zã U e V Y
0
8m
U ZS
[Tm
aZe
Sg0
LIBRARY library_name;
LIBRARY ieee; -- D a OT T e . OT T
USE library_name.package_name.package_parts;
USE ieee.std_logic_1164.all;-- kt c M Oha XôZT
IZ
xYf
Z YU
v)Yv
[f )f
Zh[ Z
mUZ
Sgf
Z Yã Ue V Yf
daYf
Z[f 0
ieee.std_logic_1164 (from the ieee library), LIBRARY std; -- hoìO WTMU Nf[ P a ' SãOT
standard (from the std library), and
USE std.standard.all; -- (-- óN éa OTq TlOT
work (work library).
LIBRARY work;
USE work.all;
8mUf
Z h[ std hnwork f
Z Y n_ Uã Z huf
Z ZxYU ZS
[Tm
aUZzYU
ZUv
f
Z h[ ieee nU bZú [ã Uh[fd
ydS
ThikI kGd D iHC 2 Page 9 / 208 Trang 10 / 208 ThikI kGd D iHC 2
DY HC2: C :97R 3N DY HC2: C :97R 3N
M Uãt U
ZUS)Yv[f Z h[ ã U f
ds nZ e S
g0Yv[std_logic_1164 c Sf
Z Is USfZ Uf
Z S
_WaXf
ZWWf
[f
kUvf
Z ù
k_ ff
s Tù
f ê YS
[fdU
mUf ZvS
vi ieee cho bi f_ fZ aY[UãS_ U
1std n_ ffZh [ fn
[Y gks [gV [g , c SK=9A
i/o text U
Za_x [f
d Yf Z[f K=9Ah nf
Zh [ ia d ã Ue d Y Z [UZzYfS
KtV0Mq
fU YC6C9 ZuZ(* ZS
[Tm
a:CI>
IN Z e
Sg0
gf Z[f file * h
ZVU m
UX [Wã Uf
õaT[U Z íYfd
uZVU Zh nU Z íYf d
uZ_x
ph Y ENTITY nand_gate IS
Th Ud
SfZh
[ ieee ch S Z
[gY
v[Z e
Sg0 PORT (a, b : IN BIT;
x : OUT BIT);
std_logic_1164: ã Zd
yHI9Q
ADGIC (8 m U h
nHI9Q
JAD<>
8 9 m U nU
mU
h a Y[Uã S_ U END nand_gate;
std_logic_arith: ã ZdyUm
U [gV [gH><C:9 hnJCH><C:9 U
mUY
[ú[f
Zgf
[sc gSh ne ae mZfam f CvUèYUZS Z[gZ
n_U Z
gk ã[V [g_nU Za
bZ qb_ f [gã UU Zgk ã[fZnZU
mU [gV [g ZmU0
conv_integer(p),conv_unsigned(p, b), conv_signed(p, b), conv_std_logic_vector(p, b)
std_logic_signed: ch S U
mU Z
n_ U Z
a b Z
qb n _ h
[U h[ V [g
HI9Q AD<> 8QK:8IDGã ã UfZ UZ
[ U Z Z[V [gn [gH>
<C:9 8i
VP2. 3. 3bKK
Pí ù h
VP 8i
VP2. 4. CõVO=1=4
std_logic_signed: ch S U
mU Z
n_ U Z
a b Z
q b n_ h
[U h[ V [g
HI9Q AD<> 8QK:8IDGã ã UfZ UZ
[ U Z Z[V [gn [gJCH>
<C:9 2.4. ARCHITECTURE ( c oL
6G8=>I:8IJG: n_ f_xf
ú_õ
UZV Yã cgkf_õ
UZe n
_h[U Z f
Z n
aUv
2.3. Entity (th L Q ch U YYu
M f:CI>
IN n_ fVSZe
mUZ_xf
úUm
UUZ
ohn
adSU
mUEDGI US_õ
UZã
[ 8z
bZ
mbZe Sg0 8zbZm
bZe
Sg0
Trang 11 / 208 ThikI kGd D iHd VHDL Trang 12 / 208 ThikI kGd D iHC 2
DY HC2: C :97R 3N DY HC2: C :97R 3N
8 R
oIt
MRPDR
HFNL HMHHNnRdxMG BxZ uZUù
gfdz
UUS_ fb Z f Z aUZ f
Z YUvf
ZT SaY_ Z[gU
ùbUù
gfdzU
b fãgf _ fU Y aY
[UãíY [
úã j okV Y_xf
úUZ
a_ fZ f
Z YZanfZ[
BxZuZZaõfã Y_xfúUmUZaõfã YUSZ fZ YZ fZ Yãm b Yh[U m
Uft
Th UUZ
ùfUSh[U_xf úf
ZWa_xZuZUù
gfd
zUn_xf
úUmUbZ fUaTsfdaYZ
hi ghnaZfZ nahnã SdS fcgúYud
SãgdS V [VõYU m
UUùgfd
zU Yx Y
th Yhne f [USU mUbZ fUaã v
l bfd
uZTUUS
a8ùgfd
zUãvUvfZ nEGD8:HH L6>
I> ; 86H: ;DG-ADDE
Bxf
úUzbZ
mb0
EjM 1:
architecture identifier of entity_name is
ARCHITECTURE behavior OF nand IS Architecture_declarative_part
-- ;TMU Nf[ OfO lZ TUôa NkZ [ZS bg OfO Nl PMZT begin
BEGIN all_concurrent_statements
c <= NOT(a AND b); end
[architecture][architecture_simple_name];
END behavior;
Z
S[T
maU
mUf
ZnZb
Z 0
EjM 2:
Component
ARCHITECTURE behavioral of decode2x4 is CkZKO[ [Z [ I PMZT _fOT .
BEGIN End component;
Process (A,B,ENABLE)
CZ h[htV _xf
ú_xZ uZU
ù gfd
zU_ fX[
b-flop RS g _ Z
S[U YC6C9 U
vfZ
Variable ABAR,BBAR: bit; _xfúU YC6C9ã Uã Z YZéSfíYf Z h tV h[U YCDI e S
gãv_xfúe
í
Begin ã _vU [Um
UbZ f C6C9f
õ afZ
nZfd[
YíGH
ABAR := not A;
BBAR := not B;
:R 6>23<6 0 v w T Z
Trang 13 / 208 ThikI kGd D iHd VHDL Trang 14 / 208 ThikI kGd D iHC 2
DY HC2: C :97R 3N DY HC2: C :97R 3N
KtV 1: KtV 2:
Component Xor
End component;
8i
VP2. 5 A KI Oer RS Component And
Trang 15 / 208 ThikI kGd D iHd VHDL Trang 16 / 208 ThikI kGd D iHC 2
DY HC2: C :97R 3N DY HC2: C :97R 3N
Begin 1 ---------------------------------------
2 LIBRARY ieee;
X1 : Xor2 port map(A,B,S1);
3 USE ieee.std_logic_1164.all;
Process (A,B,Cin) 4 ---------------------------------------
Variable T1,T2,T3 : bit; 5 ENTITY dff IS
6 PORT ( d, clk, rst: IN STD_LOGIC;
Begin
7 q: OUT STD_LOGIC);
T1 := A and B; 8 END dff;
* K fcgú_xbZ Y0
8i
VP2. 6. A KI466S
PlVO VO ù
8i
VP2. 7. Kí âUlXPòVOKI hL
=uZ(6. cho thù
keíã US_ fX[b-flop loõ
[9 9;; jgYã U tUZfZW
ae
c Sft Z[gã YZ U hnh[_ ff t Z[gãghn ad
WeW
f ZxYã YT d ef Z[ =uZ(7 _xbZ Y fcgúf htV ( ã f ZU vfZ ã UY[
ú[f
ZtU
ZV VnY8 fãg
def3 ãgdSgx _ Uf Zù
bTùf U CY Uõ [ãgd as U
abkãghn
a c23V f[
sU ZaT[ff
s USf t Z[g Z ãpã Uã[Z YZé Sfd
aY:CI> IN CvU èYUZa
tõ[f
Z[ã[_ Z[U U Zgk f & s bi fU Z ã Z Y USf t Z[g g d YU mU_è[f s Yh [d e
fVhnU Z Y
hnaf daY ãok nbZt
S[bgfU w cZ Yd S Yan[fíY Yh[bZt Sagfbgf8 ff
Z
8v Z[gU
mUZã f
Z UZ[ 9;;USZuZ(+ _ fY[
ú[bZm
be ã Uf
duZTn
kV [ hai ch SY[
mfdUS_ [f t Z[g h fdtfíY Yh[ í[U afdf d f[Id aYfd Y
ão
kH V Y_ fEGD8:HHUZaãS _pe
Sgão
k0 h bZ[ f õ[U
af d &ehnf t Z[g Z Y[mfd &&& 8 ff Z )U ZafZùke _x
Trang 17 / 208 ThikI kGd D iHd VHDL Trang 18 / 208 ThikI kGd D iHC 2
DY HC2: C :97R 3N DY HC2: C :97R 3N
ph YUSf an T cgmf
duZ 8m
Uft Z[ghn
ad e
fV U U
vfZ ã UU
Z _ fU
mUZ K fcgú_xbZ Yf _õ
UZ9;; fZ bh[C6C9f
ds ZuZ(.0
t VahnT _xbZ Ye jmUã ZftZ[g YydSfíY Y
Mõ U
Zã[ ZuZ( ne fZbUS(ZuZ(*hn(+Id aY [Y[
ú[e
Sgão
kU ZzY
fSãpY[[f
Z[g_ fU m
UZUvUZ ã Z_ ff
t Z[g ZxYU f
Z[ffW
_b UZ ã _[Z
h S_ ff
t hi ge ã U ZS
[Tm
aZf Z na
8i
VP2. 9. Kí âUlXPòVOKI hL
8i
VP2. 8. DFF kíP X K
õVO=1=4
Bpf
Z[f 0
---------------------------------------
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;
---------------------------------------
Trang 19 / 208 ThikI kGd D iHd VHDL Trang 20 / 208 ThikI kGd D iHC 2
DY HC3: KIm: 20
n: DY HC3: KIm: 20
n:
k23 & 1
3Q àWP KI D4… 9 D
l23 & &&& 1
h[f_pK=9A_ fUmUZZ[gcgúfZfU fZ[fã T[fd YUm
U [gV [g n
a
ã UU ZabZq
bn_f Z naã ã Zdyhne V YUZzYIdaYU ZíY nkf
ùfU
úUm
U BC4H >79
3 _dBC4H >79
3HE53C>A
ki gV [gUíTú e ã U_xfú
H aY[
U.Y[
mfde
Sgão
kã UY[[f
[gf
daYU
Zg >
::: ,*0
3.1. 3cLTR MÀU
R RW WQWPQ
M ZxYjm
Uã Z TfTgU L ZxYjm
Uã Z kg
VHDL bao g _ _ f Zv_ U
mU [gV [gf [ ã Z YZé
S ã Uã Zdyf
ZxYcgS
UmUU
Zg > ::: &,hn> ::: ,* 8 fZ Zí h[Uã Z YZé
S [gd [g Z f
Z & m Uf
Zùb TfTgU A m Uf
Zùb kg
UvfZfu
_f Zùkfd
aYU mUYv[fZ h[ e
Sg0
m UU
Sa TfTgU = m UU
Sa kg
3 IR
BMEB
PEDBRHg I
vMR
E: Z Y
ZéSU
mU [gV [g7>
I 7DDA:6C O tr ZmYU
Sa - ZxYcgS f
o_
>
CI:<:GhnG:6A
EjM SIGNAL x: STD_LOGIC;
7j L GT
WOKG +)KI P VM
MM0 ZY
ZéS [gV [gHI9Q
AD<>
8hn
-- _at DB C = H GBa FqM D Mx Lp OV BarG " M G BCmN
STD_ULOGIC. thuq DClN ,: /1
SIGNAL y: STD_LOGIC_VECTOR (3 DOWNTO 0) := "0001";
7j LGT
WOKGI h c I P VM M
M0 ZY Z é
SH> <C:9h nJCH> <C:9 U Y
-- _at DB C = H GBa FqM O MH -bit, vrC =CM =TG M C WG
f
Zs_ Z
[gZ n_UZgk ã[V [gh tV0conv_integer(p), conv_unsigned(p, b), ES
KW
VG OVMLX cKWVG L
GTWOKGMKW X -- /C M n DBsC _hN v ES aN
-- r G MH G M () _at L uG _l MBCkM EiI C M n DBsC
7j LG
TWOKGOVMLc LG
TWOKGV O
VMLKI P VMMM
: Ch SU
mUZn_UZa
_hN
bZ
qbZSfã Yh [V [gHI9QAD<>
8QK:8IDGã Uf
Z UZ [ Z [_n [g
d [gnH><C:9Z UJCH><C:9 H gh fU m
U_ Ustd_logic nhxZ YU Z ã[h[cgmf
duZ_xbZ YIgk Z[s &
hn O nUvf
Z fZb ZxYZõ U Z [h[Um
UY[mf
du NTv U ZzYã U
T K
âKb
KS L T ì
V V
PVO
PI eV
g g
V KUl âV
P I: giú[cgkffdaYe gf [
s USU mUY[mfduO LR
WPvf
daYUmU zfãSU
Z[g 7úY)
Th fhk g(f t Z[gstd_logic bùf êã U [ã U Y_ f aVW f ZuUm
U_ U
29
C_d29
CHE53C>A V LUPR
Lwxxx
aY[Uã[ bã Uf ã YY[ ú[cgkff ZWa7úY)
EjM SIGNAL x: BIT;
BâVO(1. H PôVOT
WOKOâ K
-- d O WTMU Nf[ ZT lZ TUôa _ WUóa 3:C
SIGNAL y: BIT_VECTOR (3 DOWNTO 0);
-- e Xg bO ) NU b U NU NkZ fU ZT O Xg =B3
SIGNAL w: BIT_VECTOR (0 TO 7);
-- c Xg bjO , NU TlM NkZ T U ZT O SúU Xg =B3
D Shn
aU m
Uft Z[g f
ds U
mUbZq
bYm e
Sgão
knZb ã Ym _ fY[
mfdã _ f
f
tZ[gf am f 23ã Ue V Y0
j23 1
ThikI kGd D iHC 2 Page 21 / 208 Trang 22 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC3: KIm: 20
n:
STD_ULOGIC( STD_ULOGIC_VECTOR): h f
Z Y aY[
U/_ Uf daYU hu SIGNAL a: BIT;
>::: ,*0 J M & O L A = IZfhk Z HI9QAD<> 8 SIGNAL b: BIT_VECTOR(7 DOWNTO 0);
_xf ú f
ds n_ ffbU a USHI9QJAD<>8= f Z YfZ(n kf Zs_ Y[mfd SIGNAL c: STD_LOGIC;
aY[
UJ SIGNAL d: STD_LOGIC_VECTOR(7 DOWNTO 0);
7DDA:6C0ãzYe S[ SIGNAL e: INTEGER RANGE 0 TO 255;
...
INTEGER: s Ygk
s )(T[
fe f -( * *.),* ã ( * *.),*)
a <= b(5); -- O Tj OrZS WUóa bp T ZS 3:C
NATURAL: ms Ygk
s ZxYo
_ f &ã ( * *.),* b(0) <= a; -- O Tj OrZS WUóa bp T ZS 3:C
REAL: s f
Z U _f
daY ZaúY f - &:).ã &:). c <= d(5); -- O Tj OrZS WUóa bp T ZS STD_LOGIC)
d(0) <= c; -- O Tj OrZS WUóa bp T ZS BC K< 8:4
Physic literals: s V Yã[h[U
mUãõ
[ Yhf Zf
Z[Y[
S ã[ m
b =g
a <= c; -- WTpZS O Tj WTpZS Tó W T WUóa 3:C d
t
UZf daY_xbZ Y.
STD_LOGIC)
8ZS
dSU
fWd[
fWd
Se0 f 6H8>
>ãí ho U_ fU
Zg[U
mU f Zf
Z b <= d; -- WTpZS O Tj WTpZS Tó W T WUóa 3:CKE64C A d
std_logic_arith c S f
Z h[ ieee 8ZzY U v ZuZ f
Z U Y[ Y Z e <= b; -- WTpZS O Tj WTpZS Tó W T WUóa :>C686A
x BIT_VECTOR)
HI9QAD<> 8QK:8IDG Z Y YS [fdUm
Ufam f e ZU_nf[
sgT[g n [g
e <= d; -- WTpZS O Tj WTpZS Tó W T WUóa :>C686A d
d [g> CI:<:G
-- STD_LOGIC_VECTOR)
3cL_jM
3.2. 3cLTR MÀU
R WP RMpWP WQWPQ
x0 <= '0'; -- bit, std_logic, or std_ulogic value '0' VHDL cèYU
ZabZqb Y [V Yf ã Z YZé
SUm
U [gV [g=S [aõ[ [gV li g
x1 <= "00011111"; -- bit_vector, std_logic_vector, Y [V Yã Z YZé
Sã UUZdSV [ãokTSaY_integer hnenumerated.
-- std_ulogic_vector, signed, or unsigned
x2 <= "0001_1111"; -- ZS SãOT P U OT[ Tj Pò TmZT PaZS Ki R
WNPN WP RMpWP WQWPQ
TZ
TYPE integer IS RANGE -2147483647 TO +2147483647;
x3 <= "101111" -- bióa PUòZ ZT Thn c M _ Tê ThZ )+
-- Th O M WUóa Zge i O ZT ZST M O N U WUóa :>C686A
x4 <= B"101111" -- ZT kZ
TYPE natural IS RANGE 0 TO +2147483647;
x5 <= O"57" -- bióa PUòZ Nf ThZ O M _ Tê ThZ )+
-- Th O M WUóa Zge O i ZT ZST M O N U WUóa >2CDA2<
x6 <= X"2F" -- bi a PUòZ _ Tê X O ThZ O M _ Tê
ThZ )+ TYPE my_integer IS RANGE -32 TO 32;
n <= 1200; -- s ZSaekZ -- M ê O[Z OfO _ UZ S g ZS U PrZS ZT ZST M
m <= 1_200; -- s ZSaekZ OT[ Tj SãOT P U TYPE student_grade IS RANGE 0 TO 100;
IF ready THEN... -- Logic, th O TUôZ Z a MPe0CAD6 -- M ê O[Z OfO _ ZSaekZ T[ìO _ ZTUkZ ZS U PrZS ZT
ngh M
y <= 1.2E-5; -- real, not synthesizable
K 4fO WUóa ZS U PrZS UZT ZST M
q <= d after 10 ns; -- physical, not synthesizable
TYPE bit IS ('0', '1');
-- O ZT ZST M O N U WUóa 3:C
TYPE my_logic IS ('0', '1', 'Z');
EjM 8mUf
am f ã UbZq
bhn ZxYã UbZq
b _ Y[SU
mU [gV [g Zm
U
-- M ê O[Z O M _ PKX[SUO g ZS U PrZS ZT ZST M
nhau:
Trang 23 / 208 ThikI kGd D iHd VHDL Trang 24 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC3: KIm: 20
n:
TYPE bit_vector IS ARRAY (NATURAL RANGE <>) OF BIT; 6dM X 4fO Tj [fZ T Xô bg WTpZS T Xô SU M OfO WUóa P
liôa bg OfO WUóa P XUôa O[Z
-- i O ZT ZST M O N U 3:CKE64C A
SUBTYPE my_logic IS STD_LOGIC RANGE '0' TO '1';
-- A2>86 /1 O _ P ZS ó OT T íZS OfO O WTpZS SU U
hãZ SIGNAL a: BIT;
-- NATURAL RANGE <>, on the other hand, indicates that the SIGNAL b: STD_LOGIC;
only
SIGNAL c: my_logic;
-- restriction is that the range must fall within the NATURAL
...
-- range.
b <= a; --WTpZS T Xô WTpZS Tó W T WUóa 3:C b U
TYPE state IS (idle, forward, backward, stop); STD_LOGIC)
-- M WUóa P XUôa UóZ TmZT O M OfO fe ãZS TfU T a b <= c; --h Xô OrZS WUóa O _ BC K< 8:4
hãZ
TYPE color IS (red, green, blue, white); 3.4. MôWP 1 b
-- Kióa P XUôa XUô Wk WTfO MúY n_ ffbZbU mUã[f YUvU Y [g 8ZzYU
vfZ n_ fU
Z[g 9 (
chi g (9 h U_ fU
Z[gUS_ fU
Z[g 9 j 9 hnU
èYUvfZU vZ YtUZ
Vi U_pZvSU
mU [g [fsã Uf
Z UZ[ _ fU
mUZf
g f hnf ã Y
fZ UU SaZí
EjM Cho ki g_n
gZ f d
s ã _pZvSU (T[fU v*fd
õYfZm[ Tfãg &&
=uZ) _[ZZSh[Ujo kV Y_ fmúYV [g B fY[
mfdãí hxZ Yã U
ã UYm UZaf d
õYfZm
[ãgf[
s dWV & ã UYm U Zaf
dõYfZm
[fZ ZS
[YdW
W
ch d
S S _ fhW
UfadmúY 9 T hn_ f_úYUmUhW
UfadmúY 9j9 U
& f [b TgWhnU g[U Ynf
dõYfZm
[ iZ[W
hn_úYc S_úY(9 Z fd
aY V
3cLTR LW B KbYN Th fhkUmU [gV [gK=9Aã Uã Z YZé Sf
d Uãv _ U) UZ TS
aY_ UmU
Ki gV [gU a n_ f [gV [gã[ r_f
ZWaã[g [ dnYTgUA VaUZtZUZa ãõ [ YhxZ Y-scalar ( bit ãí hnhW
Ufad _úY_ fU
Z[gUmUT[
f 8mU [gV
vi Ue V Y [gV [gU aãe Sgãvã ZdS_ f [gV [g_ [ãv nUmUf
ZSa li gU
vfZ fZbfdaY_ [aõ [nkn Z V [ão k0
fmUY[SU m
U [gV [g ZmU ZS
g ZxYã UU ZabZq
bU ZzYU
Z ã UUZabZqb
trong f
d YZbY[S_ f[gU a hn [gU
íe fíY Yh[ v _ Scalars: BIT, STD_LOGIC, STD_ULOGIC, and BOOLEAN.
_ Vectors: BIT_VECTOR, STD_LOGIC_VECTOR, STD_ULOGIC_VECTOR,
EjM Ki gd [ge
Sgão
k Z ã UU
mU [gV [gã UY[[f
Z[gf
daYU
mUhtV INTEGER, SIGNED, and UNSIGNED.
ph f
d U
Trang 25 / 208 ThikI kGd D iHd VHDL Trang 26 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC3: KIm: 20
n:
VARIABLE h U8DCHI6CIU
vfZ ã U ZS
[Tm
ae d Y [gV [gãv 8z CZ ãpfZù
kfd
aYU zbZm
b fd
s Y[
mfd Z[ãgUS_ fH>
<C6AZaUK6G> 67A:
bZm
bV [ãoke ã UV Y0 nfkU Z Igk Z[s Z[h[U Z[ãgY[mf
dã Uãw[Z[ vU
vfZ ã Uf
Z UZ[
ZfdaYhtV bZt
SV [ãok
0
U
Zã Z_ f[g_úY_ [
0
... :="0001"; -- for 1D array
TYPE type_name IS ARRAY (specification) OF data_type;
... :=('0','0','0','1') -- for 1D array
ó ã[ _ P ZS WUóa ZS U
SIGNAL signal_name: type_name [:= initial_value]; ... :=(('0','1','1','1'), ('1','1','1','0')); -- for 1Dx1D or-
- 2D array
Id
aYU zbZmb f d
s _ fH>
<C6Aã U ZS[Tm
a Igk Z[
s vU
èYU
vfZ n_ f
DhL/3bKXPf
XObVUâVOP XT cS
PlVOP XT
CONSTANT ho U_ fK6G>
67A: <[
Sfd Z[f
õafkUZ
EZq bYm f
daYhtV n
kã UV Sf
ds ã Z YZé
S [ghn ZS
[Tm
aUm
Uft Z[g Z
E LoMG 0 0:
sau:
8ZzYf S_g jo kV Y_ f_úYU Z S*hW
Ufad_ [hWUf
adU vt UZf Z U n.T[f TYPE row IS ARRAY (7 DOWNTO 0)OF STD_LOGIC;
ãv n_ f_úY 9j9 ZuZ) ISY[_ [hW U
fadnZn ng (row) hn_úYZan
-- 1D array
ch Z n_Sfd (matrix) =í SUZzYf S_g T[ fTs f
dm[U YUS_ [hW Ufadf
d
fZnZBH7 _ae fe[Y[ X[U
SfT[
fUS v hnVwYf d
s U Yf dfZnZVwY& Z[ãv TYPE array1 IS ARRAY (0 TO 3) OF row;
E Lo
MG 0 --------- 8m
UbZq
bYm hxZ YZ b 0---------------
MúYeSgão kf
Z Ue nZS
[UZ[g A g d Yh[Ujo
kV Y vV Sf
dsU
mUhW
Ufad -- 4fO Tj SfZ ãU X ZS bp T ZS NU Z P U he Xg T
Z Y ZmZan UZ Zf
dsUm
Uãõ[ YhxZ Y lô
-- b U bm WUóa bp T ZS O N Z Xg BC K< 8:4 OT[ O OfO
TYPE matrix2D IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC;
lZ TUôa
-- 2D array
-- (x,y,v,w).
* Kh ãK
PWmâVO/
x(0) <= y(1)(2); -- X a ' Oì P a ZS[ìO Z
-- (y is 1Dx1D)
x(1) <= v(2)(3); -- 2 cì P a ZS[ìO Z b U_ d
Trang 27 / 208 ThikI kGd D iHd VHDL Trang 28 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC3: KIm: 20
n:
--------- <m hW
Ufad
0--------------------- ----------------------------
PACKAGE my_data_types IS
x <= y(0); -- h Xô OrZS WUóa A F
TYPE vector_array IS ARRAY (NATURAL RANGE <>) OF
x <= v(1); -- WTpZS T Xô WTpZS Tr T WUóa AF
bg STD_LOGIC_VECTOR(7 DOWNTO 0);
x <= w(2,2 DOWNTO 0);--WTpZS T Xô WTpZS Tr T WUóa A F d ------- Main code: -------------------------
y(1)(7 DOWNTO 3) <= x(4 DOWNTO 0); -- legal (same type, ... );
v(1)(7 DOWNTO 3) <= v(2)(4 DOWNTO 0); -- legal (same type, ... ;
Trang 29 / 208 ThikI kGd D iHd VHDL Trang 30 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC3: KIm: 20
n:
END my_data_types; 8m
UbZq
bfam Zb hn ZxYZ b ã[h[ [gV [ge
[YW
Vge
[YW
V0
----------------------------------------------
LIBRARY ieee;
3.6. Ki KôWPQRAN
LM USE ieee.std_logic_1164.all;
Bú YZ[fíYf Z _úY h[ã[_ Zm
Ud YU
ZzYU
Z SU
mUã[f YU
v [gV USE ieee.std_logic_arith.all; -- SnU OéZ TU Tk
li g Zm
U ZS
g bg[
...
KtV0
SIGNAL a: IN SIGNED (7 DOWNTO 0);
TYPE birthday IS RECORD
SIGNAL b: IN SIGNED (7 DOWNTO 0);
day: INTEGER RANGE 1 TO 31;
SIGNAL x: OUT SIGNED (7 DOWNTO 0);
month: month_name;
...
END RECORD;
v <= a + b; -- h Xô Tj [fZ _ TúO ;
3.7. Ki MÀU
R L
lM _dTQnWPM BR
PWN
M WMDWR
PWN
M w <= a AND b; -- WTpZS T Xô Tj [fZ X[SUO WTpZS ;
CZ ãp ã Ub f d U ão
kU mU [g V [g nk ã U ã Z YZé
Sfd
aY Yv[ 8m
UbZq
bfam Zb hn ZxYZ b h [e
fVQaY[
UQhW
Ufad
0
std_logic_arith c Sf
Z h[ ieee 8zbZm
bUSUZzYã U_[ZZSf daYhtV V [
LIBRARY ieee;
ão k0
USE ieee.std_logic_1164.all; -- WTpZS Tk SnU oU TùU
KtV0
...
SIGNAL x: SIGNED (7 DOWNTO 0); SIGNAL a: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
SIGNAL y: UNSIGNED (0 TO 3); SIGNAL b: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
A g d YU zbZm
bUSU
ZzYfí Yf h[HI9QAD<>
8QK:8IDG ZxYY[ Y Z SIGNAL x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
INTEGER. ...
M fY[
mfdJCH><C:9 n_ fe ZxYTS
aY[ Z Zí lW
da KtV && T[g v <= a + b; -- WTpZS T Xô Tj [fZ _
di e fZbbZo + f
daY Z[ & n ) CZ Y g [gH><C:9 ã Ue V Y húO WTpZS ;
Trang 31 / 208 ThikI kGd D iHd VHDL Trang 32 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC3: KIm: 20
n:
Trang 33 / 208 ThikI kGd D iHd VHDL Trang 34 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC3: KIm: 20
n:
8m
U [gV [gK=9Af YZ bU
íTú ã Uf
v_fff
daYTúY)( SIGNAL w1: mem1; -- 2D signal
SIGNAL w2: mem2; -- 1Dx1D signal
BâVO(2. TõVOP XK
bKS L T
SIGNAL w3: mem3; -- 1Dx1D signal
-------- Legal scalar assignments: ---------------------
x(2) <= a; -- same types (STD_LOGIC), correct indexing
y(0) <= x(0); -- same types (STD_LOGIC), correct indexing
z(7) <= x(5); -- same types (STD_LOGIC), correct indexing
b <= v(3); -- same types (BIT), correct indexing
w1(0,0) <= x(3); -- same types (STD_LOGIC), correct indexing
Table 3.2
Synthesizable data types.
Data types Synthesizable values
SIGNAL x: byte; -- 1D signal w1(2,5) <= y(7); -- same types (STD_LOGIC), correct indexing
SIGNAL y: STD_LOGIC_VECTOR (7 DOWNTO 0); -- 1D signal w2(0)(0) <= x(2); -- same types (STD_LOGIC), correct indexing
SIGNAL v: BIT_VECTOR (3 DOWNTO 0); -- 1D signal w2(2)(5) <= y(7); -- same types (STD_LOGIC), correct indexing
Trang 35 / 208 ThikI kGd D iHd VHDL Trang 36 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC3: KIm: 20
n:
w1(2,5) <= w2(3)(7); -- same types (STD_LOGIC), correct -- Example of data type independent array initialization:
indexing
FOR i IN 0 TO 3 LOOP
------- Illegal scalar assignments: --------------------
FOR j IN 7 DOWNTO 0 LOOP
b <= a; -- type mismatch (BIT x STD_LOGIC)
x(j) <= '0';
w1(0)(2) <= x(2); -- index of w1 must be 2D
y(j) <= '0'
w2(2,0) <= a; -- index of w2 must be 1Dx1D
40 Chapter 3
------- Legal vector assignments: ----------------------
TLFeBOOK
x <= "11111110";
z(j) <= '0';
y <= ('1','1','1','1','1','1','0','Z');
w1(i,j) <= '0';
z <= "11111" & "000";
w2(i)(j) <= '0';
x <= (OTHERS => '1');
w3(i)(j) <= '0';
y <= (7 =>'0', 1 =>'0', OTHERS => '1');
END LOOP;
z <= y;
END LOOP;
y(2 DOWNTO 0) <= z(6 DOWNTO 4);
---------------------------------------------------------
w2(0)(7 DOWNTO 0) <= "11110000";
EjM 2R àW_dKR_N
L
w3(2) <= y;
KtV n k_[ZZSe Zm U ZS
gY[SbZqbYm _ fT[
fãí hnbZq
bYm _ fT[f
z <= w3(1);
S n7>
vector (nghé Ih[7> IQK:8IDG HI9QAD<>
8h[HI9QAD<> 8QK:8IDR,
z(5 DOWNTO 0) <= w3(1)(2 TO 7);
ho UHI9QJAD<> 8h [HI9QJAD<>
8QK:8IDG
w3(1) <= "00000000";
=S[ãaõ _pK=9Aã UY[[f Z[gbZtSV [8úZS[f
Z UZ[ bZqbfam 6C9Y[S
w3(1) <= (OTHERS => '0');
UmUft Z[ghnahnYm fcgúã f t Z[gd
S8Z Uv_ fe Zm UT[fY[SU ZzYãv
w2 <= ((OTHERS=>'0'),(OTHERS=>'0'),(OTHERS=>'0'),(OTHERS=>'0'));
ne YT[
f U YhnahnU Yd S _ fT[
ffd
aYhtV ãùgf[
s *T[ f
efdaYhtV
w3 <= ("11111100", ('0','0','0','0','Z','Z','Z','Z',), th ZS[ BõUZã[ egkd
Sf U
mUãaõ _p nkã UT[gV[ fds ZuZ)(0
(OTHERS=>'0'), (OTHERS=>'0'));
-- code 1---------------------
w1 <= ((OTHERS=>'Z'), "11110000" ,"11110000", (OTHERS=>'0'));
--------------------------------------------------------
------ Illegal array assignments: ----------------------
ENTITY and2 IS
x <= y; -- type mismatch
PORT (a, b: IN BIT;
y(5 TO 7) <= z(6 DOWNTO 0); -- wrong direction of y
x: OUT BIT);
w1 <= (OTHERS => '1'); -- w1 is a 2D array
END and2;
w1(0, 7 DOWNTO 0) <="11111111"; -- w1 is a 2D array
--------------------------------------------------------
w2 <= (OTHERS => 'Z'); -- w2 is a 1Dx1D array
ARCHITECTURE and2 OF and2 IS
w2(0, 7 DOWNTO 0) <= "11110000"; -- index should be 1Dx1D
BEGIN
Trang 37 / 208 ThikI kGd D iHd VHDL Trang 38 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC3: KIm: 20
n:
x <= a AND b;
END and2;
---------------code 2---------------
ENTITY and2 IS
PORT (a, b: IN BIT_VECTOR (0 TO 3);
x: OUT BIT_VECTOR (0 TO 3));
8i
VP(3. Kí âUlXPòVOK
PW WàVUe KI hL (
END and2;
-------------------------------------------------------------- Code 2:
8i
VP(4. Kí âUlXPòVOK
PW WàVUe KI hL (
8i
VP(5. BùK
ùVO) K
PW hL ((
8i
VP(2. M àK
P K a I UeKI hL (
=uZ))hn)* cho thùkY[ú ã _ Uã ZUS_ fT U Y*T[ f_õUZã[ U v(ãg
K fcgú_xbZ Yf
ds 6U
f[hW=9A, 0 hna ST hn_ fãgd Se g_ 8v(Y[ ú[bZmbã Uã Ub IZ Zù f
, tùfUúUmUft
hi gUv [gV [gH> <C:9 fdaY Z[ Y[ ú[bZm
bfZ ZS
[ãgd SUv [g> CI:<:G
Code 1:
Ag f d
aYY[ú[bZmbfZ ZS[Uv_ fZn_U Zgk ã[U ahWde
[aX gU f
[a ã Ue
d Y VwY ) ã [gUS ST bZ Z bh[ [gUSf Y A g U TS ag _ U
ú
Yv[ef
VQaY[
UQSd
[f
Z VwY*US_ [Y[ ú[bZmb U v_xfú [gV [gH> <C:9 CZ
lõ[d Y_ fY[
mfdH><C:9ã U_xf úY[ Y Z _ fhW Ufad YZé
Snfí Yf Z
STD_LOGIC_VECTOR, ZxYY[ YINTEGER.
Trang 39 / 208 ThikI kGd D iHd VHDL Trang 40 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC3: KIm: 20
n:
Code: *K ôVnYQ WP i
W1LR
_N84 )
1 ----- Solution 1: in/out=SIGNED ----------
2 LIBRARY ieee;
3 USE ieee.std_logic_1164.all;
4 USE ieee.std_logic_arith.all;
5 ------------------------------------------
6 ENTITY adder1 IS 8i
VP(6. Kí âUlXPòVOK
PW hL ((
7 PORT ( a, b : IN SIGNED (3 DOWNTO 0);
8 sum : OUT SIGNED (4 DOWNTO 0));
9 END adder1;
10 ------------------------------------------
11 ARCHITECTURE adder1 OF adder1 IS
12 BEGIN
13 sum <= a + b;
14 END adder1;
15 ------------------------------------------
Trang 41 / 208 ThikI kGd D iHd VHDL Trang 42 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC4: 95P49 M9 : 94
4.1.1. C c
W Pc
W 4.1.4. C c
W c
WQ
K=9Aã Z YZé
STSaõ
[fam f Ym e
Sg0 8vU
mUf
am f e
aemZe
Sg0
<=: 9 YYm Y[
mfdU
ZaH>
<C6A = Hae
mZT Y > Hae
mZ Zí
:= : 9 YYm Y[
mfdU
ZaK6G>
67A: 8DCHI6CI<:C:G>
8
/= Hae
mZ ZxYT Y <= Hae
mZ Z Zí ZaUT Y
=>: 9 YYm Y[
mfdU
Zaf
ZnZbZ U
mUhW
UfadhnU
mUaõ
[Y[
mfd Zm
U.
< Hae
mZ Z Zí >= Hae
mZ Zí ZaUT Y
EjM 4.1.5. C c
W ML
Q
SIGNAL x : STD_LOGIC; CzbZm
be V Yf
am f VU
Zn0
VARIABLE y : STD_LOGIC_VECTOR(3 DOWNTO 0); <left operand> <shift operation> <right operand>
SIGNAL w: STD_LOGIC_VECTOR(0 TO 7);
IdaYãv<left operand> U
v [gn7>
IQK:8IDG U
w <right operand> U
v [g n
x <= '1'; >CI:<:G 8vZS [fam f VUZ0
y := "0000
Sll Iam f VU
Zfd
m[ [ &hn
abZt
SbZú
[
w <= "10000000";
w <= (0 =>'1', OTHERS =>'0'); Rll Iam f Vch phú
[ [ &hn
abZt
Sfd
m[
4.1.2. C cW PR
L 4.2. Thu Lj
WQ
K=9Aã Z YZé
SUm
Ufam f aY[
U0NOT, AND, OR, NAND, NOR, XOR, XNOR 4.2.1. Thu Lj
WQMÀU
R
D [gU
ZaU
mUf
am f n
kbZú
[n [g0BIT, STD_LOGIC, STD_ULIGIC, bU
VHDL cung cù m
UfZgUf
tZe
Sg
BIT_VECTOR, STD_LOGIC_VECTOR, STD_ULOGIC_VECTOR. Mx>F Trúh Y[
mfd Z Zù
fUSU
Ze _úY
KtV0 Mx
8978 Trúh U
Ze Zù
fUS_úY
y <= NOT a AND b;
ThikI kGd D iHC 2 Page 43 / 208 Trang 44 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC4: 95P49 M9 : 94
Mx56C Trúh U
Ze Ts f
dm[ Zù
fUS_úY x D9
5C.R
VN0 Trúh true khi trong khoúYf
Z[Y[
Sf[
_W ZxYU
ve
ki najú kdS
Mx
A978C Trúv U
Ze Ts bZú
[ Zù
fUS_úY
x1BCH5E5=C Trúv th [Y[
Sfd
x[cgS f e [ U
g[U Y
Mx5=7C8 Trúh t
UZf
Z UUS_úY
x1BCH13C9
E5 Trúh f
Z[Y[
S f U
g[U Ye3
Mx
A1=75 Trúh _úYU
Z SU
Ze x1BCHE1 D5 Trúv Y[
mfdUSef
d Ue [ f
d Uãv
Mx
A5E5AB5HA1=75 Trúh _úYU
Z SU
Ze ã Uãú
aY U Id
aYU
mUf
ZgUf
tZf
dsf
Zuf
ZgUf
tZ x
5E5=C nZS
kã UV Y Zù
f
KtV0C gV n_ fhW
Ufadã U ZS
[Tm
aZe
Sg0 Vi d 0 o
knhtV h[f
tZ[gã YZ
8m
UfZgUf
tZ n
kUvf
Z V Yf
daYU
mUhwY b0 4.3. Thu Lj
WQ L WQWPQ K RWP RMpWP
FOR i IN RANGE (0 TO 7) LOOP ...
K=9A Yan [h[UUgYUù
bUm
UfZgUftZU
ve vUwUZabZqb Y [V Yf ã Z
SU
nghé mUf
ZgUf tZ8mUf
ZgUftZ n
k_g e V YU bZú
[ZS [Tm
ahn_xf
údy
FOR i IN x'RANGE LOOP ...
dnYfZW
aUùgfdzUe
Sg0
FOR i IN RANGE (x'LOW TO x'HIGH) LOOP ...
ATTRIBUTE <attribute_name>:< attribute_type>;
FOR i IN RANGE (0 TO x'LENGTH-1) LOOP ...
ATTRIBUTE <attribute_name> OF< target_name>: <class> IS
N gf
tZ[gU
v [g[fsf
Zu0
<value>;
) Trúh Y[
mfdf
õ[bae Id
aYãv
(val) Trúh hf
dtU
vY[
mfd nhS +S
ffd
[Tgf
WQf
kbWn [gV [g
( (value) Trúh Y[
mfd hf
dtTs f
dm[UShSgW + Class : SIGNAL, TYPE, FUNCTION.
VAL(row,colum) Trúh Y[
mfd _ fhf
dtãUT[f
KtV :
4.2.2. Thu Lj
WQ j
WQR
ATTRIBUTE number_of_inputs: INTEGER;
8mUf
ZgUftZaõ[nkU
Zã Um
bV Yã[h[V [gH>
<C6A C gen_ f
H>
<C6AfZuf
SUv: ATTRIBUTE number_of_inputs OF nand3: SIGNAL IS 3;
x
5E5=C Trúh f
dgW Z[_ fe [ jú
kdSã[h[e 4.4. Ch WP cW
x
BC12 5 Trúh f
rue n g ZxYU
ve [ n
ajú
kdSã[v [e CèYY[ Y Z UmUf
ZgUftZã Uã Z YZéST[Y [V YId aYK=9AfSUèY
Uvf
Z jo
kV YU Z YUmUfam f f
am ZU jo kV YUZ YUm
Ufam f n
kfSU
x
13C9
E5 Trúv f
dgW Z[e3
[U
phú Zdy aõ
[V [gfZS
_Y[ SKtV Z fam f fd
sU ZmbV YUZaUm
Uaõ[
Trang 45 / 208 ThikI kGd D iHd VHDL Trang 46 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC4: 95P49 M9 : 94
d [gU Y [ge 7o
kY[ f
Sjo
kV Yf
am f V Yã U Y_ fe >
CI:<:G )EjM
v [_ f7>
I n
_dyZí U
mUhù ã ãp v[ f
dsU
ZzYf
Se jW
_jq
f_ fhn
[htV e
Sg0
FUNCTION "+" (a: INTEGER, b: BIT) RETURN INTEGER IS EjM 7N
WNR
L4N
LMN
BEGIN
=uZh eSgão
k_xbZ Y_ fT Y[ú
[_pUvZS
[ãghnaB ff
t Z[ghn
aV [ge W
IF (b='1') THEN RETURN a+1; g _m Tt
fhn_ ff
tZ[gnena CvUv_ fãgdSV [gY_ Ttf8vm = log2(n).
ELSE RETURN a;
END IF;
END "+";
4.5. GENERIC.
<:C:G>
8 n_ fUmU
Zfõ
aUm
UfZS_ e V YUZgY Y[ Y Z U m
UT[ static trong
Um
U Yx Y bf d
uZ B UãtU
Z nã UZaU
mUãaõ UaVW_ _ VahnV s V Y õ [
Zí
Trang 47 / 208 ThikI kGd D iHd VHDL Trang 48 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC4: 95P49 M9 : 94
IF (ena='1') THEN
FOR i IN sel'RANGE LOOP
IF (sel(i)='1') THEN
temp2:=2*temp2+1;
ELSE 8i
VP)3. BùXPb P V hK
PeVT
temp2 := 2*temp2;
HS
gão
kn_p Yg _xf
ú_õ
UZf
ds
END IF;
END LOOP; ENTITY parity_det IS
END generic_decoder;
=uZe
Sgão
k_xf
ú fcgúZaõ
fã YUST Y[
ú[_pf
ds ARCHITECTURE parity OF parity_det IS
BEGIN
PROCESS (input)
VARIABLE temp: BIT;
BEGIN
temp := '0';
8i
VP)2. lXPòVOS
í âKI ùUePWb FOR i IN input'RANGE LOOP
temp := temp XOR input(i);
CZ UZzYf Sf
Zùk Z[ena = 0 f
Zuf
ùfU
úUm
UTt
fbZt
Sãgd
SãgT Y Zi ena = 1 f
Zu
END LOOP;
ch _ fTt
fbZt
Sãgd Sã UU Z fUnT Y&KtV Z Z[N Ux xf
Zuãgd Sx =
w xN
U w xa w x
r output <= temp;
END PROCESS;
Ktd f
ds e V YU
mUf
am f U
mUf
am f Ym hnf
ZgUf
tZG6C<:
END parity;
Trang 49 / 208 ThikI kGd D iHd VHDL Trang 50 / 208 ThikI kGd D iHC 2
DY HC4: 95P49 M9 : 94 DY HC4: 95P49 M9 : 94
IdaYãaõ _pf
dsU ZzYfSãpe V Y_ f_ Zã <:C:G>
8ã Z YZé
S 3 Z[ VARIABLE temp2: BIT_VECTOR (output'RANGE);
ãvfù
fUúU
mU jgùfZ[ vãgU vY[
mfdn BEGIN
K fcgúUS_õ
UZã UT[gV[ T[ZuZe S
g Z[ãghn a[bgf3&&&&&&&& f
Zuãg temp1 := '0';
dSagf
bgf3& Z[[bgf3&&&&&&& f
ZuãgdSagf
bgf3 hue ãghn an n_ f FOR i IN input'RANGE LOOP
s
temp1 := temp1 XOR input(i);
temp2(i) := input(i);
END LOOP;
temp2(output'HIGH) := temp1;
output <= temp2;
8i
VP)4 lXPòVOS
íquâKIPi
VP)
END PROCESS;
EjM Rb7N
WN
END parity;
MõUZe
Sge f
Zs__ fTt
fbSd
[f
khnaf
tZ[g[bgf7tfn kn& Z[e ãghn
a3 US K fcgú
0
[bgfn_ fe U
Z hnT Y&f daYf
d YZ b Y Uõ [CZ hk_õ U
Ze Y_ -1
ns
ãghnaV [ghn ãgd Sfd
aYãv -1 ãgd
STs bZú
[Y[ Y Z - ãghn aãg 50 100 150 200 250 300 350 400 450 500
d
SUw õ[nY[mf
d [_fdSbSd
[f
k input 00 01 02 03 04 05
output 00 81 82 03 84 05
8i
VP)6. lXPòVOS
í âKI hL )(
CZ fSf
Zùk Z[ãghna[bgf3&&&&&&& f
Zuãgd
Sagf
bgf3 &&&&&&&& Z[ãghn
a
8i
VP)5. BùXPb K
PVTKI hL )( [bgf3&&&&&& f
ZuãgdSagf
bgf3 &&&&&&
ENTITY parity_gen IS
GENERIC (n : INTEGER := 7);
PORT ( input: IN BIT_VECTOR (n-1 DOWNTO 0);
output: OUT BIT_VECTOR (n DOWNTO 0));
END parity_gen;
Trang 51 / 208 ThikI kGd D iHd VHDL Trang 52 / 208 ThikI kGd D iHC 2
DY HC5: 3N854 854 DY HC5: 3N854 854
BâVO*1. 3bKWbV
8i
VP*1. MàK
PõP X cUàK
PLea
Ejd 2 M WTi
WQ -1.
5.1.2. <f WP WP_dVf ùW
Bp Yg K=9A neaYe
aY Ch U
mUãaõ _pfd
aY_ fEGD8:HH ;JC8I>
DC
PROCEDURE nf
g f 8mU Z[ nkã UfZ UZ[ _ fU
mUZf
g f Bpe aY
eaYã íUY[n_pg YV [g VSf
SXaiU
aVW
8i
VP8i
VP*2. BùLVS
gVP
ThikI kGd D iHC 2 Page 53 / 208 Trang 54 / 208 ThikI kGd D iHC 2
DY HC5: 3N854 854 DY HC5: 3N854 854
B V sZ*- U v*ãghnaV [g ZS
[ãghn
aã[g Z[ hn_ fãgd
SIt Z[g
ãgd Se nft Z[gUS _ ff
daY*ãghn af
gêf
ZWaY[
mfdUSZS[ãghn
aã[g
khi e&e HSgãoknUZ íYf
duZ_xbZ Y
LIBRARY ieee;
USE ieee.std_logic_1164.all;
---------------------------------------------
ENTITY mux IS
PORT ( a, b, c, d, s0, s1: IN STD_LOGIC;
y: OUT STD_LOGIC);
KtV0
END mux;
--------------------------------------------- ------ With WHEN/ELSE -------------------------
ARCHITECTURE pure_logic OF mux IS outp <= "000" WHEN (inp='0' OR reset='1') ELSE
ns
B eb aN
VagL
cL_jM MpWPV WQ F85=
50 100 150 200 250 300 350 400 450 500
a EjM 2 M WTi
WQ -1.
b
c
CYgk s fUZaõfã YUS_õ U
Zn kfSãp v[ f
ds ão kU
ZzYfSe V Y_ Zã
L=:Cf ZS
kUZaUmf
am f 8ZzYfSUvfZ V YfZW
aUúZS
[Um
UZ V Z[gU
ZzY
d
ta s jW
_jq fU
úZS[U
mUZe V Y_ Zã WHEN.
s0
s1
8i
VP*3 BxbZ Y fcgúUShtV +
5.3. M WQ F85=
L=:C n_xff
ZnZbZ USU mU Z[ e aYeaY Cvjgù
fZ[ fd
aYZS
[fd Y
h bL=:C :AH: hnL>
I= H:A:8I L=:C 8zbZm
bã Ufd
uZTùkZe S
g 8i
VP*4. BùLVSVPK
PW hL
Trang 55 / 208 ThikI kGd D iHd VHDL Trang 56 / 208 ThikI kGd D iHC 2
DY HC5: 3N854 854 DY HC5: 3N854 854
y: OUT STD_LOGIC);
END mux;
-------------------------------------------
ARCHITECTURE mux1 OF mux IS
BEGIN
y <= a WHEN sel="00" ELSE 8i
VP*5. Bù U( àVOPb
b WHEN sel="01" ELSE
Mõ UZT ã_ )f
dõYf
Zm[U
Zaãgd
Sagf
bgf3[bgf Z[WS3&hnf
d ZmYU
Sa Z[
c WHEN sel="10" ELSE
ena = 1.
d;
LIBRARY ieee;
END mux1;
USE ieee.std_logic_1164.all;
-------------------------------------------
----------------------------------------------
--- S V YL>
I=H:A:8IL=:C-----
ENTITY tri_state IS
LIBRARY ieee;
PORT ( ena: IN STD_LOGIC;
USE ieee.std_logic_1164.all;
input: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
-------------------------------------------
output: OUT STD_LOGIC_VECTOR (7 DOWNTO 0));
ENTITY mux IS
END tri_state;
PORT ( a, b, c, d: IN STD_LOGIC;
----------------------------------------------
sel: IN STD_LOGIC_VECTOR (1 DOWNTO 0);
ARCHITECTURE tri_state OF tri_state IS
y: OUT STD_LOGIC);
BEGIN
END mux;
output <= input WHEN (ena='0') ELSE
-------------------------------------------
(OTHERS => 'Z');
ARCHITECTURE mux2 OF mux IS
END tri_state;
BEGIN
----------------------------------------------
Trang 57 / 208 ThikI kGd D iHd VHDL Trang 58 / 208 ThikI kGd D iHC 2
DY HC5: 3N854 854 DY HC5: 3N854 854
M fT :C8D9:G U
v ãghna_ ãgdSh [_ 3 aY2 (n). Tõ
[_ ff
Z[ã[_ U
ZU v ---------------------------------------------
m fTt
fãghnaT Y HS
gãoknUZ íYfd
uZ_xbZ Ye V YL=:Cf ZW
aU úZS
[ ARCHITECTURE encoder2 OF encoder IS
Um
UZV YL=:C :AH:hnL>I= H:A:8I L=:C. BEGIN
WITH x SELECT
---- s V YL=:C:AH:-------------
y <= "000" WHEN "00000001",
LIBRARY ieee; "001" WHEN "00000010",
USE ieee.std_logic_1164.all; "010" WHEN "00000100",
--------------------------------------------- "011" WHEN "00001000",
ENTITY encoder IS "100" WHEN "00010000",
PORT ( x: IN STD_LOGIC_VECTOR (7 DOWNTO 0); "101" WHEN "00100000",
y: OUT STD_LOGIC_VECTOR (2 DOWNTO 0)); "110" WHEN "01000000",
END encoder; "111" WHEN "10000000",
--------------------------------------------- "ZZZ" WHEN OTHERS;
ARCHITECTURE encoder1 OF encoder IS END encoder2;
BEGIN
---------------------------------------------
y <= "000" WHEN x="00000001" ELSE
Trang 59 / 208 ThikI kGd D iHd VHDL Trang 60 / 208 ThikI kGd D iHC 2
DY HC5: 3N854 854 DY HC5: 3N854 854
K fcgú_xbZ Y0
100 200 300 400 500 600 700 800 900 1000 ns
x 00 01 02 03 04 05 06 07 08 09 0A 0B
y Z 0 1 Z 2 Z 3 Z
8i
VP*8. Kí âUlXPòVOK
PW hL *)
EjM 1D
8i
VP*10. Hoà ùVOK
PVPKIK
bKXPãV 1 C
Bp Yg f
Z UZ[ _xbZ Y0
----------------------------------------------
LIBRARY ieee;
8i
VP*9. ALU
USE ieee.std_logic_1164.all;
MõUZ6AJ fZ UZ[ U
mUbZq
bf am aY[ Uhnfam ZUã[h [ZS[ãghnaShnT USE ieee.std_logic_unsigned.all;
8ZzYã Uã[g Z[ T[*Tt t sel(3:0). Tuêf
ZgUhnaY[
mfdUSeW_n Z[e f
ZU ----------------------------------------------
hi fZS
afm
Un ah [V [g7úYV [ão k_xfúU
mUf
ZSafm
UUS6AJ ENTITY ALU IS
PORT (a, b: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
sel: IN STD_LOGIC_VECTOR (3 DOWNTO 0);
cin: IN STD_LOGIC;
y: OUT STD_LOGIC_VECTOR (7 DOWNTO 0));
END ALU;
----------------------------------------------
ARCHITECTURE dataflow OF ALU IS
SIGNAL arith, logic: STD_LOGIC_VECTOR (7 DOWNTO 0);
BEGIN
----- Arithmetic unit: ------
WITH sel(2 DOWNTO 0) SELECT
Trang 61 / 208 ThikI kGd D iHd VHDL Trang 62 / 208 ThikI kGd D iHC 2
DY HC5: 3N854 854 DY HC5: 3N854 854
b 00 01 02 03 04 05 M fã[gU bZú
[UZz nY[[Zõ USVpkbZú
[ã U ZS[Tm
a nefSf
[U g ZxYe
cin ZxYZ b IdaYhtV e
SgUZa[
UW ZxYã U ZS
[Tm
a nefS
f[U s ZxYZ b 0
logic FF FE FD FC 04 05
0 1 0 1 2 3
NotOK: FOR i IN 0 TO choice GENERATE
sel
y 00 02 02 04 03 05 (concurrent statements)
END GENERATE;
8i
VP*11. Kí âUlXPòVOKI hL **
Trang 63 / 208 ThikI kGd D iHd VHDL Trang 64 / 208 ThikI kGd D iHC 2
DY HC5: 3N854 854 DY HC5: 3N854 854
Z[gd
yZí h Z[ Z<:C:G6I:U
ZzYf
Se jq
fhtV e
Sg0 row(i) <= row(i-1)(6 DOWNTO 0) & '0';
END GENERATE;
EjM EN
L QR
ON
outp <= row(sel);
KtV eSg_[ZZaõU
Zah[Ue V Y<:C:G6I: Id
aYãvãghnae ã UVU
Zã[
END shifter;
m fTt
fhnfõ
afZnZãgdSKtV ãghnaUv*ã YhnY[ mf
dTS ãg n fZu
K fcgú_xbZ Y0
ãgdSe ã U_xfúZ eSg0
50 100 150 200 250 300 350 400 450 500 ns
row(0): 0 0 0 0 1 1 1 1
inp 0 1 0 0
row(1): 0 0 0 1 1 1 1 0 outp 00 01 02 03 04
sel 0 1 2 3 4
row(2): 0 0 1 1 1 1 0 0
row(3): 0 1 1 1 1 0 0 0 8i
VP*12. Kí âUlXPòVOKI hL *+
row(4): 1 1 1 1 0 0 0 0 CZ ZuZf Sf Zù
k g[bgf3 && f ZuãgdS agf
bgf3&&&&&& Z[e
W 3&
agf
bgf3 &&&&& & Z[e
W3 agfbgf3&&&& && geW3(
8Z íYf
duZ_xbZ Y
5.5. BLOCK.
------------------------------------------------
8vZS
[ aõ
[Z[ Z7AD8 0H[
_bWhn<gS
dVW
V
LIBRARY ieee;
USE ieee.std_logic_1164.all; 5.5.1. Simple BLOCK
------------------------------------------------ Kh [ Z7AD8 U
ZabZq
bãf_ f Z[ Ze aYeaYhna_ fãaõ ã[gãvY[
zb
UZaU
mUãaõ ZV ãUhnV cgú Zí 8ù
gfdzUUSU
ZzY Z e S
g0
ENTITY shifter IS
PORT ( inp: IN STD_LOGIC_VECTOR (3 DOWNTO 0); label: BLOCK
Trang 65 / 208 ThikI kGd D iHd VHDL Trang 66 / 208 ThikI kGd D iHC 2
DY HC5: 3N854 854 DY HC5: 3N854 854
block2: BLOCK gf
Cù d
zU Z e
Sg0
BEGIN
label: BLOCK (guard expression)
...
[declarative part]
END BLOCK block2;
BEGIN
...
(concurrent guarded and unguarded statements)
END example;
END BLOCK label;
------------------------
f
u_Z[gd
yZí h Z[7AD8 f
Sã[jq
fhtV e
Sg0
KtV0
KtV 08Zfe V Y<gS d
VWV7AD8 Id aYhtV n
k Z[ n
aU 3 f
Zu
b1: BLOCK
kh [ã íUZaõ
fã Y Z[ãv Z[ Ze ã íUf
Z UZ[
SIGNAL a: STD_
-------------------------------
BEGIN
LIBRARY ieee;
a <= input_sig
USE ieee.std_logic_1164.all;
END BLOCK b1;
-------------------------------
M fãaõ 7AD8 U
vfZ ã Uãff
daY_ fãaõ 7AD8 Zm
U Z[ãvU
zbZm
bZ
ENTITY latch IS
sau:
PORT (d, clk: IN STD_LOGIC;
label1: BLOCK
q: OUT STD_LOGIC);
[declarative part of top block]
END latch;
BEGIN
-------------------------------
[concurrent statements of top block]
ARCHITECTURE latch OF latch IS
label2: BLOCK
BEGIN
[declarative part nested block]
b1: BLOCK (clk='1')
BEGIN
BEGIN
(concurrent statements of nested block)
q <= GUARDED d;
END BLOCK label2;
END BLOCK b1;
[more concurrent statements of top block]
END latch;
END BLOCK label1;
-------------------------------
Trang 67 / 208 ThikI kGd D iHd VHDL Trang 68 / 208 ThikI kGd D iHC 2
DY HC5: 3N854 854 DY HC5: 3N854 854
K fquú_xbZ Y 100 200 300 400 500 600 700 800 900 1000 ns
clk
100 200 300 400 500 600 700 800 900 1000 ns
d
clk q
rst
d
q 8i
VP*14. K fcgú_xbZ YUShtV +.
8i
VP* 1 3 . K í âUlXPòVOKPW hL *,
-------------------------------
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 dff OF dff IS
BEGIN
b1: BLOCK (clk'EVENT AND clk='1')
BEGIN
q <= GUARDED '0' WHEN rst='1' ELSE d;
END BLOCK b1;
END dff;
------------------------------
K kM Ng FV IBoG (
Trang 69 / 208 ThikI kGd D iHd VHDL Trang 70 / 208 ThikI kGd D iHC 2
DY HC6: 3N9: 49t DY HC6: 3N9: 49t
3Q àWP) <tCDú=CÃ
10 20 30 40 50 60 70 80 90 ns
rst
6.2. BR
PW U _dE RKU
N
K=9A Uv ZS[UmUZ ã Z YZé S UmU Y[
mfd Zx Y féZ0T Y H><C6A Za U T Y
K6G>67A: H> <C6A Uv f Z ã U ZS[Tma f da Y E68 6<: :CI> IN Za U
8i
VP+1. DFF v h
VP MMS
PlVO VO ù ARCHITECTURE (trong ph ZS[TmaU S v f da Y Z[K6G>67A: UvfZ ã U
_xfúTs fda Y_ fbZ U S_pf g f f da YEGD8:HH 9aãv fda Y Z[Y[
mfd
c SbZ fd UUvf Z nf an U U bZ eSg gx nU UT
<[ mf
d U SK6G>
67A: UvfZ Zx YTSaY[ ã Z YZé
S Yan[EGD8:HH_ fUmUZ
tr Uf[b gU f Zu vbZú[ã U Ym f
Zn ZH>
<C6A Id
a YUmUZj ZmU Ub
ThikI kGd D iHC 2 Page 71 / 208 Trang 72 / 208 ThikI kGd D iHC 2
DY HC6: 3N9: 49t DY HC6: 3N9: 49t
sau khi k ff
ZzUcgmf
duZUZõ
kZ[ fõ
[USEGD8:HH
8iVP+ 4 . K í âUlXPòVO
EZq bf am Ym U
ZaH>
<C6A n 23 e
[Y23+ f
daY Z[h[K6G>
67A: n 0
3 hS
d
:= 5). LIBRARY ieee;
USE ieee.std_logic_1164.all;
6.3. IF.
>; L6>I 86H: hnADDE nUmUUog Zã[h[_pf g f 9aãv UZzYU
ZUv
th ã Ue V YTs fdag PROCESS, FUNCTION ho UEGD8:9JG: ENTITY counter IS
PORT (clk : IN STD_LOGIC;
V Ygks fUU
v_ f fcgúbZ ã Z f YZbe f[ gZamU
ùgf
dzUhnf
dmZã[
digit : OUT INTEGER RANGE 0 TO 9);
eo
ghn
abZ U Y
END counter;
3nXPbX/
8i
VP+3. Bù í
UKP ôPXX
PdV
Trang 73 / 208 ThikI kGd D iHd VHDL Trang 74 / 208 ThikI kGd D iHC 2
DY HC6: 3N9: 49t DY HC6: 3N9: 49t
internal U ? ? ? C 6 3 1 0 / OHWO
q
WAIT UNTIL signal_condition;
8iVP+ 6 . K í âUlXPòVO WAIT ON signal1 [, signal2, ... ];
WAIT FOR time;
LIBRARY ieee;
8og ZL6> IJCI>AZ UZ _ ff
t Z[gVaãvf
ZtU
ZZbU Za_pã YT Zí n
USE ieee.std_logic_1164.all;
_p ZxYã YT Z[EGD8:HH ZxYU vVSZemUZ Zõ
kfdaYfd YZb n k
[nU
WAIT phú o
g Zãgf[sfdaYEGD8:HH EGD8:HHã UfZ Uhi _ [f
Z[
ENTITY shiftreg IS ã[_ Z[Ybã[g [
GENERIC (n: INTEGER := 4); -- # of stages
E
PORT (d, clk, rst: IN STD_LOGIC;
q: OUT STD_LOGIC); Thanh ghi 8 bit v [f
t Z[gd
WeW
fã YT
Trang 75 / 208 ThikI kGd D iHd VHDL Trang 76 / 208 ThikI kGd D iHC 2
DY HC6: 3N9: 49t DY HC6: 3N9: 49t
E ( B DFF v [f
tZ[gd
WeW
fZxYã YT 8iVP+ 8 . K í âUl XPòVO
5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 ns
LIBRARY ieee;
rst
USE ieee.std_logic_1164.all;
d
clk
ENTITY counter IS
q
PORT (clk : IN STD_LOGIC;
8iVP+ 7 . K í âUlXPòVO digit : OUT INTEGER RANGE 0 TO 9);
use IEEE.STD_LOGIC_1164.all;
entity DFF is ARCHITECTURE counter OF counter IS
Trang 77 / 208 ThikI kGd D iHd VHDL Trang 78 / 208 ThikI kGd D iHC 2
DY HC6: 3N9: 49t DY HC6: 3N9: 49t
S bZq bYm Zù
f
CASE identifier IS 1 fê
Bù
cho m [ [_f
dS
WHEN value => assignments;
T Zam ZxY t
UZ
UNAFFECTED NULL
WHEN value => assignments; f
hoõ
...
E
END CASE;
VyI 419
E
WITH sel SELECT
CASE control IS
x <= a WHEN "000",
WHEN "00" => x<=a; y<=b;
b WHEN "001",
WHEN "01" => x<=b; y<=c;
c WHEN "010",
WHEN OTHERS => x<="0000"; y<="ZZZZ";
UNAFFECTED WHEN OTHERS;
END CASE;
VyI/ 1
L Z86H: f g f fíYf h[L=:C fZb Iù fUúe Zam h ãgbZú [ã U
ki _f d
Shuhkf ZamDI=:GHdùfZ gtUZI ZamcgS fd Y Zm
UnCJAA Tú CASE sel IS
sao c SJC6;;:8I:9 s ã Ue V Y Z[ ZxYU vZaõ
fã Y n o thay th Kt WHEN "000" => x<=a;
d 0L=:CDI=:GH34CJAA1Igk Z[ s 86H:UZabZqb Z[gbZqbYm h[_ [
WHEN "001" => x<=b;
ã[g [ [_f d
SfdaY Z[L=:CUZU ZabZq
b_ f
WHEN "010" => x<=c;
Gi Y Z f
daYf
d YZbUSL=:C ão
k L=:ChSgW U
vfZU
v)VõY0 WHEN OTHERS => NULL;
-- only V 9
6/
Trang 79 / 208 ThikI kGd D iHd VHDL Trang 80 / 208 ThikI kGd D iHC 2
DY HC6: 3N9: 49t DY HC6: 3N9: 49t
E ( B DFF v [f
tZ[gd
WeW
f ZxYã YT
5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 ns
rst
clk
8iVP + 9 . K í â Ul XPòVO
reset
ENTITY dff IS
clk
PORT (d, clk, rst: IN BIT; temp1 0 1 0 1 0 1 2 3 4 0 1
digit1 7E 30 7E 30 7E 30 6D 79 33 7E 30
END dff;
digit2 7E
Trang 81 / 208 ThikI kGd D iHd VHDL Trang 82 / 208 ThikI kGd D iHC 2
DY HC6: 3N9: 49t DY HC6: 3N9: 49t
PORT (clk, reset : IN STD_LOGIC; WHEN 6 => digit1 <= "1011111"; --5F
digit1, digit2 : OUT STD_LOGIC_VECTOR (6 DOWNTO 0)); WHEN 7 => digit1 <= "1110000"; --70
END counter; WHEN 8 => digit1 <= "1111111"; --7F
ARCHITECTURE counter OF counter IS WHEN 9 => digit1 <= "1111011"; --7B
BEGIN WHEN OTHERS => NULL;
PROCESS(clk, reset) END CASE;
VARIABLE temp1: INTEGER RANGE 0 TO 10; CASE temp2 IS
VARIABLE temp2: INTEGER RANGE 0 TO 10; WHEN 0 => digit2 <= "1111110"; --7E
BEGIN WHEN 1 => digit2 <= "0110000"; --30
---------------------- counter: ---------------------- WHEN 2 => digit2 <= "1101101"; --6D
IF (reset='1') THEN WHEN 3 => digit2 <= "1111001"; --79
temp1 := 0; WHEN 4 => digit2 <= "0110011"; --33
temp2 := 0; WHEN 5 => digit2 <= "1011011"; --5B
ELSIF (clk'EVENT AND clk='1') THEN WHEN 6 => digit2 <= "1011111"; --5F
temp1 := temp1 + 1; WHEN 7 => digit2 <= "1110000"; --70
IF (temp1=10) THEN WHEN 8 => digit2 <= "1111111"; --7F
temp1 := 0; WHEN 9 => digit2 <= "1111011"; --7B
temp2 := temp2 + 1; WHEN OTHERS => NULL;
IF (temp2=10) THEN END CASE;
temp2 := 0; END PROCESS;
END IF; END counter;
END IF;
6.6. LOOP.
END IF;
LOOP h gtU
Z Z[_ fbZ US_pbZú [ã UfZ Z[ Z[g <[ Y Z >
;
---- BCD to SSD conversion: -------- L6>I hn86H: ADDE nVgk Zù
fã[h[_pfg f huhk vUèYUvf
Z ã Ue
CASE temp1 IS d YTs fdaYEGD8:HH ;JC8I>DC ZS
kEGD8:9JG:
WHEN 0 => digit1 <= "1111110"; --7E
3lWQR L
cLQ M WP >>
WHEN 1 => digit1 <= "0110000"; --30
3nXPbX/ FOR/LOOP: kVOT
êX KT
êXT
àUù ôT
ãVK
ô VP
WHEN 2 => digit1 <= "1101101"; --6D
WHEN 3 => digit1 <= "1111001"; --79 [label:] FOR identifier IN range LOOP
Trang 83 / 208 ThikI kGd D iHd VHDL Trang 84 / 208 ThikI kGd D iHC 2
DY HC6: 3N9: 49t DY HC6: 3N9: 49t
WHILE/LOOP: kVOT
êX KT
êXK
PW í
VSP ì S VS
PlVOPâWUeV END LOOP;
EXIT: s LVO S
í PnK kVOT
êX (...)
END LOOP;
[label:] EXIT [label] [WHEN condition];
E ((B B LWPL
lWQ KRTQnWPM
NEXT: s LVO ò IK
bK K kVOT
êX
E VyI2: 7::
FOR i IN 0 TO 5 LOOP
x(i) <= enable AND w(i+2);
y(0, i) <= w(i);
END LOOP;
cin
V E V E895 a 92 40 04 31 86 C6 32
b 24 81 09 63 0D 8D 65
s B7 C2 0D 94 93 53 97
Trang 85 / 208 ThikI kGd D iHd VHDL Trang 86 / 208 ThikI kGd D iHC 2
DY HC6: 3N9: 49t DY HC6: 3N9: 49t
Trang 87 / 208 ThikI kGd D iHd VHDL Trang 88 / 208 ThikI kGd D iHC 2
DY HC6: 3N9: 49t DY HC6: 3N9: 49t
E ((
D B V wxL V _N
L WQ YQeW K ù Ki
W cR
50 100 150 200 250 300 350 400 450 500 550 600 ns
8i
VP+14. BùLK
P VOâV
data 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
Kí âUlXPòVO/ 8 7 6 5 4
zeros
20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 ns
8i
VP+16. Kí âUlXPòVO
inp 00 14 28 3C 50 64 78
8i
VP+15. Kí âUlXPòVO
ENTITY LeadingZeros IS
LIBRARY ieee; PORT ( data: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
USE ieee.std_logic_1164.all; zeros: OUT INTEGER RANGE 0 TO 8);
ENTITY barrel IS END LeadingZeros;
GENERIC (n: INTEGER := 8); ARCHITECTURE behavior OF LeadingZeros IS
PORT ( inp: IN STD_LOGIC_VECTOR (n-1 DOWNTO 0); BEGIN
shift: IN INTEGER RANGE 0 TO 1; PROCESS (data)
outp: OUT STD_LOGIC_VECTOR (n-1 DOWNTO 0)); VARIABLE count: INTEGER RANGE 0 TO 8;
END barrel;
Trang 89 / 208 ThikI kGd D iHd VHDL Trang 90 / 208 ThikI kGd D iHC 2
DY HC6: 3N9: 49t DY HC6: 3N9: 49t
... BEGIN
IduZT[
s VU
ZU vfZUwf ZxYTm
ad Yf
t Z[gU
agf
WdT Zo V Id
aYf
d Y x <= d;
h bnkh[UT[s VUZe Tfd
Wa END IF;
END PROCESS;
Zt
SUõZcgS f
d Y Zm
UnfZgUftZ:K:CIbZú[Uv[
s quan t [ã[g [ [_
f
dS KtV0 Z > ; U :K:CI SV U 3 n ãzY Z Y U Z e V Y>; PROCESS (clk)
Trang 91 / 208 ThikI kGd D iHd VHDL Trang 92 / 208 ThikI kGd D iHC 2
DY HC6: 3N9: 49t DY HC6: 3N9: 49t
50 100 150 200 250 300 350 400 450 500 550 600 ns
BEGIN
LIBRARY ieee; f
Zaú_p U
mUf
[sgU
Zg f
dsU
vUm
Ugfã Ujq
f0
Trang 93 / 208 ThikI kGd D iHd VHDL Trang 94 / 208 ThikI kGd D iHC 2
DY HC6: 3N9: 49t DY HC6: 3N9: 49t
Lu ú_ Tú
afùfUúft Z[gãghnae V Yf daYEGD8:HHjgùfZ[ f
daY sel: IN INTEGER RANGE 0 TO 3;
dSZe m
UZ Zõ
kUS vId uZT[s VUZã SdSUúZTma g_ ff
t Z[gãghnaãp x, y: OUT STD_LOGIC);
UZa ZxYã UU Z Sf
daYVSZe mU
Z Zõ k hne
Sgãvj gft Z[gãpã U
END example;
ch S
Lu ú_ Tú
afùfUúf ZbUmUft Z[gãghn aãgd Sã UTSaY_ fd
aY_p ARCHITECTURE example OF example IS
búYfZfãkã US_õ UZUvfZ ã UU Z S ã[g n kãzYh[Uú_pfg f hn
BEGIN
_pã YfZ[ 8m UãUfú ZxYãkã USU mUft Z[gãgdSUvf
Z Yo
kU Zah[U
PROCESS (a, b, c, d, sel)
t YZbã egkdSUmUUZfã Y[ U
mUY[mfd[ f d U
BEGIN
E ( B Thi T Vò
LQ QY R
IF (sel=0) THEN
x<=a;
y<='0';
ELSIF (sel=1) THEN
x<=b;
y<='1';
ELSIF (sel=2) THEN
8i
VP6. 19. Mà
KP õP X I cK
bKâ
VOP
x<=c;
ns
50 100 150 200 250 300 350 400 450 500 550 600 ELSE
a
x<=d;
b
c END IF;
d END PROCESS;
sel 0 3 1
END example;
x
y HSg Z[T[
s VU
ZUmUX[WTm
aUm
afZ Z[ ZxYU vX[b-Xab n
aã UegkdS<[
mfd
gi Y ZSgUSãghnae W3)3 ZS
[ fcgú ZmU ZS
gUZak Z[e
W3)ã U
8i
VP+ 2 0 . K í âUlXPòVO ã[fd UeW3& fcgúk3 & f
daY Z[k3 Z[e
W3)ã Uã[f d UeW3
x h o õfã Y Z _ fT V s Z k3 & Z[eW 3 && Za U3 geW 3 & Igk y = (sel(0) AND sel(1)) OR (sel(0) AND y) OR (sel(1) AND y)
Z[ s UmUã Uf
úã UUg YUùbUZak Zx YV kã
9aãv _ fU
Zfe V YU m
UU Y6C9DG ãpã Uf Z UZ[ fd
úh TúYf
Zf(
LIBRARY ieee; f
dmZe V YUZf s e V Y M nY[mfd ZxYjmUã Z Z k23 M 1
USE ieee.std_logic_1164.all; [ã UU
phú Z SV [U
mUVwY((hn(*Vaãvk3eW&
ENTITY example IS
PORT (a, b, c, d: IN STD_LOGIC;
Trang 95 / 208 ThikI kGd D iHd VHDL Trang 96 / 208 ThikI kGd D iHC 2
DY HC7: 80 4 2 K 70 2 DY HC7: 80 4 2 K 70 2
ZS
[TmaUSH><C6A U
vfZ ã Uf
õad
S U
mUU
Z Y[ Y ZS
g Z n ZS
[Tm
a
3Q àWP* B9
7=1 _dE1A9
12 5
CONSTANT.
bZS
VHDL cung cù [ã[f Yã Y[ú[cgkfU
mUY[
mfdV [g ZxYféZ a-static):
Zt
SUõZcgS f d YUSH><C6 Z[s V YTs f daY_ fbZ US_pfg f
H><C6AhnK6G> 67A: CvU
wU gYU ùbU
mUUm
UZã f
Z[f bUm
UY[mf
d_ Uã Z
(PROCESS), s Ub Zf v ZxYfUf Zu<[mfd_ [US ZxY s ã Uã[ã
e
fSf
[U08DCHI6CIhn<:C:G>8
ã UãUf d U Z[ ffZzUEGD8:HH ;JC8I>
DC ZaUEGD8:9JG:fíY Y
8DCHI6CIhn<:C:G>
8U vf
Z nfan UUhnUvfZ ã Ue V Yfd
aYUú [g
EZqbf
am Ym UZaH>
<C6A n 23 Uagf23)+1 <[
mfd Z [tõ
a ZxYf
ZfY
_pã YfZ[ZaUfg t K6G>67A: nUUT UZU vf
Z ã Ue V YTs f
daY
h bã UU Z ã Ujq
f Z[_xbZ Y
m fbZ US_pfg f fd
aYEGD8:HH ;JC8I>
DC ZaUEGD8:9JG:
Zt
SUõZ ZmUúZZ Yã fcgú Z[ Z[gbZq
bYm ã Ufõ
aU YH><C6A
7.1. CONSTANT. IduZT[s VUZUvf ZfZxYTmahnf
Zamfe f YZb ZaUUvfZ egkd
S_õUZe
S[
CONSTANT ph Uh U
Zah[Uf
Z[f bU
mUY[
mfd_ Uã Z (b YUmUZUZ jq
fbZqbYm Ug[U Y 9aãv h[Ujqf bUm
UY[
mfd Z[fõa s
ã Uf Z UZ[ h [K6G>67A:
3nXPbX/ CONSTANT name : type := value;
E ) B B ã_e e f
daY_ fh
WUf
ad Zb
Zo
DhL/
20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 ns
CONSTANT set_bit : BIT := '1';
din 00 01 02 03 04 05 06
CONSTANT datamemory : memory := (('0','0','0','0'),
temp 0 1 2 3 4 5 6
('0','0','0','1'),
ones 0 1 2 3 4 5
('0','0','1','1'));
E BEGIN
PROCESS (din)
SIGNAL control: BIT := '0';
BEGIN
SIGNAL count: INTEGER RANGE 0 TO 100; temp <= 0;
SIGNAL y: STD_LOGIC_VECTOR (7 DOWNTO 0); FOR i IN 0 TO 7 LOOP
ThikI kGd D iHC 2 Page 97 / 208 Trang 98 / 208 ThikI kGd D iHC 2
DY HC7: 80 4 2 K 70 2 DY HC7: 80 4 2 K 70 2
EZqbf
am Ym USK6G>67A: n 0
3 Uagf
03)+1 8èYY[ Y Z f
d YZbUS Qg
YPcW <= :=
H><C6 Y[mf
d Z [f
õa ZxYf
Z f YZbã UU Zã Ujqf Z[_xbZ Y
WQW WP Bi gV[ e
Cj f [U
mU_õ
UZU
mU Bi gV[ f
ZxYf
[ UUT
Vok
E)B B V wxL V _N
L WQ YQeW
PhòV_R 8vf
Z nf
an UUf
dsf
an T _p C U T U Z f d
aY EGD8:HH
Khi c b ZfT[ nfUf
ZuY[mf
d Z[fõaã Uf
Z[f bU
ZtZjm
Uhn ZxYU
vfZxY FUNCTION, hay PROCEDURE
Tm
an ah Z[gbZq
bYm Vaf
duZT[
s VUZ fíY Y
ns
Hoò WP C b Zf ZxYfUf Zufd
aY_p C b ZffUf ZuY[
mfd_ [U
vfZ
50 100 150 200 250 300 350 400 450 500 550 600
tu f Y[mfd_ [U ZUvfZ V Y ã Ue V Yf d
aYVwY Zf [b
zU f f ZzU EGD8:HH theo c S_p
din 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
FUNCTION, hay PROCEDURE)
ones 0 1 2 1 2 3 1 2 3 2 3
S M WP Trong PACKAGE, ENTITY, hay Ch fd
aY _p f g f f d
aY
ARCHITECTURE. Trong PROCESS, FUNCTION, hay
8i
VP,(I :í âUlXPòVO fU
ENTITY, tù úUmUEDGI nU mU PROCEDURE
SIGNAL m Uã Z
Trang 99 / 208 ThikI kGd D iHd VHDL Trang 100 / 208 ThikI kGd D iHC 2
DY HC7: 80 4 2 K 70 2 DY HC7: 80 4 2 K 70 2
E ) C B M WTi
WQ -1 WHEN 2 => y<=c;
WHEN 3 => y<=d;
END CASE;
END PROCESS;
END not_ok;
/W
DH S E MG 5 .71 d MG
ENTITY mux IS
ARCHITECTURE ok OF mux IS
PORT ( a, b, c, d, s0, s1: IN STD_LOGIC;
BEGIN
y: OUT STD_LOGIC);
PROCESS (a, b, c, d, s0, s1)
END mux;
VARIABLE sel : INTEGER RANGE 0 TO 3;
BEGIN
ARCHITECTURE not_ok OF mux IS
sel := 0;
SIGNAL sel : INTEGER RANGE 0 TO 3;
IF (s0='1') THEN sel := sel + 1;
BEGIN
END IF;
PROCESS (a, b, c, d, s0, s1)
IF (s1='1') THEN sel := sel + 2;
BEGIN
END IF;
sel <= 0;
CASE sel IS
IF (s0='1') THEN sel <= sel + 1;
WHEN 0 => y<=a;
END IF;
WHEN 1 => y<=b;
IF (s1='1') THEN sel <= sel + 2;
WHEN 2 => y<=c;
END IF;
WHEN 3 => y<=d;
CASE sel IS
END CASE;
WHEN 0 => y<=a;
END PROCESS;
WHEN 1 => y<=b;
END ok;
Trang 101 / 208 ThikI kGd D iHd VHDL Trang 102 / 208 ThikI kGd D iHC 2
DY HC7: 80 4 2 K 70 2 DY HC7: 80 4 2 K 70 2
Zt
SUõZfZ (UvfZ n_ fhù ã f
daYUmUZ nZí _ fbZqbf am ãSYã c tõ
a ENTITY dff IS
UZaU YH> <C6A eW VwY + , hn . UvfZ ZxYã UU Zùb Z Iv_ õ [ PORT ( d, clk: IN STD_LOGIC;
ch _ fbZq
bYm h [H><C6Aã UbZqbTs fd
aYEGD8:HH huhkbZ _ _ U Z q: BUFFER STD_LOGIC;
jqfbZqbYm Ug[U Y eW 23e
W ( ZaUãí Y[ú nã Sd SfZxYTm a [hn f
qbar: OUT STD_LOGIC);
fZzUh[UT[
s VUZ o kUèY ZxYTSaY[ nhù ã Z[e V YK6G> 67A:
END dff;
20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 ns
s0
c PROCESS (clk)
d
BEGIN
y
IF (clk'EVENT AND clk='1') THEN
50 100 150 200 250 300 350 400 450 500 550 600 ns
q <= d;
s0
s1
qbar <= NOT q;
a END IF;
b
END PROCESS;
c
d END not_ok;
y
/W
DH e MG
8i
VP,( :í âUlXPòVOKbKP c ---- Solution 2: OK -------------------
LIBRARY ieee;
E ) D D F F v R _d K
USE ieee.std_logic_1164.all;
ENTITY dff IS
PORT ( d, clk: IN STD_LOGIC;
q: BUFFER STD_LOGIC;
8i
VP,(K 466 qbar: OUT STD_LOGIC);
Trang 103 / 208 ThikI kGd D iHd VHDL Trang 104 / 208 ThikI kGd D iHC 2
DY HC7: 80 4 2 K 70 2 DY HC7: 80 4 2 K 70 2
BEGIN
PROCESS (clk)
BEGIN
IF (clk'EVENT AND clk='1') THEN
q <= d; 8i
VP,(
L 2ùK
PIãV
END IF; Th UZ [ ZS
[ãgd
S_ fnV Sf
ds H>
<C6A U
agf h
n_ fV Sf
ds K6G>
67A:
END PROCESS; (count2).
qbar <= NOT q; ns
20 40 60 80 100 120 140 160 180 200 220 240 260 280 300
huhkU mUY[
mfd_ [USU ZzYe UZ ã UV Y zU ff ZzUEGD8:HH ok nhù count2 0 1 2 3 4
tr ãúaY[mf
dUèUSc <[ mfdãzYUScTS de T f
d _ fUZg êã YZ YokU Za out2
mõ U
Zn _h[U ZxYU ZtZjmU
8i
VP,(L :í âUlXPòVO
Id
aYU mUZ( f
ZSkcTS
d23CDIc VwY)& Ts Yan
[EGD8:HH VaãvbZq
bftZ
LIBRARY ieee;
Z _ fT[gf
Z Uã YfZ[ãzY
USE ieee.std_logic_1164.all;
50 100 150 200 250 300 350 400 450 500 550 600 ns
d
ENTITY freq_divider IS
clk
Trang 105 / 208 ThikI kGd D iHd VHDL Trang 106 / 208 ThikI kGd D iHC 2
DY HC7: 80 4 2 K 70 2 DY HC7: 80 4 2 K 70 2
ks
gUge f ZSZYZ[f[thi g_nU
w ãú
_Tú aãaõ _pf
Z UZ[ _õU
Z_aY_g PROCESS (clk)
VARIABLE temp: BIT;
M fH> <C6Ae[Z_ fX[b-flop bù
fU Z[ na_ fbZq
bYm ã Uf
õad
Sfõ
[e UZgk
ti bUSft Z[g Zm
U Z[_ fbZq bYm ã YT júkdSEZq
bYm ã YT UvfZU Z BEGIN
xú kd
STs fdaYEGD8:HH ;JC8I> DC ZS
kEGD8:9JG: fZ Y n_ f ZS[Tm
a IF (clk'EVENT AND clk='1') THEN
ki g >;e[
YS :K:CI ZaU L6> IJCI>A temp <= a;
PROCESS (clk)
BEGIN
Trang 107 / 208 ThikI kGd D iHd VHDL Trang 108 / 208 ThikI kGd D iHC 2
DY HC7: 80 4 2 K 70 2 DY HC7: 80 4 2 K 70 2
8i
VP,)I 3bKUàK
P a I UeKIK
bKP c END IF;
END PROCESS;
50 100 150 200 250 300 350 400 450 500 550 600 ns
END two_dff;
d
clk /W
DH Sinh mx
R022
q
---- Solution 2: One DFF ----------------
qbar
LIBRARY ieee;
50 100 150 200 250 300 350 400 450 500 550 600 ns USE ieee.std_logic_1164.all;
d
clk
ENTITY dff IS
q
PORT ( d, clk: IN STD_LOGIC;
qbar
q: BUFFER STD_LOGIC;
8iVP,)I :í âUlXPòVOKbKP c qbar: OUT STD_LOGIC);
Trang 109 / 208 ThikI kGd D iHd VHDL Trang 110 / 208 ThikI kGd D iHC 2
DY HC7: 80 4 2 K 70 2 DY HC7: 80 4 2 K 70 2
/W
DH
M fbZqbYm H>
<C6Aã YT jú kd
S VwY )-14). Ch e V YU
mUH><C6A 8Zz
Z[ ZxYU vft Z[gbZ ã Ue V Y U agfU ã U ZS [Tm
a Z [g
7J;;:G VwY * T [hu vã UYm _ fY[
mfdhnU èYã UãU e V Y [f õ
[
VwY * B fH><C6A Y[ Y Z _ fK6G>67A: U vfZUèYã Uf Y Z[e
d YfdaY_pf g f
8i
VP,) 2ù í
U q7 ------ Solution 2: With SIGNALS only -------
ENTITY counter IS
3bK
P/
PORT ( clk, rst: IN BIT;
M fbZqbYm K6G>
67A:ã YT ã Uf S
adS VwY *-15). M fK6G>67A:UvfZ
count: BUFFER INTEGER RANGE 0 TO 7);
e
[ZU mUfZSZYZ[T[hubZq
bYm US v VwY + fõ[e U Zgk f[bUSf t Z[g
END counter;
Zm
UU VwY * hnY[ mfdUS v ZxYd[EGD8:HH VwY
Trang 111 / 208 ThikI kGd D iHd VHDL Trang 112 / 208 ThikI kGd D iHC 2
DY HC7: 80 4 2 K 70 2 DY HC7: 80 4 2 K 70 2
50 100 150 200 250 300 350 400 450 500 550 600 ns c := b;
rst
b := a;
clk
a := din;
count 0 1 2 3 4 5 6 7
END IF;
8i
VP,) :íquâUlXPòVOK
bKP c END PROCESS;
E ) D Thanh ghi d L
Q LY END shift;
/W
DH
/WD
H PORT ( din, clk: IN BIT;
dout: OUT BIT);
)K6G> 67A:ã Ue V Y ST hnUVwY & Igk Z[ sUmUT[ ã Ue V Y
END shift;
fd UUmUY[mf
dã UYm UZaU
ZzY ãúa Y Uf Z f Tfãgh[VagfVwY ) hn
k ff
ZzUh [V[ VwY , fcgúnU m
UX[b-flop s ã Ue
gkd
S gfdUmUY[
mfdf
bZqbUZõ
k[ f d UUSEGD8:HH ARCHITECTURE shift OF shift IS
Trang 113 / 208 ThikI kGd D iHd VHDL Trang 114 / 208 ThikI kGd D iHC 2
DY HC7: 80 4 2 K 70 2 DY HC7: 80 4 2 K 70 2
8m UT[ Y[ Y Zau c SU
mUZ ãpT UZ[_ Z Yf daYfZ ffdUf[b f V[-dout, 50 100 150 200 250 300 350 400 450 500 550 600 ns
dout
ENTITY shift IS
PORT ( din, clk: IN BIT; 50 100 150 200 250 300 350 400 450 500 550 600 ns
dout
LIBRARY ieee;
USE ieee.std_logic_1164.all;
Trang 115 / 208 ThikI kGd D iHd VHDL Trang 116 / 208 ThikI kGd D iHC 2
DY HC7: 80 4 2 K 70 2 DY HC7: 80 4 2 K 70 2
END shiftreg;
ENTITY shiftreg IS
PORT ( d, clk, rst: IN STD_LOGIC; ARCHITECTURE behavior OF shiftreg IS
q: OUT STD_LOGIC); BEGIN
END shiftreg; PROCESS (clk, rst)
VARIABLE internal: STD_LOGIC_VECTOR (3 DOWNTO
ARCHITECTURE behavior OF shiftreg IS 0);
END PROCESS; 8m U
c mõZã Uf YZ bnY[ Y ZS
g *X[
b-Xabã Ue
gkd
S
q <= internal(0); 50 100 150 200 250 300 350 400 450 500 550 600 ns
rst
3bK
P:
d
internal 0 1 0 1 0 1 0 1 0
S V Y_ fK6G> 67A: EZq
bYm f
õ[e U
Zgk f[bUSft Z[g Zm
Uã UfõadS
q
cho m fT[ VwY - . Z Y Z[Y[ mfdUS vd[EGD8:HH vã UU Zgk
ã _ fbad ff
daYVwY(& vU èYe
gkdSUm
UfZSZYZ[ 8i
VP,)L :í âUlXPòVO
-- Solution 2: With an internal VARIABLE ---
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY shiftreg IS
PORT ( d, clk, rst: IN STD_LOGIC;
q: OUT STD_LOGIC);
Trang 117 / 208 ThikI kGd D iHd VHDL Trang 118 / 208 ThikI kGd D iHC 2
DY HC8: 3P 97c4 9 P0 DY HC8: 3P 97c4 9 P0
X - T bZ bU
mUf
tZ[gh
naUSx
fx_S
f0
M ffZ[f _õUZe Uvf
Z ã UU Z[
Sn _ (f
ZnZbZ 0T j V [ghnT ã[g
khi B [cgS Z Y[ST ã[g Z[ hnT j V li gf
daY_õ
UZã UT[gV[ X = { x1 f jn(t)}
Zan f an jmUã Z
T bZbU
mUf
dõYf
Zm[USx
fx_S
f0
[h[Z
Quay lõ uZh fds _õ UZU fhi f ã UU Z[Sn_Z S[ã
a õ K[UUZ[Sã
aõ
Zf Z n ke Y[
zbUZzYf SfZ[f ffZ í 8ZzYf Se f
Z[f (b Z fZW
aZ Y
UmUZZ mUZSg8 fZf d
aY_x [f
d YK=9A b Z _õ UZVp
kU ZzYfSe f
Z UZ[
fdaYEGD8:HHh nbZ _õ UZf ZbU Z
zYf SUvfZf Z UZ[ fZW
aU ù
gfdzUZaU
tu f Z aU fZ bU úUùgfd
zU f g f Igk Z [
s _pf g fU vfZm bV YUZa
cú(a õ[aY[
U0fZ bh nfg f
8i
VP A Uba àVOPb
IZ xYf Z YU mUftZ[gUa Uh nUmUf
tZ [gd W
eWffd
aYbZ _õ UZV
pke j
gùfZ[
Ph _õ
UZfZbU
v(ãghn
ahn(ãgd
S0
trong PROCESS (tr Z [ftZ [gdW
eWfnã YT Z aU Z xYã Ue V Y ft Z[g
ghnaf
Z Zùf0nãghnafd
õYf Zm[Z[ f
õ[US_m
k L6> Iã Ue V Yf ZS kUZa Z> ; Z [f
tZ [gd We
Wfã Uj mUZ f d
õYf Zm
[
ghnaf
Z (0nãghnaf Ts Yan [ hi f õ [e ã UfZ[f bU Z
af d
õYfZm[ Z[fõaUSZ f Z YB f Zm Ufõ
[e ã Y
gdSf
Z Zùf0 nãgd
SbZtS Yan[ h f Z Uf U mUX[b-flop s gfdfdõYf Z
m[f[bfZWaV aã ve U
Zgk vf[ãgd S
gdSf
Z (0nfd
õYfZm
[f[bfZWaUS_m k c Sb Z _õ U
ZV pkf dõYf Zm[Z[ f
õ[
Ph _õ
UZVp
kUv0 M fã[gcgSfd Y[ scgS f[bZ í YbZm
b;HB n0h Ygk s fUUZ
gY nT ùf
kê_ f_õU
ZV pkn aUèYUvfZ ã U_xZ uZZamfZnZ _m kfd
õYfZm[Z Y
)ãghna0UaU dWe
Wfhnf
dõYf
Zm[f
[bf
ZWa ã[g nkZxYb Zú[gx gxfZg [KuU vZ[gf
d YZ b ãUT [fnUmU_õ
UZ
ãgdS
0fdõYfZm
[Z[ fõ[ fZ
SZY Z
[ Z 0T ã_ gf
Z[f fZWabZ íYbZm
b;HB fZu_p Yg UvfZfd
sVn[Zí bZ Uf
õbZí _ U Z[g [Z íeah[bZ í Yb
ZmbfZxYfZ Y
TùfUúU
mUX[b-Xabãg _ fdaYbZ n kU m
Uft Z[gUaU hnd
WeW
fbZú
[ã U f
n [h[UmUX[
b Xabã fZ UZ[ h[Uã[g Z[
ThikI kGd D iHC 2 Page 119 / 208 Trang 120 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC8: 3P 97c4 9 P0
IdsZ uZfd
s U mUX[
b-flop n _ b Z _õ U
ZVpk8mUãgh n
af Ts Y a n[USbZ output <= <value>;
nknU m
UftZ [gUaUh ndWeWf8mUf
tZ [g nkã U [h[U m
U;[b-flop. M fãg nx_state <= state1;
hnaZ mUTsf daY nf dõYf Z
m[f[bfZ
Wa gd SVgk Zù
fUSbZ n knf dSYfZm
[ ELSE ...
hi f õ[ j okV YU Z ab Z _õ UZVpkn kfSU e V YU ùgf
dzUEGD8:HH END IF;
Trong cùgf
dzUUSEGD8:HHU Z
zYf SUafZ e e V YUmUU
og Zf g f Z WHEN state1 =>
l Z> ; L6>I 86H: ADDE IF (input = ...) THEN
Z
gx _ gf
Z[f USb
Z _õ
UZV
pke Z e
Sg0 output <= <value>;
nx_state <= state2;
PROCESS (reset, clock)
ELSE ...
BEGIN
1. L M ) 04 END IF;
Trang_thai_hien_tai <= Trang_thai_0 ;
1. EH D 4 G EH D ) 04 WHEN state2 =>
Trang_thai_hien_tai <= Trang_thai_tiep_theo;
END IF ; IF (input = ...) THEN
END PROCESS ; output <= <value>;
nx_state <= state2;
BpU Zd S ãok nd
ùfã
íY [
ú CvU
ZUZ S_ ff
tZ [gdWe
Wfã YT It Z
[gd W
eWf ELSE ...
nke j
mUã ZfdõYfZm[ Z[ãgUSZ th Y e
Sgãv n gfd ã YT f
dõYfZm[ END IF;
ti bf
ZWafõ[e V í Yã xYZ hnã Sd
SãgdSUSb Z _õ U
ZVpkfd
õYfZm
[Z[ ...
tõ[
END CASE;
END PROCESS;
Trang 121 / 208 ThikI kGd D iHd VHDL Trang 122 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC8: 3P 97c4 9 P0
aõ _p ão
kUèYd
ùfãí Y[
ú hn ve f
Z UZ[ (U
xYh[UU
ZtZ0 CASE pr_state IS
WHEN state0 =>
<m Y[mfdUZaãgdS
Thi f bfd
SYfZm
[f[bf
ZWa IF (input = ...) THEN
output <= <value>;
SLW
Mr VRP
nMGR
HWIcho kiu
SRHI
tRt
nx_state <= state1;
9 [ã
okn Z
gx _ gZ
anU
Z Zh [gf
Z[f 0 ELSE ...
TYPE state IS (state0, state1, state2, state3, ...); nx_state <= state3;
Trang 123 / 208 ThikI kGd D iHd VHDL Trang 124 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC8: 3P 97c4 9 P0
8i
VP A àVO PbKI ù í
U234 PROCESS (pr_state)
BEGIN
BpK=9AU èYY[ Y Z Zgx _ gUSf Z[f _ g Id aYãv0 [gV [g [f
CASE pr_state IS
se jgùfZ[ VwY 12, thi f USph _õ UZVp ke f VwY ,ã VaY()
thi f USbZ _õ U
Zf Zb_õ UZf Zb e jgù
fZ[ f VwY(+ (/ 9aU v& WHEN zero =>
fdSYfZm
[s e YUS
UfZSZYZ[T Y nPaY210 ] = 4. count <= "0000";
nx_state <= one;
Bpf
Z[f e Z e
Sg0
WHEN one =>
-------------------------------------------------
count <= "0001";
LIBRARY ieee;
nx_state <= two;
USE ieee.std_logic_1164.all;
WHEN two =>
-------------------------------------------------
count <= "0010";
ENTITY counterBCD IS
nx_state <= three;
PORT ( clk, rst: IN STD_LOGIC;
WHEN three =>
count: OUT STD_LOGIC_VECTOR (3 DOWNTO 0));
count <= "0011";
END counterBCD;
nx_state <= four;
-------------------------------------------------
WHEN four =>
ARCHITECTURE state_machine OF counterBCD IS
count <= "0100";
TYPE state IS (zero, one, two, three, four,
nx_state <= five;
five, six, seven, eight, nine);
WHEN five =>
SIGNAL pr_state, nx_state: state;
count <= "0101";
BEGIN
nx_state <= six;
------------- Phan mach day: -----------------
WHEN six =>
Trang 125 / 208 ThikI kGd D iHd VHDL Trang 126 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC8: 3P 97c4 9 P0
8i
VP (:í âUlXPòVOKI ù í
U234 PROCESS (rst, clk)
BEGIN
EjM <cb òWP QcRT QoLTR
IF (rst='1') THEN
=uZ* ne íã Z[US ;HB ãí Y[
ú = f Z YUv(fd
õYfZm
[0fd
õYfZm
[6 hn pr_state <= stateA;
trõYf
Zm[7 Bm
kbZú
[UZgk f
dõYf
Zm[ Z[ Z ã UV3 hnãgd S_aY_g n ELSIF (clk'EVENT AND clk='1') THEN
j3S Z[_mk fd
õYfZm
[6ZaUj3T Z[_m k f
dõYf
Zm[7 pr_state <= nx_state;
END IF;
END PROCESS;
---------- Phan mach to hop: -----------------
PROCESS (a, b, d, pr_state)
Trang 127 / 208 ThikI kGd D iHd VHDL Trang 128 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC8: 3P 97c4 9 P0
BEGIN
CASE pr_state IS
WHEN stateA =>
x <= a;
IF (d='1') THEN nx_state <= stateB;
ELSE nx_state <= stateA;
END IF;
WHEN stateB => 8i
VP + A UàK
PS 8i
VP + A UàK
PS
x <= b;
IF (d='1') THEN nx_state <= stateA;
gf
Cù d
zU Z f
daYZuZ.,(e nã[f YUSf
Z[f [g(
Trang 129 / 208 ThikI kGd D iHd VHDL Trang 130 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC8: 3P 97c4 9 P0
Zm
U ZS
gVgk Zùfãv njgù
fZ[ f
t Z[gfd
gYY[SfW_b It Z[g nke U
vf mU CASE pr_state IS
d Y gfd ãgdSUS_m k8ZUZaU
mUY[mf
dUZgk f
ZnZãgd S Z[Z[Uve fZS
k WHEN stateA =>
ã[e [ UaU temp <= a;
IF (d='1') THEN nx_state <= stateB;
EjM 8ZzYfSe Zu õ[fZ[f UShtV .( Igk Z[
s ão
kU ZzYfS
ELSE nx_state <= stateA;
mu ãgdSnã YT U ZfZSkã[ Z[U
ve [ f
ZSkã[UaU KuhkfdaYhtV
n
kUZzYf
Se fZ[f f
ZWa [g( END IF;
WHEN stateB =>
----------------------------------------------
temp <= b;
library IEEE;
IF (d='1') THEN nx_state <= stateA;
use IEEE.STD_LOGIC_1164.all;
ELSE nx_state <= stateB;
----------------------------------------------
END IF;
ENTITY VD_FSM2 IS
END CASE;
PORT ( a, b, d, clk, rst: IN BIT;
END PROCESS;
x: OUT BIT);
END VD_FSM2;
END VD_FSM2;
----------------------------------------------
----------------------------------------------
ãokU
ZzYfSf
ZùkUv(X[
b Xabã Ue V Y _ fU
m[ã _pZamf
dõYf
Zm[US
ARCHITECTURE VD_FSM2 OF VD_FSM2 IS
_m
k_ fUm
[ã gf d ãgd
S
TYPE state IS (stateA, stateB);
Trang 131 / 208 ThikI kGd D iHd VHDL Trang 132 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC8: 3P 97c4 9 P0
B _xbZ Y fcgúã UU
ZdSf
daYZuZV [ão
k0 BpUS_m
kã Uf
Z[f Ze
Sg0
----------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.all;
----------------------------------------------
ENTITY Bo_doan_xau IS
PORT ( d, clk, rst: IN BIT;
q: OUT BIT);
END Bo_doan_xau;
8i
VP ,:í âUlXPòVOK
PW hL (
--------------------------------------------
EjM 2 YQc QRWL
Q R ARCHITECTURE state_machine OF Bo_doan_xau IS
TYPE state IS (zero, one, two, three);
8ZzYfS_g fZ[f _ f_õU
Z_nãghna ng YT[f [f
[bhnãgd
Sn Z[
ãgUvjgo
fZ[ UZg[ n&fd
aYU
mUf
d YZbU w õ[ SIGNAL pr_state, nx_state: state;
BEGIN
ZuZf
dõYfZm
[US_m
kã UU Zd Sf daYZuZ. ão kU
ZzYf
SUv*f
dõYf
Zm[hn
U
ZzYfScgk Unfd
õYfZm
[zero, one, tow, three. --------- Phan mach day: --------------------
PROCESS (rst, clk)
IdSYf
Zm[& nf
dõYf
Zm[UZ ãgf [
s
BEGIN
IdSYf
ZS[ nfdSYf
Zm[ãpUv hnUZ 1 th (
TrõYf
Zm[( nf
dõYf
Zm[ãpUv hnãSYU Z fZ) IF (rst='1') THEN
TrõYf
Zm[) nf
dõYf
Zm[fZgã íUjo
g pr_state <= zero;
ELSIF (clk'EVENT AND clk='1') THEN
pr_state <= nx_state;
END IF;
END PROCESS;
---------- Phan mach to hop: ---------------
PROCESS (d, pr_state)
BEGIN
CASE pr_state IS
WHEN zero =>
q <= '0';
IF (d='1') THEN nx_state <= one;
8i
VP A àVO PbKI ùXPbP VK
Pú
Trang 133 / 208 ThikI kGd D iHd VHDL Trang 134 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC8: 3P 97c4 9 P0
q <= '1';
IF (d='0') THEN nx_state <= zero;
ELSE nx_state <= three;
END IF;
END CASE;
END PROCESS;
END state_machine;
--------------------------------------------
K fcgú_xbZ Ye Z e
Sg0
8i
VP Pi
VP àVOPbKIB 3
ão
kUZzYf
SfZù
kUv)U
Zãf
ZSaf
mU0
Ch Kk
WQ Q WP: U
Zã n
k_õ
UZU
v*f
dõYf
Zm[_ [f
dõYf
Zm[nãU
l bf
Z[Y[
S bf d
uZ 5
8i
VP .:í âUlXPòVOK
PW ù WbVVPV d Ch TRV 8ZabZq
bfùfUúf
Z[Y[S ã U bfd
uZfd Uã Uh[fs
v [ Y[
mfd Z VahkZ f Z YUvfZ V VnYã U [_ f
dSf
daYe
gfcgm
fd
uZTS V Y
Trang 135 / 208 ThikI kGd D iHd VHDL Trang 136 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC8: 3P 97c4 9 P0
Ch B WMKb N gfZ[f bZ f
Z Ye t
UZZaõ
fãr hnYf
daY Z[f
t count := 0;
hi ge
fSVTkã U tUZZaõf ELSIF (clk'EVENT AND clk='1') THEN
Yf
Z [ ãxYZ f e ,&=O gx Zaõ
fã Y count := count + 1;
IF (count = time) THEN
Bpf
Z[f 0
pr_state <= nx_state;
---------------------------------------------------------
count := 0;
---
END IF;
library IEEE;
END IF;
use IEEE.STD_LOGIC_1164.all;
END PROCESS;
ENTITY Bodk_den_giao_thong IS
----------- Phan mach to hop: ----
PORT ( clk, stby, test: IN STD_LOGIC;
PROCESS (pr_state, test)
r1, r2, y1, y2, g1, g2: OUT STD_LOGIC);
BEGIN
END Bodk_den_giao_thong;
CASE pr_state IS
-------------------------------------------------
WHEN RG =>
ARCHITECTURE state_machine_be OF Bodk_den_giao_thong IS
r1<='1';r2<='0';y1<='0'; y2<='0'; g1<='0';
CONSTANT timeMAX : INTEGER := 2700;
g2<='1';
CONSTANT timeRG : INTEGER := 1800;
nx_state <= RY;
CONSTANT timeRY : INTEGER := 300;
IF (test='0') THEN time <= timeRG;
CONSTANT timeGR : INTEGER := 2700;
ELSE time <= timeTEST;
CONSTANT timeYR : INTEGER := 300;
END IF;
CONSTANT timeTEST : INTEGER := 60;
WHEN RY =>
TYPE state IS (RG, RY, GR, YR, YY);
r1<='1';r2<='0';y1<='0';y2<='1';g1<='0';
SIGNAL pr_state, nx_state: state; g2<='0';
SIGNAL time : INTEGER RANGE 0 TO timeMAX; nx_state <= GR;
BEGIN IF (test='0') THEN time <= timeRY;
-------------Phan mach day: ---- ELSE time <= timeTEST;
PROCESS (clk, stby) END IF;
VARIABLE count : INTEGER RANGE 0 TO timeMAX; WHEN GR =>
BEGIN r1<='0';r2<='1';y1<='0';y2<='0';g1<='1';
IF (stby='1') THEN g2<='0';
Trang 137 / 208 ThikI kGd D iHd VHDL Trang 138 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC8: 3P 97c4 9 P0
CZ fSfZù
ke Y;[b-XabãpV Yã f
Z UZ[ _õ
UZ n +U
m[0)U
m[U
Za gf
d
trõYf
Zm[Z[ f
õ[ (U
m[Uw õ [U
ZaT ã_
U vf
Z V VnYf
Zùk fcgú_xbZ Y ão
kfSf
Z UZ[ Y[
ú_f
Z[Y[
SfZ Ufã[
100 l
K fcgú_xbZ Yã UU
ZdSf
daYZuZV [ão
k0 8i
VP :í âUlXPòVOB 3 K
Pí ùS U I
U
Z ã Zaõ
fã YTuZf
Z Ye
fTk3&f
Wef3&0 EjM ) 2 YQc j
WQR
8ZzYf
S_g f Z[f _ f_õ
UZ_nf f
t Z[gUaU U ã Sd
Sft Z[g Z f
daY
ZuZV [ão
k0
Trang 139 / 208 ThikI kGd D iHd VHDL Trang 140 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC8: 3P 97c4 9 P0
END PROCESS;
----- Phan mach day cua may 2: ---
PROCESS(clk)
BEGIN
IF (clk'EVENT AND clk='0') THEN
pr_state2 <= nx_state2;
END IF;
END PROCESS;
---- Phan mach to hop cua may 1: -----
8i
VP 4àVOh
VP K
ãVàW PROCESS (pr_state1)
BEGIN
ão
k_õ
UZbZú
[Zaõ
fã Y U
ú(e USf
t Z[gU
CASE pr_state1 IS
BpU
Z íYf
duZ0
WHEN one =>
----------------------------------------- out1 <= '0';
ENTITY Bo_phat_tin_hieu IS nx_state1 <= two;
PORT ( clk: IN BIT; WHEN two =>
outp: OUT BIT); out1 <= '1';
END Bo_phat_tin_hieu; nx_state1 <= three;
----------------------------------------- WHEN three =>
ARCHITECTURE state_machine OF Bo_phat_tin_hieu IS out1 <= '1';
TYPE state IS (one, two, three); nx_state1 <= one;
SIGNAL pr_state1, nx_state1: state; END CASE;
SIGNAL pr_state2, nx_state2: state; END PROCESS;
SIGNAL out1, out2: BIT; ---- TMZ MOu T[ OaM Me ' -----
BEGIN PROCESS (pr_state2)
----- Phan mach day cua may 1: --- BEGIN
PROCESS(clk) CASE pr_state2 IS
BEGIN WHEN one =>
IF (clk'EVENT AND clk='1') THEN out2 <= '1';
pr_state1 <= nx_state1; nx_state2 <= two;
END IF; WHEN two =>
Trang 141 / 208 ThikI kGd D iHd VHDL Trang 142 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC8: 3P 97c4 9 P0
K fcgú_xbZ Y0
V [.fd
õYf Zm
[US_m
knkf
Zue YX[
b-Xabã Uk
sgUg Yh[U
mU [g_p
Zame T Y0
M f [g _ Y[S( [gfd
s n [g_pZamfiaZaff
daY_ ff
dõYf Zm[U ZU
v(T[f
Kuhkh[ X[b-Xab T[ff
ZuU
ZzYfSUvfZ _pZamã U -1)/2 trõYf
Zm[
Trang 143 / 208 ThikI kGd D iHd VHDL Trang 144 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
Barrel shifter
B e ae mZ ZxYVù ghnUvVùg
B U Y
B U Z[ SVù gU Zù
_f éZ
B ã[g Z[ _m kTm ZnY
B Z V [g [f [b
B U Zgk ã[e aYeaYe Sg n [f
[b
SSD
B bZm fft Z[g
B Z
Bpf
Z[f e Z e
Sg0
---------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.all;
---------------------------------------------
ENTITY barrel IS
PORT ( inp: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
shift: IN STD_LOGIC_VECTOR (2 DOWNTO 0);
outp: OUT STD_LOGIC_VECTOR (7 DOWNTO 0));
END barrel;
---------------------------------------------
ThikI kGd D iHC 2 Page 145 / 208 Trang 146 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
Trang 147 / 208 ThikI kGd D iHd VHDL Trang 148 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
B e
aemZU
vVù
g0 B cWQTQnWPM
LIBRARY ieee;
---- Bo so sanh co dau: ----------------
LIBRARY ieee; USE ieee.std_logic_1164.all;
x2 <= '1' WHEN a = b ELSE '0'; x2 <= '1' WHEN a = b ELSE '0';
x3 <= '1' WHEN a < b ELSE '0'; x3 <= '1' WHEN a < b ELSE '0';
END arc; END arc;
---------------------------------------- ----------------------------------------
K
K fcgú
0
8i
VP.):í âUlXPòVO ù W bVPK
jL 8i
VP.* :í â ù W bVPS
PlVOL
Trang 149 / 208 ThikI kGd D iHd VHDL Trang 150 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
LIBRARY ieee;
USE ieee.std_logic_1164.all;
---------------------------------------------
ENTITY Bo_cong_carry_ripple IS
GENERIC (n: INTEGER := 4);
PORT ( a, b: IN STD_LOGIC_VECTOR (n-1 DOWNTO 0);
cin: IN STD_LOGIC;
8i
VP.*2. Kí âKI ù W bVPS
PlVOL
s: OUT STD_LOGIC_VECTOR (n-1 DOWNTO 0);
cout: OUT STD_LOGIC);
Trang 151 / 208 ThikI kGd D iHd VHDL Trang 152 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
END Bo_cong_carry_ripple;
---------------------------------------------
ARCHITECTURE arc OF Bo_cong_carry_ripple IS
SIGNAL c: STD_LOGIC_VECTOR (n DOWNTO 0);
BEGIN
c(0) <= cin;
G1: FOR i IN 0 TO n-1 GENERATE
s(i) <= a(i) XOR b(i) XOR c(i);
c(i+1) <= (a(i) AND b(i)) OR
(a(i) AND c(i)) OR 8i
VP. A bùK
ùVOcarry look ahead
(b(i) AND c(i));
MõUZã UZaõ
fã YV Sfd
s UmU Zm
[[s
_ YWW
dSf
Whnbd
abS
YSf
W8ZtZãUã[_
END GENERATE; n
kãpn_UZaT U Y nkf
Z UZ[ h[fUã ZSZZí eah[T U Yf
d U
cout <= c(n);
Giúe (ãghna n(T[ fSTf
Zu(f
t Z[gbbd
abS
YSf
W hnYYWW
dSf
W ã Uf
tZ Z
END arc;
sau: g = a and b
---------------------------------------------
p = a or b
K fcgú_xbZ Y0
N gU
ZzYf
SjW
_ST nU
mUhW
Ufad
0 a = a(n- S S& 1T3T - T T&
f
ZuYbã Uf
tZ Z e
Sg0 p = p(n- b b&1Y3Y - Y Y&
Id
aYãv0 g(i) = a(i) and b(i)
AzU n
khW
Ufad Z e n
0U3U - U U& f
daYãv0
8i
VP.,:í âUlXPòVOK
PW ùK
ùVO XXT
MKIa c(0) = cin
BxD
xMGD
BPP
VKNN BHF
BE c(1) = c(0)p(0) + g(0)
Híã T U YU
Sdd
kaa S
ZWS
V*T[
fã UU
ZdSf
daYZuZ/. V [ão
k0 c(2) = c(0)p(0)p(1) + g(0)p(1) + g(1)
T UxYf
Z Uf
uZf
ds U
ZzYf
Sh[fU
Z í Yf
duZf
Z[f T U YU
Sdd
k aa S
ZWS
V*
T[
fZ eS
g0
Trang 153 / 208 ThikI kGd D iHd VHDL Trang 154 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
c(2) <= (cin AND p(0) AND p(1)) OR 3 1011 < 0011000 0 ZxYn
_Yu
(g(0) AND p(1)) OR 2 1011 < 0001100 0 ZxYn
_Yu
g(1);
1 1011 > 0000110 1 Tr UfSU
ZaUfT
0 0101 > 0000011 1 Tr UfSU
ZaUfT
c(3) <= (cin AND p(0) AND p(1) AND p(2)) OR
Trang 155 / 208 ThikI kGd D iHd VHDL Trang 156 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
[f
Giú Zt
UZf
Zgff
am0 temp1 := a;
temp2 := b;
gf
[sU Zgk e U
Z[Sf
ZnZe ( T[
fT YU
mUZf
Zs_ hn
aeS
g -1 bit 0 ,
IF (b=0) THEN err <= '1';
s TUZ[
Sh Y[ Ygks
Hae
mZe T UZ[
Sh[s UZ[
S C ge T U
Z[S Zí ZaUT Ye UZ[
SfZuYm ELSE err <= '0';
k3 hnf
ZSke TUZ[
ST YZ[gUSe T U Z[
Sh[e U
Z[SCY Uõ
[fZuk3& END IF;
Fgmf
duZf
Z UZ[ [
s fUU
Zaã Z[Zf ----- y(3): ---------------------------
IZ íYnVp
kT[
fUSke V ne
xTU
Z[SU
g[U Y IF (temp1 >= temp2 * 8) THEN
f
Z[t k T U Z[
SnkfZuU
ZzYfSUv(bZ íYbZm
b08ú(bZ í YbZm
bãgf ZU y(3) <= '1';
hi fZWa_pf g f0EZ íYbZm bf
Z Zù fUZf
Z UZ[ T YUog [ XbZ íY temp1 := temp1 - temp2*8;
bZmbf
Z (f Z UZ[ T YUúUog [Xhnaab ELSE y(3) <= '0';
Bpf
Z[f T U
Z[Se Z e
Sg0 END IF;
----- y(2): ---------------------------
RtR
Thit HFNO
Hg MGO
HWO:
IF (temp1 >= temp2 * 4) THEN
----- Phuong phap 1: step-by-step -------------------
y(2) <= '1';
LIBRARY ieee;
temp1 := temp1 - temp2 * 4;
USE ieee.std_logic_1164.all;
ELSE y(2) <= '0';
--------------------------------------------------
END IF;
ENTITY Bo_chia IS
----- y(1): ---------------------------
PORT ( a, b: IN INTEGER RANGE 0 TO 15;
IF (temp1 >= temp2 * 2) THEN
y: OUT STD_LOGIC_VECTOR (3 DOWNTO 0);
y(1) <= '1';
rest: OUT INTEGER RANGE 0 TO 15;
temp1 := temp1 - temp2 * 2;
err : OUT STD_LOGIC);
ELSE y(1) <= '0';
END Bo_chia;
END IF;
--------------------------------------------------
----- y(0): ---------------------------
ARCHITECTURE arc OF Bo_chia IS
IF (temp1 >= temp2) THEN
BEGIN
y(0) <= '1';
PROCESS (a, b)
temp1 := temp1 - temp2;
VARIABLE temp1: INTEGER RANGE 0 TO 15;
ELSE y(0) <= '0';
Trang 157 / 208 ThikI kGd D iHd VHDL Trang 158 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
Trang 159 / 208 ThikI kGd D iHd VHDL Trang 160 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
<f QR T WQ
------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.all;
------------------------------------------------------
ENTITY Bo_dieu_khien_may_bh IS
PORT ( clk, rst: IN STD_LOGIC;
nickel_in, dime_in, quarter_in: IN BOOLEAN;
candy_out, nickel_out, dime_out: OUT
STD_LOGIC);
END Bo_dieu_khien_may_bh;
------------------------------------------------------
ARCHITECTURE state_machine OF Bo_dieu_khien_may_bh IS
TYPE state IS (st0, st5, st10, st15, st20, st25,
st30, st35, st40, st45);
8i
VP. Pi
VP àVOPbKI ù ì S
P VUba bVPcVO SIGNAL present_state, next_state: STATE;
BEGIN
TrõYfZm
[& nfdõYfZm
[nf d
õYfZm
[ ZxY n
_ YuUúI ãv g ã Y [UWã U
g [hnaf
n[ Zaú _mke UZgk fd
õYfZm
[ã f d
õYfZm[+ g ã YV[ _Wã U ---- Lower section of the FSM (Sec. 8.2): ---------
g [hn
afn[ Zaú f
Zu_mkU
Zgk f[fdõYf
Zm[ &ZaU g ã YcgS
dfW
dfZu_m
ke
Trang 161 / 208 ThikI kGd D iHd VHDL Trang 162 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
Trang 163 / 208 ThikI kGd D iHd VHDL Trang 164 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
Trang 165 / 208 ThikI kGd D iHd VHDL Trang 166 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
fZ[f _õU
Zn kU
ZzYf
Se e V Y_ fhn
[T[ ã n_UmUT[ ã_ T[ jm
U ELSIF (count = 10) THEN
nh e T[
f Z ã UT[ gfd V [gT[ ftZfam [hnT[ f
dgYY[
S temp := (reg(1) XOR reg(2) XOR reg(3) XOR
reg(4) XOR reg(5) XOR reg(6) XOR
<f QR T K WQ WMÀU
R W RRY WQ
reg(7) XOR reg(8)) OR NOT reg(9);
--------------------------------------------- err <= temp;
LIBRARY ieee; count := 0;
USE ieee.std_logic_1164.all; reg(0) := din;
--------------------------------------------- IF (temp = '0') THEN
ENTITY Bo_nhan_du_lieu_nt IS data_valid <= '1';
PORT ( din, clk, rst: IN BIT; data <= reg(7 DOWNTO 1);
data: OUT BIT_VECTOR (6 DOWNTO 0); END IF;
err, data_valid: OUT BIT); END IF;
END Bo_nhan_du_lieu_nt; END IF;
--------------------------------------------- END IF;
ARCHITECTURE arc OF Bo_nhan_du_lieu_nt IS END PROCESS;
BEGIN END arc;
PROCESS (rst, clk) -------------------------------------------------
VARIABLE count: INTEGER RANGE 0 TO 10; K fquú_xbZ Y0
VARIABLE reg: BIT_VECTOR (10 DOWNTO 0);
VARIABLE temp : BIT;
BEGIN
IF (rst='1') THEN
count:=0;
reg := (reg'RANGE => '0');
temp := '0';
err <= '0';
data_valid <= '0';
ELSIF (clk'EVENT AND clk='1') THEN
IF (reg(0)='0' AND din='1') THEN
reg(0) := '1';
ELSIF (reg(0)='1') THEN
count := count + 1;
8i
VP. ):í âUlXPòVO ùVPVL T
IF (count < 10) THEN
reg(count) := din;
Trang 167 / 208 ThikI kGd D iHd VHDL Trang 168 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
9.7. B L
Q bW WP WP QdWQW RRY dout: OUT STD_LOGIC);
clk: ghn
aUSjgYUaU -------------------------------------------------
load: ghn
ajm
UZ K fcgú_xbZ g:
KWUfadVã U gf d ã YT f d
aYthanh ghi d UZdWY Z[aS V fd
õYf Zm[US
afZu
d [gã U õ bhn
afZSZYZ[VU ZfZWafZ f T[ fBH7 nTtfY ãgd S Zùfhnãg
dS nV . M [ Z[aSVfd
úõ [& f ZuT[
ff[bf ZWaã Ujgù fZ[ fõ
[ãgd SUS_ [
e V íYUSjgYã YZ Sau khi tù fUú.T[ fã UY [ã[ãgd Sfd õ[_ UfZùb
UZaã UZgk ã[f[bfZWa
Bpf
Z[f Ze
Sg0
LIBRARY ieee;
8i
VP. +:í âUlXPòVOK
PW ùK
PaV WVO WVO PcVPVô í
X
USE ieee.std_logic_1164.all;
------------------------------------------------- 9.8. C mL
QàR i
WUN
M* Q WQ
ENTITY Bo_chuyen_dl_ss_nt IS 8ZzYf SfZ[f f
dwU
Zí[h[HH9 e
WhW e WY_WfV[
ebS
k Híã US_õ U
Zã U
ch dSfd
aYZuZ/ CvTS aY_ (ãghn a nU hnef
ab hn_ fãgd Sn
PORT ( d: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
Vagf,0
& ãgd Sn
ke ã UZ[ fZf
ds HH9 Phú
[ãú
_Túad YX
dk = 1Khz
clk, load: IN STD_LOGIC;
Trang 169 / 208 ThikI kGd D iHd VHDL Trang 170 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
--------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.all;
--------------------------------------------------------
ENTITY Trochoiled7thanh IS
PORT ( clk, stop: IN BIT;
dout: OUT BIT_VECTOR (6 DOWNTO 0));
END Trochoiled7thanh;
8i
VP. ,A KIAA4 --------------------------------------------------------
Mõ U
ZUSU ZzYfSe fõad
S_ fe UZgk ã Y [
s fUfZW
aUZ[g [
_ ã YZ US ARCHITECTURE arc OF Trochoiled7thanh IS
U
m Uãaõ HH9 YfZ[ vUwf õadSe VU
ZUZgk UZ Yl bY[SUmUf
ZSZ CONSTANT time1: INTEGER := 4; -- Gia tri thuc te hien thi la
ZSg8ZzYf SU
vfZ T[gV[ cgkf
duZUS v Z eS
g0 80
CONSTANT time2: INTEGER := 2; -- Gia tri thuc te hien thi is
a -> ab -> b -> bc -> c -> cd -> d -> de -> e -> ef -> f -> fa -> a.
30
TYPE states IS (a, ab, b, bc, c, cd, d, de, e, ef, f, fa);
SIGNAL present_state, next_state: STATES;
SIGNAL count: INTEGER RANGE 0 TO 5;
SIGNAL flip: BIT;
BEGIN
------- Phan mach day cua arc : ------------
PROCESS (clk, stop)
BEGIN
IF (stop='1') THEN
present_state <= a;
ELSIF (clk'EVENT AND clk='1') THEN
8i
VP. Pi
VP àVOPb IF ((flip='1' AND count=time1) OR
(flip='0' AND count=time2)) THEN
Fgmf duZe V Y õ [ Z[U
vft Z[gHfabhn Z[ãv_õ
UZe fd õ[f
dõYf Zm[ShnUZ
UZaã Z[e fabjg Yf Zùbf
d õ [= fZ YUSU ZzYfSe Y[ õ[U m
Uf d
õYf Zm
[S count <= 0;
b, c, d , e, f trong khoúYfZ[Y[ Sf[
_W 3.&_ehn U mUf
dõYfZm[STTUU VVWW X present_state <= next_state;
XSnf [
_W (3)&_e ELSE count <= count + 1;
BpU
Z íYf
duZUSU
ZzYf
Se Z e
Sg: END IF;
Trang 171 / 208 ThikI kGd D iHd VHDL Trang 172 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
Trang 173 / 208 ThikI kGd D iHd VHDL Trang 174 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
END Bo_phat_tin_hieu;
-----------------------------------------------------
ARCHITECTURE arc OF Bo_phat_tin_hieu IS
TYPE states IS (zero, one, two, three, four, five, six,
seven);
SIGNAL present_state, next_state: STATES;
SIGNAL temp: STD_LOGIC;
8i
VP. .:í âUlXPòVOK
PW kK
P g
VAA4
BEGIN
9.9. B YQc j
WQR --- Phan mach day: ---
T _ fft Z[gUaU f
S_aY_g f Zgã U_ fft Z[gU
vVSYe vY Z fdaY PROCESS (clk)
ZuZ/(& K [Tn[f
am aõ[nkUZzYf SUvf
Z e V YbZ íYbZmb;HB ZaU BEGIN
bZ íYbZmbfd
gk fZ Y8ú(bZ íYbZmbãgã UUZzYfSf
duZTn
kV [ãok0
IF (clk'EVENT AND clk='1') THEN
Hg MGO
HWO2 8 present_state <= next_state;
wave <= temp;
END IF;
END PROCESS;
--- Phan mach to hop: ---
PROCESS (present_state)
BEGIN
8i
VP. 8i
VPLà
VOj
VOK
ãVX
Pb
CASE present_state IS
It Z [gUSZ uZ/( &UvfZ ã U_xZ uZ Z _ f;HB .fdõYfZm[H V YT WHEN zero => temp<='0'; next_state <= one;
ã_ f &ã 8ZzYfSUvfZfZ[f b_ fe vYT Y & Z [T[ ã_ 3 & WHEN one => temp<='1'; next_state <= two;
xung th Zù fh nT Y Z [T[ ã_ 3 jgYfZ Z S[ h h Z fd
aYZ uZ WHEN two => temp<='0'; next_state <= three;
/( & f Z UfZ[ã UT tõaevY nkfZ
uks
gUg*X[ b-Xa
b0fd
aYã vUv)Um
[ã g
WHEN three => temp<='1'; next_state <= four;
tr e ã_ )T[ f _ fU
m[ã gf de vY T [
f f
Z[f T f õaevY nkUZzY
WHEN four => temp<='1'; next_state <= five;
ta thi f f
ZW a [g(U f Ze Z eSg0
WHEN five => temp<='1'; next_state <= six;
-----------------------------------------------------
WHEN six => temp<='0'; next_state <= seven;
LIBRARY ieee;
WHEN seven => temp<='0'; next_state <= zero;
USE ieee.std_logic_1164.all; END CASE;
----------------------------------------------------- END PROCESS;
ENTITY Bo_phat_tin_hieu IS END arc;
PORT (clk: IN STD_LOGIC; -----------------------------------------------------
Trang 175 / 208 ThikI kGd D iHd VHDL Trang 176 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
8ZzYfSf
Z[f T bZm
fft Z[gf
ZWabZ í YbZm
bfd
gk f
Z Yh [U
og Z>
;Z count := count + 1;
sau: end if ;
END PROCESS;
---------------------------------------
END arc;
LIBRARY ieee;
---------------------------------------
USE ieee.std_logic_1164.all;
---------------------------------------
K fcgú_xbZ Y0
ENTITY Bo_phat_tin_hieu2 IS
PORT (clk: IN BIT;
wave: OUT BIT);
END Bo_phat_tin_hieu2;
---------------------------------------
ARCHITECTURE arc OF Bo_phat_tin_hieu2 IS 8i
VP. Kí âUlXPòVOàW jVO PM
WXP VOXPbX a
ìVPôVO
BEGIN
9.10. Thi T K WQ
PROCESS
Id
aYãaõ n
kUZzYf
Se f
Z[f U
mU_õ
UZT Z e
Sg0
VARIABLE count: INTEGER RANGE 0 TO 7;
BEGIN ROM
RAM v [TgeV [ghn
adSfm
UZd[
WAIT UNTIL (clk'EVENT AND clk='1');
ROM v [TgeV [ghn
adSZS[U
Z[g
CASE count IS
WHEN 0 => wave <= '0'; ROM (Read Only Memory): B Z UZ ãUhnYZ[0Híã USGDB ã UU ZdSfd
aY
ZuZ/() KuGDB nT Z U Z ãU ZxYU vft Z[gUaU U
Zo UZabZqbYZ[ v
WHEN 1 => wave <= '1';
ch U
vftZ[ghn aTgeãSU Zhnft Z[gdSnTgeV [g
WHEN 2 => wave <= '0';
WHEN 3 => wave <= '1';
Trang 177 / 208 ThikI kGd D iHd VHDL Trang 178 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
"10000000");
BEGIN
data <= memory(addr);
END rom;
---------------------------------------------------
K fcgú_xbZ Y0
8i
VP. (A KI
Bpf
Z[f GDB Z e
Sg0
---------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.all;
8i
VP. ):í âUlXPòVOPíS
í
---------------------------------------------------
ENTITY rom IS
RAM v [ã YTgehn
adSd
[sYT[f
0Híã USG6B h[ã YTgehn
adSd
[sYT[f
ã UfZ Z[ f
daYZuZ/(+
GENERIC ( bits: INTEGER := 8; -- # of bits per word
words: INTEGER := 8); -- # of words in the
memory
PORT ( addr: IN INTEGER RANGE 0 TO words-1;
data: OUT STD_LOGIC_VECTOR (bits-1 DOWNTO 0));
END rom;
---------------------------------------------------
ARCHITECTURE rom OF rom IS
TYPE vector_array IS ARRAY (0 TO words-1) OF
STD_LOGIC_VECTOR (bits-1 DOWNTO 0);
CONSTANT memory: vector_array := ( "00000000",
"00000010",
"00000100", 8i
VP. * 1 VOL T bK
P
"00001000",
CZ U ZzYf SfZù
kfd
s ZuZ G6B U vUmUTgeV [ghn aVS
fSQ[ TgeV [gd S
"00010000", VSfSQagfTgeãSU Zft Z[gU hnft Z[gUZabZq
bãUYZ[ Z[f t Z[gUZabZq
b
"00100000", YZ[ãUã Ujm U Z nYZ[fZuf
õ[_ [jgY s f[bfZW
aUSU f ZuV [gãghn a
"01000000", [ã U gf
(data_in) phú d tõ
[hfdtS
VVdhnV [gd SbZú[ã UãUf ãSU ZSVVd
Trang 179 / 208 ThikI kGd D iHd VHDL Trang 180 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c DY HC9: THI 91 9 O3 P 3c
Bpf
Z[f G6B e Z e
Sg0 ---------------------------------------------------
---------------------------------------------------------
K fcgú_xbZ Y0
library IEEE;
use IEEE.STD_LOGIC_1164.all;
---------------------------------------------------
ENTITY ram IS
GENERIC ( bits: INTEGER := 8; -- # of bits per word
8i
VP. +:í
t quâUlXPòVO 1 K
j VOL T cW IS
PbKVPI
words: INTEGER := 16); -- # of words in the
-------- memory---------- RAM v [ã YTgee
aYe
aY0
Trang 181 / 208 ThikI kGd D iHd VHDL Trang 182 / 208 ThikI kGd D iHC 2
DY HC9: THI 91 9 O3 P 3c
Trang 183 / 208 ThikI kGd D iHd VHDL ThikI kGd D iHC 2 Page 184 / 208
DY HC10: 4 g48 4 6 43 3 9 t 9h6 DY HC10: 4 g48 4 6 43 3 9 t 9h6
6E::A n_ ff d
uZT[s VU Zãí Y[ú bZ Z bh [U
mUk s
gUgf Z[f v Shn Z hnUv
38âá=710: 8â =74 =B 4 =7 ch U Y_xbZ Y 6E::Ag _ _ fU Z í Yf
duZe aõ f
Zúaf
an _n ZuZhn Y d S
PHú=< < C8Ã3C fZWaf
[sgUZg US? :9:8 CZ Y Zgkfã[_ UST T[ s dUZn k n ZxYZ fdã
t [Y[
úU mUT[gfZ U aY[
UEZ _ _ 6E::AU n[ãffdsU m
U_m kf
tZU m Zo USUxY
fk>7B hnUmUU
x Yfk ZmUfZt
UZZ bh [ v
10.1 T =7 D1= 3 3 8ú=< < 8 CA 3 1 4
8m UbZ _ _ Z fdU ZaU
mUh[_õU h l bf
duZã UU m
UUxYfkbZm
ffd
[ [
s fU Yn
k 10.1.7. IPLDS II (Intel Programmable Logic Devolopment System II)
U nYU v Z[gf
tZãSVõY Uvth Z tr U Za Z[g aõ
[h[_õ
UZ Zm
U ZSgsUvf
tZUõZ Ph _ _ > EA9H> >ã UU xYfk>f W gi i thi gã Z f dUZaU mUh[_õ UZZ :EA9
tranh mõZ_ fdaYf
Zf d Yh[_õU Z bf duZ [gUíTú USbZ _ _ n k nUZabZq bf Z[f f ZWa(bZ í YbZm b nbZ í YbZm
b
V YbZ í Yf duZãõ[e 7aaWS hnbZ í YbZm b [f sUmU Z f[Y[úU mUT[g
10.1.1. PALASM 2 (PAL ASSEMBLER)
th UaY[
U>EA9H> >e V YfZgfY[
ú[ãí giú :HEG:HHD> > MV. v nf ZgfY[ú[ã U
Ph _ _ E6A6HB (USU xYf
kBB>nbZ m _ f[sgUZg UZaU
mUh[_õ
UZ bfd
uZ bZmff
d[ T [ãõ[ZU8S[ X
ad[S vã UV Yã f Z UZ[ h[Ud zfY U mUftU
Ze fdaY
ok nT T[s VU Zf
Z Z th (Z f
dUZaUm
Uh[mõUZZaõ
fã Y ZxYã YT Z U mU UmUZn_ aY[UUSU mUh[_õUZVaU xYf k>f W sú jgù fI í Yf Z U m
UbZ m _
vi mõUZZ PAL c SUxYfkBB>h[_õUZZ EA6hnUm
Uh[_õUZUSUxYfkAMD. fd U>EA9H> >Un
[ãfã Uf d
aYU mU_mkf tZUSU xYf k>7B hnU mU_mkftZ Zm UU
v
10.1.2. AMAZE cùgZuZfZt
UZZ bã Ue V Y r _ h [U xYU bf duZUZah[_õ UZ
8xYf k=S
dd[
ebZmff
d[ bZ _ _ =:A9 ã Z f
dUZaU
mU ZmUZZnYe V Yh[_õUZ Ids ãok ngi [thi geí UU mUbZ _ _Z f
dU Zah[_õ
UZ bf
duZã eaõ f
Zúa
l bf
duZUSZ =:A9 e V YY[SaV[ fí Yf Z bZ _ _ EA6C Z YU èYUv n bfduZUZaUmUh[_õUZ CYan
[dSUw Z[gbZ _ _ USUmUU
xYfk Zm
Uã Ue ú
nh Yã[_ Zm UT[f=:A9 ZxYU v Zú Y SU Z UmUh[_õUZ p f
duZ Z YUv xuùfã Z f
dU ZaUmUh[_õUZ bfduZUSZ
khú Y [_ f dS [f Ycgm
fCYan[d
S=:A9 UwksgUgU m
UbZ í Yfd
uZ Yyhna
dõYf YUmUftU
Z HDE
ThikI kGd D iHC 2 Page 185 / 208 Trang 186 / 208 ThikI kGd D iHC 2
DY HC10: 4 g48 4 6 43 3 9 t 9h6 DY HC10: 4 g48 4 6 43 3 9 t 9h6
BúY10. 2 B cWQL
cLYQùWV V
8i
VP 1. 3bKvi màK
PXPãVUì
UPú
f
ú[UZ í Yf
duZ n kf d UZfhn afd
SYiW Thnã Y f n
[ Zaú ã Y[S Zbhn
afd
SY
web c SM[[j http://www.xilinx.com/webpack/index.htm . HS
g Z[UZzYfShn
afd
SY
iWTãvã Ud[f ZuU
ZzYf SU
Z H[YW;[W9ai aS Vhn Zù bhn a_è[f
s Ts V [
0
X : Hú K
PW UàK
PLWK
PhVPK
lVO a âV
XX : Hú K
PWVPì T
Wà UàK
PTX i
VP
Trang 187 / 208 ThikI kGd D iHd VHDL Trang 188 / 208 ThikI kGd D iHC 2
DY HC10: 4 g48 4 6 43 3 9 t 9h6 DY HC10: 4 g48 4 6 43 3 9 t 9h6
10.2.2. Tò V =N S
NL
bãzbhn
Nhù aT[gf YUSU
Z í Yf
duZ>
H:iW
TbS
Ufd
s _n ZuZi[Vaief
ZuU
ZíY
f
duZe Z [ã Y
8i
VP 3. Bi VOS
P ùVOK
P VO i
VP9
A5E54 13:.
8i
VP 5. Giao di VU IS
P jVOVP Pi
VP
T _WgU
ZtZUS>
H: ch WFile > New Project. H Y Q òR=N S
NLa QRW
8i
VP 4. cVPi
VP I S
PSP ùVO
Trang 189 / 208 ThikI kGd D iHd VHDL Trang 190 / 208 ThikI kGd D iHC 2
DY HC10: 4 g48 4 6 43 3 9 t 9h6 DY HC10: 4 g48 4 6 43 3 9 t 9h6
8i
VP 7. ChóVdevice 8i
VP 9. ChóVpackage
5. 8[
U hn
axValue ã[h [Device hnU
Z Device U
Zgk
sV Y 7. =p
k Zù zfCW
jfã e
SY_ Uf
[bf
ZWa
8i
VP 8. Ch device
Trang 191 / 208 ThikI kGd D iHd VHDL Trang 192 / 208 ThikI kGd D iHC 2
DY HC10: 4 g48 4 6 43 3 9 t 9h6 DY HC10: 4 g48 4 6 43 3 9 t 9h6
8i
VP 11. ChóVmodule thiíS
í 8i
VP 13. A jU éVOm cW I
HS
gãvU
Z W
jf0USe Z[ d
SUZaf
SUZ Y
yhn
ahn Y
ydSUSh[_õ
UZ0 AzU n
k_n ZuZe U
Zaf
SY[
SaV[ ã Tfãgh[fU
Z í Yf
duZ0
8i
VP 12. Khai bWVOm cW I
Ti bfZWaf
SUZ W jfjgùfZ[ TúYf
ZxYTm
ah bd
aWU
f_ [f
õae
SgU YU
Z X
[[e
Z
xong ph f
Z[t k TS ãg
8i
VP 14. Giao di V íK
P VO i
VP
Trang 193 / 208 ThikI kGd D iHd VHDL Trang 194 / 208 ThikI kGd D iHC 2
DY HC10: 4 g48 4 6 43 3 9 t 9h6 DY HC10: 4 g48 4 6 43 3 9 t 9h6
10.2.3. Tò V O
RU
NQ LQR Wò
YLQ _RVòL
Q Ki _ f
dSUzbZmb ZjW _f ZUZ í Yf
duZh[fãzYZSkeS[T YUmUZTù_ ãzbhna_ U
8ZWU HkfSjfZuUZ í Yf
duZ>
H:e fZ UZ[ h[U [_ f
dSIZ [Y
[S [_ f dSfkfZgU
=pk gUZ í Yf
duZhnf
[ ZnZU Z U
Zo [Zki U ZaUm
UUZo [bgfagf
bgf
. 8vth
ch Um
UUZo >D naUS>
8 IShn
a_ U6ee
[Y bS
USYWb[eã U
Z U Zo Z ZuZ: hnaUZ í Yfd
uZVn [ZSk Y hnbZ fZgUhnafUã n _ h[UUS_m kftZ fdaYcgm
fd
uZãSY [_ f dSf
Zu>H:UvZ[ fZ xf
dw Zùb Zm
k
N gUZ í Yf
duZh[fãzYU
zbZm
bfZu>
H:e ãmZVù
ghn
a_ U 8ZW
U Hkf
Sj Vù
gUZ
_ngjSZ Z ZuZ
Cu [U YUZzYf
Se U ZaVUZeSYfùfU
úU mUX
[Wã Z fd õbUZ í Yf
duZUZa>
8_ f
Um
UZff ZùfISU
Z > _bW_Wf9W e
[Y Z ZuZTs V [ Z[f Zù
kZuZ_n gjSZ mTs
cõZ>_bW_Wf9We[
Y nUZ í Yf
duZUSU ZzYfSãpZan f
ZnZhn ZxYT [
8i
VP 17. 3bK
P õVOP XPcVPNT
MKP VO i
VP
AzU n
kUSe UZ UZo Z[ d
SUZaU
ZzYf
SV VnYUZ S0U
ZzYfSãmZe U Zo hn
ax
AaU UZo n
a fUZ jaYe U v_n
gjSZf
dseíã UZo >
8/+&&j hn g õ
[0
8i
VP 18. 3bK
PVàXK
P VO i
VPK
PW3 4
8i
VP 16. 3bK
PObVK
PdV
Trang 195 / 208 ThikI kGd D iHd VHDL Trang 196 / 208 ThikI kGd D iHC 2
DY HC10: 4 g48 4 6 43 3 9 t 9h6 DY HC10: 4 g48 4 6 43 3 9 t 9h6
HS g Z[U
ZzYf
SfZS
afm
UZ f
ds _ fY
[SaV[ _ [Z[ d
SUZabZq
bfSf
Z UZ[ T Uf
[b 7okY [U ZzYf S Zù
bU ZgfbZú
[hn
aM8/+** hnU
Z Ed
aYd
S_ fU nU
Z í Yf
duZ
theo. dengiaothong s ã U õbhna>
8
8i
VP 19. L IK
PóV Pí
AzU nk_mkUZ í Yf
duZe f f [h [> 8Ts Y an
[fZxYcgSUS
TW õbAEI I [ão
k
f
ZuUZ í Yf
duZãp Z ã Uf Z[fT Ts Yan
[hnU ZzYf Sf
Z UZ[ T Uf[bf
ZWa n_
X[WU
vãgx[nW VX[W nknX
[W õbUZa>8 Zù abW e Z[ dSUSe eS
g0 8i
VP 21. NàXK
P VO i
VP
kjaY_n ZuZZ[ f
Sau khi chõ ZxYTma SãpZan f
ùfh[U õ
bUZa>
8
KnTo kY [fZuh [U
mUU
Zo ãpjm
Uã Zf
ds> 8e n_ fhtV h ã[g Z[ ãr Y
[Saf
ZxY
8i
VP 20. ChóV VOLV NT
MKP VO i
VP
8i
VP 22. 8WcV KVàXK
P VO i
VP
Trang 197 / 208 ThikI kGd D iHd VHDL Trang 198 / 208 ThikI kGd D iHC 2
DY HC10: 4 g48 4 6 43 3 9 t 9h6 DY HC10: 4 g48 4 6 43 3 9 t 9h6
Kufd
aYbZ _ _ nkãpZ fdUZa Y [V Yfù
fUúUmU[Z [ UíTú ZS
ke V Y f
Um
UU YaY[
UUZaã UmUTxU YfZSZYZ[X[
babVWU
aVWdWU
aVW
d
8i
VP 25. TàWVM
_WK
M
Trong Newsource ta ch Y
g _ [nHU ZW_S
f[Uf
ZSkhuK=9A_aVgW Z bZ f
ds
Lùkfs h[_õ UZf Z[f n9W _ W2bit hnUZ W jf
8i
VP 23. TàWmùXWR
MKK
PMUI K
8Z í Yf
duZZ[ d
S ZgYCWibd
aWU
fei[
lSd
Vfd
aY ZgY nkUZabZq
bUZzYf
STfãg
ch [Z [ _nfSãSYV Yã bfd
uZISh U Z >
8/+),j
8i
VP 24. Giao di VK
PóVTVPS V 8i
VP 26. ê g
VKPW K
PMUI K
Trang 199 / 208 ThikI kGd D iHd VHDL Trang 200 / 208 ThikI kGd D iHC 2
DY HC10: 4 g48 4 6 43 3 9 t 9h6 DY HC10: 4 g48 4 6 43 3 9 t 9h6
Ti bfUf
SUZU UZ W jfhnX
[[eZY
[ Y Z T Ufd
s hk njaYbZ ZS
[Tm
aTS Kuãok n_õ
UZã_ s ã YT (T[fs UmU Yy?hn USX[bXab f
Z Zùf [s _ U
ãg Z[ãv_n ZuZe Z[ dSY[
SaV[ fZ[f Z e
Sg0 USaUw YydSF [hn
aZS[Yyhn
a? USX[ bXabf
Z ZS
[=S
[Y yjgYU [h [ ZS
g
UwU mUYyEG:hn8AGbZú
[ [_ UfZù
bã v ZxYã Uf tUZUUf S [U
mUYyn k
v [ ZS
ghn [jg Y_Se
e
LùkVo
k [fSV Y Z6VVi[
dWU
wfZ[f bU
mUU
Zo hn
ahndSUS_õ
UZn
kfZuf
SVgY
l Z6VV>D_SdW
dfd
sfZSZU
xYU f
S f [ Z ZuZeS
g0
8i
VP 27. Giao di V PíS
í
AzU n
kfShn
aUm
UU Y aY
[UU
íTú hn ù
kdSU
mU [Z [ U f
Z[f K [Tn
[fb n
k 8i
VP 29. Schematic bù í
U
UZzYfSn
_ Ze S
g0
Sau khi k f [jaYf Zuf
SU Z UZo hnadSfí Y Yh [UmUUZo >D US>
8jU
/+),j
Nhù bhn aT[gf YS VVe
k_Ta f
dsfZSZUxYU Z ZuZf ds 7s f
dm[USe Z[ dS NhùbãzbU Zgfhna f YUZo >bgfZS
kUZo agf
bgfUS_õ
UZfZuZ[ dSUSe KtV fS
Um U_ UU ZabZq
bUZ [Z [ _nf SU IdaY8S f
WYad
[WefSUZ X[bXabhnfd
aY nhùbhn aU Zo MAMCQ,0
symbols ch X U bU
vã U_ fX[bXab? U
vY ybd
WeW
fhnUW SdU
Z S f [fSùkfZs
_
flipflop n S
8i
VP 30. ChóVK
PdV cW I
8i
VP 28. ThiíS
í K
PMUI K
Trang 201 / 208 ThikI kGd D iHd VHDL Trang 202 / 208 ThikI kGd D iHC 2
DY HC10: 4 g48 4 6 43 3 9 t 9h6 DY HC10: 4 g48 4 6 43 3 9 t 9h6
IShnaCWihnU
Z 6f fd
[TgfWCS_WnAD8 f
daY ZgY6f f
d[
Tute Value ta ch U Zo _nf
S 10.3. GI I THI D 8ú=< < <>45 B9
<9B5F52 13:
mu vã Zh f
ds>8/+),j fdaYhtV nkfSU
Z U Zo e US> 8f ù f Z[s ãoknU m
U
UZo >DUS>8 HSgãvfSUZ D K k njaY_ fU Zo [bgfUS_õ UZ hnfí Yf Z IdsfZfd YU v Z[gbZ _ _ _xbZ YhtV Z bZ _ _ 6U f
[hW=9A ão
kUèY n
th f
Zuf
S fUZ U m
UU Zo U
w õ[ ph _ _ _xbZ Yd ù
fV e V YKnM[[jãpU gYU ù
b(bZ _ _ _xbZ Y n
BaVWe[_e [_gSfadhn>
H:e[_gSf
adCZv_ Y[[f
Z[ge í Uh _ fbZ _ _ ãv n
MODELSIM, ph _ _ n k n_ fUxYU f
gkfh [UZa Z YS
[ãSYZUh Y x Y
VHDL hay VERILOG.
8i
VP 31. ChóVK
PdVK
PWPíS
í
gf[
sf Sfõ
a fZ h[ n _ h[U 8d
WSfSiad[Y [TdSd
kf Z h[ n kUvf
s n iad
f
daYf Z h[ n ke UZ SUmUãí h fZ[f ã _xbZ Y HS g Z[fõ
ajaYf Z h[
iad fZuT Uf[bfZW
a nUZzYfSe T[se aõ U
mUX[W_xU _xbZ Y 8a_b[WVWe[
Y
X
[We hnafZ h[ n k7 U f [b nf SUZõkUZ í Yfd
uZ_xbZ Y Gg e [
_gSf[
a
Cu [U Y g Z fcgú_xbZ Ye S[f
Se Z BaVWe [
_ã fu
_dSUmU [eS
[
8i
VP 32. Ki U I c g
VLK
P
VP
Hi 34. Giao di V WLM
TU
Trang 203 / 208 ThikI kGd D iHd VHDL Trang 204 / 208 ThikI kGd D iHC 2
DY HC10: 4 g48 4 6 43 3 9 t 9h6 DY HC10: 4 g48 4 6 43 3 9 t 9h6
7okY[fSTfãg_xbZ Yf Z _ fUZ í Yf
duZ_nfSãpf
Z[f e n9W UaVW
d)Q. Sau khi ch D f
ZuBaVWe
[_ ãpS
VVf
Z h[ n
khn
a ZgYLade
bSU
W0
Id UZffSf
õa X
aVW
dã U
Z SUm
UX[W_xbZ Y X[W
\ W
iXaVW
d hnãff
s n_abZaY
8i
VP 35. TàWN
WLM
K fZ bU
mUX
[W_xbZ Yhn afZ h[ Lad0Id
sfZSZU
xYU f
SUZ U
a_b[We
Sgãv
ch eagd
UWnVW
UaVW
d)Q. Z ZuZ0
8i
VP 36. VOd VK
P INT
MUlXPòVO
af
Tõ Z h[ _xbZ Y
0;[W
4CW
i4[
TdS
dkf
daYx [
TdS
dkCS
_WU
vfs niad U
Z D
Ch U
a_b[We
SgãvU
Z VaWAzU n
kfd
aYf
Z h[ iad
VUvf
Zs_X
[WVW
UaVW
d)Q.0
Trang 205 / 208 ThikI kGd D iHd VHDL Trang 206 / 208 ThikI kGd D iHC 2
DY HC10: 4 g48 4 6 43 3 9 t 9h6 DY HC10: 4 g48 4 6 43 3 9 t 9h6
BxbZ Y
0
bãzbU
Nhù Zgfhn
aX[WVW
UaVW
d)Q.f
daYf
Z h[ iad e Z[
sdSUSe e
Sg0
I í Yf f
SUZ :C n HSgãvf
SUZ T[gf YGg f dsf
ZSZU
xYU hnzU n
k
s jgù
fZ[ VõYe
aYUSU m
UY yhnahnd
S Z ZuZV [
0
Ti bfZW bU
o ta nhù ZgxfbZú
[hn aVW
UaVW
d)Q.f
daY ZgYiade bS
UWhnU
Z S
VV4S
VVf
a
iS hW zU n k_n ZuZe jgù fZ[ f
Zs_ ZgYLShW default
=uZ+15 k fcgú_xbZ Y
7o kY [f SU Z f t Z[gUSf Y Yyhna ã VW
UaVWdZaõfãxYf
SUZa Y
yhn
a:C n hn
UZaU mUY yhn aU w õ [n&ZSk fk KtV f SUZa>& n& > n hn>( n & ISn
_
Z e Sg0 Zù bU ZgfbZú[hnaVW
UaVW
d)Q.>f
SU Z X adU
W_nZuZjgùfZ[ ZgY;ad
UW
selected signal, ch hSgWn&&
Trang 207 / 208 ThikI kGd D iHd VHDL Trang 208 / 208 ThikI kGd D iHC 2