1
TrườngĐạihọcBáchkhoaHàNội
BộmônĐiềukhiểntựđộng
Tàiliệutómtắtbàigiảng
HỆ THỐNG ĐIỀU KHIỂN NHÚNG
(EmbeddedControlSystems)
TS.LưuHồngViệt
2
Nội dung
1 MỞĐẦU 5
1.1 Cáckháiniệmvềhệnhúng 5
1.2 Lĩnhvựcứngdụngcủahệnhúng 7
1.3 Đặcđiểmcôngnghệvàxuthếpháttriểncủahệnhúng 8
1.3.1 Đặcđiểmcôngnghệ 8
1.3.2 Xuth
ếpháttriểnvàsựtăngtrưởngcủahệnhúng 9
1.4 Mụcđíchvànộidungmônhọc 10
2 CẤUTRÚCPHẦNCỨNGHỆNHÚNG 11
2.1 Cácthànhphầnkiếntrúccơbản 11
2.1.1 Đơnvịxửlý
trungtâmCPU 11
2.1.2 Xungnhịpvàtrạngtháitínhiệu 13
2.1.3 Busđịachỉ,dữliệuvàđiềukhiển 16
2.1.4 Bộnhớ 17
2.1.5 Khônggianvàphânvùngđịachỉ 21
2.1.6 Ngoạivi 21
2.1.7 Giaodiện 33
2.2 Mộ
tsốnềnphầncứngnhúngthôngdụng(µP/DSP/PLA) 37
2.2.1 ChipVixửlý/Viđiềukhiểnnhúng 37
2.2.2 ChipDSP 39
2.2.3 PAL 41
3 CƠSỞKỸTHUẬTPHẦNMỀMNHÚNG 48
3.1 Đặcđiểmphầnmềm
nhúng 48
3.2 Biểudiễnsốvàdữliệu 48
3.2.1 Cáchệthốngcơsố 48
3.2.2 Sốnguyên 48
3.2.3 Sốdấuphảytĩnh 50
3.2.4 Sốdấuphảyđộng 51
3.2.5 Mộtsốphéptínhcơbản 52
3.3 Tậplệnh 55
3.3.1 CấutrúctậplệnhCISCvàRISC 55
3.3.2 Địnhdạnglệnh 57
3.3.3 Cáckiểutruyềnđịachỉtoántửlệnh 57
3.3.4 Nguyênlýthựchiệnpipeline 60
3.3.5 Harzard 61
3
3.4 Ngônngữvàmôitrườngpháttriển 63
3.4.1 Ngônngữ 63
3.4.2 Biêndịch 65
3.4.3 Simulator 70
3.4.4 Emulator 71
3.4.5 Thiếtkếhệthốngbằngmáytính 71
4 HỆĐIỀUHÀNHNHÚNG 73
4.1 Hệđiềuhành 73
4.2 Bộnạpkhởi
tạo(Boot‐loader) 74
4.3 Cácyêucầuchung 76
4.4 Hệđiềuhànhthờigianthực 77
5 KỸTHẬTLẬPTRÌNHNHÚNG 81
5.1 Tácvụvàquátrình(process) 81
5.2 Lậplịch(Scheduling) 81
5.2.1 Cáckháiniệm 81
5.2.2
Cácphươngpháplậplịchphổbiến 82
5.2.3 Kỹthuậtlậplịch 85
5.3 Truyềnthôngvàđồngbộ 87
5.3.1 Semaphore 87
5.3.2 Monitor 89
5.4 Xửlýngắt 90
6 THIẾTKẾHỆNHÚNG:TỔHỢPPHẦNCỨNGVÀM
ỀM 93
6.1 Quitrìnhpháttriển 93
6.2 Phântíchyêucầu 93
6.3 Môhìnhhoásựkiệnvàtácvụ 93
6.3.1 PhươngphápmôhìnhPetrinet 93
6.3.2 QuiướcbiểudiễnmôhìnhPetrinet 94
6.3.3 Môtảcáctìnhhuốnghoạtđộ
ngcơbảnvớiPetrinet 95
6.3.4 Ngônngữmôtảphầncứng(VHDL) 103
6.4 Thiếtkếphầnmềmđiềukhiển 104
6.4.1 Môhìnhthựcthibộđiềukhiểnnhúng 104
6.4.2 Vídụthựcthibộđiềukhi
ểnPIDsố 106
TÀILIỆUTHAMKHẢO 108
4
5
1 MỞ ĐẦU
Kỷnguyêncông nghệmớiđãvàđang tiếptụcpháttriểnkhôngngừngnhằmthông
minhhoáhiệnđạihoáthôngsuốtcáchệthống.Cóthểnóiđánhdấusựrađờivàphát
triểnc ủah
ệnhúngtrướctiênphảikểđếnsựrađờicủacácbộvixửlý,viđiềukhiển.
NóđượcđánhdấubởisựrađờicủaChipvixửlýđầutiên4004vàonăm1971chomục
đích
tínhtoánth ươngmạibởimộtcôngtyNhậtbảnBusicomvàsauđóđãđượcchắp
cánhvàpháttriểnvượtbậcbởiIntelđểtrởthànhcácbộsiêuxửlýnhưcácChipđược
ứngdụng
choPCnhưngàynay.Thậpkỷ80cóthểđượccoilàkhởiđiểmbắtđầukỷ
nguyêncủasựbùngnổvềpháttriểncáchệnhúng.Từđókhởinguồncholànsóngra
đờicủahànglo
ạtcácchủngloạivixửlývàgắnliềnlàcáchệnhúngđểthâmnhậprộng
khắptrongcácứngdụnghàngngàycủacuộcsốngchúngtavídụnhư,cácthiếtbịđiện
tửsửdụngchosinhhoạthàngngày(lòvisóng,TV,tủlạnh,máygiặt,điềuhoà )và
vănphònglàmviệc(máyfax,máyin,máyđiệnthoại ) Cácbộvixửlývàphầnmềm
c
ũngngàycàngđượcsửdụngrộngrãitrongrấtnhiềucáchệthốngnhỏ.Cácloạivixử
lýđượcsửdụngtrongcáchệthốngnhúnghiệnnayđãvượtxasovớiPCvềsố
lượng
chủngloại(chiếmđến79%sốcácvixửlýđangtồntại[2])vàvẫncòntiếptụcphát
triểnđểnhằmđápứngvàthoảmãnrấtnhiềuứngdụngđadạng.Trong
sốđóvẫncòn
ứngdụngcảcácChipvixửlý8bit,16bitvàhiệnnaychủyếuvẫnlà32bit(chiếm
khoảng75%).Gắnliềnvớisựpháttriểnphầncứng,ph
ầnmềmcũngđãpháttriểnvới
tốcđộnhanhkhôngthuakémthậmchísẽt ăngnhanhhơnrấtnhiềutheosựpháttriển
hệnhúng.
1.1 Các khái niệm về hệ nhúng
Hệnhúng?
Trongthếgiớithựccủachúngtabấtkỳmộtthiếtbịhayhệthốngđiện/điệntửcókhả
năngxửlýthôngtin vàđiềukhiểnđều cóthểtiềmẩn trong
đómột thiếtbịhay hệ
nhúng,vídụnhưcácthiếtbịtruyềnthông,thiếtbịđolườngđiềukhiển,cácthiếtbị
phụcvụsinhhoạthàngngàynhưlòvisóng,máygiặt,camera…Rất
dễdàngđểcóthể
kểrahàngloạtcácthiếtbịhayhệthốngnhưvậyđangtồntạiquanhta,chúnglàhệ
nhúng.Vậyhệnhúngthựcchấtlàgìvànênhiểuthếnàovềhệnhúng?Hi
ệnnaycũng
chưacómộtđịnhnghĩanàothựcsựthoảđángđểđượcchuẩnhoávàthừanhậnrộng
rãichohệnhúngmàvẫnchỉlànhữngkháiniệmdiễntảvềchúngthôngqua
nhữngđặc
thùchung.Tuynhiênởđâychúngtacóthểhiểuhệnhúnglàmộtphầnhệthốngxửlý
thôngtinnhúngtrongcáchệthốnglớn,phứchợpvàđộclậpvídụnhưtrongôtô,các
thi
ếtbịđolường,điềukhiển,truyềnthôngvàthiếtbịthôngminhnóichung. Chúnglà
nhữngtổhợpcủaphầncứngvàphầnmềmđểthựchiệnmộthoặcm ộtnhómchứ
cnăng
chuyên biệt, cụ thể (Tráingượcvới máy tínhPC màchúngta thường thấyđược sử
dụngkhôngphảichomộtchứcnăngmàlàrấtnhiềuchứcnănghayphục
vụchungcho
nhiềumụcđích).PCthựcchấtlạilàmộthệthốnglớn,tổhợpcủanhiềuhệthốngnhúng
vídụnhưcardmànhình,âmthanh,modem,ổcứng,bànphím…Chínhđiềunàylàm
chúngtadễlúngtúngnếuđượchỏinênhiểuthếnàovềPC,cóphảilàhệnhúnghay
không.
6
Hình1‐1:Mộtvàihìnhảnhvềhệnhúng
Hệthờigianthực?
Trongcácbàitoánđiềukhiểnvàứngdụngchúngtarấthaygặpthuậtng ữ“thờigian
thực”.Thờigianthựccóphảilàthờigianphảnánh
vềđộtrungthựccủathờigianhay
không?Thờigianthựccóphảilàhi ểnthịchínhxácvàđồngbộtheođúngnhưnhịp
đồnghồđếmthờigianhay không?Khôngphải hoàntoànnhưvậy!Th
ựcchất,theo
cáchhiểunếunóitrongcáchệthốngkỹthuậtđặcbiệtcáchệthốngyêucầukhắtkhevề
sựràngbuộcthờigian,thờigianthựcđượchiểulàyêucầ
ucủahệthốngphảiđảmbảo
thoảmãnvềtínhtiềnđịnhtronghoạtđộngcủahệthống.Tínhtiềnđịnhnóilênhànhvi
củahệthốngthựchiệnđúngtrongmộtkhungthời
gianchotrướchoàntoànxácđịnh.
Khungthờigiannàyđượcquyếtđịnhbởiđặcđiểmhoặcyêucầucủahệthống,cóthểlà
vàigiâyvàcũngcóthểlàvàinanogiâyhoặcnhỏhơ
nnữa.Ởđâychúngtaphânbiệt
yếutốthờigiangắnliềnvớikháiniệmvềthờigianthực.Khôngphảihệthốngthực
hiệnrấtnhanhlàsẽđảmbảođượctínhth
ờigianthựcvìnhanhhaychậmhoàntoànlà
phépsosánhcótínhtươngđốivìmiligiâycóthểlànhanhvớihệthốngđiềukhiển
nhiệtnhưnglạilàchậm đốivớicácđối
tượngđiềukhiểnđiệnnhưdòng,áp….Hơnthế
nữanếuchỉnhanhkhôngthìchưađủmàphảiđảmbảoduytrìổnđịnhbằngmộtcơ
chếhoạtđộngtincậy.Chínhvìvậyh
ệthốngkhôngkiểmsoátđượchoạtđộngcủanó
(bấtđịnh)thìkhôngthểlàm ộthệthốngđảmbảotínhthờigianthựcmặcdùhệthống
đócóthểchođápứngrấtnhanh,th
ậmchínhanhhơnrấtnhiềusovớiyêucầuđặtra.
Mộtvídụ minh hoạtiêu biểuđólà cơchếtruyền thôngdữliệu quađường truyền
chuẩnEthernettruyềnthống,mặcdù
aicũngbiếttốcđộtruyềnlàrấtnhanhnhưngvẫn
khôngphảihệhoạtđộngthờigianthựcvìkhôngthoảmãntínhtiềnđịnhtrongcơchế
truyềndữliệu(cóthểlàrấtnhanh
vàcũngcóthểlàrấtchậmnếucósựcanhtrạnhvà
giaothôngđườngtruyềnbịnghẽn).
7
Ngườitaphânralàmhailoạiđốivớikháiniệmthờigianthựclàcứng(hardreal ‐time)
vàmềm(softreal‐time).Thờigianthựccứnglàkhihệthốnghoạtđộngv
ớiyêucầuthoả
mãnsựràngbuộctrongkhungthờigiancứngtứclànếuviphạmthìsẽdẫnđếnhoạt
độngcủatoànhệthốngbịsaihoặcbịpháhuỷ.Vídụv
ềhoạtđộngđiềukhiểnchomột
lòphảnứnghạtnhân, nếuchậmraquyếtđịnhcóthểdẫnđếnthảmhoạgâyradophản
ứngphânhạchvàdẫnđếnbùngnổcảh
ệthống.Thờigianthựcmềmlàkhi hệthống
hoạtđộngvớiyêucầuthoảmãnràngbuộctrongkhungthờigianmềm,nếuviphạmvà
sailệchnằmtrongkhoảngchophép
thìhệthốngvẫncóthểhoạtđộngđượcvàchấp
nhậnđược.Vídụnhưhệthốngphátthanhtruyềnhình,nếuthông tintruyềnđitừtrạm
pháttớingườinghe/nhìnchậmmộtvài
giâythìcũngkhôngảnhhưởngđángkểđến
tínhthờisựcủatinđượctruyềnđivàhoàntoànđượcchấpnhậnbởingườitheodõi.
Thựctếthấyrằnghầuhếthệnhúnglàcác
hệthờigianthựcvàhầuhếtcáchệthờigian
thựclàhệnhúng.Điềunàyphảnánhmốiquanhệmậtthiếtgiữahệnhúngvàthờigian
thựcvàtínhthờigian
thựcđãtrởthànhnhưmộtthuộctínhtiêubiểu củahệnhúng.Vì
vậyhiệnnaykhiđềcậptớicáchệnhúngngườitađềunóitớiđặctínhcơbảncủanólà
tínhthời
gianthực.
Hệ thời gian thực
Hệ Nhúng
Hệnhúngthời
gianthực
Hình1‐2:Phânbốvàquanhệgiữahệnhúngvàthờigianthực
1.2 Lĩnh vực ứng dụng của hệ nhúng
Chúngtacóthểkểrađượcrấtnhiềucácứngdụngcủahệthốngnhúngđangđượcsử
dụnghiệnnay,vàxuthểsẽcòntiếptụctăngnhanh.Mộtsốcáclĩnhvựcvàs
ảnphẩm
thịtrườngrộnglớncủacáchệnhúngcóthểđượcnhómnhưsau:
• Cácthiếtbịđiềukhiển
• Ôtô,tàuđiện
• Truyềnthông
• Thiếtbịytế
• Hệthốngđo
lườngthẩmđịnh
• Toànhàthôngminh
• Thiếtbịtrongcácdâytruyềnsảnxuất
• Rôbốt
•
8
1.3 Đặc điểm công nghệ và xu thế phát triển của hệ nhúng
1.3.1 Đặc điểm công nghệ
Cáchệthốngnhưvậyđềucóchungmộtsốđặcđiểmnhưyêucầuvềkhảnăngthời
gianthực,độtincậy,tínhđộclậpvàhiệuquả.Mộtcâuhỏiđặtralàtại
saohệthống
nhúnglạipháttriểnvàđượcphổcậpmộtcáchnhanhchóngnhưhiệnnay.Câutrảlời
thựcranằmởcácyêucầutănglênkhôngngừngtrongcácứngdụngcôngnghệ
hiện
nay.Mộttrongnhữngyêucầucơbảnđólà:
Khảnăngđộclậpvàthôngminhhoá:Điềunàyđượcchỉrõhơnthôngquamộtsốcác
thuộctínhyêucầu,cụthểnhư:
; Độtincậy
; Khảnăngbảotrìvànângcấp
; Sựphổcậpvàtiệnsửdụng
; Độantoàn
; Tínhbảomật
Hiệuquả:Yêucầunàyđượcthểhiệnthôngqua
mộtsốcácđặcđiểmcủahệthốngnhư
sau:
; Nănglượngtiêuthụ
; Kíchthướcvềphầncứngvàphầnmềm
; Hiệuquảvềthờigianthựchiện
; Kíchthướcvàkhốilượng
; Giáthành
Phânhoạchtácvụvàchứcnănghoá:Cácbộvixửlýtrongcáchệnhúngthườngđược
sửdụngđểđảmnhiệmvàthựchiệnmộthoặcmộtnhómch
ứcnăngrấtđộclậpvàcũng
đặcthùchotừngphầnchứcnăngcủahệthốnglớnmànóđượcnhúngvào.Vídụnhư
mộtvixửlýthựchiện mộtphần
điềukhiểnchomộtchứcnăngthuthập,xửlývàhiển
thịcủaôtôhayhệthốngđiềukhiểnquátrính.Khảnăngnàylàmtăngthêmsựchuyên
biệthoávềchứcnă
ngcủamộthệthốnglớnvàdễdànghơnchoquátrínhxâydựng,
vậnhànhvàbảotrì.
Khảnăngthờigianthực:Cáchệthốngđềugắnliềnvớiviệcđảm
nhiệmmộtchứcnăng
chínhvàphảiđượcthựchiệnđúngtheomộtkhungthờigianquiđịnh.Thôngthường
mộtchứcnăngcủahệthốngphảiđượcthựchiệnvàhoàn
thànhtheomộtyêucầuthời
gianđịnhtrướcđểđảmbảothôngtincậpnhậtkịpthờichophầnxửlýcủacácchức
năngkhácvàcóthểảnhhưởngtrựctiếptới
sựhoạtđộng đúngvàchínhxáccủatoàn
hệthống.Tuỳthuộcvàotừngbàitoánvàyêucầucủahệthốngmàyêucầuvềkhảnăng
thờigianthựccũngrấtkhácnhau.
Tuynhiên,trong thựctếkhôngphải hệnhúngnàocũngđềucóthểthoảmãntấtcả
nhữngyêucầunêutrên,vìchúnglàkếtquảcủasựthoảhiệpcủanhiềuyêucầuvàđiề
u
kiệnnhằmưutiênchochứcnăngcụthểmàchúngđượcthiếtkế.Chínhđiềunàylại
9
cànglàmtăngthêmtínhchuyênbiệthoácủacáchệ/thiếtbịnhúngmàcácthiếtbịđa
năngkhôngthểcạnhtranhđược.
1.3.2 Xu thế phát triển và sự tăng trưởng của hệ nhúng
Vìsựpháttriểnhệnhúnglàsựkếthợpnhuầnnhuyễngiữaphầncứngvàphầnmềm
nêncôngnghệgắnliềnvớinócũngchínhlàcôngnghệkếthợpgiữacác
giảiphápcho
phầncứngvàmềm.Vìtínhchuyênbiệtcủacácthiếtbị/hệnhúngnhưđãgiớithiệu
nêncácnềnphầncứngcũngđượcchếtạođểưutiênđápứngcho
chứcnănghaynhiệm
vụcụthểcủayêucầuthiếtkếđặtra.
Lớphệnhúngưutiênphát triểntheotiêuchívề kíchthướcnhỏgọn,tiêu thụnăng
lượngít,giáthànhthấp.Các
chípxửlýnhúngcholớphệthốngứngdụngđóthường
yêucầuvềkhảnăngtínhtoáníthoặcvừaphảinênhầuhếtđượcxâydựngtrêncởsở
bộđồngxửlý8bít‐
16bithoặccùnglắmlà32bitvàkhônghỗtrợdấuphảyđộngdosự
hạnchếvềdunglượngvàkhảnăngtínhtoán.
Lớphệnhúngưutiênthựcthikhảnăngxửlýtínhtoánv
ớitốcđộthựchiệnnhanh.Các
chípxửlýnhúngchocáchệthốngđócũngsẽlàcácChipápdụngcáccôngnghệcao
cấpvớikiếntrúcxửlýsongsongđểđápứngđượccườngđộtínhtoán
lớnvàtốcđộmà
cácChipxửlýđachứcnăngthôngthườngkhôngđạttớiđược.
Lớphệthốngưutiêncảhaitiêuchípháttriểncủahailớptrên,tứclàkíchthướcnhỏ
g
ọn,mứctiêuthụnănglượngthấp,tốcđộtínhtoánnhanh.Tuỳtheosựthoảhiệpgiữa
cácyêucầuvàxuthếpháttriểnchínhvìvậycũngkhôngcógìngạcnhiênkhichúngta
thấ
ysựtồntạisongsongcủarấtnhiềucácChipvixửlýnhúng,viđiềukhiểnnhúng8
bit,16bithay32bitcùngvớicácChípsiêuxửlýkhácvẫnđangđượcứngdụngrộng
rãichohệnhúng.Đócũnglàsựkếthợpđadạngvàsựrađờicủacáchệnhúngnói
chungnhằmthoảmãncácứngdụngpháttriểnkhôngngừng.
Vớimỗimộtnềnph
ầncứngnhúngthườngcónhữngđặcthùriêngvàkèmtheomột
giảipháppháttriểnphầnmềmtốiưutươngứng.Khôngcómộtgiảiphápnàochung
vàchuẩntắcchotất
cảcáchệnhúng.Chínhvìvậythôngthườngcácnhàpháttriểnvà
cungcấpphầncứngcũnglạichínhlànhàcungcấpgiảiphápphầnmềmhoặccôngcụ
pháttriểnphầnm
ềmkèmtheo.RấtphổbiếnhiệnnaycácChipvixửlýhayviđiều
khiểnđềucócáchệpháttriển(StarterKithayEmulator)đểhỗtrợchocácnhàứngdụng
vàxâydựnghệnhúngvới
hiểubiếthạnchếvềphầncứng.Ngônngữmãhoãphần
mềmcũngthườnglàChoặc gầngiốngnhư C(LikelyC)thay vìphảiviết hoàntoàn
bằnghợpngữAssembly
.Điềunàychophépcácnhàthiếtkếtốiưuvàđơngiảnhoárất
nhiềuchobướcpháttriểnvàxâydựnghệnhúng.
Trong xu thế phát triển không ngừng và nhằm thoả mãnđược
nhu cầu phát triển
nhanh và hiệu quả có rất nhiều các công nghệ cho phép thực thi các giải pháp hệ
nhúng.ĐứngsausựphổcậprộngrãicủacácChipvixửlýviđiềukhiển
nhúng,DSP
phảikểđếncáccôngnghệcũngđangrấtđượcquantâmhi ệnnaynhưASIC,CPLD,
10
FPGA,PSOC vàsự tổhợp củachúng Kèm theođólà cáckỹ thuậtpháttriển phần
mềmchophépđảmnhiệmđượccácbàitoányêu cầukhắtkhetrêncơsởmộtnềnphần
cứng
hữuhạnvềkhảnăngxửlývàkhônggianbộnhớ.Giảiquyếtcácbàitoánthời
gianthựcnhưphânchiatácvụvàgiảiquyếtc ạnhtranhchiasẻtàinguyênchung.Hiện
naycũ
ngđãcó nhiềunhàphát triểncông nghệphần mềm lớnđanghướngvào thị
trườnghệnhúngbaogồmcảMicrosoft.NgoàimộtsốcáchệđiềuhànhWindowsquen
thuộc dùngcho PC,Microsoftcũngđ
ãtungra cácphiên bảnmini nhưWindowsCE,
WindowsXPEmbeddedvàcáccôngcụpháttriểnứngdụngkèmtheođểphụcvụchocác
thiếtbịnhúng,điểnhìnhnhưcácthiếtbịPDA,mộtsốthiếtbịđiều
khiểncôngnghiệp
nhưcácmáytínhnhúng,IPCcủaSiemens
Có thểnóihệ nhúngđã trởthành một giảipháp công nghệ và pháttriển một cách
nhanhchóng,hứa hẹnnhiềuthiết bị nhúngsẽ chiếm
lĩnhđược thịtrườngrộng lớn
trongtươnglainhằmđápứngnhucầuứngdụngkhôngng ừngtrongcuộcsốngcủa
chúngta.Đốivớilĩnhvựccôngnghiệpvềđiềukhiể
nvàtựđộnghoá,hệnhúngcũnglà
mộtgiảiphápđầytiềmnăngđãvàđangđượcứngdụngrộngrãi.Nórấtphùhợpđể
thựcthicácchứcnăngthôngminhhoá,chuyênbiệttrong
cáchệthốngvàthiếtbịcông
nghiệp,từcáchệthốngtậptrungđếncáchệthốngphântán.Giảipháphệnhúngcóthể
thựcthitừcấpthấpnhấtcủahệthốngcôngnghiệ
pnhưcơcấuchấphànhchođếncác
cấpcaohơnnhưgiámsátđiềukhiểnquátrình.
1.4 Mục đích và nội dung môn học
Hệđiềukhiểnnhúnglàm ộtmônhọcmớinhằmcungcấpkiếnthứcchosinhviênvề
khảnăngphântíchvàthiếtkếhệthốngđiềukhiểnvàthôngminhhoáhệthốngtheo
chứcnăngtheogiảiphápcôngnghệ.Thiếtkếthựcthiđiềukhiểntrênnềnphầncứng
nhúng.
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ết tớiphầnlõixửlýcủacácbộVXLlàđơnvịxửlýtrungtâmCPU
(CentralProcessing Unit)đó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ầntự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đóđượclữ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ạngthá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ậpthanhghiđó
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áckiế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ữngthanhghiqua n trọng nhất của CPU là thanhghibộ đế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ộđếmchươ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 đểduy trìtínhiệu tríchmẫuổnđịnh saukhi xungnhịp
chuẩnđồnghồthayđổi.Thựcchấtkhoảngthờigianthiếtlậpvàthờigianlưugi
ữlàcần
thiếtđểđảmbảo tínhiệuđượcghinhận chínhxác vàổnđịnh trongquá trìnhhoạ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ực bộnhớvàchỉradữliệuđượclưugiữởđâutrongkhônggianbộ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ực tiế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ềukhiể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ỉratro ngHì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ệu và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ôngqu a
việctruy nhậplấy dữliệu ratừ vùngdữ liệuRAM hoặctừ vùngmãchươngtrì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ình2‐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ácsự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ềnthông nốitiếp,ngắt bộđịnhthờ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ìnhngắt là CPUnhận dạng tínhiệu ngắ
t, nếuchấp nhậnsẽđưa contrỏ 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ục vụ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ềmthực chất thựchiện một lờigọi hàmđặcbiệt màđược kíchhoạtbở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ác sự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ện ngắ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ực tiế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ảyra sẽ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ệnphần mềm,thiếtlập khoảngthờigianđảmbảoch
ắcchắn hệ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ảichia sẻ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ềuthờ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ực hiệ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ột khoảngthờigian rấtngắn.Nhưng nhượcđiểmcủanó lànếudữ liệucầ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ấu hì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đọc dữ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ộtgiao diệnngoại vicổng songsong khảtrìnhđượcchế tạotheo 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ểđược sử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ềubà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động nà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ínhiệ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ụcvụ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ưu tiêntruyềnthôngnối tiếpđượcpháttriển bởiPhilips Semiconductorvà
đượ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ínhiệ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ênSPIhoà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ôngnghệ tiềm năngrộng lớnđólàcác thiếtbịxử lývàđiều khiể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ác thiế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ấutrú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ạivi.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ưucác
40
sốnguyên16‐bithoặccácsốthựctrongmộtmiềngiátrịcốđịnh.Tuynhiêncá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ển chươ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 bitbiể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êucầ
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áttriểncủa cácchủng loạiChip khảtrình mảngPLA(Programmable Logic
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ều kh
ố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ộtsựlựa chọn thaythếrất cạnh tranhcủacá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ều cá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đều thự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 rocó thểxảyranếusửdụng côngnghệSRAMlàhiệntượ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ườilậ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‐basedFPGAs cũ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ũng cóthểgiảmđượcthời gianlantruyền tínhiệu kếtnốiliên thônggiữacá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ấuhì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ấu hì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ạiFP GAmị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 (LookupTable).Trong loạicấutrú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êmcảcác phần tử nhớ RAM vàđược gọi làRAM
nhúng
(embedded RAM).Các phầntửRAMđóđược tổchức thànhtừngkhố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ới mỗ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ểđượcchia rathà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
49
đượccácsốtrongphạmvitừ‐127đến+127.MộtcáchtổngquátmộttừNbitsẽbiểu
diễnđược‐2
(N‐1)
‐1đến+2
(N‐1)
‐1.
Chúýkhithựchiệncộnghaisốcódấu:
9 Nếuhaisốcùngdấuthìthựchiệnphépcộngphầnbiểudiễngiátrịvàsửdụngbit
dấucùngdấuv
ớihaisốđó.
9 Nếuhaisốkhácdấuthìkếtquảsẽnhậndấucủatoántửlớnhơn,vàthựchiện
phéptrừgiữatoántửcógiátrịlớnhơnvớitoán
tửbéhơn.
Vídụ1:Cộnghaisốcódấu01001111
2và001000112.
1111 ⇐ carries
01001111 (79)
0+0100011 +(35)
01110010 (114)
Vídụ2:Cộnghaisốcódấu01001111
2và011000112.
Nhớcuốicùng 1
← 1111 ⇐carries
Tràn 0 1001111 (79)
bỏnhớ 0+ 1100011 +(99)
0 0110010 (50)
Vídụ3:Trừhaisốcódấu01001111
2và011000112.
0112 ⇐borrows
0 1100011 (99)
0‐ 1001111 ‐(79)
0 0010100 (20)
Vídụ4:Cộnghaisốkhácdấu10010011
2(‐19)và000011012(+13)
012 ⇐borrows
1 0010011 (‐19)
0‐ 0001101 +(13)
1 0000110 (‐6)
Thuậttoánthựchiệnphéptínhcódấu:
(1) Khaibáovàxóacácbiếnlưugiátrịvàdấuđểchuẩnbịthựchiệnphéptính.
(2) Kiểmtradấucủatoántửthứnhấtđểxemcóphảisốâmkhông.Nếulàsốâm
thì
thựchiệnbùdấuvàbùtoántử.Nếukhôngthìchuyểnquathựchiệnbước3.
(3) Kiểmtradấucủatoántửthứhaiđểxemcóphảisốâmkhông.Nếulàsốâmthì
thựchiệnbùdấuvàbùtoántử.Nếukhôngthìchuyểnsangthựchiệnbước4.
(4) Thựchiệnphépnhânhoặcchiavớicáctoántửvừaxửlý.
(5) Kiểmtradấ
u.Nếuzerothìcoinhưđãkếtthúc.Nếubằng‐1(0ffh)thìthựchiện
phéptínhbùhaivớikếtquảthuđượcvàkếtthúc.
50
Hiệnnayngườitasửdụnghaiquiướcbiểudiễnsốnguyênphânbiệttheothứtựcủa
bytetrọngsốtrongmộttừđượcbiểudiễn:
• Litteedian:bytetrọngsốnhỏnhấtđứngtrướcÆthuậnlợichophépcộnghoặc
trừvà
• Bigendian:bytetrọngsốlớnnhấtđứngtrướcÆthuậnlợichophépnhânhoặc
chia.
Vídụxétmộtsốnhịphân4‐byte
Theoquiướcbiểudiễnlitteedianthìthứtựđịachỉlưutrongbộnhớsẽlà:
Địachỉcởsở+0=Byte0
Địachỉcơsở+1=Byte1
Địachỉcơsở+2=Byte2
Địa
chỉcơsở+3=Byte3
Vàtheoquiướcbiểudiễnsốbigediansẽlà:
Địachỉcởsở+0=Byte3
Địachỉcơsở+1=Byte2
Địachỉcơsở+2=Byte1
Địachỉcơsở+3=Byte0
3.2.3 Số dấu phảy tĩnh
Chúngtacóthểsửdụngm ộtkýhiệudấuchấm ảođểbiểudiễnm ộtsốthực.Dấuchấm
ảođượcsửdụngtrongtừdữliệudùngđểphânbiệtvàngăncáchgiữa
phầnbiểudiễn
giátrịnguyêncủadữliệuvàmộtphầnlẻthậpphân.Vídụvềmộttừ8‐bitbiểudiễnsố
dấuphảyđộngđượcchỉranhưtrongHình3‐1.Với
cáchbiểudiễnnày,giátrịthựccủa
sốđượctínhnhưsau:
43210123
43210 1 2 3
432101 23
22222 2 2 2
02 12 02 12 12 12 02 12
8211/21/8
11.625
Na a a a a a a a
−−−
−− −
−−−
=+++++ + +
= ⋅ +⋅ +⋅ +⋅ +⋅ +⋅ +⋅ +⋅
=+++ +
=
Hình3‐1:Địnhdạngbiểudiễnsốdấuphảytĩnh8bit
Nhượcđiểmcủaphươngphápbiểudiễnsốdấuphảytĩnhlàvùngbiểudiễnsốnguyên
bịhạnchếbởidấuphảytĩnhđượcgáncốđịnh.Điềunàydễxảyra
hiệntượngtrànsố
khithựchiệncácphépnhânhaisốlớn.