Tải bản đầy đủ (.pdf) (54 trang)

tài liệu tóm tắt bài giảng hệ thống điều khiển nhúng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.91 MB, 54 trang )

1
TrườngĐạihọcBáchkhoaHàNội
BộmônĐiềukhiểntựđộng



  
Tàiliệutómtắtbàigiảng

HỆ THỐNG ĐIỀU KHIỂN NHÚNG
  (EmbeddedControlSystems)

TS.LưuHồngViệt






























2




Nội dung

1 MỞĐẦU 5
1.1 Cáckháiniệmvềhệnhúng 5
1.2 Lĩnhvựcứngdụngcủahệnhúng 7
1.3 Đặcđiểmcôngnghệvàxuthếpháttriểncủahệnhúng 8
1.3.1 Đặcđiểmcôngnghệ 8
1.3.2 Xuth
ếpháttriểnvàsựtăngtrưởngcủahệnhúng 9
1.4 Mụcđíchvànộidungmônhọc 10
2 CẤUTRÚCPHẦNCỨNGHỆNHÚNG 11
2.1 Cácthànhphầnkiếntrúccơbản 11
2.1.1 Đơnvịxửlý
trungtâmCPU 11

2.1.2 Xungnhịpvàtrạngtháitínhiệu 13
2.1.3 Busđịachỉ,dữliệuvàđiềukhiển 16
2.1.4 Bộnhớ 17
2.1.5 Khônggianvàphânvùngđịachỉ 21
2.1.6 Ngoạivi 21
2.1.7 Giaodiện 33
2.2 Mộ
tsốnềnphầncứngnhúngthôngdụng(µP/DSP/PLA) 37
2.2.1 ChipVixửlý/Viđiềukhiểnnhúng 37
2.2.2 ChipDSP 39
2.2.3 PAL 41
3 CƠSỞKỸTHUẬTPHẦNMỀMNHÚNG 48
3.1 Đặcđiểmphầnmềm
nhúng 48
3.2 Biểudiễnsốvàdữliệu 48
3.2.1 Cáchệthốngcơsố 48
3.2.2 Sốnguyên 48
3.2.3 Sốdấuphảytĩnh 50
3.2.4 Sốdấuphảyđộng 51
3.2.5 Mộtsốphéptínhcơbản 52
3.3 Tậplệnh 55

3.3.1 CấutrúctậplệnhCISCvàRISC 55
3.3.2 Địnhdạnglệnh 57
3.3.3 Cáckiểutruyềnđịachỉtoántửlệnh 57
3.3.4 Nguyênlýthựchiệnpipeline 60
3.3.5 Harzard 61
3
3.4 Ngônngữvàmôitrườngpháttriển 63
3.4.1 Ngônngữ 63

3.4.2 Biêndịch 65
3.4.3 Simulator 70
3.4.4 Emulator 71
3.4.5 Thiếtkếhệthốngbằngmáytính 71
4 HỆĐIỀUHÀNHNHÚNG 73
4.1 Hệđiềuhành 73
4.2 Bộnạpkhởi
tạo(Boot‐loader) 74
4.3 Cácyêucầuchung 76
4.4 Hệđiềuhànhthờigianthực 77
5 KỸTHẬTLẬPTRÌNHNHÚNG 81
5.1 Tácvụvàquátrình(process) 81
5.2 Lậplịch(Scheduling) 81
5.2.1 Cáckháiniệm 81
5.2.2
Cácphươngpháplậplịchphổbiến 82
5.2.3 Kỹthuậtlậplịch 85
5.3 Truyềnthôngvàđồngbộ 87
5.3.1 Semaphore 87
5.3.2 Monitor 89
5.4 Xửlýngắt 90
6 THIẾTKẾHỆNHÚNG:TỔHỢPPHẦNCỨNGVÀM
ỀM 93
6.1 Quitrìnhpháttriển 93
6.2 Phântíchyêucầu 93
6.3 Môhìnhhoásựkiệnvàtácvụ 93
6.3.1 PhươngphápmôhìnhPetrinet 93
6.3.2 QuiướcbiểudiễnmôhìnhPetrinet 94
6.3.3 Môtảcáctìnhhuốnghoạtđộ
ngcơbảnvớiPetrinet 95

6.3.4 Ngônngữmôtảphầncứng(VHDL) 103
6.4 Thiếtkếphầnmềmđiềukhiển 104
6.4.1 Môhìnhthựcthibộđiềukhiểnnhúng 104
6.4.2 Vídụthựcthibộđiềukhi
ểnPIDsố 106
TÀILIỆUTHAMKHẢO 108








4



















5
1 MỞ ĐẦU
Kỷnguyêncông nghệmớiđãvàđang tiếptụcpháttriểnkhôngngừngnhằmthông
minhhoáhiệnđạihoáthôngsuốtcáchệthống.Cóthểnóiđánhdấusựrađờivàphát
triểnc ủah
ệnhúngtrướctiênphảikểđếnsựrađờicủacácbộvixửlý,viđiềukhiển.
NóđượcđánhdấubởisựrađờicủaChipvixửlýđầutiên4004vàonăm1971chomục
đích
tínhtoánth ươngmạibởimộtcôngtyNhậtbảnBusicomvàsauđóđãđượcchắp
cánhvàpháttriểnvượtbậcbởiIntelđểtrởthànhcácbộsiêuxửlýnhưcácChipđược
ứngdụng
choPCnhưngàynay.Thậpkỷ80cóthểđượccoilàkhởiđiểmbắtđầukỷ
nguyêncủasựbùngnổvềpháttriểncáchệnhúng.Từđókhởinguồncholànsóngra
đờicủahànglo
ạtcácchủngloạivixửlývàgắnliềnlàcáchệnhúngđểthâmnhậprộng
khắptrongcácứngdụnghàngngàycủacuộcsốngchúngtavídụnhư,cácthiếtbịđiện
tửsửdụngchosinhhoạthàngngày(lòvisóng,TV,tủlạnh,máygiặt,điềuhoà )và
vănphònglàmviệc(máyfax,máyin,máyđiệnthoại ) Cácbộvixửlývàphầnmềm
c
ũngngàycàngđượcsửdụngrộngrãitrongrấtnhiềucáchệthốngnhỏ.Cácloạivixử
lýđượcsửdụngtrongcáchệthốngnhúnghiệnnayđãvượtxasovớiPCvềsố
lượng
chủngloại(chiếmđến79%sốcácvixửlýđangtồntại[2])vàvẫncòntiếptụcphát
triểnđểnhằmđápứngvàthoảmãnrấtnhiềuứngdụngđadạng.Trong
sốđóvẫncòn
ứngdụngcảcácChipvixửlý8bit,16bitvàhiệnnaychủyếuvẫnlà32bit(chiếm
khoảng75%).Gắnliềnvớisựpháttriểnphầncứng,ph

ầnmềmcũngđãpháttriểnvới
tốcđộnhanhkhôngthuakémthậmchísẽt ăngnhanhhơnrấtnhiềutheosựpháttriển
hệnhúng.
1.1 Các khái niệm về hệ nhúng
 Hệnhúng?
Trongthếgiớithựccủachúngtabấtkỳmộtthiếtbịhayhệthốngđiện/điệntửcókhả
năngxửlýthôngtin vàđiềukhiểnđều cóthểtiềmẩn trong
đómột thiếtbịhay hệ
nhúng,vídụnhưcácthiếtbịtruyềnthông,thiếtbịđolườngđiềukhiển,cácthiếtbị
phụcvụsinhhoạthàngngàynhưlòvisóng,máygiặt,camera…Rất
dễdàngđểcóthể
kểrahàngloạtcácthiếtbịhayhệthốngnhưvậyđangtồntạiquanhta,chúnglàhệ
nhúng.Vậyhệnhúngthựcchấtlàgìvànênhiểuthếnàovềhệnhúng?Hi
ệnnaycũng
chưacómộtđịnhnghĩanàothựcsựthoảđángđểđượcchuẩnhoávàthừanhậnrộng
rãichohệnhúngmàvẫnchỉlànhữngkháiniệmdiễntảvềchúngthôngqua
nhữngđặc
thùchung.Tuynhiênởđâychúngtacóthểhiểuhệnhúnglàmộtphầnhệthốngxửlý
thôngtinnhúngtrongcáchệthốnglớn,phứchợpvàđộclậpvídụnhưtrongôtô,các
thi
ếtbịđolường,điềukhiển,truyềnthôngvàthiếtbịthôngminhnóichung. Chúnglà
nhữngtổhợpcủaphầncứngvàphầnmềmđểthựchiệnmộthoặcm ộtnhómchứ
cnăng
chuyên biệt, cụ thể (Tráingượcvới máy tínhPC màchúngta thường thấyđược sử
dụngkhôngphảichomộtchứcnăngmàlàrấtnhiềuchứcnănghayphục
vụchungcho
nhiềumụcđích).PCthựcchấtlạilàmộthệthốnglớn,tổhợpcủanhiềuhệthốngnhúng
vídụnhưcardmànhình,âmthanh,modem,ổcứng,bànphím…Chínhđiềunàylàm

chúngtadễlúngtúngnếuđượchỏinênhiểuthếnàovềPC,cóphảilàhệnhúnghay

không.
6

   

Hình1‐1:Mộtvàihìnhảnhvềhệnhúng
 Hệthờigianthực?
Trongcácbàitoánđiềukhiểnvàứngdụngchúngtarấthaygặpthuậtng ữ“thờigian
thực”.Thờigianthựccóphảilàthờigianphảnánh
vềđộtrungthựccủathờigianhay
không?Thờigianthựccóphảilàhi ểnthịchínhxácvàđồngbộtheođúngnhưnhịp
đồnghồđếmthờigianhay không?Khôngphải hoàntoànnhưvậy!Th
ựcchất,theo
cáchhiểunếunóitrongcáchệthốngkỹthuậtđặcbiệtcáchệthốngyêucầukhắtkhevề
sựràngbuộcthờigian,thờigianthựcđượchiểulàyêucầ
ucủahệthốngphảiđảmbảo
thoảmãnvềtínhtiềnđịnhtronghoạtđộngcủahệthống.Tínhtiềnđịnhnóilênhànhvi
củahệthốngthựchiệnđúngtrongmộtkhungthời
gianchotrướchoàntoànxácđịnh.
Khungthờigiannàyđượcquyếtđịnhbởiđặcđiểmhoặcyêucầucủahệthống,cóthểlà
vàigiâyvàcũngcóthểlàvàinanogiâyhoặcnhỏhơ
nnữa.Ởđâychúngtaphânbiệt
yếutốthờigiangắnliềnvớikháiniệmvềthờigianthực.Khôngphảihệthốngthực
hiệnrấtnhanhlàsẽđảmbảođượctínhth
ờigianthựcvìnhanhhaychậmhoàntoànlà
phépsosánhcótínhtươngđốivìmiligiâycóthểlànhanhvớihệthốngđiềukhiển 
nhiệtnhưnglạilàchậm đốivớicácđối
tượngđiềukhiểnđiệnnhưdòng,áp….Hơnthế
nữanếuchỉnhanhkhôngthìchưađủmàphảiđảmbảoduytrìổnđịnhbằngmộtcơ
chếhoạtđộngtincậy.Chínhvìvậyh

ệthốngkhôngkiểmsoátđượchoạtđộngcủanó
(bấtđịnh)thìkhôngthểlàm ộthệthốngđảmbảotínhthờigianthựcmặcdùhệthống
đócóthểchođápứngrấtnhanh,th
ậmchínhanhhơnrấtnhiềusovớiyêucầuđặtra.
Mộtvídụ minh hoạtiêu biểuđólà cơchếtruyền thôngdữliệu quađường truyền
chuẩnEthernettruyềnthống,mặcdù
aicũngbiếttốcđộtruyềnlàrấtnhanhnhưngvẫn
khôngphảihệhoạtđộngthờigianthựcvìkhôngthoảmãntínhtiềnđịnhtrongcơchế
truyềndữliệu(cóthểlàrấtnhanh
vàcũngcóthểlàrấtchậmnếucósựcanhtrạnhvà
giaothôngđườngtruyềnbịnghẽn).

7
Ngườitaphânralàmhailoạiđốivớikháiniệmthờigianthựclàcứng(hardreal ‐time)
vàmềm(softreal‐time).Thờigianthựccứnglàkhihệthốnghoạtđộngv
ớiyêucầuthoả
mãnsựràngbuộctrongkhungthờigiancứngtứclànếuviphạmthìsẽdẫnđếnhoạt
độngcủatoànhệthốngbịsaihoặcbịpháhuỷ.Vídụv
ềhoạtđộngđiềukhiểnchomột
lòphảnứnghạtnhân, nếuchậmraquyếtđịnhcóthểdẫnđếnthảmhoạgâyradophản
ứngphânhạchvàdẫnđếnbùngnổcảh
ệthống.Thờigianthựcmềmlàkhi hệthống
hoạtđộngvớiyêucầuthoảmãnràngbuộctrongkhungthờigianmềm,nếuviphạmvà
sailệchnằmtrongkhoảngchophép
thìhệthốngvẫncóthểhoạtđộngđượcvàchấp
nhậnđược.Vídụnhưhệthốngphátthanhtruyềnhình,nếuthông tintruyềnđitừtrạm
pháttớingườinghe/nhìnchậmmộtvài
giâythìcũngkhôngảnhhưởngđángkểđến
tínhthờisựcủatinđượctruyềnđivàhoàntoànđượcchấpnhậnbởingườitheodõi.


Thựctếthấyrằnghầuhếthệnhúnglàcác
hệthờigianthựcvàhầuhếtcáchệthờigian
thựclàhệnhúng.Điềunàyphảnánhmốiquanhệmậtthiếtgiữahệnhúngvàthờigian
thựcvàtínhthờigian
thựcđãtrởthànhnhưmộtthuộctínhtiêubiểu củahệnhúng.Vì
vậyhiệnnaykhiđềcậptớicáchệnhúngngườitađềunóitớiđặctínhcơbảncủanólà
tínhthời
gianthực.
Hệ thời gian thực
Hệ Nhúng
Hệnhúngthời
gianthực

Hình1‐2:Phânbốvàquanhệgiữahệnhúngvàthờigianthực
1.2 Lĩnh vực ứng dụng của hệ nhúng
Chúngtacóthểkểrađượcrấtnhiềucácứngdụngcủahệthốngnhúngđangđượcsử
dụnghiệnnay,vàxuthểsẽcòntiếptụctăngnhanh.Mộtsốcáclĩnhvựcvàs
ảnphẩm
thịtrườngrộnglớncủacáchệnhúngcóthểđượcnhómnhưsau:
• Cácthiếtbịđiềukhiển
• Ôtô,tàuđiện
• Truyềnthông
• Thiếtbịytế
• Hệthốngđo
lườngthẩmđịnh
• Toànhàthôngminh
• Thiếtbịtrongcácdâytruyềnsảnxuấ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áchệthốngnhưvậyđềucóchungmộtsốđặcđiểmnhưyêucầuvềkhảnăngthời
gianthực,độtincậy,tínhđộclậpvàhiệuquả.Mộtcâuhỏiđặtralàtại
saohệthống
nhúnglạipháttriểnvàđượcphổcậpmộtcáchnhanhchóngnhưhiệnnay.Câutrảlời
thựcranằmởcácyêucầutănglênkhôngngừngtrongcácứngdụngcôngnghệ
hiện
nay.Mộttrongnhữngyêucầucơbảnđólà:

Khảnăngđộclậpvàthôngminhhoá:Điềunàyđượcchỉrõhơnthôngquamộtsốcác
thuộctínhyêucầu,cụthểnhư:

; Độtincậy
; Khảnăngbảotrìvànângcấp
; Sựphổcậpvàtiệnsửdụng
; Độantoàn
; Tínhbảomật

Hiệuquả:Yêucầunàyđượcthểhiệnthôngqua
mộtsốcácđặcđiểmcủahệthốngnhư
sau:
; Nănglượngtiêuthụ
; Kíchthướcvềphầncứngvàphầnmềm
; Hiệuquảvềthờigianthựchiện
; Kíchthướcvàkhốilượng
; Giáthành

Phânhoạchtácvụvàchứcnănghoá:Cácbộvixửlýtrongcáchệnhúngthườngđược
sửdụngđểđảmnhiệmvàthựchiệnmộthoặcmộtnhómch

ứcnăngrấtđộclậpvàcũng
đặcthùchotừngphầnchứcnăngcủahệthốnglớnmànóđượcnhúngvào.Vídụnhư
mộtvixửlýthựchiện mộtphần
điềukhiểnchomộtchứcnăngthuthập,xửlývàhiển
thịcủaôtôhayhệthốngđiềukhiểnquátrính.Khảnăngnàylàmtăngthêmsựchuyên
biệthoávềchứcnă
ngcủamộthệthốnglớnvàdễdànghơnchoquátrínhxâydựng,
vậnhànhvàbảotrì.

Khảnăngthờigianthực:Cáchệthốngđềugắnliềnvớiviệcđảm
nhiệmmộtchứcnăng
chínhvàphảiđượcthựchiệnđúngtheomộtkhungthờigianquiđịnh.Thôngthường
mộtchứcnăngcủahệthốngphảiđượcthựchiệnvàhoàn
thànhtheomộtyêucầuthời
gianđịnhtrướcđểđảmbảothôngtincậpnhậtkịpthờichophầnxửlýcủacácchức
năngkhácvàcóthểảnhhưởngtrựctiếptới
sựhoạtđộng đúngvàchínhxáccủatoàn
hệthống.Tuỳthuộcvàotừngbàitoánvàyêucầucủahệthốngmàyêucầuvềkhảnăng
thờigianthựccũngrấtkhácnhau.

Tuynhiên,trong thựctếkhôngphải hệnhúngnàocũngđềucóthểthoảmãntấtcả
nhữngyêucầunêutrên,vìchúnglàkếtquảcủasựthoảhiệpcủanhiềuyêucầuvàđiề
u
kiệnnhằmưutiênchochứcnăngcụthểmàchúngđượcthiếtkế.Chínhđiềunàylại
9
cànglàmtăngthêmtínhchuyênbiệthoácủacáchệ/thiếtbịnhúngmàcácthiếtbịđa
năngkhôngthểcạnhtranhđược.
1.3.2 Xu thế phát triển và sự tăng trưởng của hệ nhúng
Vìsựpháttriểnhệnhúnglàsựkếthợpnhuầnnhuyễngiữaphầncứngvàphầnmềm
nêncôngnghệgắnliềnvớinócũngchínhlàcôngnghệkếthợpgiữacác

giảiphápcho
phầncứngvàmềm.Vìtínhchuyênbiệtcủacácthiếtbị/hệnhúngnhưđãgiớithiệu
nêncácnềnphầncứngcũngđượcchếtạođểưutiênđápứngcho
chứcnănghaynhiệm
vụcụthểcủayêucầuthiếtkếđặtra.

Lớphệnhúngưutiênphát triểntheotiêuchívề kíchthướcnhỏgọn,tiêu thụnăng
lượngít,giáthànhthấp.Các
chípxửlýnhúngcholớphệthốngứngdụngđóthường
yêucầuvềkhảnăngtínhtoáníthoặcvừaphảinênhầuhếtđượcxâydựngtrêncởsở
bộđồngxửlý8bít‐
16bithoặccùnglắmlà32bitvàkhônghỗtrợdấuphảyđộngdosự
hạnchếvềdunglượngvàkhảnăngtínhtoán.

Lớphệnhúngưutiênthựcthikhảnăngxửlýtínhtoánv
ớitốcđộthựchiệnnhanh.Các
chípxửlýnhúngchocáchệthốngđócũngsẽlàcácChipápdụngcáccôngnghệcao
cấpvớikiếntrúcxửlýsongsongđểđápứngđượccườngđộtínhtoán
lớnvàtốcđộmà
cácChipxửlýđachứcnăngthôngthườngkhôngđạttớiđược.

Lớphệthốngưutiêncảhaitiêuchípháttriểncủahailớptrên,tứclàkíchthướcnhỏ
g
ọn,mứctiêuthụnănglượngthấp,tốcđộtínhtoánnhanh.Tuỳtheosựthoảhiệpgiữa
cácyêucầuvàxuthếpháttriểnchínhvìvậycũngkhôngcógìngạcnhiênkhichúngta
thấ
ysựtồntạisongsongcủarấtnhiềucácChipvixửlýnhúng,viđiềukhiểnnhúng8
bit,16bithay32bitcùngvớicácChípsiêuxửlýkhácvẫnđangđượcứngdụngrộng

rãichohệnhúng.Đócũnglàsựkếthợpđadạngvàsựrađờicủacáchệnhúngnói

chungnhằmthoảmãncácứngdụngpháttriểnkhôngngừng.

Vớimỗimộtnềnph
ầncứngnhúngthườngcónhữngđặcthùriêngvàkèmtheomột
giảipháppháttriểnphầnmềmtốiưutươngứng.Khôngcómộtgiảiphápnàochung
vàchuẩntắcchotất
cảcáchệnhúng.Chínhvìvậythôngthườngcácnhàpháttriểnvà
cungcấpphầncứngcũnglạichínhlànhàcungcấpgiảiphápphầnmềmhoặccôngcụ
pháttriểnphầnm
ềmkèmtheo.RấtphổbiếnhiệnnaycácChipvixửlýhayviđiều
khiểnđềucócáchệpháttriển(StarterKithayEmulator)đểhỗtrợchocácnhàứngdụng
vàxâydựnghệnhúngvới
hiểubiếthạnchếvềphầncứng.Ngônngữmãhoãphần
mềmcũngthườnglàChoặc  gầngiốngnhư C(LikelyC)thay vìphảiviết hoàntoàn
bằnghợpngữAssembly
.Điềunàychophépcácnhàthiếtkếtốiưuvàđơngiảnhoárất
nhiềuchobướcpháttriểnvàxâydựnghệ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.ĐứngsausựphổcậprộngrãicủacácChipvixửlýviđiềukhiển
nhúng,DSP
phảikểđếncáccôngnghệcũngđangrấtđượcquantâmhi ệnnaynhưASIC,CPLD,
10
FPGA,PSOC vàsự tổhợp củachúng Kèm theođólà cáckỹ thuậtpháttriển phần
mềmchophépđảmnhiệmđượccácbàitoányêu cầukhắtkhetrêncơsởmộtnềnphần
cứng
hữuhạnvềkhảnăngxửlývàkhônggianbộnhớ.Giảiquyếtcácbàitoánthời
gianthựcnhưphânchiatácvụvàgiảiquyếtc ạnhtranhchiasẻtàinguyênchung.Hiện

naycũ
ngđãcó nhiềunhàphát triểncông nghệphần mềm lớnđanghướngvào thị
trườnghệnhúngbaogồmcảMicrosoft.NgoàimộtsốcáchệđiềuhànhWindowsquen
thuộc dùngcho PC,Microsoftcũngđ
ãtungra cácphiên bảnmini nhưWindowsCE,
WindowsXPEmbeddedvàcáccôngcụpháttriểnứngdụngkèmtheođểphụcvụchocác
thiếtbịnhúng,điểnhìnhnhưcácthiếtbịPDA,mộtsốthiếtbịđiều
khiểncôngnghiệp
nhưcácmáytínhnhúng,IPCcủaSiemens 

Có thểnóihệ nhúngđã trởthành một giảipháp công nghệ và pháttriển một cách
nhanhchóng,hứa hẹnnhiềuthiết bị nhúngsẽ chiếm
 lĩnhđược thịtrườngrộng lớn
trongtươnglainhằmđápứngnhucầuứngdụngkhôngng ừngtrongcuộcsốngcủa
chúngta.Đốivớilĩnhvựccôngnghiệpvềđiềukhiể
nvàtựđộnghoá,hệnhúngcũnglà
mộtgiảiphápđầytiềmnăngđãvàđangđượcứngdụngrộngrãi.Nórấtphùhợpđể
thựcthicácchứcnăngthôngminhhoá,chuyênbiệttrong
cáchệthốngvàthiếtbịcông
nghiệp,từcáchệthốngtậptrungđếncáchệthốngphântán.Giảipháphệnhúngcóthể
thựcthitừcấpthấpnhấtcủahệthốngcôngnghiệ
pnhưcơcấuchấphànhchođếncác
cấpcaohơnnhưgiámsátđiềukhiểnquátrình.
1.4 Mục đích và nội dung môn học
Hệđiềukhiểnnhúnglàm ộtmônhọcmớinhằmcungcấpkiếnthứcchosinhviênvề
khảnăngphântíchvàthiếtkếhệthốngđiềukhiểnvàthôngminhhoáhệthốngtheo

chứcnăngtheogiảiphápcôngnghệ.Thiếtkếthựcthiđiềukhiểntrênnềnphầncứ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ình2‐1:KiếntrúcđiểnhìnhcủacácchípVXL/VĐKnhúng
2.1.1 Đơn vị xử lý trung tâm CPU

Hình2‐2:CấutrúcCPU
Ngườitavẫnbiết tớiphầnlõixửlýcủacácbộVXLlàđơnvịxửlýtrungtâmCPU
(CentralProcessing Unit)đóngvaitrònhưbộnãochịutráchnhiệmthựcthicácphép
tínhvàthực
hiệncáclệnh.PhầnchínhcủaCPUđảmnhiệmchứcnăngnà ylàđơnvị
logictoánhọc(ALU–ArthimeticLogicUnit).NgoàirađểhỗtrợchohoạtđộngcủaALU
còncóthêmmộtsốcácthành
phầnkhácnhưbộgiảimã(decoder),bộtuầntự(sequencer)
vàcácthanhghi.

12
Bộgiảimãchuyểnđổi(thôngdịch)cáclệnhlưutrữởtrongbộmãchươngtrìnhthành 
cácmãmàALUcóthểhiểuđượcvàthựcthi.Bộtuầntựcónhiệmvụquảnlýdòngdữ
li
ệutraođổiquabusdữliệucủaVXL.CácthanhghiđượcsửdụngđểCPUlưutrữtạm
thờicácdữliệuchínhchoviệcthựcthicáclệnhvàchúngcóthểthayđổinộidungtrong
quátrìnhhoạtđộngcủaALU.HầuhếtcácthanhghicủaVXLđềulàcácbộnhớđược
thamchiếu (mapped)vàhộinhậpvớikhuvựcbộnhớvàcóthểđượcsửdụngnhưbất

kỳkhuvựcnhớkhác.

CácthanhghicóchứcnănglưutrữtrạngtháicủaCPU.Nếucácnộidungcủabộnhớ
VXLvàcácnộidungcủacácthanhghitạimộtthờiđ
iểmnàođóđượclữugiữđầyđủ

thìhoàntoàncóthểtạmdừngthựchiệnphầnchươngtrìnhhiệntạitrongmộtkhoảng
thờigianbấtkỳvàcó thểtrởlạitrạngthái
củaCPUtrướcđó.Thựctếsốlượngcác
thanhghivàtêngọicủachúngcũngkhácnhautrongcáchọVXL/VĐKvàthườngdo
chínhcácnhàchếtạoquiđịnh,nhưngvềcơbảnchúngđề
ucóchungcácchứcnăng
nhưđãnêu.

Khithứtựbytetrongbộnhớđãđượcxácđịnhthìngườithiếtkếphầncứngphảithực
hiệnmộtsốquyếtđịnhxemCPUsẽlưudữ
liệuđónhưthếnào.Cơchếnàycũngkhác
nhautuỳtheokiếntrúctậplệnhđượcápdụng.Cóbaloạihìnhcơbản:

(1) Kiếntrúcngănxếp
(2) Kiếntrúcbộtíchluỹ
(3)
Kiếntrúcthanhghimụcđíchchung

Kiếntrúcngănxếpsửdụngngănxếpđểthựchiệnlệnhvàcáctoántửnhậnđượctừ
đỉnhngănxếp.Mặcdùcơchếnàyhỗtrợ
mậtđộmãtốtvàmôhìnhđơngiảnchoviệc
đánhgiácáchthểhiệnchươngtrìnhnhưngngănxếpkhôngthểhỗtrợkhảnăngtruy
nhậpngẫunhiênvàhạnchếhiệusuất
thựchiệnlệnh.

Kiếntrúcbộtíchluỹvớilệnhmộttoántửngầmmặcđịnhchứatrongthanhghitíchluỹ
cóthểgiảmđượcđộphứctạpbêntrongcủacấutrúcCPUvà
chophépcấuthànhlệnh
rấtnhỏgọn.Nhưngthanhghitíchluỹchỉlànơichứadữliệutạmthờinêngiaothông
bộnhớrấtlớn.


Kiếntrúcthanhghimụcđíchchungsửd
ụngcáctậpthanhghimụcđíchchungvàđượ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đó
nhanhhơnbộnhớthườngvàdễdàngchobộbiênd
ịchxửlýthựcthivàcóthểđượcs ử
dụngmộtcáchhiệuquả.Hơnnữagiáthànhphầncứngngàycàngcóxuthếgiảmđáng
kểvàtậpthanhghicóthểtăngnhanh.Nế
ucơchếtruynhậpbộnhớnhanhthìkiếntrúc
dựatrênngănxếpcóthểlàsựlựachọnlýtưởng;cònnếutruynhậpbộnhớchậmthì
kiếntrúcthanhghisẽlàsựl
ựachọnphùhợpnhất.

Mộtsốthanhghivớichứcnăngđiểnhìnhthườngđượcsửdụngtrongcáckiếntrúc
CPUnhưsau:
13

 Thanhghicontrỏngănxếp(stackpointer):
Thanhghinàylưugiữđịachỉtiếptheocủangănxếp.Theonguyênlýgiátrịđịachỉ
chứatrongthanhghicontrỏngănxếpsẽgiả
mnếudữliệuđượclưuthêmvàongănxếp
vàsẽtăngkhidữliệuđượclấyrakhỏingănxếp.

 Thanhghichỉsố(indexregister)
Thanhghichỉsốđượcsửdụngđểlư
uđịachỉkhimodeđịachỉđượcsửdụng.Nócòn
đượcbiếttớivớitêngọilàthanhghicontrỏhaythanhghilựachọntệp(Microchip).

 Thanhghiđịachỉlệnh/Bộđếmchương
trình(ProgramCounter)

Một trong nhữngthanhghiqua n trọng nhất của CPU là thanhghibộ đếm chương
trình.Thanhghibộđếmchươngtrìnhlưuđịachỉlệnhtiếptheocủachươngtrìnhsẽ
được
CPUxửlý.MỗikhilệnhđượctrỏtớivàđượcCPUxửlýthìnộidunggiátrịcủa
thanhghibộđếmchươngtrìnhsẽtănglênmột.Chươngtrìnhsẽkếtthúckhithanhghi
PCcó
giátrịbằngđịachỉcuốicùngcủachươngtrìnhnằmtrongbộnhớchươngtrình.

 Thanhghitíchlũy(Accumulator)
ThanhghitíchlũylàmộtthanhghigiaotiếptrựctiếpvớiALU,đượ
csửdụngđểlưu
giữcáctoántửhoặckếtquảcủamộtphéptoántrongquátrìnhhoạtđộngcủaALU.
2.1.2 Xung nhịp và trạng thái tín hiệu
TrongVXLvàcácvimạchsốnóichung,hoạtđộngcủahệthốngđượcthựchiệnđồng
bộhoặcdịbộtheocácxungnhịpchuẩn.Cácnhịpđóđượclấytrựctiếphoặcgiánti
ếp
từmộtnguồnxungchuẩnthườnglàcácmạchtạoxunghoặcdaođộngthạchanh.Để
môtảhoạtđộngcủahệthống,cáctínhiệudữliệuvàđiềukhiểnthườngđược
môtả
trạngtháitheogiảnđồthờigianvàmứctínhiệunhưđượcchỉratrongHình2‐3:Môtả
vàtrạngtháitínhiệuhoạtđộngtrongVXL


Hình2‐3:MôtảvàtrạngtháitínhiệuhoạtđộngtrongVXL
Mụcđíchcủaviệcmôtảtrạngtháitínhiệutheogiảnđồthờigianvàmứctínhiệulàđể
phântíchvàxácđịnhchuỗisựkiệnhoạtđộngchitiếttrongmỗichukỳbus.
Nhờviệc
môtảnàychúngtacóthểxemxétđếnkhảnăngđápứngthờigiancủacácsựkiệnthực
thitronghệthốngvàthờigiancầnthiếtđểthựcthihoạtđộngtuầnt
ựcũngnhưlàkhả

14
năngtươngthíchkhicósựhoạtđộngphốihợpgiữacácthiếtbịghépnốihaymởrộng
tronghệthống.Thôngthườngthôngtinvềcácnhịpthờigianhoạtđộngcũngnh
ưđặc
tínhkỹthuậtchitiếtđượccungcấphoặcquiđịnhbởicácnhàchếtạo.

Mộtsốđặctrưngvềthờigiancủacáctrạngtháihoạtđộngcơbảncủacáctínhi
ệuhệ
thốnggồmcónhưsau:
9 Thờigiantănghoặcgiảm
9 Thờigiantrễlantruyềntínhiệu
9 Thờigianthiếtlập
9 Thờigiangiữ
9 Trễcấmhoạtđộng
vàtrạngtháitreo(Tri‐State)
9 Độrộngxung
9 Tầnsốnhịpxunghoạtđộng

 Thờigiantănghoặcgiảm



Hình2‐4:Môtảtrạngtháitínhiệulogictăngvàgiảm

Thờigiantăngđượcđịnhnghĩalàkhoảngthờigianđểtínhiệutăngtừ20%đến80%
mứctínhiệucầnthiết.Thờigiangiảmlàkhoảngthờigianđểtínhiệugiảmtừ
80%đến
20%mứctínhiệucầnthiết.

 Thờigiantrễlantruyền:

Làkhoảngthờigiantíntừkhithayđổitínhiệuvàochotớikhicósựthayđổitínhiệuở
đầura.Đặctínhnàythườngdocấutạovàkhảnăngtruyềndẫntínhiệuvậtlýtronghệ
thốngtínhiệu.

Hình2‐5:Môtảtrạngtháivàđộtrễlantruyềntínhiệu
 Thờigianthiếtlậpvàlưugiữ
Khoảngthờigiancầnthiếtđểtínhiệutríchmẫuđạttớimộttrạngtháiổnđịnhtrướckhi
nhịpxungchuẩnđồnghồthayđổiđượcg
ọilàthờigianthiếtlập.Thờigianlưugiữlà
15
khoảng thờigian cầnthiết đểduy trìtínhiệu tríchmẫuổnđịnh saukhi xungnhịp
chuẩnđồnghồthayđổi.Thựcchấtkhoảngthờigianthiếtlậpvàthờigianlưugi
ữlàcần
thiếtđểđảmbảo tínhiệuđượcghinhận chínhxác vàổnđịnh trongquá trìnhhoạt
độngvàchuyểnmứctrạngthái.GiảnđồthờigiantrongHình2‐6:Thờigianthiếtlập
và
lưugiữminhhọathờigianthiếtlậpvàlưugiữtronghoạtđộngcủaTrigerD.


Hình2‐6:Thờigianthiếtlậpvàlưugiữ
Trongtrườnghợphoạtđộngchuyểntrạngtháitínhiệukhôngđồngbộvàkhôngđảm
bảođượcthờigianthiếtlậpvàlưugiữsẽcóthểdẫnđếnsựmấtổnđịnhhaykhôngxá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.ĐểminhhọachohiệntượngnàytrongHình2‐7môtảhoạtđộnglỗicủa
mộ
tTrigerkhicácmứctínhiệuvàokhôngthỏamãnyêucầuvềthờithiếtlậpvàlưu
giữ.



Hình2‐7:HiệntượngMetastabilittronghoạtđộngcủaTrigerD
Chukỳtínhiệu3trạngtháivàcontention


16
Hình2‐8:Môtảchukỳtínhiệu3trạngtháivàcontention
Độrộngxungvàtầnsốnhịpxungchuẩn


Hình2‐9:Độrộngvàtầnsốxungnhịpchuẩn
2.1.3 Bus địa chỉ, dữ liệu và điều khiển
 Busđịachỉ
Busđịachỉlàcácđườngdẫntínhiệulogicmộtchiềuđểtruyềnđịachỉthamchiếutới
cáckhuvực bộnhớvàchỉradữliệuđượclưugiữởđâutrongkhônggianbộnh
ớ.
TrongqúatrìnhhoạtđộngCPUsẽđiềukhiểnbusđịachỉđểtruyềndữliệugiữacác
khuvựcbộnhớvàCPU.Cácđịachỉthôngthườngthamchiếutớicáckhuvựcbộnhớ
hoặc
cáckhuvựcvàora,hoặcngoạivi.Dữliệuđượclưuởcáckhuvựcđóthườnglà8‐
bit(1byte),16‐bit,hoặc32‐bittùythuộcvàocấutrúctừngloạivixửlý/viđiề
ukhiển.
Hầuhếtcácviđiềukhiểnthườngđánhđịachỉdữliệutheokhối8‐bit.Cácloạivixửlý
8‐bit,16‐bitvà32‐bitnóichungcũngđềucóthểlàmviệctraođổi
vớikiểudữliệu8‐bit
và16‐bit.

Chúngtavẫnthườngđượcbiếttớikháiniệmđịachỉtruynhậptrựctiếp,đólàkhảnăng
CPUcóthểthamchiếuvàtruynhập
tớitrongmộtchukỳbus.NếuvixửlýcóNbitđịa
chỉtứclànócóthểđánhđịachỉđược2

N
khuvựcmàCPUcóthểthamchiếutrực tiếp
tới.Quiướccáckhuvựcđượcđánhđịachỉbắtđầutừđịachỉ0vàtăngdầnđến2
N
‐1.
Hiệnnaycácvixửlývàviđiềukhiểnnóichungchủyếuvẫnsửdụngphổbiếncácbus
dữliệucóđộrộnglà16,20,24,hoặc32‐bit.Nếuđánhđịachỉtheobyte
thìmộtvixửlý
16‐bitcóthểđánhđịachỉđược2
16
khuvựcbộnhớtứclà65,536byte=64Kbyte.Tuy
nhiêncómộtsốkhuvựcbộnhớmàCPUkhôngthểtruynhậptrựctiếptớitứclàphải
sửdụngnhiềunhịpbusđểtruy
nhập,thôngthườngphảikếthợpvớiviệcđiềukhiển
phầnmềm.Kỹthuậtnàychủyếuđượcsửdụngđểmởrộngbộnhớvàthườngđược 
biếttớivớikháini
ệmđánhđịachỉtrangnhớkhinhucầuđánhđịachỉkhuvựcnhớ
vượtquáphạmvicóthểđánhđịachỉtruynhậptrựctiếp.

Vídụ:CPU80286có24‐bitđịachỉsẽchophépđánhđịa
chỉtrựctiếpcho2
24
byte(16
Mbyte)nhớ.CPU80386vàcácloạivixửlýmạnhhơncókhônggianđịachỉ32‐bitsẽcó
thểđánhđượctới2
32
byte(4Gbyte)địachỉtrựctiếp.

17
 Busdữliệu

BusdữliệulàcáckênhtruyềntảithôngtintheohaichiềugiữaCPUvàbộnhớhoặccác
thiếtbịngoạivivàora.Busdữliệuđượcđiềukhiểnbởi
CPUđểđọchoặcviếtcácdữ
liệuhoặcmãlệnhthựcthitrongqúatrìnhhoạtđộngcủaCPU.Độrộngcủabusdữliệu
nóichungsẽxácđịnhđượclượngdữliệucóthểtruyền
vàtraođổitrênbus.Tốcđộ
truyềnhaytraođổidữliệuthườngđượctínhtheođơnvịlà[byte/s].Sốlượngđường
bitdữliệusẽchophépxácđịnhđượcsốlượngbitcóthểlưutrữtrongmỗikhu
vực
thamchiếutrựctiếp.Nếumộtbusdữliệucókhảnăngthựchiệnmộtlầntruyềntrong1
μs,thìbusdữliệu8‐bitsẽcóbăngthônglà1Mbyte/s,bus16
‐bitsẽcóbăngthônglà
2Mbyte/svàbus32‐bitsẽcóbăngthônglà4Mbyte/s.Trongtrườnghợpbusdữliệu8‐
bitvớichukỳbuslàT=1μs(tứclàsẽtruyềnđược1byte/1chukỳ)thìsẽ
truyềnđược1
Mbytetrong1shay2Mbytetrong2s.

 Busđiềukhiển
Busđiềukhiểnphụcvụtruyềntảicácthôngtindữliệu đểđiềukhiểnhoạtđộngcủahệ
thống.Thôngthường
cácdữliệuđiềukhiểnbaogồmcáctínhi ệuchukỳđểđồngbộ
cácnhịpchuyểnđộngvàhoạtđộngcủahệthống.Busđiềukhiểnthườngđượcđiều
khiểnbởiCPUđểđồngb
ộhóanh ịphoạtđộngvàdữliệutraođổitrêncácbus.Trong
trườnghợpvixửlýsửdụngdồnkênhbusdữliệuvàbusđịachỉtứclàmộtphầnhoặc
toànbộbusdữ
liệusẽđượcsửdụngchungchiasẻvớibusđịachỉthìcầnmộttínhiệu
điềukhiểnđểphânnhịptruynhậpchophépchốtlưutrữthôngtinđịachỉmỗikhibắt
đầu
mộtchukỳtruyền.Mộtvídụvềcácchukỳbusvàsựđồngbộcủachúngtrong

hoạtđộngcủahệthốngbusđịachỉvàdữliệudồnkênhđượcchỉratro ngHình2‐10.
Đâylà
hoạtđộngđiểnhìnhtronghọviđiềukhiển8051vànhiềuloạitươngtự.


Hình2‐10:Chukỳhoạtđộngbusdồnkêch
2.1.4 Bộ nhớ
Kiếntrúcbộnhớ
Kiếntrúcbộnhớđượcchiaralàmhailoạichínhvàđượcápdụngrộngrãitronghầu
hếtcácChipxửlýnhúnghiệnnaylàkiếntrúcbộnhớvonNeumannvàHavard.

18
TrongkiếntrúcvonNeumannkhôngphânbiệtvùngchứadữliệu vàmãchươngtrình.
Cảchươngtrìnhvàdữliệuđềuđượctruynhậptheocùngmộtđường.Điềunàycho
phépđưadữliệuvàovùng
mãchươngtrìnhROM,vàcũngcóthểlưumãchươngtrình
vàovùngdữliệuRAMvàthựchiệntừđó.


Hình2‐11:KiếntrúcbộnhớvonNeumannvàHavard
KiếntrúcHavardtách/phânbiệtvùnglưumãchươngtrìnhvàdữliệu.Mãchươngtrình
chỉcóthểđượclưuvàthựchiệntrongvùngchứaROMvàdữliệucũngchỉcóthểlưu
vàtrao
đổitrongvùngRAM.Hầuhếtcácvixửlýnhúngngàynaysửdụngkiếntrúcbộ
nhớHavardhoặckiếntrúcHavardmởrộng(tứclàbộnhớchươngtrìnhvàdữliệutách
biệtnhưng
vẫnchophépkhảnănghạnchếđểlấydữliệuratừvùngmãchươngtrình).
TrongkiếntrúcbộnhớHavardmởrộngthườngsửdụngmộtsốlượngnhỏcáccontrỏ
đểlấydữliệ
utừvùngmãchươngtrìnhtheocáchnhúngvàotrongcáclệnhtứcthời.

MộtsốChipviđiềukhiểnnhúngtiêubiểuhiệnnaysửdụngcấutrúcHavardlà8031,
PIC,AtmelAVR90S.Nếusử
dụngChip8031chúngtasẽnhậnthấyđiềunàythôngqu a
việctruy nhậplấy dữliệu ratừ vùngdữ liệuRAM hoặctừ vùngmãchươngtrình.
Chúngtacómộtvàicontrỏđượcs
ửdụngđểlấydữliệuratừbộnhớdữliệuRAM,
nhưngchỉcóduynhấtmộtcontrỏDPTRcóthểđượcsửdụngđểlấydữliệuratừvùng
mãchương trình. Hình2‐11 môtả
nguyên lýkiến trúccủa bộ nhớvon Neumann và
Harvard.

ƯuđiểmnổibậtcủacấutrúcbộnhớHarvardsovớikiếntrúcvonNeumannlàcóhai
kênhtáchbiệtđểtruynhậpvàovùngbộnh
ớmãchươngtrìnhvàdữliệunhờvậymà
mãchươngtrìnhvàdữliệucóthểđượctruynhậpđồngthờivàlàmtăngtốcđộluồng
traođổivớibộxửlý.
19

Hình2‐12:Nguyênlýđiềukhiểntáchkênhtruynhậpbusđịachỉvàbusdữliệu
Bộnhớchươngtrình–PROM(ProgrammableReadOnlyMemory)
Vùngđểlưumãchươngtrình.CóbaloạibộnhớPROMthôngdụngđượcsửdụngcho
hệnhúngvàsẽđượcgiớithiệulầnlượtsauđây.


EPROM
Baogồmmộtmảngcáctransistorkhảtrình.Mãchươngtrìnhsẽđượcghitrựctiếpvàvi
xửlýcóthểđọcrađểthựchiện.EPROMcóthểxoáđượcbằngtiacựctímvàcóthể
được
lậptrìnhlại.CấutrúcvậtlýcủaEPROMđượcmôtảnhưtrongHình2‐13.


 

Hình2‐13:NguyênlýcấutạovàhoạtđộngxoácủaEPROM
20
 BộnhớFlash
CũnggiốngnhưEPROMđượccấutạobởimộtmảngtransistorkhảtrìnhnhưngcóthể
xoáđượcbằngđiệnvàchínhvìvậycóthểnạplạichươngtrìnhmàkhông
cầntáchra
khỏinềnphầncứngVXL.Ưuđiểmcủabộnhớflashlàcóthểlậptrìnhtrựctiếptrên
mạchcứngmànóđangthựcthitrênđó.

Hình2‐14:SơđồnguyênlýghépnốiEPROMvớiVXL
Bộnhớdữliệu‐RAM
Vùngđểlưuhoặctraođổidữliệutrunggiantrongquátrìnhthựchiệnchươngtrình.

Hình2‐15:CấutrúcnguyênlýbộnhớRAM

CóhailoạiSRAMvàDRAM
21

Hình2‐16:CấutrúcmộtphầntửnhớDRAM


Hình2‐17:Nguyênlýghépnối(mởrộng)RAMvớiVXL
2.1.5 Không gian và phân vùng địa chỉ
2.1.6 Ngoại vi
Bộđịnhthờigian/Bộđếm
Hầuhếtcácchipviđiềukhiểnngàynayđềucóítnhấtm ộtbộđịnhthờigian/bộđếmcó
thểcấuhìnhhoạtđộnglinhhoạttheocácmodephụcvụnhiều
mụcđíchtrongcácứng

dụngxửlý,điềukhiển.Cácbộđịnhthờigianchophéptạoracácchuỗixungvàngắt
thờigianhoặcđếmtheocáckhoảngthờigiancóthểlậptrình.
Chúngthườngđượcứng
22
dụngphổbiếntrongcácnhiệmvụđếmxung,đokhoảngthờigiancácsựkiện,hoặc
địnhchukỳthờigianthựcthicáctácvụ.Mộttrongnhữngứngdụngquantrọngc ủ
abộ
địnhthờigianlàtạonhịptừbộtạoxungthạchanhchobộtruyềnthôngdịbộđanăng
hoạtđộng.Thựcchấtđólàứngdụngđểthựchiệnphépchiatầnsố
.Đểđạtđượcđộ
chínhxác,tầnsốthạchanhthườngđượcchọnsaochocácphépchiasốnguyênđược
thựchiệnchínhxácđảmbảochotốcđộtruyềnthôngdữliệuđượctạorachínhxác.
Chínhvìv
ậyhọviđiềukhiển80C51thườnghaysửdụngthạchanhcótầnsốdaođộng
là11.059thayvì12MHzđểtạoranhịphoạtđộngtruyềnthôngtốcđộchuẩn9600.


Hình2‐18:Bộđịnhthời/bộđếm8bitcủaAVR
Bộđiềukhiểnngắt
Ngắtlàmộtsựkiệnxảyralàmdừnghoạtđộngchươngtrìnhhiệntạiđểphụcvụthực
thimộttácvụhaymộtchươngtrìnhkhác.Cơchếng
ắtgiúpCPUlàmtăngtốcđộđáp
ứngphụcvụcácsựkiệntrongchươngtrìnhhoạtđộngcủaVXL/VĐK.CácVĐKkhác
nhausẽđịnhnghĩacácnguồntạongắtkhácnhaunhưngđềucó
chungmộtcơchếhoạt
độngvídụ nhưngắt truyềnthông nốitiếp,ngắt bộđịnhthời gian,ngắt cứng,ngắt
ngoài Khimộtsựkiệnyêucầungắtxuấthiện,nếu
đượcchấpnhậnCPUsẽlưucất
trạngtháihoạtđộngchochươngtrìnhhiệntạiđangthựchiệnvídụnhưnộidungbộ
đếmchươngtrình(contrỏlệnh)cácnộidungthanh

ghilưudữliệuđiềukhiểnchương
trìnhnóichungđểthựcthichươngtrìnhphụcvụtácvụchosựkiệnngắt.Thựcchất
quátrìnhngắt là CPUnhận dạng tínhiệu ngắ
t, nếuchấp nhậnsẽđưa contrỏ lệnh
chươngtrìnhtrỏtớivùngmãchứachươngtrìnhphụcvụtácvụngắt.Vìvậymỗimột
ngắtđềugắnvớimộtvectorng
ắtnhưmộtcontrỏlưuthôngtinđịachỉcủavùngbộ
nhớchứamãchươngtrìnhphục  vụtácvụcủangắt.CPUsẽthựchiệnchươngtrình
23
phụcvụtácvụngắtđếnkhinàogặplệnhquaytrởvềchươngtrìnhtrướcthờiđiểmsự
kiệnngắtxảyra.Cóthểphânra2loạinguồnngắt:Ngắtcứngvà
Ngắtmềm.

 Ngắtmềm
Ngắtmềmthực chất thựchiện một lờigọi hàmđặcbiệt màđược kíchhoạtbởi các
nguồnngắtlàcácsựkiệnxuấ
thiệntừbêntrongchươngtrìnhvàngoạivitíchhợptrê n
Chipvídụnhưngắtthờigian,ngắtchuyểnđổiA/D,…Cơchếngắtnàycònđượchiểu
làloạithựchiệnđồngb
ộvớichươngtrìnhvìnóđượckíchhoạtvàthựcthitạicácthời
điểmxácđịnhtrongchươngtrình.Hàmđượcgọisẽthựcthichứcnăngtươngứngv ới
yêucầungắt.
Các hàmđóthườngđượctrỏbởimộtvectorngắtmàđãđượcđịnhnghĩa
vàgáncốđịnhbởinhàsảnxuấtChip.VídụnhưhệđiềuhànhcủaPCsửdụngngắtsố
21
hexđểgánchongắttruynhậpđọcdữliệutừđĩacứngvàxuấtdữliệuramáyin.

 Ngắtcứng
Ngắtcứngcóthểđượcxemnhưlàmộtlờig ọihàmđặcbiệttrong
đónguồnkíchhoạtlà

mộtsựkiệnđếntừbênngoàichươngtrìnhthôngquamộtcấutrúcphầncứng(thường
đượckếtnốivớithếgiớibênngoàiquacácchânngắt).Ng
ắtcứngthườngđượchiểu
hoạtđộngtheocơchếdịbộvìcác sựkiệnngắtkíchhoạttừcáctínhiệungoạivibên
ngoàivàtươngđốiđộclậpvớiCPU,thườnglàkhông
xácđịnhđượcthờiđiểmkích
hoạt.KhicácngắtcứngđượckíchhoạtCPUsẽnhậndạngvàthựchiệnlờigọihàmthực
thichứcnăngphụcvụsựkiệnngắt
tươngứng.

Trongcáccơchếngắtkhoảngthờigiantừkhixuấthiệnsựkiện ngắt(cóyêucầuphục
vụngắt)tớikhidịchvụngắtđượcthựcthilàxácđịnhvà
tuỳthuộcvàocôngnghệphần
cứngxửlýcủaChip.
Bộđịnhthờichócanh–WatchdogTimer
Thôngthườngkhicómộtsựcốxảyralàmhệthốngbịtreohoặcchạyquẩn,CPUsẽ
không
thểtiếptụcthựchiệnđúngchứcnăng.Đặcbiệtkhihệthốngphảilàmviệcởchế
độvậnhànhtựđộngvàkhôngcósựcanthiệptrực tiếpthườngxuyênbởingười
vận
hành.Đểthựchiệncơchếtựgiámsátvàpháthiệnsựcốphầnmềm,mộtsốVXL/VĐK
cóthêmmộtbộđịnhthờichócanh.Bảnchấtđólàmộtbộđịnhthờiđặc
biệtđểđịnh
nghĩamộtkhungthờigianhoạtđộngbìnhthườngcủahệthống.Nếucósựcốphần
mềmxảyra sẽlàmhệthốngbịtreokhiđóbộđịnhthờichócanhsẽphát
hiệnvà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ươngtrìnhhoạtđộngkhicóbộđịnhthờiphảiđảmbảoresetnótrướ
ckhikhungthời
gianbịviphạm.Khungthờigiannàyđượcđịnhnghĩaphụthuộcvàosựđánhgiácủa

ngườithực hiệnphần mềm,thiếtlập khoảngthờigianđảmbảoch
ắcchắn hệthống
thựchiệnbìnhthườngkhôngcósựcốphầnmềm.

Cómộtsốcơchếthựchiệncài đặtbộđịnhthờichocanhđểgiámsáthoạt độngcủahệ
thốngnhư
sau:

24

Hình2‐19:Sơđồnguyênlýhoạtđộngcủabộđịnhthờichócanh



 

 (a)(b)
Hình2‐20:Nguyênlýhoạtđộngbộđịnhthờichócanh
Bộđiềukhiểntruynhậpbộnhớtrựctiếp–DMA
DMA(DirectMemoryAccess)làcơchếhoạtđộngchophéphaihaynhiềuvixửlýhoặc
ngoạivichiasẻbuschung.Thiếtbịnàođangcó
quyềnđiềukhiểnbussẽcóthểtoàn
25
quyềntruynhậpvàtraođổidữliệutrựctiếpvớicácbộnhớnhưhệthốngcómộtvixử
lý.ỨngdụngphổbiếnnhấtcủaDMAlàchiasẻbộnhớchunggiữahai
bộvixửlýhoặc
cácngoạiviđểtruyềndữliệutrựctiếpgiữathiếtbịngoạivivào/ravàbộnhớdữliệu
củaVXL.

Truynhậpbộnhớtrựctiếpđượcsửdụngđểđ

ápứngnhucầutraođổidữliệuvàora
tốcđộcaogiữangoạivivớibộnhớ.Thôngthườngcácngoạivikếtnốivớihệthống
phảichia sẻbusdữliệuvàđược
điềukhiểnbởiCPUtrongquátrìnhtraođổidữliệu.
Điềunàylàmhạnchếtốcđộtraođổi,đểtăngcườngtốcđộvàloạibỏsựcanthiệpcủa
CPU,đặcbiệttrongtrườngh
ợpcầntruyềnmộtlượngdữliệulớn.Cơchếhoạtđộng
DMAđượcmôtảnhưtrongHình2‐21.Thủtụcđượcbắtđầubằngviệcyêucầuthực
hiệnDMAvớiCPU.
Saukhixửlý,nếuđượcchấpnhậnCPUsẽtraoquyềnđiềukhiển
buschongoạivivàthựchiệnquátrìnhtraođổidữliệu.SaukhithựchiệnxongCPUsẽ
nhậnđượcthôngbáo
vànhậnlạiquyềnđiềukhiểnbus.TrongcơchếDMA,cóhaicách
đểtruyềndữliệu:kiểuDMAchukỳđơn,vàkiểuDMAchukỳnhóm(burst).


Hình2‐21:NhịphoạtđộngDMA
 DMAchukỳđơnvànhóm
TrongkiểuhoạtđộngDMAchukỳnhóm,ngoạivisẽnhậnđượcquyềnđiềukhiểnvà
truyềnkhốidữliệurồitrảlạiquyềnđiềukhiểnchoCPU.
TrongcơchếDMAchukỳ
đơnngoạivisaukhinhânđượcquyềnđiềukhiểnbuschỉtruyềnmộttừdữliệurồitrả
lạingayquyềnkiểmsoátbộnhớvàbusdữliệuchoCPU.
TrongcơchếthựchiệnDMA
26
cầncómộtbướcxửlýđểquyếtđịnhxemthiếtbịnàosẽđươcnhậnquyềnđiềukhiển
trongtrườnghợpcónhiềuhơnmộtthiếtbịcónhucầusửdụngDMA.
Thôngthường
kiểuDMAchukỳnhómcầnítdữliệuthôngtinđiềukhiển(overhead)nêncókhảnăng
traođổivớitốcđộcaonhưnglạichiếmnhiềuthờigiantruynhậpbus

dotruyềncảkhối
dữliệulớn.Điềunàycóthểảnhhưởngđếnhoạtđộngcủacảhệthốngdotrongsuốt
quátrìnhthựchiệnDMAnhóm,CPUsẽbịkhoáquyềntruynhậpb
ộnhớvàkhôngthể
xửlýcácnhiệmvụkháccủahệthốngmàcónhucầubộnhớ,vídụnhưcácdịchvụ
ngắt,hoặccáctácvụthờigianthực 

 Chukỳrỗi(Cycle
Stealing)
TrongkiểunàyDMAsẽđượcthựchiệntrongnhữngthờiđiểmchukỳbusmàCPU
khôngsửdụngbusdođókhôngcầnthựchiệnthủtụcxửlýcấpphátquyềntruynhậ
p
vàthựchiệnDMA.

Hầuhếtcácvixửlýhiệnđạiđềusửdụnggầnnhư100%dunglượngbộnhớvàbăng
thôngcủabusnênsẽkhôngcónhiềuthờigiandànhchoDMAth
ựchiện.Đểtiếtkiệm
vàtốiưutàinguyênthìcầncómộttrọngtàiphânxửvàdữliệusẽđượctruyềnđixếp
chồngtheothờigian.NóichungkiểuDMAdạngbursthiệ
uquảnhấtkhikhoảngthời
giancầnthực hiệnDMAtươngđốinhỏ.TrongkhoảngthờigianthựchiệnDMA,toàn
bộbăngthôngcủabussẽđượcsửdụngtốiđavàtoàn
bộkhốidữliệusẽđượctruyềnđi
trongmột khoảngthờigian rấtngắn.Nhưng nhượcđiểmcủanó lànếudữ liệucần
truyềnlớnvàcầnmộtkhoả
ngthờigiandàithìsẽdẫnđếnviệcblockCPUvàcóthểbỏ
quaviệcxửlýcácsựkiệnvàtácvụkhác.ĐốivớiDMAchukỳđơnthìyêucầutruy
nhậpbộnhớ,truyềnm
ộttừdữliệuvàgiảiphóngbus.Cơchếnàychophépthựchiện
truyềninterleavevàđượcbiếttớivớitêngọiinteleavedDMA.KiểutruyềnDMAchukỳ

đơnphùhợpđểtruyềndữli
ệutrongmộtkhoảngthờigiandàimàcóđủthờigianđể
yêucầutruynhậpvàgiảiphóngbuschomỗilầntruyềnmộttừdữliệu.Chínhvìvậysẽ
giảmbăngthôngtruy 
nhậpbusdophảimấtnhiềuthờigianđểyêuc ầutruynhậpvà
giảiphóngbus.TrongtrườnghợpnàyCPUvàcácthiếtbịkhá cvẫncóthểchiasẻvà 
truyềndữliệunhưng
trongmộtdảibăngthônghẹp.Trongnhiềuhệthốngbusthực
hiệncơchếxửlývàgiảiquyếtyêucầutruynhập(trọngtài)thôngquadữliệutruyềnvì
vậycũ
ngkhôngảnhhưởngnhiềuđếntốcđộtruyềnDMA.

DMAđượcyêucầukhikhảnăngđiềukhiểncủaCPUđểtruyềndữliệuthựchiệnquá
chậm.DMAcũngthựcsựcóýnghĩ
akhiCPUđangphảithựchiệncáctácvụkhácmà
khôngcầnnhucầutruynhậpbus.
ICchứcnăngchuyêndụng
DAC/ADC
27


Hình2‐22:SơđồnguyênlýmạchchuyểnđổiDAC

 
Hình2‐23:SơđồnguyênlýmạchchuyểnđổiADC
VídụADC754A
Đặcđiểmkỹthuật:
9 ChếtạotheocôngnghệCMOS.
9 12‐bitvớigiaodiệntươngthíchvớicácloạiVXL/VĐK8,12và16‐bit.Cóthểlập
trìnhđểhoạtđộngchuyể

nđổi8bithoặc12bit.
9 TínhiệudữliệuratươngthíchvớichuẩnTTLvàghépnốithôngqualoạicổng
logic3trạngthái.
9 Dảigiátrịđiệnápđầuvàocóth
ểlựachọnnhờcấu hìnhgiátrịđiệntrởnộiđầu
vàođểnhậncácdảitínhiệu(0÷10)V,(0÷20)V,(‐5÷+5)V,và(‐10÷+10)V.
9 Cóthêmkhảnăngcungcấpnguồnthamchiếu
nộiVref=+10V.
9 Nguồncungcấpcóthểlà+5V,±12V,hoặc±15V
9 Thờigianchuyểnđổicựcđạilà25µsvớithờigiantruynhậpbuslà150ns.

28

Hình2‐24:SơđồnguyênlýcấutrúcADC1754A


Hình2‐25:SơđồbốtríchâncủaChipADC574A
Nguyênlýđiềukhiển
ADC574đượcđiềukhiểnbởicácchântínhiệunhưmôtảtrongbảngsau:

Bảng1:TínhiệuđiềukhiểnADC574A
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ếtlậpchếđộhoạtđộng:Modechuyểnđổi8‐bithay12‐bitđượcthiếtlậpbởi
tínhiệuA0.Tínhiệunàyphảiđượcchốttrướckhinhậnđượctínhiệulệnhbắ
t
đầuthựchiệnchuyểnđổi.

(2) Kíchhoạtquátrìnhchuyểnđổi:Bộchuyểnđổithựchiệnchuyểnđổikhinhận
đượctínhiệumệnhlệnhtíchcựctừchântínhiệuhoặc
CE/CS,hoặcR/Cvớiđiều
kiệncáctínhiệuđiềukhiểnkhácđãđượcxáclập.
(3) Trạngtháichuyểnđổi:TínhiệuđầuraSTATUSbáotrạngtháichuyểnđổihiện
hànhcủaADC;
thiếtlậpởmứccaonếuđangthựchiệnchuyểnđổivàởmức
thấpnếuđãhoànthà nh.Trongquátrìnhchuyểnđổicáctínhiệuđiềukhiểnbị
khoávàdữliệukhôngthểđượcđọc
vìcácđườngtínhiệurađượcchuyểnsang
trạngtháicaotrở.
(4) Đọcdữliệura:Quátrìnhđọc dữliệuracóthểđượcthựcthinếucáctínhiệu
điềukhiểnxáclậpở
trạngtháichophépđọcvàtínhiệuSTATUSởtrạngthái
thấp.Tuỳthuộcvàomodechuyểnđổiđượcthiếtlậpvàđịnhdạngdữliệuđọcra
bởitổhợptrạng
12 / 8 vàA0.
Cổngsongsongkhảtrình82C55A
82C55Alà mộtgiao diệnngoại vicổng songsong khảtrìnhđượcchế tạotheo công
nghệCMOS.Nólàmộtthiếtbịngoạivivàorakhảtrìnhđamụcđ
íchvàcóthểđượcsử
dụngvớinhiềuloạiVXL/VĐKkhácnhau.82C55Acó24chânvàoraonChipđượcchia
rathành2nhóm,mỗinhóm12chânvàcóthểđược sửdụngtheo3chếđộhoạtđộng
khác
nhau.Hình2‐26môtảgiảnđồkhốichứcnăngcủachip82C55A.


30

Hình2‐26:Giảnđồkhốichứcnăngcủa82C55A

Chứcnăngvàýnghĩacủacácchânonchipcủa82C55AđượcmôtảtrongBảng2:Chức
năngcácchânonchipcủa82C55A.

Bảng2:Chứcnăngcácchânonchipcủa82C55A
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.

82C55Acungcấp3chếđộhoạtđộngchínhvàcóthểlậptrìnhđểlựachọn
• Mode0:Hoạtđộngvàoracơbản
• Mode1:Hoạtđộngvàoranắmbắt(strobed)
• Mode2:Hoạtđộ
ngBus2chiều
Việclựachọnchếđộhoạtđộngđượcthựchiệnthôngquathanhghitừđiềukhiểnvà
đượcmôtảnhưtrongHình2‐27.


Hình2‐27:Thanhghitừđiềukhiểnchọnchếđộhoạtđộngcho82C55A
KhiđầuvàoRESETđượcđiềukhiểnởmứccaothìtấtcảcáccổngsẽđượcthiếtlậphoạt
độngởchếđộcổngvàovới24đườngtínhiệuvàoduytrìởmứclogic1.Saukhitín
hiệ
uđiềukhiểnRESETởmứctíchcựcbịloạibỏthì82C55Acóthểduytrìchếđộhoạt
độngmàkhôngcầnthêmbấtkỳviệckhởitạonàonữa.Điềunàysẽgiúploạibỏđượ
c
cácđiệntrởtreocaohoặctreothấptrongcácthiếtkếchomạchCMOS.Khikíchhoạt
chếđộthiếtlậpthìthanhghitừđiềukhiểnsẽchứagiátrị9Bh.Trongqúatrìnhthực
hiện
chươngtrìnhvẫncóthểthayđổilựachọnchếđộhoạtđộngkhácnhau,điềunày
chophép82C55hoạtđộngmộtcáchđadạngđápứngchonhiềubàitoánứngdụng
khácnhau.Trongqúatrìnhthanh
ghitừđiềukhiểnđangđượcviếtthìtấtcảcáccổng
đượcthiếtlậphoạtđộngởchếđộcổngrasẽđượckhởitạobằngzero.


Mode0(Vàoracơbản):Cấuhìnhchếđộho
ạtđộngnàycungcấpcáchoạtđộngvàora
đơngiảnchocả3cổngA,BvàC.Dữliệuđượctraođổitrựctiếpvàkhôngcầnphảicó
cơchếbắttay.Chếđộhoạtđộng
nàyhỗtrợcácchứcnăngcụthểnhưsau:
9 Haicổng8‐bitvà2cổng4‐bit
9 Bấtkỳcổngnàocũngcóthểlàcổngvàohoặccổngra
9 Cácđườngdữliệu
tínhiệurađượcchốt
32
9 Cácđườngtínhiệuvàokhôngđượcchốt
9 Cóthểcấuhình16kiểuhoạtđộngvàorakhácnhau

Mode1(Vàoracóbắttay):Chếđộhoạtđộngnàycungcấpkhảnăngtruyềndữ
liệutới
hoặcđitừmộtcổngcụthểcùngvớicáctínhiệubắttay.TrongchếđộnàycổngA,B
đượcsửdụngđểtruyềndữliệuvàcổngChoạtđộngnhưcổngđ
iềukhiểncơchếđộng
bộbắttay.Chếđộhoạtđộngnàycungcấpcácchứcnăngchínhsau:
9 Hainhómcổng(NhómAvàNhómB).Mỗinhómbaogồm1cổng8‐bitvàmột
c
ổngdữliệuđiềukhiển4‐bit.
9 Cổngdữliệu8‐bitcóthểhoạtđộngnhưhoặclàc ổngvàohoặclàcổngravàcảhai
chiềudữliệuđềuđượcchốt.
9 The
4‐bitportisusedforcontrolandstatusofthe8‐bitport.

Mode2(Busvàorahaichiềucóbắttay):Chếđộhoạtđộng nàycungcấpkhảnăng
truyềnthôngvớicácngoạivihoặccácbusd

ữliệu8‐bitchoviệctruyềnnhậndữliệu.
Cáctínhiệubắttayđượccungcấpđểduytrìdòngtínhiệubustươngtựnhưchếđộ1.
Cáccơchếtạongắtcũngcóthểđược
thựchiệnởchếđộnày.Mộtsốcácchứcnăng
chínhhỗtrợtrongchếđộnàybaogồm:
9 ChỉsửdụngnhómA
9 Mộtcổngbus2chiều8‐bit(cổngA)vàmộtcổngđiều
khiển5‐bit(CổngC)
9 Cảhaichiềudữliệuvàovàrađềuđươcchốt.
9 Cổngđiềukhiển5‐bit(CổngC)đượcsửdụngchom ụcđíchđiềukhiểnvàtrạng
thái
chocổngAđểtraođổidữliệu2chiều8bit.
Bộđịnhthời/BộđếmC8254
Đâylàbộđếmtốcđộcaocungcấp3bộđịnhthời16‐bitđộclậpvàcóthểđượcc ấuhình
đểhoạtđộng
ởnhiềuchếđộhoạtđộng.Mỗibộđếmcócáckênhdữliệuvàđiềukhiể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ó4thanhghitích
hợpOn‐chipđểlưugiá trịđếmvàc ấuhìnhhoạt
động(từđiềukhiển).

Tầnsốhoạtđộngcủabộđếmcóthểlàmviệcvớixungnhịptầnsố10MHzvàhỗtrợ6
chếđộhoạtđộngvàcóthểcấuhìnhriênglẻ.

33

Hình2‐28:Sơđồcấutrúcchứcnăng8254
2.1.7 Giao diện
Giaodiệnsongsong8bit/16bit
Cáccổngsongsonglàmộtdạnggiaodiệnvàorađơngiảnvàphổbiếnnhấtđểkếtnối

thôngtinvớingoạivi.Cónhiềuloạicấutrúcgiaodi
ệnvậtlýđiệntửtừdạngcổngvào
rađơngiảncựcCollectorTTLhởtrongcácứngdụngcổngmáyinđếncácloạicấutrúc
giaodiệncổngtốcđộcaonhưcácchuẩn
busIEEE‐488haySCSI.Hầuhếtcácchipđiều
khiểnnhúngcómộtvàicổngvàorasongsongkhảtrình(cóthểcấuhình).Cácgiao
diệnđóphùhợpvớicáccổngvàorađơngiản
nhưcáckhoáchuyển.Chúngcũngphù
hợptrongcácbàitoánphụcvụgiaodiệnkếtnốiđiềukhiểnvàgiámsáttheocácgiao
diệnnhưkiểurơlebándẫn.

Hình2‐29:Cấutrúcnguyênlýđiểnhìnhcủamộtcổngvào/ralogic
34
Giaodiệnnốitiếp
USART

Hình2‐30:CấutrúcđơngiảnhoácủaUSART


Hình2‐31:Modehoạtđộngtruyềnthôngđồngbộ


Hình2‐32:Modehoạtđộngtruyềnthôngdịbộ
35
I
2
C(Inter‐IC)
Giaothứcưu tiêntruyềnthôngnối tiếpđượcpháttriển bởiPhilips Semiconductorvà
đượcgọilàbusI
2

C.VìnguồngốcnóđượcthiếtkếlàđểđiềukhiểnliênthôngIC(Inter
IC)nênnóđượcđặttênlàI
2
C.T ấtcảcácchípcótíchhợpvàtươngthíchvớiI
2
Cđềucó
thêmmộtgiaodiệntíchhợptrênChipđểtruyềnthôngtrựctiếpvớicácthiếtbịtương
thíchI
2
Ckhác.Việctruyềndữliệunốitiếptheohaihướng8bitđượcthựcthitheo3chế
độsau:
 Chuẩn(Standard)—100Kbits/sec
 Nhanh(Fast)—400Kbits/sec
 Tốcđộcao(High‐Speed)—3.4Mbits/sec

Đườngbusthực
hiệntruyềnthôngnốitiếpI
2
Cgồmhaiđườnglàđườngtruyềndữliệu
nốitiếpSDAvàđườngtruyềnnhịpxungđồnghồnốitiếpSCL.Vìcơchếhoạtđộnglà
đồngbộnênnócầncómộtnhịpxung
tínhiệuđồngbộ.CácthiếtbịhỗtrợI
2
Cđềucó
mộtđịachỉđịnhnghĩatrước,trongđómộtsốbitđịachỉlàthấpcóthểcấuhình.Đơnvị
hoặcthiếtbịkhởitạoquátrìnhtruyềnthônglàđơnvịChủvàc ũng
làđơnvịtạoxung
nhịpđồngbộ,điềukhiểnchophépkếtthúcquátrìnhtruyền.NếuđơnvịChủmuốn
truyềnthôngvớiđơnvịkhácnósẽgửikèmthôngtinđịachỉcủađơ
nvịmànómuốn

truyềntrongdữliệutruyền.ĐơnvịTớđềuđượcgánvàđánhđịachỉthôngquađóđơn
vịChủcóthểthiếtlậptruyềnthôngvàtraođổidữliệu.Busdữliệuđượcthi
ếtkếđểcho
phépthựchiệnnhiềuđơnvịChủvàTớởtrêncùngBus.

QuátrìnhtruyềnthôngI
2
CđượcbắtđầubằngtínhiệustarttạorabởiđơnvịChủ.Sau
đóđơnvịChủsẽtruyềnđidữliệu7bitchứađịachỉcủađơnvịTớmànómuốntruyền
thông,
theothứtựlàcácbitcótrọngsốlớnnhấtMSBsẽđượctruyềntrước.Bitthứtám
tiếptheosẽchứathôngtinđểxácđịnhđơnvịTớsẽthựchiệnvaitrònhận(0)haygửi
(1)
dữliệu.TiếptheosẽlàmộtbitACKxácnhậnbởiđơnvịnhậnđãnhậnđược1byte
trướcđóhaykhông.Đơnvịtruyền(gửi)sẽtruyềnđi1bytedữliệubắtđầu
bởiMSB.
Tạiđiểmcuốicủabytetruyền,đơnvịnhậnsẽtạoramộtbitxácnhậnACKmới.Khuôn
mẫu9bitnày(gồm8bitdữliệuvà1bitxácnhận)s
ẽđượclặplạinếucầntruyềntiếp
bytenữa.KhiđơnvịChủđãtraođổixongdữliệucầnnósẽquansátbitxácnhậnACK
cuốicùngrồisauđósẽtạoramộ
ttínhiệudừngSTOPđểkếtthúcquátrìnhtruyền 
thông.

I
2
Clàmộtgiaodiệntruyềnthôngđặcbiệtthíchhợpchocácứngdụngtruyềnthông
giữacácđơnvịtrêncùngmộtbomạchvớikhoảngcáchngắnvàtốcđộthấp.Vídụnh
ư
truyềnthônggiữaCPUvớicáckhốichứcnăngtrêncùngm ộtbomạchnhưEEPROM,

cảmbiến,đồnghồtạothờigianthực HầuhếtcácthiếtbịhỗtrợI
2
Choạtđộngởtốcđộ
400Kbps,mộtsốchophéphoạtđộngởtốcđộcaovàiMbps.I
2
Ckháđơngiảnđểthực
thikếtnốinhiềuđơnvịvìnóhỗtrợcơchếxácđịnhđịachỉ.
SPI
SPIlàmộtgiaodiệncổngnốitiếpđồngbộbadâychophépkếtnối
truyềnthôngnhiều
VĐKđượcpháttriểnbởiMotorola.Trongcấuhìnhmạngkếtnốitruyềnthốngnàyphải
36
cómộtVĐKgiữvaitròlàChủ(Master)vàcácVĐKcònlạicóthểhoặclàChủhoặclà
Tớ.SPIcó4tốcđộcóthểlậptrình,cựcvàphanhịpđồnghồkhảtrình
vàkếtthúcngắt
truyềnthông.Nhịpđồnghồkhôngnằmtrongdòngdữliệuvàphảiđượccungcấpnhư
mộttínhiệutáchđộclập.CóbathanhghiSPSR,SPCRvàSPDRchophépthực
hiệncác
chứcnăngđiềukhiển,tr ạngtháivàlữutrữ.Cóbốnchâncơbảncầnthiếtđểthựcthi
chuẩngiaodiệntruyềnthôngnày.

 DữliệuraMOSI(MasterOutput
–SlaveInput)
 DữliệuvàoMISO(MasterInput–SlaveOutput)
 NhịpxungchuẩnSCLK(SerialClock)
 LựachọnthànhphầntớSS(SlaveSelect)


Hình2‐33:KếtnốinguyênlýtruyềnthôngSPIgiữamộtMastervàmộtTớ
Hình2‐33chỉranguyênlýkếtnốigiữamộtđơnvịChủvàmộtđơnvịTớtrongtruyền

thôngSPI.TrongđótínhiệuSCLKsẽđượctạorabởiđơnvịChủvàlàtínhiệuvào
của
đơnvịTớ.MOSIlàđườngtruyềndữliệuratừđơnvịChủtớiđơnvịTớvàMISOlà
đườngtruyềndữliệuvàođơnvịChủđếntừđơnvịTớ.ĐơnvịT ớđượclựa
chọnkhi
đơnvịChủkíchhoạttínhiệu
SS .


Hình2‐34:SơđồkếtnốitruyềnthốngSPIcủamộtđơnvịChủvớinhiềuđơnvịTớ
NếuhệthốngcónhiềuđơnvịtớđơnvịChủsẽtạophảiracáctínhiệutáchbiệtđểchọn
đơnvịTớ.Cơchếđóđượcthựchiệnnhờsơđồkếtnốinguyênlýmô
tảnhưtrongHình
2‐34.ĐơnvịChủsẽtạoratínhiệuchọnđơnvịTớnhờcácchântínhiệulogicđachức
năng.Cáctínhiệunàyphảiđượcđiềukhiểnvàđảmbảoổnđịnh
vềthờigianđểtránh
trườnghợptínhiệubịthayđổitrongquátrìnhđangtruyềndữliệu.Mộtđiềudễnhận
37
rarằngSPIkhônghỗtrợcơchếxácnhậntrongquátrìnhthựchiệntruyềnthông.Điều
nàyphụthuộcvàogiaothứcđịnhnghĩahoặcphảithựchiệnbổsungthêmmộtsốcác

mởrộngphụbênngoài.

KhảnăngtruyềnthôngđồngthờihaichiềuvớitốcđộlênđếnkhoảngvàiMbit/svà
nguyênlýkháđơngiảnnênSPIhoàntoànphùhợpđểthựchiệntruyềnthônggi
ữacác
thiếtbịyêucầutruyềnthôngtốcđộchậm,đặcbiệthiệuquảtrongcácứngdụngmột
đơnvịChủvàmộtđơnvịTớ.Tuynhiêntrongcácứngdụngvớinhiềuđơn
vịTớviệc
thựcthilạikháphứctạpvìthiếucơchếxácđịnhđịachỉ,vàsựphứctạpsẽtănglênkhi

sốđơnvịTớtăng.
2.2 Một số nền phần cứng nhúng thông dụng (µP/DSP/PLA)
Trongphầnnàygiớithiệungắngọncấutrúcnguyênlýcủacácchipxửlýnhúngứng
dụngtrongcácnềnphầncứngnhúnghiệnnay.

SựpháttriểnnhanhchóngcácchủngloạiChip
khảtrìnhvớimậtđộtíchhợpcaođãvà
đangcómộttácđộngđángkểđếnsựthayđổitrongviệcthiếtkếcácnềnphầncứng
thiếtbịxửlývàđiềukhiểnsốtrongth
ậpkỷgầnđây.Mỗichủngloạiđềucónhữngđặc
điểmvàphạmviđốitượngứngdụngvàluônkhôngngừngpháttriểnđểđápứngmột
cáchtốtnhấtchocácyêucầu
côngnghệ.Chúngđanghướngtớitậptrungchomộtthị
trường côngnghệ tiềm năngrộng lớnđólàcác thiếtbịxử lývàđiều  khiển nhúng.
Trongbàiviếtnàytácgiảgiớ
ithiệungắngọnvềcácchủngloạichipxửlý,điềukhiển
nhúngđiểnhìnhđangtồntạivàpháttriểnvềmộtsốđặcđiểmvàhướngphạmviứng
dụngcủa
chúng.

CóthểkểrahàngloạtcácChípkhảtrìnhcóthểs ửdụngchocácbàitoánthiếtkếhệ
nhúngnhưcáchọvixửlý/viđiềukhiểnnhúng(Microprocessor/Microcontroller),Chip
DSP (Digital Signal Processing), các Chip khả trình
 trường (FPD – Field Programmable
Device).Chúngtadễbịchoángngợpnếubắtđầucôngviệcthiếtkếbằngviệctìmkiếm
mộtChipxửlýđiềukhiểnphùhợpchoứngdụng.Vìv
ậycầnphảicómộthiểubiếtvà
sựphânbiệtvềđặcđiểmvàứngdụngcủachúngkhilựachọnvàthiếtkế.Cácthôngtin
liênquannhưnhàsảnxuấtcung
cấpChip,cáckiếnthứcvàcôngcụpháttriểnkèm

theo…MộtsốchủngloạiChipđiểnhìnhsẽđượcgiớithiệ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đượcrađờivàsửdụngtheosựpháttriểncủacácChipxửlýứngdụngcho
máy
tính.Vìđốitượngứngdụnglàcác thiếtbịnhúngnêncấutrúccũngđượcthayđổitheo
đểđápứngcácứngdụng.Hiệnnaychúngtacóthểthấycáchọvixửlýđiềukhiểncủ
a
rất nhiềucác nhà chếtạo cung cấp như,Intel, Atmel, Motorola,Infineon. Về cấutrúc,
chúngcũngtươngtựnhưcácChípxửlýpháttriểnchoPCnhưngởmứcđộđơngiản
hơnnhi
ềuvềcôngnăngvàtàinguyên.PhổbiếnvẫnlàcácChipcóđộrộngbusdữliệu
là8‐bit,16‐bit,32‐bit.Vềbảnchấtcấutrúc,Chipviđiềukhiểnlàchipvixửlýđược
tích
38
hợpthêmcácngoạivi.Cácngoạivithườnglàcáckhốichứcnăngngoạivithôngdụng
nhưbộđịnhthờigian,bộđếm,bộchuyểnđổiA/D,giaodiệnsongsong,nốitiếp…Mức

độtíchhợpngoạivicũngkhácnhautuỳthuộcvàomụcđíchứngdụngsẽcóthểtìm
đượcChipphùhợp.Thựctếvớicácứngdụngyêucầuđộtíchhợpcaothìsẽsửdụ
ng
giảipháptíchhợptrênchip,nếukhôngthìhầuhếtcácChipđềucungcấpgiảiphápđể
mởrộngngoạiviđápứngchomộtsốlượngứngdụngrộngvàmềmdẻ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ình2‐35:KiếntrúcnguyênlýcủaVĐKvớicấutrúcHavard
VídụvềkiếntrúccủahọVĐKAVR

Hình2‐36:KiếntrúccủahọVĐKAVR
39

Hình2‐37:SởđồkhốichứcnăngkiếntrúcPIC16F873A
2.2.2 Chip DSP
[Ref.SenKuo]
DSPvẫnđượcbiếttớinhưmộtloạiviđiềukhiểnđặcbiệtvớikhảnăngxửlýnhanhđể
phụcvụcácbàitoányêucầukhốilượngvàtốcđộxửlýtính
toánlớn.Vớiưuđiểmnổi
bậtvềđộrộngbăngthôngcủabusvàthanhghitíchluỹ,chophépALUxửlýsongsong
vớitốcđộđọcvàxửlýlệnhnhanhhơncácloại
viđiềukhiểnthôngthường.ChipDSP
chophépthựchiệnnhiềulệnhtrongmộtnhịpnhờvàokiếntrúcbộnhớHavard.

ThôngthườngkhiphảisửdụngDSPtứclàđểđápứngcácbài
toántínhtoánlớnvàtốc
độcaovìvậyđịnhdạngbiểudiễntoánhọcsẽlàmộtyếutốquantrọngđểphânloạivà
đượcquantâm.Hiệnnaychủyếuchúngvẫnđượcphân
loạitheohaikiểulàdấuphảy
độngvàdấuphảytĩnh.Đâycũngchínhlàmộtyếutốquantrọngphảiquantâmđốivới
ngườithiếtkếđểlựachọnđượcm
ộtDSPphùhợpvớiứngdụngcủamình.Cácloại
DSPdấuphảytĩnhthườnglàloại16‐bithoặc24‐bitcòncácloạidấuphảytĩnhthường
là32‐bit.Mộ
tvídụđiểnhìnhvềmộtDSP16‐bitdấuphảytĩnhlàTMS320C55x,lưucác

40
sốnguyên16‐bithoặccácsốthựctrongmộtmiềngiátrịcốđịnh.Tuynhiêncácgiátrị
vàhệsốtrunggiancóthểđượclưutrữvớiđộchínhxáclà32‐bittrongthanhghitích
luỹ40‐bitnh
ằmgiảmthiểulỗitínhtoándophéplàmtròntrongquátrínhtínhtoán.
ThôngthườngcácloạiDSPdấuphảytĩnhcógiáthànhrẻhơncácloạiDSPdấuphảy
độngvìyêucầu
sốlượngchânOn‐chipíthơnvàcầnsửdụnglượngsiliconíthơn.

ƯuđiểmnổibậtcủacácDSPdấuphảyđộnglàcóthểxửlývàbiểudiễnsốtrongd
ải
phạmvigiátrịrộngvàđộng.Dođóvấnđềvềchuyểnđổivàhạnchếvềphạmvibiểu
diễnsốkhôngphảiquantâmnhưđốivớiloạiDSPdấuphảytĩnh.Mộ
tloạiDSP32‐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
mantissavà8‐bitexponent.Phầnmantissabiểudiễnphầnsốlẻtrongphạm
vi‐1.0–+1.0
vàphầnexponentbiểudiễnvịtrícủadấuphảynhịphânvàcóthểdịchchuyểnsangtrái
hoặcphảituỳtheogiátrịsốmànóbiểudiễn.Điềunàytráing
ượcvớicácthiếtkếtrên
nềnDSPdấuphảytĩnh,ngườipháttriểnchươngtrìnhphảitựquiước,tínhtoánvà
phânchiaấnđịnhthangbiểudiễnsốvàphảiluônlưutâm
tớikhảnăngtrànsốcóthể
xảyratrongquátrìnhxửlýtínhtoán.Chínhđiềunàyđãgâyrakhókhănkhôngnhỏ
đốivớingườilậptrình. Nóichungpháttriển chươngtrìnhchoDSP dấ
uphảyđộng
thườngđơngiảnhơnnhưnggiáthànhlạicaohơnnhiềuvànănglượngtiêuthụthông
thườngcũnglớnhơ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độnglà1.18×10
−38
≤x≤3.4×10
38
.

Nhữngnhàthiếtkếhệthốngphảiquyếtđịnhvùngvàđộchínhxáccầnthiếtchocác
ứngdụng.Cácvixửlýdấuphảyđộngthườngđượcsửdụngchocácứngdụngyêucầ
u
vềđộchínhxáccaovàdảibiểudiễns ốlớnphùhợpvớihệthốngcócấutrúcbộnhớlớn
HơnnữacácDSPdấuphảyđộngchophéppháttriểnphầnmềm
hiệuquảvàđơngiản
hơnbằngcáctrìnhbiêndịchngônngữbậccaonhưCdođócóthểgiảmđượcgiáthành
vàthờigianpháttriển.TuynhiêngiáthànhlạicaonêncácDSPdấ
uphảyđộngphù
hợpvớicácứngdụngkháđặcbiệtvàthườnglàvớisốlượngít.


41

Hình2‐38:GiảnđồkhốichứcnăngcủaDSPTMS320C28xx
2.2.3 PAL
NgàynaykhinóiđếncácchủngloạiChipkhảtrìnhmảngtathườngbiếttớimộtsốtên
gọinhưPAL,CPLD,FPGA…Mộtchútlượcsửvềsựrađờivàpháttriểnsauđâysẽ
giúpchúngta
hìnhdungđượcđặcđiểmvànguồngốcrađờicủachúng.
42

  

Hình2‐39:CấutrúcPROMvàPLA
Lịchsử pháttriểncủa cácchủng loạiChip khảtrình mảngPLA(Programmable Logic
Array)đượcbắtnguồntừnguyênlýbộnhớchươngtrìnhPROM(ProgrammableRead‐
OnlyMemory).Trongđócácđầuvàođịachỉđóngvai
trònhưcácđườngvàoc ủamạch
logicvàcácđườngdữliệurađóngvaitrònhưcácđườngracủamạchlogic.VìPROM
khôngthựcsựphùhợpchomụcđíchthiếtkếcácmạchlogicnên
PLAđãrađờivào
đầuthậpkỷ70.Nórấtphùhợpđểthựchiệnmạchlogiccódạngtổngcáctích(vìcấu
thànhbởicácphầnt ửlogicANDvàOR).Nhưngnhượcđiểm
làchiphísảnxuấtcaovà
tốcđộhoạtđộngthấp.ĐểkhắcphụcnhượcđiểmnàyPAL(ProgrammableArrayLogic)
đãđượcpháttriển.NóđượccấuthànhtừcácphầntửANDkhảtrìnhvàphầ
ntửOR
gáncốđịnhvàcóchứacảphầntửflip‐flopởđầuranêncókhảnăngthựcthicácmạch
logictuầntự.Hình2‐40môtảcấutrúcchungcủaPAL.

Hình2‐40:CấutrúcchungcủaPAL
TừkhiđượcrađờivàpháttriểnPALtrởthànhcơsởchosựrađờicủahàngloạtcác
chủngloạiChipkhảtrìnhmảngvớicấutrúcphứctạphơnnhưSPLD(SimpleProgram‐
mable Logic
Device), CPLD (Com‐plex Programmable Logic Device),và sau này là FPGA
(FieldPro‐grammableGateArray).SPLDcũnglàtêngọichonhómcácchủngloạiChip
43
kiểutươngtựnhưPAL,PLA.VềmặtcấutrúcthìSPLDchophéptíchhợplogicvớimật
độcaohơnsovớiPALthôngthường,nhưngkíchthướccủanósẽtănglênrấ
tnhanh
nếutiếptúcmởrộngvàtăngmậtđộtíchhợpsốđầuvào.Đểđápứngnhucầumởrộng

mậtđộtíchhợpCPLDđãđượcpháttriển.Nólàsựtíchhợpcủanhiều kh
ốiSPLDvà
cungcấpthêmkhả năngkếtnốikhảtrìnhgiữacáckhốiSPLDđơnlẻvớinhau.Với
nguyênlýcấutrúcnàyCPLDcókhảnăngtíchhợpvớimậtđộcaotươngđươ
ngvới50
khốiSPLDthôngthường.

Nếuchỉdừngđếnđâychúngtacóthểthấymộtđặcđiểmchungcủacácchủngloại
chipkiểuPLAhayCPLDđềuchophépthựchiệncácm
ạchlogictrêncơsởtổhợplogic
củacácđầuvàovàrabằngcácphầntửANDvàOR.Vớinguyênlýnàyrõràngsẽgặp
khókhănkhithựcthicácứngdụngđòihỏicác
phéptínhtoánlogicphứctạpvớitốcđộ
cao.ĐểđápứngđiềunàyFPGA(FieldProgrammableGateArrays)đãrađời.Nólàsực ấu
thànhcủacáckhốilogickhảtrìnhcùngvớicáckênhkếtnốiliên
thôngkhảtrìnhgiữa
cáckhốiđóvớinhau.MộthìnhảnhtiêubiểuvềcấutrúcnguyênlýcủaFPGAđượcmô
tảnhưtrongHình2‐41:CấutrúcnguyênlýcủaFPGA.


Hình2‐41:CấutrúcnguyênlýcủaFPGA
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úngASICs.NóhỗtrợcácưuđiểmvềchứcnănglựachọngiốngnhưASICsnhưng
chophépch
ỉnhsửavàthiếtkếlạisaukhisửdụngvàgiáthànhpháttriểnthấphơn.
FPGAchophépkhảnăngthiếtkếlinhhoạtvàthíchnghidễdàngchocáctiệníchthiết
bịtố
iưu,trongkhivẫnduytrìđượckhônggiankíchthướcphầncứngvànănglượng
tiêuthụcủahệthống.Điềunàykhôngdễdàngnhậnđượckhithiếtkếdựatrênnềncác
ChipDSP.



FPGAthựcsựphùhợpchocácứngdụngđòihỏilượngtínhtoánlớnnhưtrongxửlý
tínhiệu.FPGAcóthểđượclậptrìnhhoạtđộngđồngthờivớimộts ốcácđườngdữliệ
u
songsong.Chúnglàcácđườngdữliệuhoạtđộngcủatổhợpnhiều cácchứcnăngtừ
đơngiảnđếnphứctạpnhưbộcộng,bộnhân,bộđếm,bộlưutrữ,bộsosánh,
bộtính
tươngquan,…

44

Hình2‐42:CấutrúcCLBvàLAB
NgàynaycóthểphânloạiramộtsốkiểuchủngloạiFPGAdựavàocấutạocủachúng:


■CấutạotừSRAM:
VớiloạinàycácmắtkếtnốikhảtrìnhđượcthựchiệnbằngcácphầntửSRAM,chínhvì
vậychophépthựchiệnlậptrìnhlặplạinhi
ềulần.Ưuđiểmnổibậtcủaloạinàylàcácý
tưởngthiếtkếmớicóthểđượcthựcthivàthửnghiệmnhanhchóng.HơnnữaSRAM
cũngđanglàmộthướng
pháttriểnrấtmạnhhiệnnaytrongnềncôngnghiệpsảnxuất
bộnhớvàcũngđều thựcthitheocôngnghệCMOSrấtphùhợpvớicôngnghệchếtạo
FPGA.

Tuynhiênmộtđặc
điểmcóthểxemnhưlànhượcđiểmcủaFPGAcấutạotừcácphần
tửSRAMlàchúngphảicấuhìnhlạimỗikhinguồnhệthốngđượccungcấp.Côngviệc
nàythườ

ngđượcthựchiệnbởimộtbộnhớngoàichuyêndụnghoặcbởimộtbộviđiều
khiểnkèmtheomạch.ChínhvìvậycũnglàmgiáthànhcủaFPGAtăngthêm.

■Cấutạotừcầuchì(anti‐fused)
KhônggiốngnhưloạiFPGAcấutạotừSRAM,FPGAvớicấutửkiểucầuchìđượclập
trìnhofflinebằngmộtthiếtbịlậptrìnhchuyên
dụng.ÝtưởngchếtạoloạiFPGAnày
xuấtpháttừnhucầuvềmộtthiếtbịkhảtrìnhcókhảnănglưucấuhìnhsaukhiđượcsử
dụng.Tức lànókhôngphảilàm
côngviệccấuhìnhmỗikhinguồnhệthốngđượccung
cấp.KhiFPGAanti‐fusedđãđượclậptrìnhthìnókhôngthểbịthayđổihayđượclập
trìnhlạinữa.Chínhnhờđiềunàynênnókhông
cầnbấtkỳmộtbộnhớngoàinàođể
lưutrữcấuhìnhvàcóthểtiếtkiệm,giảmgiáthànhcủathiếtbị.

MộtưuđiểmnổibậtcủaFPGAanti‐fusedlàkiể
ucấutrúcliênkếtkháb ềnvữngvớicác
loạinhiễubứcxạ.Đặcđiểmnàykháquantrọngkhithiếtbịphảilàmviệctrongmôi
trườngtiềmnăngnhưquâns
ựhoặchàngkhôngvũtrụ.Vìvậynótránhđượctrường
hợprủi rocó thểxảyranếusửdụng côngnghệSRAMlàhiệntượng lậttrạng thái
(flipped).Tuynhiênhiệntượ
ngnàycũngcóthểđượckhắcphụcbằngcơchếdựphòng
chập3nhưnglạilàmtăngthêmchiphíchếtạo.

45
MộtưuđiểmnổibậtcủaloạiFPGAanti‐fusedlàkhảnăngbảovệcôngnghệ.Tứclàdữ
liệucấuhìnhlậptrìnhchoFPGAcóthểđượcbảovệbởiviệc
đọcbấthợppháphoặc
khôngchophépđọc.Trongqúatrìnhxửlýhoặcpháttriển,ngườilậptrìnhsẽsửdụng

mộttệpdữliệucấuhìnhđểlậptrìnhvàkiểmtraquátrình
nạpcấuhìnhchoFPGA.
Côngviệcnàychỉthựchiệnmộtlầnvàsẽkhôngthểthayđổiđượcnữa.Khithựchiện
xongnócóthểđượcthiếtlậpthêmmộtthuộctínhlàch
ốngđọctrựctiếptừFPGAdữ
liệuliênquanđếncấuhình.NgoàirachúngtacũngcóthểbiếtthêmrằngFPGAanti‐
fusedthườngsửdụngítnănglượnghơnloạiFPGASRAM,kích
thướccũngnhỏhơn,và
tốcđộcũngnhanhhơnmộtchútnhờkhoảngcáchkếtnốicứnggiữacácphầntửngắn
hơn.

TuynhiênnhượcđiểmlớnnhấtcủaFPGA
anti‐fusedlàchỉcóthểđượclậptrìnhvàcấu
hìnhmộtlần.Vìvậynóchỉthựcsựphùhợpkhithựcthihoànchỉnhsảnphẩmcuối
cùngvàkhôngphùhợpvới
mụcđíchthiếtkếpháttriển.

■CấutạotừEEPROM/FLASH
EEPROMorFLASH‐basedFPGAs cũngcónguyênlýcấutạotươngtựnhưloạiFPGA‐
SRAM.Cácphầntửcấuhìnhcủanóđượckếtnốidựatrênmộtchuỗi
thanhghidịch
dài.Chúngcóthểđượccấuhìnhofflinebằngcácthiếtbịlậptrìnhchuyêndụng.Cũngcó
mộtsốcóthểlậptrìnhonlinenhưngthờigianlậptrìnhcấuhìnhsẽgấp
khoảng3lần 
thờigianthựcthivớinềnFPGA‐SRAM.Khiđãđượccấuhìnhđãđượclậptrìnhthì
chúngcóthểđượcduytrìvàkhôngbịmấtđinhưnguyênlýlưugiữcủaEEPROM
hoặc
FLASH.LoạiFPGA‐EEPROM/FLASHcócấutạonhỏhơnsovớiloạiFPGA‐SRAMvì
vậycũng cóthểgiảmđượcthời gianlantruyền tínhiệu kếtnốiliên thônggiữacác
ph

ầntửlogic.

ĐểbảovệcôngnghệkhiFPGAđãđượccấuhìnhvàđưarasửdụng,tacóthểbảovệ
bằngcơchếkhóamãmềm(cấutạotừkhoảng50bitđếnvàitrămbit).
Muốnđọcđược
thôngtincấuhìnhtrựctiếptừFPGA,ngườitacầnphảicómãkhóađóvàcũngrấtkhó
hoặckhôngthểmòđượctheonguyênlýthửsai.Vìmuốnvậytheoước
tínhcũngphải
mấtđếnhàngtriệunămmớihyvọngthànhcôngđểmòrađược.

TuynhiêncôngnghệchếtạoFPGA‐EEPROM/FLASHđòihòithựcthiquanhiềucông
đoạnxửlýhơnsovới
loạiFPGA‐SRAMvìvậymàsựpháttriểncủachúngcũngchậm
hơn.Hơnnữanănglượngtiêuthụcủachúngcũnglớnhơnvìphảinuôirấtnhiềucác
phầ
ntửđiệntrởkéo(pull‐upresistor).

■CấutạotừtổhợpFLASH‐SRAM
NgàynayngườitacũngpháttriểnchếtạocácloạiFPGAcấutạotừcáctổhợpSRAM
vàFLASHđểtậndụngđượccácưuđiểmcủa
cảhaichủngloạinày.Thôngthườngcác
phầntửcấuhìnhFLASHsẽđượcsửdụngđểlưucácnộidungcấuhìnhđểsaochép
chocácphầntửcấuhìnhSRAM.Vàcácphầntửcấuhình
SRAMhoàntoàncóthểđược
cấuhìnhlạitheoyêucầuthiếtkếtrongkhivẫnduytrìmộtphầnthiếtkếcấu hìnhgốc
lưutrongcácphầntửFLASH.
46

NgườitacũngthườngphânloạiFPGAdựavàophầntửkiếntrúccủachúngvàbao
gồm3loạichính:mịn,thôvàtrungbình.Bảnchấtviệcphânloạinàylàdự

avàokiểu
khốilogickhảtrìnhcấuthànhnênFPGA.VớiloạiFP GAmịnthìkiếntrúccáckhốilogic
khảtrì nhthườnglàcáccổnglogicđơngiản(kiểuAND,OR…,vàcácphầntửl
ưugiữ
nhưTrigerD…).Kiểukiếntrúcnàyphùhợpvàthườngsửdụnghiệuquảvớikiếntrúc
ASICó.GầnđâyxuthếpháttriểncủaFPGAđangtậptrungvàoloạikiếntrúc
thô.Tức
làcáckhốilogickhảtrìnhlàcáckhốicókhảnăngxửlýlogiclớnvớinhi ềutổhợpliên
kếtvàphứctạpvớinhiều đầuvàovàraliênkết.Tuỳtheo
mứcđộcủakhốilogickhả
trìnhđómàngườitaphânrathànhcácloạitrungbình.

CóhailoạicấutrúccơbảncấuthànhnêncáckhốilogickhảtrìnhtrongkiếntrúcFPGA
thôhoặc
trungbình làMUX(Multiplexer)vàLUT (LookupTable).Trong loạicấutrúc
MUXthìcácphầntửlogicđượcc ấuthànhtheocấutrúctổhợpcácđầuvàoratheo
nguyênlýMUXnhưmôtảtrongHình2‐43:Kh
ốilogicdạngMUX.


Hình2‐43:KhốilogicdạngMUX
ĐốivớiloạicấutrúcLUTthìcácđầuvàothựcchấtlàcáctổhợpđểchọnragiátrịtrong
bảngchấtlýcủahàmchứcnăngcầnthựcthi.Nguyênlýcủaloạ
ikhốilogicnàyđược
môtảnhưtrongHình2‐44.

Hình2‐44:LUTthựchiệnhàmtổhợpANDvàOR
47
HầuhếtcácứngdụngđềucónhucầuvềbộnhớRAMonChipvìvậymộtsố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ác phầntửRAMđóđược tổchức thànhtừngkhốivàtuỳ
thuộcvàokiếntrúccủaFPGAnósẽđượcphânbốlinhhoạt,thườnglàxungquanhcác
phầntửngoạivihoặc
phânbốđềutrênbềmặtChip.Mộthình ảnhminhhoạvềphân
bốRAMtrongkiếntrúcFPGAđượcmôtảnhưtrongHình2‐45.


Hình2‐45:HìnhảnhcủaChipcócáccộtlàcáckhốiRAMnhúng
■FPGAvớihạtnhânDSP
Thựcchấtđólàmộttổhợpnhằmtăngtốcvàkhảnăngtínhtoán.Kháiniệmnàycũng
tươngtựnhưcácbộđồngxửlýtoánhọctrongkiế
ntrúcmáytính.Nguyênlýlànhằm
sansẻvàgiảmbớttảisangFPGAđểthựcthicácchứcnăngtínhtoánlớn(thôngthường
đòihỏithựchiệntrongnhiềunhịphoạtđộng
củaChipDSP)vàchophépChipDSPtập
trungthựchiệncácchứcnăngđơnnhịptốiưu.TổhợpFPGAvàDSPlàmộtkiếntrúc
rấtlinhhoạtvàđặcbiệtcảithi
ệnđượchiệusuấtthựchiệnvàtăngtốchơnrấtnhiềuso
vớikiếntrúcnhiềuChipDPShoặcASICsđồngthờigiáthànhlạithấphơn.


Hình2‐46:SơđồnguyênlýmạchghépnốiVĐKvà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ướngchứcnănghoáđặcthù
9 Hạnchếvềtàinguyênbộnhớ
9 Yêucầuthờigianthực
3.2 Biểu diễn số và dữ liệu

 Đơnvịcơbảnnhấttrongbiểudiễnthôngtincủahệthốngsốđượcgọilàbit,
chínhlàkýhiệuviếttắtcủathuậtngữbi
narydigit.
 1964,IBMđãthiếtkếvàchếtạomáytínhsốsửdụngmộtnhóm8bitđểđánh
địachỉbộnhớvàđịnhnghĩarathuậtngữ8bit=1byte.
 Ngàynaysửdụngrộngrãi
thuậtngữwordlàmộttừdữliệudùngđểbiểudiễn
kíchthướcdữliệumàđượcxửlýmộtcáchhiệuquảnhấtđốivới mỗiloạikiến
trúcxửlýsốcụthể.
Chínhvìvậymộttừcóthểlà16bits,32bits,hoặc64bits…
 Mỗimộtbytecóthểđượcchia rathànhhainửa4bitvàđượcgọilàcácnibble.
Nibblechứacácbíttrọng
sốlớnđượcgọilànibblebậccao,vànibblechứacácbit 
trọngsốnhỏđượcgọilànibblebậcthấp.
3.2.1 Các hệ thống cơ số
Trongcáchệthốngbiểudiễnsốhiệnnayđềuđượcbiểudiễnởdạngtổngquátlàtổng
luỹthừatheocơsố,vàđượcphânloạitheogiátrịcơsố.Mộtcáchtổngquát
mộthệbiểu
diễnsốcơsốbvàalàmộtsốnguyênnằmtrongkhoảnggiátrịcơsốbđượcbiểudiễ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ậpphân),cơsốhexadecimal,cơsố8
Octal(bátphân).

Vídụvềbiểudiễncácgiátrịtrongcáchệcơsốkhácnhau:
243.51
10=2x10
2
+4x10
1
+3x10
0
+5x10
‐1
+1x10
‐2

212
3=2x3
2
+1x3
1
+2x3
0
=2310
10110

2=1x2
4
+0x2
3
+1x2
2
+1x2
1
+0x2
0
=2210

Hailoạicơsốbiểudiễnthôngdụngnhấthiệnnaychocáchệthốngxửlýsốlàcơsốnhị
phânvàcơsốmườisáu.
3.2.2 Số nguyên
Trongbiểudiễnsốcódấuđểphânbiệtsốdươngvàsốâmngườitasửdụngbittrọngsố
lớnnhấtquiướclàmbitdấuvàcácbitcònlạiđượcsửdụngđểbiểudi
ễngiátrịđộlớn
củasố.Vídụmộttừ8bitđượcsửdụngđểbiểudiễngiátrị‐1sẽcódạngnhịphânlà
10000001,vàgiátrị+1sẽcódạng00000001.Nhưvậyvới
mộttừ8bitcóthểbiểudiễn
49
đượccácsốtrongphạmvitừ‐127đến+127.MộtcáchtổngquátmộttừNbitsẽbiểu
diễnđược‐2
(N‐1)
‐1đến+2
(N‐1)
‐1.

Chúýkhithựchiệncộnghaisốcódấu:

9 Nếuhaisốcùngdấuthìthựchiệnphépcộngphầnbiểudiễngiátrịvàsửdụngbit
dấucùngdấuv
ớihaisốđó.
9 Nếuhaisốkhácdấuthìkếtquảsẽnhậndấucủatoántửlớnhơn,vàthựchiện
phéptrừgiữatoántửcógiátrịlớnhơnvớitoán
tửbéhơn.

Vídụ1:Cộnghaisốcódấu01001111
2và001000112.
1111 ⇐ carries
 01001111  (79)
 0+0100011  +(35)
 01110010  (114)

Vídụ2:Cộnghaisốcódấu01001111
2và011000112.
Nhớcuốicùng 1
← 1111 ⇐carries
Tràn  0 1001111 (79)
bỏnhớ  0+ 1100011 +(99)
0 0110010 (50)

Vídụ3:Trừhaisốcódấu01001111
2và011000112.
  0112 ⇐borrows
 0 1100011  (99)
 0‐ 1001111 ‐(79)
 0 0010100  (20)

Vídụ4:Cộnghaisốkhácdấu10010011

2(‐19)và000011012(+13)
  012  ⇐borrows
 1 0010011  (‐19)
 0‐ 0001101 +(13)
 1 0000110 (‐6)

Thuậttoánthựchiệnphéptínhcódấu:

(1) Khaibáovàxóacácbiếnlưugiátrịvàdấuđểchuẩnbịthựchiệnphéptính.
(2) Kiểmtradấucủatoántửthứnhấtđểxemcóphảisốâmkhông.Nếulàsốâm
thì
thựchiệnbùdấuvàbùtoántử.Nếukhôngthìchuyểnquathựchiệnbước3.
(3) Kiểmtradấucủatoántửthứhaiđểxemcóphảisốâmkhông.Nếulàsốâmthì

thựchiệnbùdấuvàbùtoántử.Nếukhôngthìchuyểnsangthựchiệnbước4.
(4) Thựchiệnphépnhânhoặcchiavớicáctoántửvừaxửlý.
(5) Kiểmtradấ
u.Nếuzerothìcoinhưđãkếtthúc.Nếubằng‐1(0ffh)thìthựchiện
phéptínhbùhaivớikếtquảthuđượcvàkếtthúc.

50
Hiệnnayngườitasửdụnghaiquiướcbiểudiễnsốnguyênphânbiệttheothứtựcủa
bytetrọngsốtrongmộttừđượcbiểudiễn:
• Litteedian:bytetrọngsốnhỏnhấtđứngtrướcÆthuậnlợichophépcộnghoặc
trừvà
• Bigendian:bytetrọngsốlớnnhấtđứngtrướcÆthuậnlợichophépnhânhoặc
chia.
Vídụxétmộtsốnhịphân4‐byte



Theoquiướcbiểudiễnlitteedianthìthứtựđịachỉlưutrongbộnhớsẽlà:
Địachỉcởsở+0=Byte0
Địachỉcơsở+1=Byte1
Địachỉcơsở+2=Byte2
Địa
chỉcơsở+3=Byte3
Vàtheoquiướcbiểudiễnsốbigediansẽlà:
Địachỉcởsở+0=Byte3
Địachỉcơsở+1=Byte2
Địachỉcơsở+2=Byte1
Địachỉcơsở+3=Byte0
3.2.3 Số dấu phảy tĩnh
Chúngtacóthểsửdụngm ộtkýhiệudấuchấm ảođểbiểudiễnm ộtsốthực.Dấuchấm
ảođượcsửdụngtrongtừdữliệudùngđểphânbiệtvàngăncáchgiữa
phầnbiểudiễn
giátrịnguyêncủadữliệuvàmộtphầnlẻthậpphân.Vídụvềmộttừ8‐bitbiểudiễnsố
dấuphảyđộngđượcchỉranhưtrongHình3‐1.Với
cáchbiểudiễnnày,giátrịthựccủa
sốđượctínhnhư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ình3‐1:Địnhdạngbiểudiễnsốdấuphảytĩnh8bit
Nhượcđiểmcủaphươngphápbiểudiễnsốdấuphảytĩnhlàvùngbiểudiễnsốnguyên
bịhạnchếbởidấuphảytĩnhđượcgáncốđịnh.Điềunàydễxảyra
hiệntượngtrànsố
khithựchiệncácphépnhânhaisốlớn.

×