11
2 CẤU TRÚC PHẦN CỨNG HỆ NHÚNG
2.1 Các thành phần kiến trúc cơ bản
Hình2‐1:KiếntrúcđiểnhìnhcủacácchípVXL/VĐKnhúng
2.1.1 Đơn vị xử lý trung tâm CPU
Hình2‐2:CấutrúcCPU
NgườitavẫnbiếttớiphầnlõixửlýcủacácbộVXLlàđơnvịxửlýtrungtâmCPU
(CentralProcessingUnit)đóngvaitrònhưbộnãochịutráchnhiệmthựcthicácphép
tínhvàthực
hiệncáclệnh.PhầnchínhcủaCPUđảmnhiệmchứcnăngnàylàđơnvị
logictoánhọc(ALU–ArthimeticLogicUnit).NgoàirađểhỗtrợchohoạtđộngcủaALU
còncóthêmmộtsốcácthành
phầnkhácnhưbộgiảimã(decoder),bộtuầntự(sequencer)
vàcácthanhghi.
12
Bộgiảimãchuyểnđổi(thôngdịch)cáclệnhlưutrữởtrongbộmãchươngtrìnhthành
cácmãmàALUcóthểhiểuđượcvàthựcthi.Bộtuần tựcónhiệmvụquảnlýdòngdữ
li
ệutraođổiquabusdữliệucủaVXL.CácthanhghiđượcsửdụngđểCPUlưutrữtạm
thờicácdữliệuchínhchoviệcthựcthicáclệnhvàchúngcóthểthayđổinộidungtrong
quátrìnhhoạtđộngcủaALU.HầuhếtcácthanhghicủaVXLđềulàcácbộnhớđược
thamchiếu(mapped)vàhộinhậpvớikhuvựcbộnhớvàcóthểđượcsửdụngnhưbất
kỳkhuvựcnhớkhác.
CácthanhghicóchứcnănglưutrữtrạngtháicủaCPU.Nếucácnộidungcủabộnhớ
VXLvàcácnộidungcủacácthanhghitạimộtthờiđ
iểmnàođóđược lữugiữđầyđủ
thìhoàntoàncóthểtạmdừngthựchiệnphầnchươngtrìnhhiệntạitrongmộtkhoảng
thờigianbấtkỳ và cóthểtrởlạitrạng thái
củaCPUtrướcđó.Thựctế số lượngcác
thanhghivàtêngọicủachúngcũngkhácnhautrongcáchọVXL/VĐKvàthườngdo
chínhcácnhàchếtạoquiđịnh,nhưngvềc ơbảnchúngđề
ucóchungcácchứcnăng
nhưđãnêu.
Khithứtựbytetrongbộnhớđãđượcxácđịnhthìngườithiếtkếphầncứngphảithực
hiệnmộtsốquyếtđịnhxemCPUsẽlưudữ
liệuđónhưthếnào.Cơchếnàycũngkhác
nhautuỳtheokiếntrúctậplệnhđượcápdụng.Cóbaloạihìnhcơbản:
(1) Kiếntrúcngănxếp
(2) Kiếntrúcbộtíchluỹ
(3)
Kiếntrúcthanhghimụcđíchchung
Kiếntrúcngănxếpsửdụngngănxếpđểthựchiệnlệnhvàcáctoántửnhậnđượctừ
đỉnhngănxếp.Mặcdùcơchếnàyhỗtrợ
mậtđộmãtốtvàmôhìnhđơngiảnchoviệc
đánhgiácáchthểhiệnchươngtrìnhnhưngngănxếpkhôngthểhỗtrợkhảnăngtruy
nhậpngẫunhiênvàhạnchếhiệusuất
thựchiệnlệnh.
Kiếntrúcbộtíchluỹvớilệnhmộttoántửngầmmặcđịnhchứatrongthanhghitíchluỹ
cóthểgiảmđượcđộphứctạpbêntrongcủacấutrúcCPUvà
chophépcấuthànhlệnh
rấtnhỏgọn.Nhưngthanhghitíchluỹchỉlànơichứadữliệutạmthờinêngiaothông
bộnhớrấtlớn.
Kiếntrúcthanhghimụcđíchchungsửd
ụngcáctậpthanhghimụcđíchchungvàđược
đón nhận như mô hình của các hệ thống CPU mới, hiệnđại. Các tập thanh ghiđó
nhanhhơnbộnhớthườngvàdễdàngchobộbiênd
ịchxửlýthựcthivàcóthểđượcsử
dụngmộtcáchhiệuquả.Hơnnữagiáthànhphầncứngngàycàngcóxuthếgiảmđáng
kểvàtậpthanhghicóthểtăngnhanh.Nế
ucơchếtruynhậpbộnhớnhanhthìkiếntrúc
dựatrênngănxếpcóthểlàsựlựachọnlýtưởng;cònnếutruynh ậpbộnhớchậmthì
kiếntrúcthanhghisẽlàsựl
ựachọnphùhợpnhất.
Mộtsốthanhghivớichứcnăngđiểnhìnhthườngđượcsửdụngtrongcác kiếntrúc
CPUnhưsau:
13
Thanhghicontrỏngănxếp(stackpointer):
Thanhghinàylưugiữđịachỉtiếptheocủangănxếp.Theonguyênlýgiátrịđịachỉ
chứatrongthanhghicontrỏngănxếpsẽgiả
mnếudữliệuđượclưuthêmvàongănxếp
vàsẽtăngkhidữliệuđượclấyrakhỏingănxếp.
Thanhghichỉsố(indexregister)
Thanhghichỉsốđượcsửdụngđểlư
uđịachỉkhimodeđịachỉđượcsửdụng.Nócòn
đượcbiếttớivớitêngọilàthanhghicontrỏhaythanhghilựachọntệp(Microchip).
Thanhghiđịachỉlệnh/Bộđếmchương
trình(ProgramCounter)
Một trong những thanh ghi quan trọngnhất của CPU là thanh ghi bộ đếm chương
trình.Thanhghibộđếmchươngtrìnhlưuđịachỉlệnhtiếptheocủachươngtrìnhsẽ
được
CPUxửlý.MỗikhilệnhđượctrỏtớivàđượcCPUxửlýthìnộidunggiátrịcủa
thanhghibộđếm chươngtrìnhsẽtănglênmột.Chươngtrìnhsẽkếtthúckhithanhghi
PCcó
giátrịbằngđịachỉcuốicùngcủachươngtrìnhnằmtrongbộnhớchươngtrình.
Thanhghitíchlũy(Accumulator)
ThanhghitíchlũylàmộtthanhghigiaotiếptrựctiếpvớiALU,đượ
csửdụngđểlưu
giữcáctoántửhoặckếtquảcủamộtphéptoántrongquátrìnhhoạtđộngcủaALU.
2.1.2 Xung nhịp và trạng thái tín hiệu
TrongVXLvàcácvimạchsốnóichung,hoạtđộngcủahệthốngđượcthựchiệnđồng
bộhoặcdịbộtheocácxungnhịpchuẩn.Cácnhịpđóđượclấytrựctiếphoặcgiánti
ếp
từmộtnguồnxungchuẩnthườnglàcácmạchtạoxunghoặcdaođộngthạchanh.Để
môtảhoạtđộngcủahệthống,cáctínhiệudữliệuvàđiềukhiểnthườngđược
môtả
trạngtháitheogiảnđồthờigianvàmứctínhiệunhưđượcchỉratrongHình2‐3:Môtả
vàtrạngtháitínhiệuhoạtđộngtrongVXL
Hình2‐3:MôtảvàtrạngtháitínhiệuhoạtđộngtrongVXL
Mụcđíchcủaviệcmôtảtrạngtháitínhiệutheogiảnđồthờigianvàmứctínhiệulàđể
phântíchvàxácđịnhchuỗisựkiệnhoạtđộngchitiếttrongmỗichukỳbus.
Nhờviệc
môtảnàychúngtacóthểxemxétđếnkhản ăngđápứngthờigiancủacácsựkiệnthực
thitronghệthốngvàthờigiancầnthiếtđểthựcthihoạtđộngtuầnt
ựcũngnhưlàkhả
14
năngtươngthíchkhicósựhoạtđộngphốihợpgiữacácthiếtbịghépnốihaymởrộng
tronghệthống.Thôngthườngthôngtinvềcácnhịpthờigianhoạtđộngcũngnh
ưđặc
tínhkỹthuậtchitiếtđượccungcấphoặcquiđịnhbởicácnhàchếtạo.
Mộtsốđặctrưngvềthờigiancủacáctrạngtháihoạtđộngcơbảncủacáctínhi
ệuhệ
thốnggồmcónhưsau:
9 Thờigiantănghoặcgiảm
9 Thờigiantrễlantruyềntínhiệu
9 Thờigianthiếtlập
9 Thờigiangiữ
9 Trễcấmhoạtđộng
vàtrạngtháitreo(Tri‐State)
9 Độrộngxung
9 Tầnsốnhịpxunghoạtđộng
Thờigiantănghoặcgiảm
Hình2‐4:Môtảtrạngtháitínhiệulogictăngvàgiảm
Thờigiantăngđượcđịnhnghĩalàkhoảngthờigianđểtínhiệutăngtừ20%đến80%
mứctínhiệucầnthiết.Thờigiangiảmlàkhoảngthờigianđểtínhiệugiảmtừ
80%đến
20%mứctínhiệucầnthiết.
Thờigiantrễlantruyền:
Làkhoảngthờigiantíntừkhithayđổitínhiệuvàochotớikhicósựthayđổitínhiệuở
đầura.Đặctínhnàythườngdocấutạovàkhảnăngtruyềndẫntínhiệuvậtlýtronghệ
thốngtínhiệu.
Hình2‐5:Môtảtrạngtháivàđộtrễlantruyềntínhiệu
Thờigianthiếtlậpvàlưugiữ
Khoảngthờigiancầnthiếtđểtínhiệutríchmẫuđạttớimộttrạngtháiổnđịnhtrướckhi
nhịpxungchuẩnđồnghồthayđổiđượcg
ọilàthờigianthiếtlập.Thờigianlưugiữlà
15
khoảng thờigian cầnthiếtđểduytrìtínhiệu trích mẫuổnđịnhsau khixung nhịp
chuẩnđồnghồthayđổi.Thựcchấtkhoảngthờigianthiếtlậpvàthờigianlưugi
ữlàcần
thiếtđểđảm bảotín hiệuđượcghinhận chínhxác vàổnđịnhtrong quá trình hoạt
độngvàchuyểnmứctrạngthái.GiảnđồthờigiantrongHình2‐6:Thờigianthiếtlập
và
lưugiữminhhọathờigianthiếtlậpvàlưugiữtronghoạtđộngcủaTrigerD.
Hình2‐6:Thờigianthiếtlậpvàlưugiữ
Trongtrườnghợphoạtđộngchuyểntrạngtháitínhiệukhôngđồngbộvàkhôngđảm
bảođượcthờigianthiếtlậpvàlưugiữsẽcóthểdẫnđếnsựmấtổnđịnhhaykhôngxác
đị
nh mức tín hiệu trong hệ thống. Hiện tượng nàyđược biết tới với tên gọi là
metastabilit.ĐểminhhọachohiệntượngnàytrongHình2‐7môtảhoạtđộnglỗicủa
mộ
tTrigerkhicácmứctínhiệuvàokhôngthỏamãnyêucầuvềthờithiếtlậpvàlưu
giữ.
Hình2‐7:HiệntượngMetastabilittronghoạtđộngcủaTrigerD
Chukỳtínhiệu3trạngtháivàcontention
16
Hình2‐8:Môtảchukỳtínhiệu3trạngtháivàcontention
Độrộngxungvàtầnsốnhịpxungchuẩn
Hình2‐9:Độrộngvàtầnsốxungnhịpchuẩn
2.1.3 Bus địa chỉ, dữ liệu và điều khiển
Busđịachỉ
Busđịachỉlàcácđườngdẫntínhiệulogicmộtchiềuđểtruyềnđịachỉthamchiếutới
cáckhuvựcbộnhớvàchỉradữliệuđượclưugiữởđâutrongkhông gianbộnh
ớ.
TrongqúatrìnhhoạtđộngCPUsẽđiềukhiểnbusđịachỉđểtruyềndữliệugiữacác
khuvựcbộnhớvàCPU.Cácđịachỉthôngthườngthamchiếutớicáckhuvựcbộnhớ
hoặc
cáckhuvựcvàora,hoặcngoạivi.Dữliệuđượclưuởcáckhuvựcđóthườnglà8‐
bit(1byte),16‐bit,hoặc32‐bittùythuộcvàocấutrúctừngloạivixửlý/viđiề
ukhiển.
Hầuhếtcácviđiềukhiểnthườngđánhđịachỉdữliệutheokhối8‐bit.Cácloạivixửlý
8‐bit,16‐bitvà32‐bitnóichungcũngđềucóthểlàmviệctraođổi
vớikiểudữliệu8‐bit
và16‐bit.
Chúngtavẫnthườngđượcbiếttớikháiniệmđịachỉtruynhậptrựctiếp,đólàkhảnăng
CPUcóthểthamchiếuvàtruynhập
tớitrongmộtchukỳbus.NếuvixửlýcóNbitđịa
chỉtứclànócóthểđánhđịachỉđược2
N
khuvựcmàCPUcóthểthamchiếutrựctiếp
tới.Quiướccáckhuvựcđượcđánhđịachỉbắtđầutừđịachỉ0vàtăngdầnđến2
N
‐1.
Hiệnnaycácvixửlývàviđiềukhiểnnóichungchủyếuvẫnsửdụngphổbiếncácbus
dữliệucóđộrộnglà16,20,24,hoặc32‐bit.Nếuđánhđịachỉtheobyte
thìmộtvixửlý
16‐bitcóthểđánhđịachỉđược2
16
khuvựcbộnhớtứclà65,536byte=64Kbyte.Tuy
nhiêncómộtsốkhuvựcbộnhớmàCPUkhôngthểtruynhậptrựctiếptớitứclàphải
sửdụngnhiềunhịpbusđểtruy
nhập,thôngthườngphảikếthợpvớiviệcđiều khiển
phầnmềm.Kỹthuậtnàychủyếuđượcsửdụngđểmởrộngbộnhớvàthườngđược
biếttớivớikháini
ệmđánhđịachỉtrangnhớkhinhucầuđánhđịachỉkhuvựcnhớ
vượtquáphạmvicóthểđánhđịachỉtruynhậptrựctiếp.
Vídụ:CPU80286có24‐bitđịachỉs ẽchophépđánhđịa
chỉtrựctiếpcho2
24
byte(16
Mbyte)nhớ.CPU80386vàcácloạivixửlýmạnhhơncókhônggianđịachỉ32‐bitsẽcó
thểđánhđượctới2
32
byte(4Gbyte)địachỉtrựctiếp.
17
Busdữliệu
BusdữliệulàcáckênhtruyềntảithôngtintheohaichiềugiữaCPUvàbộnhớhoặccác
thiếtbịngoạivivàora.Busdữliệuđượcđiềukhiểnbởi
CPUđểđọchoặcviếtcácdữ
liệuhoặcmãlệnhthựcthitrongqúatrìnhhoạtđộngcủaCPU.Độrộngc ủabusdữliệu
nóichungsẽxácđịnhđượclượngdữliệucóthểtruyền
vàtraođổitrênbus.Tốcđộ
truyềnhaytraođổidữliệuthườngđượctínhtheođơnvịlà[byte/s].Sốlượngđường
bitdữliệusẽchophépxácđịnhđượcsốlượngbitcóthểlưutrữtrongmỗikhu
vực
thamchiếutrựctiếp.Nếumộtbusdữliệucókhảnăngthựchiệnmộtlầntruyềntrong1
μs,thìbusdữliệu8‐bitsẽcóbăngthônglà1Mbyte/s,bus16
‐bitsẽcóbăngthônglà
2Mbyte/svàbus32‐bitsẽcóbăngthônglà4Mbyte/s.Trongtrườnghợpbusdữliệu8‐
bitvớichukỳbuslàT=1μs(tứclàsẽtruyềnđược1byte/1chukỳ)thìsẽ
truyềnđược1
Mbytetrong1shay2Mbytetrong2s.
Busđiềukhiển
Busđiềukhiểnphụcvụtruyềntảicácthôngtindữliệuđểđiềukhiểnhoạtđộngcủahệ
thống.Thôngthường
cácdữliệuđiềukhiểnbaogồmcáctínhiệuchukỳđểđồngbộ
cácnhịpchuyểnđộngvàhoạtđộngcủahệthống.Busđiềukhiểnthườngđượcđiều
khiểnbởiCPUđểđồngb
ộhóanhịphoạtđộngvàdữliệutraođổitrêncácbus.Trong
trườnghợpvixửlýsửdụngdồnkênhbusdữliệuvàbusđịachỉtứclàmộtphầnhoặc
toànbộbusdữ
liệusẽđượcsửdụngchungchiasẻvớibusđịachỉthìcầnmộttínhiệu
điềukhiểnđểphânnhịptruynhậpchophépchốtlưutrữthôngtinđịachỉmỗikhibắt
đầu
mộtchukỳtruyền.Mộtvídụvềcácchukỳbusvàsựđồngbộcủachúngtrong
hoạtđộngcủahệthốngbusđịachỉvàdữliệudồnkênhđượcchỉratrongHình2‐10.
Đâylà
hoạtđộngđiểnhìnhtronghọviđiềukhiển8051vànhiềuloạitươngtự.
Hình2‐10:Chukỳhoạtđộngbusdồnkêch
2.1.4 Bộ nhớ
Kiếntrúcbộnhớ
Kiếntrúcbộnhớđượcchiaralàmhailoạichínhvàđượcápdụngrộngrãitronghầu
hếtcácChipxửlýnhúnghiệnnaylàkiếntrúcbộnhớvonNeumannvàHavard.
18
TrongkiếntrúcvonNeumannkhôngphânbiệtvùngchứadữliệuvàmãchươngtrình.
Cảchươngtrìnhvàdữliệuđềuđượctruynhậptheocùngmộtđường.Điềunàycho
phépđưadữliệuvàovùng
mãchươngtrìnhROM,vàcũngcóthểlưumãchươngtrình
vàovùngdữliệuRAMvàthựchiệntừđó.
Hình2‐11:KiếntrúcbộnhớvonNeumannvàHavard
KiếntrúcHavardtách/phânbiệtvùnglưumãchươngtrìnhvàdữliệu.Mãchươngtrình
chỉcóthểđượclưuvàthựchiệntrongvùngchứaROMvàdữliệucũngchỉcóthểlưu
vàtrao
đổitrongvùngRAM.Hầuhếtcácvixửlýnhúngngàynaysửdụngkiếntrúcbộ
nhớHavardhoặckiếntrúcHavardmởrộng(tứclàbộnhớchươngtrìnhvàdữliệutách
biệtnhưng
vẫnchophépkhảnănghạnchếđểlấydữliệuratừvùngmãchươngtrình).
TrongkiếntrúcbộnhớHavardmởrộngthườngsửdụngmộtsốlượngnhỏcáccontrỏ
đểlấydữliệ
utừvùngmãchươngtrìnhtheocáchnhúngvàotrongcáclệnhtứcthời.
MộtsốChipviđiềukhiểnnhúngtiêubiểuhiệnnaysửdụngcấutrúcHavardlà8031,
PIC,AtmelAVR90S.Nếusử
dụngChip8031chúngtasẽnhậnthấyđiềunàythôngqua
việctruy nhập lấy dữ liệura từ vùng dữ liệu RAM hoặctừ vùngmã chương trình.
Chúngtacómộtvàicontrỏđượcs
ửdụngđểlấydữliệuratừbộnhớdữliệuRAM,
nhưngchỉcóduynhấtmộtcontrỏDPTRcóthểđượcsửdụngđểlấydữliệuratừvùng
mãchương trình. Hình 2‐11 mô tả
nguyên lýkiến trúccủa bộ nhớ von Neumann và
Harvard.
ƯuđiểmnổibậtcủacấutrúcbộnhớHarvardsovớikiếntrúcvonNeumannlàcóhai
kênhtáchbiệtđểtruynhậpvàovùngbộnh
ớmãchươngtrìnhvàdữliệunhờvậymà
mãchươngtrìnhvàdữliệucóthểđượctruynhậpđồngthờivàlàmtăngtốcđộluồng
traođổivớibộxửlý.
19
Hình2‐12:Nguyênlýđiềukhiểntáchkênhtruynhậpbusđịachỉvàbusdữliệu
Bộnhớchươngtrình–PROM(ProgrammableReadOnlyMemory)
Vùngđểlưumãchươngtrình.CóbaloạibộnhớPROMthôngdụngđượcsửdụngcho
hệnhúngvàsẽđượcgiớithiệulầnlượtsauđây.
EPROM
Baogồmmộtmảngcáctransistorkhảtrình.Mãchươngtrìnhsẽđượcghitrựctiếpvàvi
xửlýcóthểđọcrađểthựchiện.EPROMcóthểxoá đượcbằngtiacựctímvàcóthể
được
lậptrìnhlại.CấutrúcvậtlýcủaEPROMđượcmôtảnhưtrongHình2‐13.
Hình2‐13:NguyênlýcấutạovàhoạtđộngxoácủaEPROM
20
BộnhớFlash
CũnggiốngnhưEPROMđượccấutạobởimộtmảngtransistorkhảtrìnhnhưngcóthể
xoáđượcbằngđiệnvàchínhvìvậycóthểnạplạichươngtrìnhmàkhông
cầntáchra
khỏinềnphầncứngVXL.Ưuđiểmcủabộnhớflashlàcóthểlậptrìnhtrựctiếptrên
mạchcứngmànóđangthựcthitrênđó.
Hình2‐14:SơđồnguyênlýghépnốiEPROMvớiVXL
Bộnhớdữliệu‐RAM
Vùngđểlưuhoặctraođổidữliệutrunggiantrongquátrìnhthựchiệnchươngtrình.
Hình2‐15:CấutrúcnguyênlýbộnhớRAM
CóhailoạiSRAMvàDRAM
21
Hình2‐16:CấutrúcmộtphầntửnhớDRAM
Hình2‐17:Nguyênlýghépnối(mởrộng)RAMvớiVXL
2.1.5 Không gian và phân vùng địa chỉ
2.1.6 Ngoại vi
Bộđịnhthờigian/Bộđếm
Hầuhếtcácchipviđiềukhiểnngàynayđềucóítnhấtmộtbộđịnhthờigian/bộđếmcó
thểcấuhìnhhoạtđộnglinhhoạttheocácmodephụcvụnhiều
mụcđíchtrongcácứng
dụngxửlý,điềukhiển.Cácbộđịnhthờigianchophéptạoracácchuỗixungvàngắt
thờigianhoặcđếmtheocáckhoảngthờigiancóthểlậptrình.
Chúngthườngđượcứng
22
dụngphổbiếntrongcácnhiệmvụđếmxung,đokhoảngthờigiancác sựkiện,hoặc
địnhchukỳthờigianthựcthicáctácvụ.Mộttrongnhữngứngdụngquantrọngcủ
abộ
địnhthờigianlàtạonhịptừbộtạoxungthạchanhchobộtruyềnthôngdịbộđanăng
hoạtđộng.Thựcchấtđólàứngdụngđểthựchiệnphépchiatầnsố
.Đểđạtđượcđộ
chínhxác,tầnsốthạchanhthườngđượcchọnsaochocácphépchiasốnguyênđược
thựchiệnchínhxácđảmbảochotốcđộtruyềnthôngdữliệuđượctạorachínhxác.
Chínhvìv
ậyhọviđiềukhiển80C51thườnghaysửdụngthạchanhcótầnsốdaođộng
là11.059thayvì12MHzđểtạoranhịphoạtđộngtruyềnthôngtốcđộchuẩn9600.
Hình2‐18:Bộđịnhthời/bộđếm8bitcủaAVR
Bộđiềukhiểnngắt
Ngắtlàmộtsựkiệnxảyralàmdừnghoạtđộngchươngtrìnhhiệntạiđểphụcvụthực
thimộttácvụhaymộtchươngtrìnhkhác.Cơchếng
ắtgiúpCPUlàmtăngtốcđộđáp
ứngphụcvụcácsựkiệntrongchươngtrìnhhoạtđộngcủaVXL/VĐK.CácVĐKkhác
nhausẽđịnhnghĩacácnguồntạongắtkhácnhaunhưngđềucó
chungmộtcơchếhoạt
độngví dụ nhưngắt truyền thôngnối tiếp, ngắtbộ định thời gian,ngắt cứng, ngắt
ngoài Khimộtsựkiệnyêucầungắtxuấthiện,nếu
đượcchấpnhậnCPUs ẽlưucất
trạngtháihoạtđộngchochươngtrìnhhiệntạiđangthựchiệnvídụnhưnộidungbộ
đếmchươngtrình(contrỏlệnh)cácnộidungthanh
ghilưudữliệuđiềukhiểnchương
trìnhnóichungđểthựcthichươngtrìnhphụcvụtácvụchosựkiệnngắt.Thựcchất
quátrình ngắt là CPU nhận dạngtín hiệu ngắ
t, nếu chấp nhận sẽ đưa con trỏ lệnh
chươngtrìnhtrỏtớivùngmãchứachươngtrìnhphụcvụtácvụngắt.Vìvậymỗimột
ngắtđềugắnvớimộtvectorng
ắtnh ưmộtcontrỏlưuthôngtinđịachỉcủavùngbộ
nhớchứamãchươngtrìnhphụcvụtácvụcủangắt.CPUsẽthựchiệnchươngtrình
23
phụcvụtácvụngắtđếnkhinàogặplệnhquaytrởvềchươngtrìnhtrướcthờiđiểmsự
kiệnngắtxảyra.Cóthểphânra2loạinguồnngắt:Ngắtcứngvà
Ngắtmềm.
Ngắtmềm
Ngắtmềm thực chất thực hiện một lời gọihàmđặcbiệt màđược kích hoạt bởi các
nguồnngắtlàcácsựkiệnxuấ
thiệntừbêntrongchươngtrìnhvàngoạivitíchhợptrên
Chipvídụnhưngắtthờigian,ngắtchuyểnđổiA/D,…Cơchếngắtnàycònđượchiểu
làloạithựchiệnđồngb
ộvớichươngtrìnhvìnóđượckíchhoạtvàthựcthitạicácthời
điểmxácđịnhtrongchươngtrình.Hàmđượcgọisẽthựcthichứcnăngtươngứngvới
yêucầungắt.
Các hàmđóthườngđượctrỏbởimộtvectorngắtmàđãđượcđịnhnghĩa
vàgáncốđịnhbởinhàsảnxuấtChip.VídụnhưhệđiềuhànhcủaPCsửdụngngắtsố
21
hexđểgánchongắttruynhậpđọcdữliệutừđĩacứngvàxuấtdữliệuramáyin.
Ngắtcứng
Ngắtcứngcóthểđượcxemnhưlàmộtlờigọihàmđặcbiệttrong
đónguồnkíchhoạtlà
mộtsựkiệnđếntừbênngoàichươngtrìnhthôngquamộtcấutrúcphầncứng(thường
đượckếtnốivớithếgiớibênngoàiquacácchânngắt).Ng
ắtcứngthườngđượchiểu
hoạtđộngtheocơchếdịbộvìcácsựkiệnngắtkíchhoạttừcáctínhiệungoạivibên
ngoàivàtươngđốiđộclậpvớiCPU,thườnglàkhông
xácđịnhđượcthờiđiểmkích
hoạt.KhicácngắtcứngđượckíchhoạtCPUsẽnhậndạngvàthựchiệnlờigọihàmthực
thichứcnăngphụcvụsựkiệnngắt
tươngứng.
Trongcáccơchếngắtkhoảngthờigiantừkhixuấthiệnsựkiệnngắt(cóyêucầuphục
vụngắt)tớikhidịchvụngắtđượcthựcthilàxácđịnhvà
tuỳthuộcvàocôngnghệphần
cứngxửlýcủaChip.
Bộđịnhthờichócanh–WatchdogTimer
Thôngthườngkhicómộtsựcốxảyralàmhệthốngbịtreohoặcchạyquẩn,CPUsẽ
không
thểtiếptụcthựchiệnđúngchứcnăng.Đặcbiệtkhihệthốngphảilàmviệcởchế
độvậnhànhtựđộngvàkhôngcósựcanthiệptrựctiếpthườngxuyênbởingười
vận
hành.Đểthựchiệncơchếtựgiámsátvàpháthiệnsựcốphầnmềm,mộtsốVXL/VĐK
cóthêmmộtbộđịnhthờichócanh.Bảnchấtđólàmộtbộđịnhthờiđặc
biệtđểđịnh
nghĩamộtkhungthờigianhoạtđộngbìnhthườngcủahệthống.Nếucósựcốphần
mềmxảyrasẽlàmhệthốngbịtreokhiđóbộđịnhthờichócanhsẽphát
hiệnvàgiúp
hệ thống thoát khỏi trạng tháiđó bằng cách thực hiện khởi tạo lại chương trình.
Chươngtrìnhhoạtđộngkhicóbộđịnhthờiphảiđảmbảoresetnótrướ
ckhikhungthời
gianbịviphạm.Khungthờigiannàyđượcđịnhnghĩaphụthuộcvàosựđánhgiácủa
ngườithực hiện phầnmềm,thiết lậpkhoảng thời gianđảmbảoch
ắcchắnhệthống
thựchiệnbìnhthườngkhôngcósựcốphầnmềm.
Cómộtsốcơchếthựchiệncàiđặtbộđịnhthờichocanhđểgiámsáthoạtđộngcủahệ
thốngnhư
sau:
24
Hình2‐19:Sơđồnguyênlýhoạtđộngcủabộđịnhthờichócanh
(a)(b)
Hình2‐20:Nguyênlýhoạtđộngbộđịnhthờichócanh
Bộđiềukhiểntruynhậpbộnhớtrựctiếp–DMA
DMA(DirectMemoryAccess)làcơchếhoạtđộngchophéphaihaynhiềuvixửlýhoặc
ngoạivichiasẻbuschung.Thiếtbịnàođangcó
quyềnđiềukhiểnbussẽcóthểtoàn
25
quyềntruynhậpvàtraođổidữliệutrựctiếpvớicácbộnhớnhưhệthốngcómộtvixử
lý.ỨngdụngphổbiếnnhấtcủaDMAlàchiasẻbộnhớchunggiữahai
bộvixửlýhoặc
cácngoạiviđểtruyềndữliệutrựctiếpgiữathiếtbịngoạivivào/ravàbộnhớdữliệu
củaVXL.
Truynhậpbộnhớtrựctiếpđượcsửdụngđểđ
ápứngnhucầutraođổidữliệuvàora
tốcđộcaogiữangoạivivớibộnhớ.Thôngthườngcácngoạivikếtnốivớihệthống
phảichiasẻbusdữliệuvàđược
điềukhiểnbởiCPUtrongquátrìnhtraođổidữliệu.
Điềunàylàmhạnchếtốcđộtraođổi,đểtăngcườngt ốc độvàloạibỏsựcanthiệpcủa
CPU,đặcbiệttrongtrườngh
ợpcầntruyềnmộtlượngdữliệulớn.Cơchếhoạtđộng
DMAđượcmôtảnhưtrongHình2‐21.Thủtụcđượcbắtđầubằngviệcyêucầuthực
hiệnDMAvớiCPU.
Saukhixửlý,nếuđượcchấpnhậnCPUsẽtraoquyềnđiềukhiển
buschongoạivivàthựchiệnquátrìnhtraođổidữliệu.SaukhithựchiệnxongCPUsẽ
nhậnđượcthôngbáo
vànhậnlạiquyềnđiềukhiểnbus.TrongcơchếDMA,cóhaicách
đểtruyềndữliệu:kiểuDMAchukỳđơn,vàkiểuDMAchukỳnhóm(burst).
Hình2‐21:NhịphoạtđộngDMA
DMAchukỳđơnvànhóm
TrongkiểuhoạtđộngDMAchukỳnhóm,ngoạivisẽnhậnđượcquyềnđiềukhiểnvà
truyềnkhốidữliệurồitrảlạiquyềnđiềukhiểnchoCPU.
TrongcơchếDMAchukỳ
đơnngoạivisaukhinhânđượcquyềnđiềukhiểnbuschỉtruyềnmộttừdữliệurồitrả
lạingayquyềnkiểmsoátbộnhớvàbusdữliệuchoCPU.
TrongcơchếthựchiệnDMA
26
cầncómộtbướcxửlýđểquyếtđịnhxemthiếtbịnàosẽđươcnhậnquyềnđiềukhiển
trongtrườnghợpcónhiềuhơnmộtthiếtbịcónhucầusửdụngDMA.
Thôngthường
kiểuDMAchukỳnhómcầnítdữliệuthôngtinđiềukhiển(overhead)nêncókhảnăng
traođổivớitốcđộcaonhưnglạichiếmnhiềuthờigiantruynhậpbus
dotruyềncảkhối
dữliệulớn.Điềunàycóthểảnhhưởngđếnhoạtđộngcủacảhệthốngdotrongsuốt
quátrìnhthựchiệnDMAnhóm,CPUsẽbịkhoáquyềntruynhậpb
ộnhớvàkhôngthể
xửlýcácnhiệmvụkháccủahệthốngmàcónhucầubộnhớ,vídụnh ưcácdịchvụ
ngắt,hoặccáctácvụthờigianthực
Chukỳrỗi(Cycle
Stealing)
TrongkiểunàyDMAsẽđượcthựchiệntrongnhữngthờiđiểmchukỳbusmàCPU
khôngsửdụngbusdođókhôngcầnthựchiệnthủtụcxửlýcấpphátquyềntruynhậ
p
vàthựchiệnDMA.
Hầuhếtcácvixửlýhiệnđạiđềusửdụnggầnnhư100%dunglượngbộnhớvàbăng
thôngcủabusnênsẽkhôngcónhiều thờigiandànhchoDMAth
ựchiện.Đểtiếtkiệm
vàtốiưutàinguyênthìcầncómộttrọngtàiphânxửvàdữliệus ẽđượctruyềnđixếp
chồngtheothờigian.NóichungkiểuDMAdạngbursthiệ
uquảnhấtkhikhoảngthời
giancầnthựchiệnDMAtươngđốinhỏ.TrongkhoảngthờigianthựchiệnDMA,toàn
bộbăngthôngcủabussẽđượcsửdụngtốiđavàtoàn
bộkhốidữliệusẽđượctruyềnđi
trongmộtkhoảng thờigianrấtngắn.Nhưng nhượcđiểm củanólànếudữliệu cần
truyềnlớnvàcầnmộtkhoả
ngthờigiandàithìsẽdẫnđếnviệcblockCPUvàcóthểbỏ
quaviệcxửlýcácsựkiệnvàtácvụkhác.ĐốivớiDMAchukỳđơnthìyêucầutruy
nhậpbộnhớ,truyềnm
ộttừdữliệuvàgiảiphóngbus.Cơchếnàychophépthựchiện
truyềninterleavevàđượcbiếttớivớitêngọiinteleavedDMA.KiểutruyềnDMAchukỳ
đơnphùhợpđểtruyềndữli
ệutrongmộtkhoảngthờigiandàimàcóđủthờigianđể
yêucầutruynhậpvàgiảiphóngbuschomỗilầntruyềnmộttừdữliệu.Chínhvìvậys ẽ
giảmbăngthôngtruy
nhậpbusdophảimấtnhiềuthờigianđểyêucầutruynhậpvà
giảiphóngbus.TrongtrườnghợpnàyCPUvàcácthiếtbịkhácvẫncóthểchiasẻvà
truyềndữliệunhưng
trongmộtdảibăngthônghẹp.Trongnhiềuhệthốngbusthực
hiệncơchếxửlývàgiảiquyếtyêucầutruynhập(trọngtài)thôngquadữliệutruyềnvì
vậycũ
ngkhôngảnhhưởngnhiềuđếntốcđộtruyềnDMA.
DMAđượcyêucầukhikhảnăngđiềukhiểncủaCPUđểtruyềndữliệuthựchiệnquá
chậm.DMAcũngthựcsựcóýnghĩ
akhiCPU đangphảithựchiệncáctácvụkhácmà
khôngcầnnhucầutruynhậpbus.
ICchứcnăngchuyêndụng
DAC/ADC
27
Hình2‐22:SơđồnguyênlýmạchchuyểnđổiDAC
Hình2‐23:SơđồnguyênlýmạchchuyểnđổiADC
VídụADC754A
Đặcđiểmkỹthuật:
9 ChếtạotheocôngnghệCMOS.
9 12‐bitvớigiaodiệntươngthíchvớicácloạiVXL/VĐK8,12và16‐bit.Cóthểlập
trìnhđểhoạtđộngchuyể
nđổi8bithoặc12bit.
9 TínhiệudữliệuratươngthíchvớichuẩnTTLvàghépnốithôngqualoạicổng
logic3trạngthái.
9 Dảigiátrịđiệnápđầuvàocóth
ểlựachọnnhờcấuhìnhgiátrịđiệntrởnộiđầu
vàođểnhậncácdảitínhiệu(0÷10)V,(0÷20)V,(‐5÷+5)V,và(‐10÷+10)V.
9 Cóthêmkhảnăngcungcấpnguồnthamchiếu
nộiVref=+10V.
9 Nguồncungcấpcóthểlà+5V,±12V,hoặc±15V
9 Thờigianchuyểnđổicựcđạilà25µsvớithờigiantruynhậpbuslà150ns.
28
Hình2‐24:SơđồnguyênlýcấutrúcADC1754A
Hình2‐25:SơđồbốtríchâncủaChipADC574A
Nguyênlýđiềukhiển
ADC574đượcđiềukhiểnbởicácchântínhiệunhưmôtảtrongbảngsau:
Bảng1:TínhiệuđiềukhiểnADC574A
Ký hiệu Định nghĩa Chức năng
CE (Pin 6)
Chip Enable
(active high)
Must be high (“1”) to either initiate a conversion or read output data. 0-1 edge may be used to
initiate a conversion.
CS (Pin 3)
Chip Select
(active low)
Must be low (“0”) to either initiate a conversion or read output data. 1-0 edge may be used to
initiate a conversion.
29
/
R
C (Pin 5)
Read/Convert
(“1” = read)
(“0” = convert)
Must be low (“0”) to initiate either 8- or 12-bit conversions. 1-0 edge may be used to initiate a
conversion.
Must be high (“1”) to read output data. 0-1 edge may be used to initiate a read operation.
AO (Pin 4)
Byte Address
Short Cycle
In the start-convert mode, AO selects 8-bit (AO= “1”) or 12-bit (AO= "0") conversion mode.
When reading output data in two 8-bit bytes, AO= “0” accesses 8 MSBs (high byte) and AO= “1”
accesses 4 LSBs and trailing “0s” (low byte).
12 / 8 (Pin 2)
Data Mode
Select
(“1” = 12 bits)
(“0” = 8 bits)
When reading output data, 12/8 = “1” enables all 12 output bits simultaneously. 12/8 = “0” will
enable the MSBs or LSBs as determined by the AOline.
(1) Thiếtlậpchếđộhoạtđộng:Modechuyểnđổi8‐bithay12‐bitđượcthiếtlậpbởi
tínhiệuA0.Tínhiệunàyphảiđượcchốttrướckhinhậnđượctínhiệulệnhbắ
t
đầuthựchiệnchuyểnđổi.
(2) Kíchhoạtquátrìnhchuyểnđổi:Bộchuyểnđổithựchiệnchuyểnđổikhinhận
đượctínhiệumệnhlệnhtíchcựctừchântínhiệuhoặc
CE/CS,hoặcR/Cvớiđiều
kiệncáctínhiệuđiềukhiểnkhácđãđượcxáclập.
(3) Trạngtháichuyểnđổi:TínhiệuđầuraSTATUSbáotrạngtháichuyểnđổihiện
hànhcủaADC;
thiếtlậpởmứccaonếuđangthựchiệnchuyểnđổivàởmức
thấpnếuđãhoànthành.Trongquátrìnhchuyểnđổicáctínhiệuđiềukhiểnbị
khoávàdữliệukhôngthểđượcđọc
vìcácđườngtínhiệurađượcchuyểnsang
trạngtháicaotrở.
(4) Đọcdữliệura:Quátrìnhđọcdữliệuracóthểđượcthựcthinếucáctínhiệu
điềukhiểnxáclậpở
trạngtháichophépđọcvàtínhiệuSTATUSởtrạngthái
thấp.Tuỳthuộcvàomodechuyểnđổiđượcthiếtlậpvàđịnhdạngdữliệuđọcra
bởitổhợptrạng
12 / 8 vàA0.
Cổngsongsongkhảtrình82C55A
82C55Alà m ột giao diện ngoại vicổng songsong khảtrìnhđượcchếtạo theo công
nghệCMOS.Nólàmộtthiếtbịngoạivivàorakhảtrìnhđamụcđ
íchvàcóthểđượcsử
dụngvớinhiềuloạiVXL/VĐKkhácnhau.82C55Acó24chânvàoraonChipđượcchia
rathành2nhóm,m ỗinhóm12chânvàcóthểđượcsửdụngtheo3chếđộhoạtđộng
khác
nhau.Hình2‐26môtảgiảnđồkhốichứcnăngcủachip82C55A.
30
Hình2‐26:Giảnđồkhốichứcnăngcủa82C55A
Chứcnăngvàýnghĩacủacácchânonchipcủa82C55AđượcmôtảtrongBảng2:Chức
năngcácchânonchipcủa82C55A.
Bảng2:Chứcnăngcácchânonchipcủa82C55A
Ký hiệu Kiểu Mô tả chức năng
VCC
VCC: The +5V power supply pin. A 0.1µF capacitor between VCC and GND is recommended for
decoupling.
GND
GROUND
D0-D7 I/O DATA BUS: The Data Bus lines are bidirectional three-state pins connected to the system data bus.
RESET I
RESET: A high on this input clears the control register and all ports (A, B, C) are set to the input
mode with the “Bus Hold” circuitry turned on
CS I
CHIP SELECT: Chip select is an active low input used to enable the 82C55A onto the Data Bus for
CPU communications.
RD I
READ: Read is an active low input control signal used by the CPU to read status information or data
via the data bus.
WR I
WRITE: Write is an active low input control signal used by the CPU to load control words and data
into the 82C55A.
A0-A1 I
ADDRESS: These input signals, in conjunction with the RD and WR inputs, control the selection of
one of the three ports or the control word register. A0 and A1 are normally connected to the least
significant bits of the Address Bus A0, A1.
PA0-PA7 I/O
PORT A: 8-bit input and output port. Both bus hold high and bus hold low circuitry are present on
this port.
PB0-PB7 I/O PORT B: 8-bit input and output port. Bus hold high circuitry is present on this port.
31
PC0-PC7 I/O PORT C: 8-bit input and output port. Bus hold circuitry is present on this port.
82C55Acungcấp3chếđộhoạtđộngchínhvàcóthểlậptrìnhđểlựachọn
• Mode0:Hoạtđộngvàoracơbản
• Mode1:Hoạtđộngvàoranắmbắt(strobed)
• Mode2:Hoạtđộ
ngBus2chiều
Việclựachọnchếđộhoạtđộngđượcthựchiệnthôngquathanhghitừđiềukhiểnvà
đượcmôtảnhưtrongHình2‐27.
Hình2‐27:Thanhghitừđiềukhiểnchọnchếđộhoạtđộngcho82C55A
KhiđầuvàoRESETđượcđiềukhiểnởmứccaothìtấtcảcáccổngsẽđượcthiếtlậphoạt
độngởchếđộcổngvàovới24đườngtínhiệuvàoduytrìởmứclogic1.Saukhitín
hiệ
uđiềukhiểnRESETởmứctíchcựcbịloạibỏthì82C55Acóthểduytrìchếđộhoạt
độngmàkhôngcầnthêmbấtkỳviệckhởitạonàonữa.Điềunàysẽgiúploạibỏđượ
c
cácđiệntrởtreocaohoặctreothấptrongcácthiếtkếchomạchCMOS.Khikíchhoạt
chếđộthiếtlậpthìthanhghitừđiềukhiểnsẽchứagiátrị9Bh.Trongqúatrìnhthực
hiện
chươngtrìnhvẫncóthểthayđổilựachọnchếđộhoạtđộngkhácnhau,điềunày
chophép82C55hoạtđộngmộtcáchđadạngđápứngchonhiều bàitoánứngdụng
khácnhau.Trongqúatrìnhthanh
ghitừđiềukhiểnđangđượcviếtthìtấtcảcáccổng
đượcthiếtlậphoạtđộngởchếđộcổngrasẽđượckhởitạobằngzero.
Mode0(Vàoracơbản):Cấuhìnhchếđộho
ạtđộngnàycungcấpcáchoạtđộngvàora
đơngiảnchocả3cổngA,BvàC.Dữliệuđượctraođổitrựctiếpvàkhôngcầnphảicó
cơchếbắttay.Chếđộhoạtđộng
nàyhỗtrợcácchứcnăngcụthểnhưsau:
9 Haicổng8‐bitvà2cổng4‐bit
9 Bấtkỳcổngnàocũngcóthểlàcổngvàohoặccổngra
9 Cácđườngdữliệu
tínhiệurađượcchốt
32
9 Cácđườngtínhiệuvàokhôngđượcchốt
9 Cóthểcấuhình16kiểuhoạtđộngvàorakhácnhau
Mode1(Vàoracóbắttay):Chếđộhoạtđộngnàycungcấpkhảnăngtruyềndữ
liệutới
hoặcđitừmộtc ổngcụthểcùngvớicáctínhiệubắttay.TrongchếđộnàycổngA,B
đượcsửdụngđểtruyềndữliệuvàcổngChoạtđộngnhưcổngđ
iềukhiểncơchếđộng
bộbắttay.Chếđộhoạtđộngnàycungcấpcácchứcnăngchínhsau:
9 Hainhómcổng(NhómAvàNhómB).Mỗinhómbaogồm1cổng8‐bitvàmột
c
ổngdữliệuđiềukhiển4‐bit.
9 Cổngdữliệu8‐bitcóthểhoạtđộngnhưhoặclàcổngvàohoặclàcổngravàcảhai
chiềudữliệuđềuđượcchốt.
9 The
4‐bitportisusedforcontrolandstatusofthe8‐bitport.
Mode2(Busvàorahaichiềucóbắttay):Chếđộhoạtđộngnàycungcấpkhảnăng
truyềnthôngvớicácngoạivihoặccácbusd
ữliệu8‐bitchoviệctruyềnnhậndữliệu.
Cáctínhiệubắttayđượccungcấpđểduytrìdòngtín hiệubustươngtựnhưchếđộ1.
Cáccơchếtạongắtcũngcóthểđược
thựchiệnởchếđộnày.Mộtsốcácchứcnăng
chínhhỗtrợtrongchếđộnàybaogồm:
9 ChỉsửdụngnhómA
9 Mộtcổngbus2chiều8‐bit(cổngA)vàmộtcổngđiều
khiển5‐bit(CổngC)
9 Cảhaichiềudữliệuvàovàrađềuđươcchốt.
9 Cổngđiềukhiển5‐bit(CổngC)đượcsửdụngchomụcđíchđiềukhiểnvàtrạng
thái
chocổngAđểtraođổidữliệu2chiều8bit.
Bộđịnhthời/BộđếmC8254
Đâylàbộđếmtốcđộcaocungcấp3bộđịnhthời16‐bitđộclậpvàcóthểđượccấuhình
đểhoạtđộng
ởnhiềuchếđộhoạtđộng.Mỗibộđếmcócáckênhdữliệuvàđiềukhiển
riêng biệt. Hỗ trợ 2 kiểu mã hoáđếm nhị phân (0‐ 65535) hoặc BCD (binary coded
decimal)(0‐9999).Có4thanhghitích
hợpOn‐chipđểlưugiátrịđếmvàcấuhìnhhoạt
động(từđiềukhiển).
Tầnsốhoạtđộngcủabộđếmcóthểlàmviệcvớixungnhịptầnsố10MHzvàhỗtrợ6
chếđộhoạtđộngvàcóthểcấuhìnhriênglẻ.
33
Hình2‐28:Sơđồcấutrúcchứcnăng8254
2.1.7 Giao diện
Giaodiệnsongsong8bit/16bit
Cáccổngsongsonglàmộtdạnggiaodiệnvàorađơngiảnvàphổbiếnnhấtđểkếtnối
thôngtinvớingoạivi.Cónhiềuloạicấutrúcgiaodi
ệnvậtlýđiệntửtừdạngcổngvào
rađơngiảncựcCollectorTTLhởtrongcácứngdụngcổngmáyinđếncácloạicấutrúc
giaodiệncổngtốcđộcaonhưcácchuẩn
busIEEE‐488haySCSI.Hầuhếtcácchipđiều
khiểnnhúngcómộtvàicổngvàorasongsongkhảtrình(cóthểcấuhình).Cácgiao
diệnđóphùhợpvớicáccổngvàorađơngiản
nhưcáckhoáchuyển.Chúngcũngphù
hợptrongcácbàitoánphục vụgiaodiệnkếtnốiđiềukhiểnvàgiámsáttheocácgiao
diệnnhưkiểurơlebándẫn.
Hình2‐29:Cấutrúcnguyênlýđiểnhìnhcủamộtcổngvào/ralogic
34
Giaodiệnnốitiếp
USART
Hình2‐30:CấutrúcđơngiảnhoácủaUSART
Hình2‐31:Modehoạtđộngtruyềnthôngđồngbộ
Hình2‐32:Modehoạtđộngtruyềnthôngdịbộ
35
I
2
C(Inter‐IC)
Giaothứcưutiêntruyền thông nối tiếpđượcpháttriển bởi Philips Semiconductor và
đượcgọilàbusI
2
C.VìnguồngốcnóđượcthiếtkếlàđểđiềukhiểnliênthôngIC(Inter
IC)nênnóđượcđặttênlàI
2
C.T ấtcảcácchípcótíchhợpvàtươngthíchvớiI
2
Cđềucó
thêmmộtgiaodiệntíchhợptrênChipđểtruyềnthôngtrựctiếpvớicácthiếtbịtương
thíchI
2
Ckhác.Việctruyềndữliệunốitiếptheohaihướng8bitđượcthựcthitheo3chế
độsau:
Chuẩn(Standard)—100Kbits/sec
Nhanh(Fast)—400Kbits/sec
Tốcđộcao(High‐Speed)—3.4Mbits/sec
Đườngbusthực
hiệntruyềnthôngnốitiếpI
2
Cgồmhaiđườnglàđườngtruyềndữliệu
nốitiếpSDAvàđườngtruyềnnhịpxungđồnghồnốitiếpSCL. Vìcơchếhoạtđộnglà
đồngbộnênnócầncómộtnhịpxung
tínhiệuđồngbộ.CácthiếtbịhỗtrợI
2
Cđềucó
mộtđịachỉđịnhnghĩatrước,trongđómộtsốbitđịachỉlàthấpcóthểcấuhình.Đơnvị
hoặcthiếtbịkhởitạoquátrìnhtruyềnthônglàđơnvịChủvàcũng
làđơnvịtạoxung
nhịpđồngbộ,điềukhiểnchophépkếtthúcquátrìnhtruyền.NếuđơnvịChủmuốn
truyềnthôngvớiđơnvịkhácnósẽgửikèmthôngtinđịachỉcủađơ
nvịmànómuốn
truyềntrongdữliệutruyền.ĐơnvịTớđềuđượcgánvàđánhđịachỉthôngquađóđơn
vịChủcóthểthiếtlậptruyềnthôngvàtraođổidữliệu.Busdữliệuđượcthi
ếtkếđểcho
phépthựchiệnnhiềuđơnvịChủvàTớởtrêncùngBus.
QuátrìnhtruyềnthôngI
2
CđượcbắtđầubằngtínhiệustarttạorabởiđơnvịChủ.Sau
đóđơnvịChủsẽtruyềnđidữliệu7bitchứađịachỉcủađơnvịTớmànómuốntruyền
thông,
theothứtựlàcácbitcótrọngsốlớnnhấtMSBsẽđượctruyềntrước.Bitthứtám
tiếptheosẽchứathôngtinđểxácđịnhđơnvịTớsẽthựchiệnvaitrònhận(0)haygửi
(1)
dữliệu.TiếptheosẽlàmộtbitACKxácnhậnbởiđơnvịnhậnđãnhậnđược1byte
trướcđóhaykhông.Đơnvịtruyền(gửi)sẽtruyềnđi1bytedữliệub ắtđầu
bởiMSB.
Tạiđiểmcuốicủabytetruyền,đơnvịnhậnsẽtạoramộtbitxácnhậnACKmới.Khuôn
mẫu9bitnày(gồm8bitdữliệuvà1bitxácnhận)s
ẽđượclặplạinếucầntruyềntiếp
bytenữa.KhiđơnvịChủđãtraođổixongdữliệucầnnósẽquansátbitxácnhậnACK
cuốicùngrồisauđósẽtạoramộ
ttínhiệudừngSTOPđểkếtthúcquátrìnhtruyền
thông.
I
2
Clàmộtgiaodiệntruyềnthôngđặcbiệtthíchhợpchocácứngdụngtruyềnthông
giữacácđơnvịtrêncùngmộtbomạchvớikhoảngcáchngắnvàtốcđộthấp.Vídụnh
ư
truyềnthônggiữaCPUvớicáckhốichứcnăngtrêncùngm ộtbomạchnhưEEPROM,
cảmbiến,đồnghồtạothờigianthực Hầuhếtcácthiếtb ịhỗtrợI
2
Choạtđộngởtốcđộ
400Kbps,mộtsốchophéphoạtđộngởtốcđộcaovàiMbps.I
2
Ckháđơngiảnđểthực
thikếtnốinhiềuđơnvịvìnóhỗtrợcơchếxácđịnhđịachỉ.
SPI
SPIlàmộtgiaodiệnc ổngnốitiếpđồngbộbadâychophépkếtnối
truyềnthôngnhiều
VĐKđượcpháttriểnbởiMotorola.Trongcấuhìnhmạngkếtnốitruyềnthốngnàyphải
36
cómộtVĐKgiữvaitròlàChủ(Master)vàcácVĐKcònlạicóthểhoặclàChủhoặclà
Tớ.SPIcó4tốcđộcóthểlậptrình,cựcvàphanhịpđồnghồkhảtrình
vàkếtthúcngắt
truyềnthông.Nhịpđồnghồkhôngnằmtrongdòngdữliệuvàphảiđượccungcấpnhư
mộttínhiệutáchđộclập.CóbathanhghiSPSR,SPCRvàSPDRchophépthực
hiệncác
chứcnăngđiềukhiển,trạngtháivàlữutrữ.Cóbốnchâncơbảncầnthiếtđểthựcthi
chuẩngiaodiệntruyềnthôngnày.
DữliệuraMOSI(MasterOutput
–SlaveInput)
DữliệuvàoMISO(MasterInput–SlaveOutput)
NhịpxungchuẩnSCLK(SerialClock)
LựachọnthànhphầntớSS(SlaveSelect)
Hình2‐33:KếtnốinguyênlýtruyềnthôngSPIgiữamộtMastervàmộtTớ
Hình2‐33chỉranguyênlýkếtnốigiữamộtđơnvịChủvàmộtđơnvịTớtrongtruyền
thôngSPI.TrongđótínhiệuSCLKsẽđượctạorabởiđơnvịChủvàlàtínhiệuvào
của
đơnvịTớ.MOSIlàđườngtruyềndữliệuratừđơnvịChủtớiđơnvịTớvàMISOlà
đườngtruyềndữliệuvàođơnvịChủđếntừđơnvịTớ.ĐơnvịTớđượclựa
chọnkhi
đơnvịChủkíchhoạttínhiệu
SS .
Hình2‐34:SơđồkếtnốitruyềnthốngSPIcủamộtđơnvịChủvớinhiềuđơnvịTớ
NếuhệthốngcónhiềuđơnvịtớđơnvịChủsẽtạophảiracáctín hiệutáchbiệtđểchọn
đơnvịTớ.Cơchếđóđượcthựchiệnnhờsơđồkếtnốinguyênlýmô
tảnhưtrongHình
2‐34.ĐơnvịChủsẽtạoratínhiệuchọnđơnvịTớnhờcácchântínhiệulogicđachức
năng.Cáctínhiệunàyphảiđượcđiềukhiểnvàđảmbảoổnđịnh
vềthờigianđểtránh
trườnghợptínhiệubịthayđổitrongquátrìnhđangtruyềndữliệu.Mộtđiềudễnhận
37
rarằngSPIkhônghỗtrợcơchếxácnhậntrongquátrìnhthựchiệntruyềnthông.Điều
nàyphụthuộcvàogiaothứcđịnhnghĩahoặcphảithựchiệnbổsungthêmmộtsốcác
mởrộngphụbênngoài.
KhảnăngtruyềnthôngđồngthờihaichiềuvớitốcđộlênđếnkhoảngvàiMbit/svà
nguyênlýkháđơngiảnnênSPI hoàntoànphùhợpđểthựchiệntruyềnthônggi
ữacác
thiếtbịyêucầutruyềnthôngtốcđộchậm,đặcbiệthiệuquảtrongcácứngdụngmột
đơnvịChủvàmộtđơnvịTớ.Tuynhiêntrongcácứngdụngvớinhiềuđơn
vịTớviệc
thựcthilạikháphứctạpvìthiếucơchếxácđịnhđịachỉ,vàsựphứctạpsẽtănglênkhi
sốđơnvịTớtăng.
2.2 Một số nền phần cứng nhúng thông dụng (µP/DSP/PLA)
Trongphầnnàygiớithiệungắngọncấutrúcnguyênlýcủacácchipxửlýnhúngứng
dụngtrongcácnềnphầncứngnhúnghiệnnay.
SựpháttriểnnhanhchóngcácchủngloạiChip
khảtrìnhvớimậtđộtíchhợpcaođãvà
đangcómộttácđộngđángkểđếnsựthayđổitrongviệcthiếtkếcácnềnphầncứng
thiếtbịxửlývàđiềukhiểnsốtrongth
ậpkỷgầnđây.Mỗichủngloạiđềucónhữngđặc
điểmvàphạmviđốitượngứngdụngvàluônkhôngngừngpháttriểnđểđápứngmột
cáchtốtnhấtchocácyêucầu
côngnghệ.Chúngđanghướngtớitậptrungchomộtthị
trường công nghệ tiềm năng rộng lớnđólà các thiết bị xử lý vàđiềukhiển nhúng.
Trongbàiviếtnàytácgiảgiớ
ithiệungắngọnvềcácchủngloạichipxửlý,điềukhiển
nhúngđiểnhìnhđangtồntạivàpháttriểnvềmộtsốđặcđiểmvàhướngphạmviứng
dụngcủa
chúng.
CóthểkểrahàngloạtcácChípkhảtrìnhcóthểsửdụngchocácbàitoánthiếtkếhệ
nhúngnhưcáchọvixửlý/viđiềukhiểnnhúng(Microprocessor/Microcontroller),Chip
DSP (Digital Signal Processing), các Chip khả trình
trường (FPD – Field Programmable
Device).Chúngtadễbịchoángngợpnếubắtđầucôngviệcthiếtkếbằngviệctìmkiếm
mộtChipxửlýđiềukhiểnphùhợpchoứngdụng.Vìv
ậycầnphảicómộthiểubiếtvà
sựphânbiệtvềđặcđiểmvàứngdụngcủachúngkhilựachọnvàthiếtkế.Cácthôngtin
liênquannhưnhàsảnxuấtcung
cấpChip,cáckiếnthứcvàcôngcụpháttriểnkèm
theo…MộtsốchủngloạiChipđiểnhìnhsẽđượcgiớithiệu.
2.2.1 Chip Vi xử lý / Vi điều khiển nhúng
Đây là một chủng loại rấtđiển hình vàđangđược sử dụng rất phổ biến hiện này.
ChúngđượcrađờivàsửdụngtheosựpháttriểncủacácChipxửlýứngdụngcho
máy
tính.Vìđốitượngứngdụnglàcácthiếtbịnhúngnêncấutrúccũngđượcthayđổitheo
đểđápứngcácứngdụng.Hiệnnaychúngtacóthểthấycáchọvixửlýđiềukhiểncủ
a
rất nhiềucác nhà chế tạo cung cấp như, Intel, Atmel, Motorola, Infineon. Về cấu trúc,
chúngcũngtươngtựnhưcácChípxửlýpháttriểnchoPCnhưngởmứcđộđơngiản
hơnnhi
ềuvềcôngnăngvàtàinguyên.PhổbiếnvẫnlàcácChipcóđộrộngbusdữliệu
là8‐bit,16‐bit,32‐bit.Vềb ảnchấtcấutrúc,Chipviđiềukhiểnlàchipvixửlýđược
tích
38
hợpthêmcácngoại vi.Cácngoạivithườnglàcáckhốichứcnăngngoạivithôngdụng
nhưbộđịnhthờigian,b ộđếm,bộchuyểnđổiA/D,giaodiệnsongsong,nốitiếp…Mức
độtíchhợpngoạivicũngkhácnhautuỳthuộcvàomụcđíchứngdụngsẽcóthểtìm
đượcChipphùhợp.Thựctếvớicácứngdụngyêucầuđộtíchhợpcaothìsẽsửdụ
ng
giảipháptíchhợptrênchip,nếukhôngthìhầuhếtcácChipđềucungcấpgiảiphápđể
mởrộngngoạiviđápứngchomộtsốlượngứngdụngrộngvàmềmdẻo.
CPU
Khối giải mã địa chỉ
và điều khiển Logic
Bộ nhớ Ngoại vi
Bus Địa chỉ
Bus Dữ liệu
Bus Điều khiển
Hình2‐35:KiếntrúcnguyênlýcủaVĐKvớicấutrúcHavard
VídụvềkiếntrúccủahọVĐKAVR
Hình2‐36:KiếntrúccủahọVĐKAVR
39
Hình2‐37:SởđồkhốichứcnăngkiếntrúcPIC16F873A
2.2.2 Chip DSP
[Ref.SenKuo]
DSPvẫnđượcbiếttớinhưmộtloạiviđiềukhiểnđặcbiệtvớikhảnăngxửlýnhanhđể
phụcvụcácbàitoányêucầukhốilượngvàtốcđộxửlýtính
toánlớn.Vớiưuđiểmnổi
bậtvềđộrộngbăngthôngcủabusvàthanhghitíchluỹ,chophépALUxửlýsongsong
vớitốcđộđọcvàxửlýlệnhnhanhhơncácloại
viđiềukhiểnthôngthường.ChipDSP
chophépthựchiệnnhiềulệnhtrongmộtnhịpnhờvàokiếntrúcbộnhớHavard.
ThôngthườngkhiphảisửdụngDSPtứclàđểđápứngcácbài
toántínhtoánlớnvàtốc
độcaovìvậyđịnhdạngbiểudiễntoánhọcsẽlàmộtyếutốquantrọngđểphânloạivà
đượcquantâm.Hiệnnaychủyếuchúngvẫnđượcphân
loạitheohaikiểulàdấuphảy
độngvàdấuphảytĩnh.Đâycũngchínhlàmộtyếutốquantrọngphảiquantâmđốivới
ngườithiếtkếđểlựachọnđượcm
ộtDSPphùhợpvớiứngdụngc ủamình.Cácloại
DSPdấuphảytĩnhthườnglàloại16‐bithoặc24‐bitcòncácloạidấuphảytĩnhthường
là32‐bit.Mộ
tvídụđiểnhìnhvềmộtDSP16‐bitdấuphảytĩnhlàTMS320C55x,lưu các
40
sốnguyên16‐bithoặccácsốthựctrongmộtmiềngiátrịcốđịnh.Tuynhiên cácgiátrị
vàhệsốtrunggiancóthểđượclưutrữvớiđộchínhxáclà32‐bittrongthanhghitích
luỹ40‐bitnh
ằmgiảmthiểulỗitínhtoándophéplàmtròntrongquátrínhtínhtoán.
ThôngthườngcácloạiDSPdấuphảytĩnhcógiáthànhrẻhơncácloạiDSPdấuphảy
độngvìyêucầu
sốlượngchânOn‐chipíthơnvàcầnsửdụnglượngsiliconíthơn.
ƯuđiểmnổibậtcủacácDSPdấuphảyđộnglàcóthểxửlývàbiểudiễnsốtrongd
ải
phạmvigiátrịrộngvàđộng.Dođóvấnđềvềchuyểnđổivàhạnchếvềphạmvibiểu
diễnsốkhôngphảiquantâmnhưđốivớiloạiDSPdấuphảytĩnh.Mộ
tloạiDSP32‐bit
dấu phảy tĩnhđiển hình là TMS320C67x có thể xử lý và biểu diễn số gồm 24‐bit
mantissavà8‐bitexponent.Phầnmantissabiểudiễnphầnsốlẻtrongphạm
vi‐1.0–+1.0
vàphầnexponentbiểudiễnvịtrícủadấuphảynhịphânvàcóthểdịchchuyểnsangtrái
hoặcphảituỳtheogiátrịsốmànóbiểudiễn.Điềunàytráing
ượcvớicácthiếtkếtrên
nềnDSPdấuphảytĩnh,ngườipháttriểnchươngtrìnhphảitựquiước,tínhtoánvà
phânchiaấnđịnhthangbiểudiễnsốvàphảiluônlưutâm
tớikhảnăngtrànsốcóthể
xảyratrongquátrìnhxửlýtínhtoán.Chínhđiềunàyđãgâyrakhókhănkhôngnhỏ
đốivớingườilậptrình.NóichungpháttriểnchươngtrìnhchoDSP dấ
uphảyđộng
thườngđơngiảnhơnnhưnggiáthànhlạicaohơnnhiềuvànănglượngtiêuthụthông
thườngcũnglớnhơn.
Ví dụ độ chính xác của DSP dấu phảyđộng
32 bit là 2
−23
với 24 bit biểu diễn phần
mantissa.Vùngđộnglà1.18×10
−38
≤x≤3.4×10
38
.
Nhữngnhàthiếtkếhệthốngphảiquyếtđịnhvùngvàđộchínhxáccầnthiếtchocác
ứngdụng.Cácvixửlýdấuphảyđộngthườngđượcsửdụngchocácứngdụngyêu cầ
u
vềđộchínhxáccaovàdảibiểudiễns ốlớnphùhợpvớihệthốngcócấutrúcbộnhớlớn
HơnnữacácDSPdấuphảyđộngchophéppháttriểnphầnmềm
hiệuquảvàđơngiản
hơnbằngcáctrìnhbiêndịchngônngữbậccaonhưCdođócóthểgiảmđượcgiáthành
vàthờigianpháttriển.TuynhiêngiáthànhlạicaonêncácDSPdấ
uphảyđộngphù
hợpvớicácứngdụngkháđặcbiệtvàthườnglàvớisốlượngít.
41
Hình2‐38:GiảnđồkhốichứcnăngcủaDSPTMS320C28xx
2.2.3 PAL
NgàynaykhinóiđếncácchủngloạiChipkhảtrìnhmảngtathườngbiếttớimộtsốtên
gọinhưPAL,CPLD,FPGA…Mộtchútlượcsửvềsựrađờivàpháttriểnsauđâysẽ
giúpchúngta
hìnhdungđượcđặcđiểmvànguồngốcrađờicủachúng.
42
Hình2‐39:CấutrúcPROMvàPLA
Lịchsử phát triển của cácchủng loạiChip khả trìnhmảng PLA (ProgrammableLogic
Array)đượcbắtnguồntừnguyênlýbộnhớchươngtrìnhPROM(ProgrammableRead‐
OnlyMemory).Trongđócácđầuvàođịachỉđóngvai
trònhưcácđườngvàocủamạch
logicvàcácđườngdữliệurađóngvaitrònhưcácđườngracủamạchlogic.VìPROM
khôngthựcsựphùhợpchomụcđíchthiếtkếcácm ạchlogicnên
PLAđãrađờivào
đầuthậpkỷ70.Nórấtphùhợpđểthựchiệnm ạchlogiccódạngtổngcáctích(vìcấu
thànhbởicácphầntửlogicANDvàOR).Nhưngnhượcđiểm
làchiphísảnxuấtcaovà
tốcđộhoạtđộngthấp.ĐểkhắcphụcnhượcđiểmnàyPAL(ProgrammableArrayLogic)
đãđượcpháttriển.NóđượccấuthànhtừcácphầntửANDkhảtrìnhvàphầ
ntửOR
gáncốđịnhvàcóchứacảphầntửflip‐flopởđầuranêncókhảnăngthựcthicácmạch
logictuầntự.Hình2‐40môtảcấutrúcchungcủaPAL.
Hình2‐40:CấutrúcchungcủaPAL
TừkhiđượcrađờivàpháttriểnPALtrởthànhcơsởchosựrađờicủahàngloạtcác
chủngloạiChipkhảtrìnhmảngvớicấutrúcphứctạphơnnhưSPLD(SimpleProgram‐
mable Logic
Device), CPLD (Com‐plex Programmable Logic Device), và sau này là FPGA
(FieldPro‐grammableGateArray).SPLDcũnglàtêngọichonhómcácchủngloạiChip
43
kiểutươngtựnhưPAL,PLA.VềmặtcấutrúcthìSPLDchophéptíchhợplogicvớimật
độcaohơnsovớiPALthôngthường,nhưngkíchthướccủanósẽtănglênrấ
tnhanh
nếutiếptúcmởrộngvàtăngmậtđộtíchhợpsốđầuvào.Đểđápứngnhucầumởrộng
mậtđộtíchhợpCPLDđãđượcpháttriển.Nólàsựtíchhợpcủanhiềukh
ốiSPLDvà
cungcấpthêmkhảnăngkếtnốikhảtrìnhgiữacáckhốiSPLDđơnlẻvớinhau.Với
nguyênlýcấutrúcnàyCPLDcókhảnăngtíchhợpvớimậtđộcaotươngđươ
ngvới50
khốiSPLDthôngthường.
Nếuchỉdừngđếnđâychúngtacóthểthấymộtđặcđiểmchungcủacácchủngloại
chipkiểuPLAhayCPLDđềuchophépthựchiệncácm
ạchlogictrêncơsởtổhợplogic
củacácđầuvàovàrabằngcácphầntửANDvàOR.Vớinguyênlýnàyrõràngsẽgặp
khókhănkhithựcthicácứngdụngđòihỏicác
phéptínhtoánlogicphứctạpvớitốcđộ
cao.ĐểđápứngđiềunàyFPGA(FieldProgrammableGateArrays)đãrađời.Nólàsực ấu
thànhcủacáckhốilogickhảtrìnhcùngvớicáckênhkếtnốiliên
thôngkhảtrìnhgiữa
cáckhốiđóvớinhau.MộthìnhảnhtiêubiểuvềcấutrúcnguyênlýcủaFPGAđượcmô
tảnhưtrongHình2‐41:CấutrúcnguyênlýcủaFPGA.
Hình2‐41:CấutrúcnguyênlýcủaFPGA
FPGA‐đang trở thành một sự lựa chọn thay thế rất cạnh tranh của các chip xử lý
nhúngASICs.NóhỗtrợcácưuđiểmvềchứcnănglựachọngiốngnhưASICsnhưng
chophépch
ỉnhsửavàthiếtkếlạisaukhisửdụngvàgiáthànhpháttriểnthấphơn.
FPGAchophépkhảnăngthiếtkếlinhhoạtvàthíchnghidễdàngchocáctiệníchthiết
bịtố
iưu,trongkhivẫnduytrìđượckhônggiankíchthướcphầnc ứngvànănglượng
tiêuthụcủahệthống.Điềunàykhôngdễdàngnhậnđượckhithiếtkếdựatrênnềncác
ChipDSP.
FPGAthựcsựphùhợpchocácứngdụngđòihỏilượngtínhtoánlớnnhưtrongxửlý
tínhiệu.FPGAcóthểđượclậptrìnhhoạtđộngđồngthờivớimộtsốcácđườngdữliệ
u
songsong.Chúnglàcácđườngdữliệuhoạtđộngcủatổhợpnhiềucácchứcnăngtừ
đơngiảnđếnphứctạpnhưbộcộng,b ộnhân,bộđếm,bộlưutrữ,bộsosánh,
bộtính
tươngquan,…
44
Hình2‐42:CấutrúcCLBvàLAB
NgàynaycóthểphânloạiramộtsốkiểuchủngloạiFPGAdựavàocấutạocủachúng:
■CấutạotừSRAM:
VớiloạinàycácmắtkếtnốikhảtrìnhđượcthựchiệnbằngcácphầntửSRAM,chínhvì
vậychophépthựchiệnlậptrìnhlặplạinhi
ềulần.Ưuđiểmnổibậtcủaloạinàylàcácý
tưởngthiếtkếmớicóthểđượcthựcthivàthửnghiệmnhanhchóng.HơnnữaSRAM
cũngđanglàmộthướng
pháttriểnrấtmạnhhiệnnaytrongnềncôngnghiệpsảnxuất
bộnhớvàcũngđềuthựcthitheocôngnghệCMOSrấtphùhợpvớicôngnghệchếtạo
FPGA.
Tuynhiênmộtđặc
điểmcóthểxemnhưlànhượcđiểmcủaFPGAcấutạotừcácphần
tửSRAMlàchúngphảicấuhìnhlạim ỗikhinguồnhệthốngđượccungcấp.Côngviệc
nàythườ
ngđượcthựchiệnbởimộtb ộnhớngoàichuyêndụnghoặcb ởimộtbộviđiều
khiểnkèmtheomạch.ChínhvìvậycũnglàmgiáthànhcủaFPGAtăngthêm.
■Cấutạotừcầuchì(anti‐fused)
KhônggiốngnhưloạiFPGAcấutạotừSRAM,FPGAvớicấutửkiểuc ầuchìđượclập
trìnhofflinebằngmộtthiếtbịlậptrìnhchuyên
dụng.ÝtưởngchếtạoloạiFPGAnày
xuấtpháttừnhucầuvềmộtthiếtbịkhảtrìnhcókhảnănglưucấuhìnhsaukhiđượcsử
dụng.Tức lànókhôngphảilàm
côngviệccấuhìnhmỗikhingu ồnhệthốngđượccung
cấp.KhiFPGAanti‐fusedđãđượclậptrìnhthìnókhôngthểbịthayđổihayđượclập
trìnhlạinữa.Chínhnhờđiềunàynênnókhông
cầnbấtkỳmộtb ộnhớngoàinàođể
lưutrữcấuhìnhvàcóthểtiếtkiệm,giảmgiáthànhcủathiếtbị.
MộtưuđiểmnổibậtcủaFPGAanti‐fusedlàkiể
ucấutrúcliênkếtkhábềnvữngvớicác
loạinhiễubứcxạ.Đặcđiểmnàykháquantrọngkhithiếtbịphảilàmviệctrongmôi
trườngtiềmnăngnhưquâns
ựhoặchàngkhôngvũtrụ.Vìvậynótránhđượctrường
hợprủi ro cóthể xảyra nếusử dụng công nghệSRAM làhiện tượng lậttrạng thái
(flipped).Tuynhiênhiệntượ
ngnàycũngcóthểđượckhắcphụcbằngcơchếdựphòng
chập3nhưnglạilàmtăngthêmchiphíchếtạo.
45
MộtưuđiểmnổibậtcủaloạiFPGAanti‐fusedlàkhảnăngbảovệcôngnghệ.Tứclàdữ
liệuc ấuhìnhlậptrìnhchoFPGAcóthểđượcbảovệbởiviệc
đọcbấthợppháphoặc
khôngchophépđọc.Trongqúatrìnhxửlýhoặcpháttriển,người lậptrìnhsẽsửdụng
mộttệpdữliệucấuhìnhđểlậptrìnhvàkiểmtraquátrình
nạpcấuhìnhchoFPGA.
Côngviệcnàychỉthựchiệnmộtlầnvàsẽkhôngthểthayđổiđượcnữa.Khithựchiện
xongnócóthểđượcthiếtlậpthêmmộtthuộctínhlàch
ốngđọctrựctiếptừFPGAdữ
liệuliênquanđếncấuhình.Ngoàirachúngtac ũngcóthểbiếtthêmrằngFPGAanti‐
fusedthườngsửdụngítnănglượnghơnloạiFPGASRAM,kích
thướccũngnhỏhơn,và
tốcđộcũngnhanhhơnmộtchútnhờkhoảngcáchkếtnốicứnggiữacácphầntửngắn
hơn.
TuynhiênnhượcđiểmlớnnhấtcủaFPGA
anti‐fusedlàchỉcóthểđượclậptrìnhvàcấu
hìnhmộtlần.Vìvậynóchỉthựcsựphùhợpkhithựcthihoànchỉnhsảnphẩmcuối
cùngvàkhôngphùhợpvới
mụcđíchthiếtkếpháttriển.
■CấutạotừEEPROM/FLASH
EEPROMorFLASH‐basedFPGAscũngcónguyênlýcấutạotươngtựnhưloạiFPGA‐
SRAM.Cácphầntửcấuhìnhcủanóđượckếtnốidựatrênmộtchuỗi
thanhghidịch
dài.Chúngcóthểđượccấuhìnhofflinebằngcácthiếtbịlậptrìnhchuyêndụng.Cũngcó
mộtsốcóthểlậptrìnhonlinenhưngthờigianlậptrìnhcấuhìnhsẽgấp
khoảng3lần
thờigianthựcthivớinềnFPGA‐SRAM.Khiđãđượccấuhìnhđãđượclậptrìnhthì
chúngcóthểđượcduytrìvàkhôngbịmấtđinhưnguyênlýlưugiữcủaEEPROM
hoặc
FLASH.LoạiFPGA‐EEPROM/FLASHcócấutạonhỏhơnsovớiloạiFPGA‐SRAMvì
vậycũngcó thểgiảmđượcthờigianlan truyền tínhiệu kếtnốiliên thônggiữa các
ph
ầntửlogic.
ĐểbảovệcôngnghệkhiFPGAđãđượccấuhìnhvàđưarasửdụng,tacóthểbảovệ
bằngcơchếkhóamãmềm(cấutạotừkhoảng50bitđếnvàitrămbit).
Muốnđọcđược
thôngtincấu hìnhtrựctiếptừFPGA,ngườitacầnphảicómãkhóađóvàcũngrấtkhó
hoặckhôngthểmòđượctheonguyênlýthửsai.Vìmuốnvậytheoước
tínhcũngphải
mấtđếnhàngtriệunămmớihyvọngthànhcôngđểmòrađược.
Tuynhiêncôngngh ệchếtạoFPGA‐EEPROM/FLASHđòihòithựcthiquanhiềucông
đoạnxửlýhơnsovới
loạiFPGA‐SRAMvìvậymàsựpháttriểncủachúngcũngchậm
hơn.Hơnnữanănglượngtiêuthụcủachúngcũnglớnhơnvìphảinuôirấtnhiềucác
phầ
ntửđiệntrởkéo(pull‐upresistor).
■CấutạotừtổhợpFLASH‐SRAM
NgàynayngườitacũngpháttriểnchếtạocácloạiFPGAcấutạotừcáctổhợpSRAM
vàFLASHđểtậndụngđượccácưuđiểmcủa
cảhaichủngloạinày.Thôngthườngcác
phầntửcấuhìnhFLASHsẽđượcsửdụngđểlưucácnộidungcấuhìnhđểsaochép
chocácphầntửcấuhìnhSRAM.Vàcácphầntửcấuhình
SRAMhoàntoàncóthểđược
cấuhìnhlạitheoyêucầuthiếtkếtrongkhivẫnduytrìmộtphầnthiếtkếcấuhìnhgốc
lưutrongcácphầntửFLASH.
46
NgườitacũngthườngphânloạiFPGAdựavàophầntửkiếntrúccủachúngvàbao
gồm3loạichính:mịn,thôvàtrungbình.Bảnchấtviệcphânloạinàylàdự
avàokiểu
khốilogickhảtrìnhcấuthànhnênFPGA.VớiloạiFPGAmịnthìkiếntrúccáckhốilogic
khảtrìnhthườnglàcáccổnglogicđơngiản(kiểuAND,OR…,vàcácphầntửl
ưugiữ
nhưTrigerD…).Kiểukiếntrúcnàyphùhợpvàthườngsửdụnghiệuqu ảvớikiếntrúc
ASICó.GầnđâyxuthếpháttriểncủaFPGAđangtậptrungvàoloạikiếntrúc
thô.Tức
làcáckhốilogickhảtrìnhlàcáckhốicókhảnăngxửlýlogiclớnvớinhiềutổhợpliên
kếtvàphứctạpvớinhiềuđầuvàovàraliênkết.Tuỳtheo
mứcđộcủakhốilogickhả
trìnhđómàngườitaphânrathànhcácloạitrungbình.
CóhailoạicấutrúccơbảncấuthànhnêncáckhốilogickhảtrìnhtrongkiếntrúcFPGA
thôhoặc
trungbình làMUX(Multiplexer)và LUT(Lookup Table). Trong loạicấu trúc
MUXthìcácphầntửlogicđượccấuthànhtheocấutrúctổhợpcácđầuvàoratheo
nguyênlýMUXnhưmôtảtrongHình2‐43:Kh
ốilogicdạngMUX.
Hình2‐43:KhốilogicdạngMUX
ĐốivớiloạicấutrúcLUTthìcácđầuvàothựcchấtlàcáctổhợpđểchọnragiátrịtrong
bảngchấtlýcủahàmchứcnăngcầnthựcthi.Nguyênlýcủaloạ
ikhốilogicnàyđược
môtảnhưtrongHình2‐44.
Hình2‐44:LUTthựchiệnhàmtổhợpANDvàOR
47
HầuhếtcácứngdụngđềucónhucầuvềbộnhớRAMonChipvìvậymộtsốdòng
FPGA hiện nay cũng tích hợp thêm cả các phần tử nhớ RAM vàđược gọi là RAM
nhúng
(embedded RAM). Cácphần tửRAMđóđược tổchức thànhtừng khốivà tuỳ
thuộcvàokiếntrúccủaFPGAnósẽđượcphânbốlinhhoạt,thườnglàxungquanhcác
phầntửngoạivihoặc
phânb ốđềutrênbềmặtChip.Mộthìnhảnhminhhoạvềphân
bốRAMtrongkiếntrúcFPGAđượcmôtảnhưtrongHình2‐45.
Hình2‐45:HìnhảnhcủaChipcócáccộtlàcáckhốiRAMnhúng
■FPGAvớihạtnhânDSP
Thựcchấtđólàmộttổhợpnhằmtăngtốcvàkhảnăngtínhtoán.Kháiniệmnàycũng
tươngtựnhưcácbộđồngxửlýtoánhọctrongkiế
ntrúcmáytính.Nguyênlýlànhằm
sansẻvàgiảmbớttảisangFPGAđểthựcthicácchứcnăngtínhtoánlớn(thôngthường
đòihỏithựchiệntrongnhiềunhịphoạtđộng
củaChipDSP)vàchophépChipDSPtập
trungthựchiệncácchứcnăngđơnnhịptốiưu.TổhợpFPGAvàDSPlàmộtkiếntrúc
rấtlinhhoạtvàđặcbiệtcảithi
ệnđượchiệusuấtthựchiệnvàtăngtốchơnrấtnhiềuso
vớikiếntrúcnhiềuChipDPShoặcASICsđồngthờigiáthànhlạithấphơn.
Hình2‐46:SơđồnguyênlýmạchghépnốiVĐKvàFPGA
48
3 CƠ SỞ KỸ THUẬT PHẦN MỀM NHÚNG
3.1 Đặc điểm phần mềm nhúng
9 Hướngchứcnănghoáđặcthù
9 Hạnchếvềtàinguyênbộnhớ
9 Yêucầuthờigianthực
3.2 Biểu diễn số và dữ liệu
Đơnvịcơbảnnhấttrongbiểudiễnthôngtincủahệthốngsốđượcgọilàbit,
chínhlàkýhiệuviếttắtcủathuậtngữbi
narydigit.
1964,IBMđãthiếtkếvàchếtạomáytínhsốsửdụngmộtnhóm8bitđểđánh
địachỉbộnhớvàđịnhnghĩarathuậtngữ8bit=1byte.
Ngàynaysửdụngrộngrãi
thuậtngữwordlàmộttừdữliệudùngđểbiểudiễn
kíchthướcdữliệumàđượcxửlýmộtcáchhiệuquảnhấtđốivớimỗiloạikiến
trúcxửlýsốcụthể.
Chínhvìvậymộttừcóthểlà16bits,32bits,hoặc64bits…
Mỗimộtbytecóthểđượcchiarathànhhainửa4bitvàđượcgọilàcácnibble.
Nibblechứacácbíttrọng
sốlớnđượcgọilànibblebậccao,vànibblechứacácbit
trọngsốnhỏđượcgọilànibblebậcthấp.
3.2.1 Các hệ thống cơ số
Trongcáchệthốngbiểudiễnsốhiệnnayđềuđượcbiểudiễnởdạngtổngquátlàtổng
luỹthừatheocơsố,vàđượcphânloạitheogiátrịcơsố.Mộtcáchtổngquát
mộthệbiểu
diễnsốcơsốbvàalàmộtsốnguyênnằmtrongkhoảnggiátrịcơsốbđượcbiểudiễn
nhưsau:
1
10
0
n
nn i
nn i
i
Aab ab a ab
−
−
=
=+ +⋅⋅⋅+=⋅
∑
(1.1)
Vídụnhưcơsốbinary(nhịphân),cơsốdecimal(thậpphân),cơsốhexadecimal,cơsố8
Octal(bátphân).
Vídụvềbiểudiễncácgiátrịtrongcáchệcơsốkhácnhau:
243.51
10=2x10
2
+4x10
1
+3x10
0
+5x10
‐1
+1x10
‐2
212
3=2x3
2
+1x3
1
+2x3
0
=2310
10110
2=1x2
4
+0x2
3
+1x2
2
+1x2
1
+0x2
0
=2210
Hailoạicơsốbiểudiễnthôngdụngnhấthiệnnaychocáchệthốngxửlýsốlàcơsốnhị
phânvàcơsốmườisáu.
3.2.2 Số nguyên
Trongbiểudiễnsốcódấuđểphânbiệtsốdươngvàsốâmngườitasửdụngbittrọngsố
lớnnhấtquiướclàmbitdấuvàcácbitcònlạiđượcsửdụngđểbiểudi
ễngiátrịđộlớn
củasố.Vídụmộttừ8bitđượcsửdụngđểbiểudiễngiátrị‐1sẽcódạngnhịphânlà
10000001,vàgiátrị+1sẽcódạng00000001.Nhưvậyvới
mộttừ8bitcóthểbiểudiễn