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

Giáo trình Kỹ thuật Vi xử lý

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 (5.8 MB, 255 trang )

OPEN.PTIT.EDU.VN
LI NÓI U


Các b vi x lý ra đi đem li bc ngot trong khoa hc k thut, các thit b tr nên
thông minh hn nh s điu khin theo chng trình. Vi x lý đang dn có mt trong hu ht các
máy móc thit b dân dng cng nh công nghip. Vì vy vic hc tp nghiên cu ng dng vi x
lý trong trng hc là mt nhu cu ht sc cn thit.
 phc v cho nhu cu ging dy môn hc K thut vi x lý cho các lp đi hc t xa
chuyên nghành đin t vin thông, bài ging vi x lý đc biên son vi mc đích cung cp cho
sinh viên các kin thc c s cn thit s dng cho vic nghiên cu ng dng các h thng vi x
lý trong k thut và đi sng. Bài ging bao gm 8 chng vi các ni dung chính nh sau:
Chng 1 cung cp các khái nim c bn v vi x lý và h thng ca nó.
Chng 2 mô t cu trúc, các khi chc nng trong các b vi x lý h Intel 80x86, mà ch
yu là CPU 80286. Ngoài ra trong chng này còn gii thiu v các tính nng ca các b vi x lý
th h sau 80286 nh 80386, 80486, Pentium.
Chng 3 mô t v cu trúc lnh, các ch đ đnh v đa ch và tp lnh chi tit ca vi x
lý 80286. Cho phép sinh viên rút ra đc các kin thc chung nht v các lnh vi x lý và cách
tip cn trong vic lp trình bng các lnh hp ng. Ngoài ra chng này còn đ cp ti các vn
đ v lp trình hp ng trên máy vi tính bao gm: cu trúc câu lnh, cách khai báo d liu, khung
chng trình hp ng, các cu trúc lp trình c bn, và các ví d c bn rèn luyn k nng lp
trình bng các lnh gi nh ca vi x lý.
Chng 4 cung cp các kin thc v vic thit k các h thng vi x lý chuyên dng bao
gm c vic thit k h thng phn cng và phn mm vi x lý.
Chng 5 mô t v cu trúc hot đng ca các vi mch h tr vào ra song song 8255 và
vào ra ni tip 8251.
Chng 6 mô t v vi điu khin 8051 bao gm v cu trúc các khi mch phn cng, v
tp lnh và lp trình cho vi điu khin 8051.
Chng 7 mô t vic thit k h thng đo đ rng xung và truyn d liu ni tip bng
8051. Vi các ví d này sinh viên có th tip cn v vic thit k các ng dng nh dùng vi điu
khin.


Chng 8 là các gii thiu v b vi điu khin 32 bit ca Motorola MC68332. ây là b
vi điu khin có các tính nng rt mnh đc ng dng nhiu trong các thit b điu khin hin
nay.
Mong rng tp bài ging này đáp ng đc nhu cu ging dy môn hc k thut vi x lý
ti hc vin, và kích thích đc s hng thú ca hc sinh – sinh viên trong vic nghiên cu ng
dng vi x lý trong k thut và đi sng hàng ngày. Rt mong nhn đc nhiu ý kin đóng góp
đ bài ging ngày càng đc hoàn thin hn.

Tác gi



OPEN.PTIT.EDU.VN

MC LC Trang


Chng 1 : Kin trúc ca h vi x lý (2 tit)

1.1 T chc chung ca h vi x lý
1.1.1. Công ngh LSI và s ra đi ca b vi x lý.
1.1.2. Phn cng và phn mm ca h thng vi x lý.
1.1.3. Tng quan v phn cng h thng vi x lý.
1.1.4. Tng quan v phn mm và s phát trin ca ngôn ng phn mm.
1.2 T chc b nh ca h vi x lý
1.2.1 Cu trúc và nguyên tc làm vic ca b nh ROM , EPROM .
1.2.2 Cu trúc và nguyên tc làm vic ca b nh SRAM , DRAM .
1.2.3 T chc b nh
1.3 Vào ra trong h thng vi x lý.
1.3.1 Cu trúc và nguyên tc làm vic ca cng vào / ra.

1.3.2 Mch ba trng thái và mch cài
1.3.3 Các cng vào / ra đn gin.
Chng 2 : Nguyên tc làm vic ca b vi x lý h 80X86 Intel (6 tit)

2.1 Cu trúc ca b vi x lý 80286 Intel
2.1.1 S đ khi ca b vi x lý 80286 Intel
2.1.2 Khi to đa ch (AU)
2.1.3 Khi ghép kênh (BU)
2.1.4 Khi lnh (IU)
2.1.5 Khi thc hin lnh (EU)
2.2 Các thanh ghi ca b vi x lý 80286 Intel .
2.2.1 Chc nng và nhim v ca các thanh ghi đa nng .
2.2.2 Các thanh ghi qun lý đon
2.2.3 Thanh ghi c trng thái
2.2.4 Các thanh ghi đc bit
2.3 Nguyên tc làm vic ca b vi x lý 80286 Intel .
2.3.1 nh ngha chu k lnh và chu k máy
2.3.2 Qun lý b nh thc và b nh o
2.3.3 Trng thái b vi x lý khi khi đng
2.3.4 Ch đ ngt và các đu ngt ca b vi x lý
2.4 Các b vi x lý cp cao ca Intel


Chng 3 : Lp trình Assembly cho h vi x lý Intel (6 tit)

3.1 Cu trúc ca hp ng.
3.1.1 B ký t t khóa ca hp ng
3.1.2 Các lnh ch dn trong hp ng
3.1.3 Khung ca file chng trình ngun Assembly
3.2 Tp lnh ca b vi x lý 80X86 Intel

3.2.1 Nhóm lnh chuyn d liu


1

1
1
2
3
4
4
5
7
7
10
10
10
11

14

14
15
15
15
15
15
15
16
17

18
20
21
21
25
35
36
40


43

43
44
44
48
50
54
OPEN.PTIT.EDU.VN
3.2.2 Nhóm lnh x lý d liu.
3.2.3 Nhóm lnh chuyn điu khin
3.3 Lp trình hp ng cho h vi x lý Intel
3.3.1 Lp trình chuyn mng d liu
3.3.2 Lp trình chuyn đi mã (nh phân , hexa , thp phân , ascii)
3.3.3 Lp trình điu khin thit b ngoi vi

Chng 4 : Thit k h vi x lý chuyên dng (6 tit)

4.1 Trình t thit k h vi x lý chuyên dng
4.2 T chc phn cng cho h vi x lý chuyên dng .

4.2.1 La chn b vi x lý
4.2.2 T chc không gian nh thc và đnh v ROM , RAM
4.2.3 Thit k các ngoi vi theo yêu cu
4.3 Xây dng phn mm cho h vi x lý
4.3.1 Xây dng thut toán và lu đ thut toán cho h vi x lý
4.3.2 Vit chng trình ngun bng Assembly cho h vi x lý
4.4 Dch và np chng trình vào ROM cho h vi x lý

Chng 5 : Các chip IC h tr cho h vi x lý (4 tit)

5.1 Chip vào / ra lp trình 8255
5.1.1 Cu trúc ca chip 8255
5.1.2 Các ch đ làm vic ca chip 8255
5.1.3 Kt ni 8255 vi h thng vi x lý
5.1.4 Lp trình khi to ch đ làm vic cho chip 8255
5.2 Chip truyn tin ni tip USART 8251
5.2.1 Ch đ truyn tin đng b và cn đng b
5.2.2 Cu trúc ca chip USART 8251
5.2.3 Các ch đ làm vic ca chip USART 8251
5.2.4 Ghép chip USART 8251 vi h vi x lý
5.2.5 Lp trình khi to ch đ làm vic cho chip USART 8251

Chng 6 : Vi điu khin 8 bit 8051 (8 tit)

6.1 Cu trúc và chc nng ca vi điu khin 8051.
6.1.1. Gii thiu v các b vi điu khin.
6.1.2. Cu trúc tng quát ca các b vi điu khin.
6.1.3. Mô t phn cng các b vi điu khin h MSC-51
6.2 Giao tip vi b nh ngoài cho vi điu khin 8051.
6.2.1. Truy xut b nh chng trình bên ngoài.

6.2.2. Truy xut b nh d liu bên ngoài.
6.2.3. B nh ngoài s dng chung cho chng trình và d liu
6.3 Hot đng timer ca 8051
6.3.1. Gii thiu.
6.3.2. Các ch đ timer và c báo tràn.
6.3.3. Ngun xung nhp.
6.3.4. Cho chy, dng và điu khin các timer.
6.3.5. Khi đng và truy xut các thanh ghi timer.
56
61
62
63
64
67

72

72
74
74
74
78
82
82
87
87

92

92

92
93
98
99
101
101
104
106
107
110

120

120
120
120
121
130
131
131
134
134
134
136
137
138
139
OPEN.PTIT.EDU.VN
6.4 B điu khin truyn tin ni tip UART ca 8051.
6.4.1 Gii thiu.

6.4.2 Thanh ghi điu khin cng ni tip.
6.4.3 Các ch đ hot đng
6.4.4 Khi đng và truy xut các thanh ghi cng ni tip
6.4.5 Truyn thông tin trong h thng đa x lý.
6.4.6 Tc đ cng ni tip.
6.5 Ngt ca vi điu khin 8051.
6.5.1. Gii thiu.
6.5.2. T chc ngt ca 8051.
6.5.3. Các vector x lý ngt.
6.5.4. Thit k chng trình dùng các ngt.
6.5.5. Các ngt ca 8051
6.6 Tp lnh và hng dn lp trình trên 8051.
6.6.1 Các ch đ đa ch.
6.6.2 Tp lnh ca 8051.
6.6.3 Chng trình hp ng 8051.
6.7 B nh ROM ca vi điu khin 8051.

Chong 7 : Thit k h thng chuyên dng trên on – chip 80C51 (4 tit)

7.1 Thit k h đo thông s tín hiu xung
7.1.1 Nguyên tc đo đ rng xung
7.1.2 S đ phn cng ca h đo
7.1.3 Xây dng chng trình điu khin
7.2 Thit k h truyn tín hiu ni tip
7.2.1 S đ kt ni phn cng h thng vi điu khin truyn d liu ni tip.
7.2.2 Xây dng chng trình điu khin.

Chng 8 : Vi điu khin 32 bit MC68332 (9 tit)

8.1 Cu trúc và chc nng thành phn ca on – chip 32 bit MC68332

8.2. Mô đun tích hp h thng SIM.
8.2.1. Khi đnh cu hình và bo v h thng.
8.2.2. Khi to clock cho h thng.
8.2.3. Khi giao tip BUS bên ngoài.
8.2.4. Khi to tín hiu chn mch.
8.2.5. Các ngõ vào ra đa dng.
8.2.6. Reset
8.2.7. Ngt
8.2.8. Khi kim tra phn cng
8.3 B vi x lý
8.3.1. Các mô hình lp trình.
8.3.2. Thanh ghi trng thái chng trình
8.3.3. Ch đ g ri.
8.4 Khi x lý thi gian TPU
8.4.1. Các khi chc nng trong TPU.
8.4.2. Các chc nng thi gian ca TPU.
8.5 Mô đun ni tip theo hàng đi QSM
140
140
140
141
143
145
145
147
147
148
149
151
152

153
153
157
159
168

173

173
173
174
175
181
181
181

189

189
191
195
195
195
196
197
198
199
200
200
201

202
203
203
204
206
210
OPEN.PTIT.EDU.VN
8.6 TRURAM
8.6.1. Khi thanh ghi ca TPU RAM.
8.6.2. Hot đng ca TPURAM
8.7 Lp trình hp ng cho vi điu khin MC68332
8.7.1 Các ch đ đa ch trong chng trình hp ng MC68332.
8.7.2 Tp lnh ca MC68332
8.7.3 Khuôn dng chng trình ngun.
8.7.4 Lp trình khi đng SIM.
8.7.5 Lp trình đnh cu hình cho RAM ni.
8.7.6 Lp trình cho QSM.
8.7.7 Lp trình cho TPU.
HNG DN VÀ ÁP S BÀI TP

CÁC CH VIT TT

TÀI LIU THAM KHO






212

213
214
214
214
215
225
227
229
229
232

237

246

251


OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
CHNG 1: KIN TRÚC CA H THNG VI X LÝ

Gii thiu:
Trc ht trong chng này sinh viên cn nm đc các khái nim v b vi x lý nh :
mc đích s ra đi ca b vi x lý, các khi chc nng c bn ca b vi x lý, nguyên tc x lý
các công vic và bài toán ca b vi x lý, lnh ca b vi x lý, chng trình mà các b vi x lý
thc hin, chc nng ca phn cng và phn mm trong h thng vi x lý, các khi chc nng
phn cng trong h thng vi x lý và chc nng ca chúng, các tín hiu kt ni các khi chc
nng phn cng, phn mm phát trin ca ngôn ng phn mm h thng vi x lý, lnh mã máy,
lnh gi nh, nguyên tc hình thành ngôn ng cp cao, các chng trình hp ng, các chng

trnh ngôn ng cp cao và vic thc hin các chng trình này trong h thng vi x lý.
Tip theo chng này cung cp các kin thc v b nh bán dn. Sinh viên cn nm đc
nguyên tc hot đng ca b nh bán dn, s khác nhau gia các b nh ROM và các b nh
RAM, gia các loi b nh ROM và gia các loi b nh RAM, và quan trng nht là các t chc
các b nh trong h thng vi x lý, phng pháp gii mã đa ch b nh trong các h thng vi x
lý.
Phn cui cùng sinh viên cn nm đc các kin thc v vào ra, cu trúc ca các vi mch
s đm, cài và nguyên tc làm vic ca chúng trong các h thng vi x lý, trng thái tr kháng cao
và ý ngha ca chúng trong kt ni h thng vi x lý. Và cng ging nh b nh cn nm rõ
nguyên tc gii mã đa ch vào ra trong các h thng vi x lý.

1.1. T CHC CHUNG CA H THNG VI X LÝ
1.1.1. Công ngh LSI và s ra đi ca các b vi x lý
Trong k thut s, chúng ta đã đc làm quen vi công ngh ch to bán dn cho phép đt
nhiu cng logic trong mt vi mch (hay mt mch tích hp IC – Integrated Circuits) vi din tích
khong vài mm
2
. Nu s cng nh hn 15 đn v cng, chúng đc gi là mch tích hp mt đ
nh SSI (Small Scale Integration). T 15 ti 100 đn v cng đc gi là mch tích hp mt đ
va MSI, trên 100 cng là mch tích hp mt đ cao LSI và hàng triu đn v cng đc gi là
mch tích hp mt đ rt cao VLSI.
Vi công ngh ch to bán dn trên, hàng ngàn loi IC s khác nhau ra đi vi các chc nng
khác nhau, nhng chúng đu có các tính cht chung nh:
- u đc kt ni t các cng logic c bn.
- D liu s đa ti các ngõ vào s đc bin đi theo mt hàm s nht đnh thành d liu trên
các ngõ ra.
Vi cu hình ni cng các cng logic c bn đ to thành mt IC s vi mt chc nng c
th nh trên, làm vic s dng các IC s có các nhc đim nh: cùng mt chc nng nhng s
dng nhiu ln trong mch, s phi s dng nhiu IC s. Khi mun thc hin các công vic khác
nhau, cn thc hin các mch s khác nhau. Ví d, mt công vic yêu cu hai phép cng nh phân

s phi s dng hai IC cng khác nhau. Nu có nhiu hn mt phép tính so vi mch đã thc hin
s cn phi làm mt mch khác.
Vi s ra đi ca công ngh LSI, cho phép tích hp rt nhiu cng logic trong mt vi mch
nh, ngi ta ngh đn chuyn thit k mt IC s có th thc hin mi chc nng s mà không cn
phi thay đi mch đin. Nguyên tc thc hin ca loi IC s này có th biu din trong s đ
khi hình 1.1.
1
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
S đ bao gm khi các hàm s c bn và các b đm đc kt ni vi nhau thông qua
các mch kim soát (không kt ni c đnh, mà ch kt ni khi có các tín hiu cho phép). D liu
có th di chuyn t b đm này ti b đm khác và t các b đm ti x lý ti các hàm c bn khi
có các tín hiu cho phép thích hp. Mt chc nng s phc tp (mt bài toán hay mt công vic
nào đó), thay vì phi thc hin bng mt mch s ni cng, có th thc hin tng bc bng cách
tun t thc hin các hàm s c bn trong IC này. Vi cu hình này, s đ có th thc hin mi
chc nng s phc tp mà không cn thay đi mch kt ni các IC s. ây là cu hình c bn nht
ca mt b vi x lý.















Chn hàm
x lý d
liu
Chn b đm
cung cp d
liu

Các hàm s c bn
B đm B đm B đm B đm

Hình 1.1: S đ khi cu to c bn ca vi x lý.

Nh vy vi x lý là mt IC s có tt c các hàm s c bn, đ thc hin mt chc nng s
phc tp nó s tun t thc hin các chc nng s c bn theo mt trình t thích hp.  thc
hin mt chc nng s c bn, cn phi cung cp cho vi x lý các tín hiu chn d liu trong các
b đm và tín hiu chn hàm s x lý d liu đó. Công vic này đc gi là cung cp mt lnh
cho vi x lý.  thc hin mt bài toán hay mt công vic nào đó, cn phi thc hin tun t các
hàm s c bn theo mt trình t nht đnh, có ngha là phi cung cp cho vi x lý mt tp hp các
lnh sp xp theo mt gii thut hp lý gi là mt chng trình.

1.1.2. Phn cng và phn mm ca h thng vi x lý
Vi cu to bao gm các hàm s c bn và các b đm nh đã mô t  trên, các b vi x
lý không th hot đng mt mình, mà chúng cn đc kt ni ghép vi các mch ph cn nh:
mch cung cp xung nhp, b nh lu tr chng trình, các giao tip đ liên lc vi ngi s dng
hay thit b điu khin. Nguyên tc cu to và cách thc kt ni gia vi x lý và các mch ph cn
cn thit ca nó đc gi là công ngh phn cng ca h thng vi x lý (Hardware).







H thng mch
đin t s
Các thit b xut
nhp và chp hành
điu khin
Các chng trình
phn mm
Hình 1.2: S đ khi mô t hot đng ca h thng vi x lý.

 h thng mch phn cng đã đc kt ni đúng có th thc hin mt bài toán, mt
công vic, cn cung cp cho vi x lý mt chng trình thích hp. Công vic to ra các chng
2
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
trình cung cp cho các h thng vi x lý hot đng đc gi chung là công ngh phn mm
(Software). Có th mô t c ch ca mt h thng vi x lý trên hình 1.2.

1.1.3. Tng quát v phn cng h thng vi x lý
Phn cng mt h thng vi x lý bao gm 3 khi mch chính trên hình 1.3 bao gm:
- B vi x lý, hay còn đc gi là đn v x lý trung tâm CPU (Central Processing Unit) có
nhim v thc hin tt c các lnh mà chng trình yêu cu. Nó đóng vai trò là ch trong h
thng, quyt đnh s hot đng ca các linh kin khác trong mch.
- Khi b nh lu tr các chng trình cung cp cho vi x lý thc hin, ngoài ra nó còn s
dng lu tr các bin trung gian cng nh cui cùng trong các quá trình tính toán.
- Các b vào ra kim soát vic truyn d liu gia CPU và các thit b ngoi vi nh bàn phím,
màn hình,…. Các thit b ngoi vi có th là các thit b cho phép h thng vi x lý và ngi
s dng có th liên lc vi nhau, hoc các thit b thc hin mt công vic nào đó theo s

điu khin ca vi x lý.
Trong h thng vi x lý, CPU đóng vài trò là thành phn điu khin kim soát mi hot
đng ca các vi mch ph tr (b nh và vào ra) khác. Vì vy, các mch ph tr s đc kt ni
vi CPU bng mt h thng đng dn đin gi là BUS. BUS đc chia thành 3 loi: BUS d
liu, BUS đa ch và BUS điu khin.
BUS d liu có nhim v truyn d liu gia CPU và các b nh hoc vào ra đ các thành
phn trong h thng có th hiu đc nhau. Ví d nh: các lnh đc CPU ly t b nh qua BUS
d liu, hot đng ca các thit b ngoi vi đc CPU điu khin và kim soát bng BUS d liu.
Các CPU truyn thng s dng mt BUS d liu duy nht đ truyn d liu vi tt c mi ni
trong h thng, vì vy đ điu khin đc tng thành phn mt cách đc lp, ti mt thi đim
thông thng CPU ch truyn d liu vi mt v trí duy nht, v trí này đc xác đnh bng trng
thái ca BUS đa ch. H thng phi đc kt ni sao cho ng vi mt đa ch mà CPU to ra, ch
có mt v trí duy nht đc xác đnh ti, công vic này đc gi là gii mã đa ch trong h thng
vi x lý. Ngoài ra b nh hoc vào ra, (xác đnh bng BUS đa ch) có th có nhiu ch đ hot
đng khác nhau vi CPU, các ch đ này đc thông báo qua li vi CPU thông qua BUS điu
khin. Ví d, khi đc d liu t b nh CPU thông báo bng tín hiu MEMRD (memory read)
tích cc, còn khi ghi d liu ti b nh nó thông báo bng tín hiu MEMWR.










CPU

B

nh



I/O
Thit
b
ngoi
vi
Chng
trình
Hình 1.3: S đ khi h thng vi x lý















3
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý

1.1.4. Tng quát v phn mm và s phát trin ca các ngôn ng phn mm
Nh đã bit, h thng vi x lý là mt h thng mch đin t s hot đng theo chng
trình. Vì là h thng mch đin t s, nên các chng trình cung cp cho vi x lý hot đng phi 
di dng 0, 1 gi là chng trình mã máy. Nhng do ngôn ng máy ch đn gin là t hp ca
các bit 0 và 1 nên rt khó nh, khó kim tra đi vi ngi s dng.  khc phc nhc đim
này, ngi ta đt cho mi lnh mã máy thc hin mt chc nng s c bn mt tên d nh hn gi
là mã gi nh. Khi lp trình ngi ta s dng các lnh gi nh này, to thành chng trình hp
ng (assembly), đ vi x lý thc hin đc chng trình cn phi dch nó ra chng trình mã
máy. Quá trình dch mt chng trình hp ng thành mt chng trình mã máy, đc gi là quá
trình hp dch (assembler). Hp dch có th thc hin bng cách tra bng tp lnh, khi có máy vi
tính và các công c son tho lu tr, ngi ta thc hin các chng trình hp dch đ quá trình
hp dch nhanh chóng và chính xác hn.
Do ch đn gin là tên ca mt lnh c bn ca vi x lý, nên các mã gi nh vn cha
thc s d dàng khi lp trình, các chng trình hp ng thng không có cu trúc và rt khó kim
tra phát hin li cng nh lu tr s dng lâu dài. Cng theo cách trên, ngi ta vit ra các
chng trình con hp ng thc hin mt chc nng thông dng ri đt thành mt lnh ngôn ng
cp cao. Có rt nhiu ngôn ng cp cao khác nhau ra đi nh Pascal, C, basic ….  thc hin
các chng trình ngôn ng cp cao, cng cn phi dch chúng v dng mã máy. Quá trình này
đc gi là thông dch hoc biên dch. Thông dch là quá trình dch tng lnh ngôn ng cp cao ra
mt chui lnh mã máy đ vi x lý thc hin, sau đó mi tip tc vi lnh cp cao k tip. Còn
biên dch là dch đng thi chng trình ngôn ng cp cao ra chng trình mã máy, sau đó mi
cung cp cho vi x lý thc hin chng trình mã máy đó.



Chng trình ngôn
ng cp cao

H thng mch
đin t s

Chng trình hp
ng
(các lnh gi nh)
Chng trình mã
máy
(tp hp các bit 0
và 1


)

Hình 1.4: S phát trin ca ngôn ng phn mm.


1.2. T CHC B NH CA H THNG VI X LÝ
Trong h thng mch đin t phn cng ca h thng vi x lý mô t trên hình 1.3, b nh
là các IC nh đc gi là b nh bán dn hay b nh chính ca h thng vi x lý. Ngoài b nh
bán dn, h thng vi x lý còn có các thit b khác s dng đ lu tr d liu và chng trình, đó
là các thit b nh ngoài nh:  đa cng,  đa mm,  đa quang hc …. Chúng đóng vai trò là
các thit b ngoi vi ca h thng. Phn này ch mô t v cu to và nguyên tc hot đng ca các
loi b nh bán dn.
B nh bán dn đc chia thành hai loi chính: b nh ch đc ROM (Read Only
Memory) và b nh có th đc ghi đc hay còn gi là b nh truy cp ngu nhiên RAM
(Random Access Memory). Tuy nhiên các tên gi trên ch mang tính cht tng đi, b nh ROM
cn phi đc ghi d liu trc khi đc, mi loi ROM khác nhau s có cách ghi d liu khác
nhau. B nh truy cp ngu nhiên, khác vi b nh truy cp tun t là có th truy cp bt k d
liu nào mt cách tc thi, mà không phi truy cp tun t. Các b nh ROM và RAM đu có th
truy cp tun t.
4
OPEN.PTIT.EDU.VN

Chng 1: Kin trúc ca h thng vi x lý
Trong các h thng vi x lý, b nh ROM đc s dng đ ghi các chng trình và d
liu c đnh nh: chng trình khi đng h thng, chng trình ROM BIOS ca máy tính, các
chng trình điu khin hot đng ca các h thng vi x lý không có b nh ngoài ….
Các loi b nh ROM bao gm: Mask ROM là ROM đc ghi d liu ngay t khi sn
xut không th thay đi đc. PROM là loi ROM lp trình đc mt ln bi ngi s dng.
EPROM là b nh ROM có th lp trình bng đin và xoá bng tia cc tím, EEPROM là ROM
lp trình và xoá nhiu ln bng đin.
B nh RAM đc s dng làm ni lu tr các bin s ca chng trình, nó cng có th
s dng làm ni cha các chng trình np vào t các thit b nh ngoài đ CPU thc hin. B
nh RAM đc chia thành hai loi chính là: RAM tnh SRAM và RAM đng DRAM. SRAM lu
tr d liu theo nguyên tc ca các Flip – Flop, nên nó s lu tr d liu ghi vào nó cho đn khi
có mt d liu khác đc ghi đè lên, hoc cho đn khi mt ngun cung cp. DRAM lu tr d
liu bng các t nh nên các mc 1 sau mt thi gian s b tiêu hao qua các mch ph cn, vì vy
DRAM yêu cu chu k làm ti.

1.2.1. Cu trúc và nguyên tc làm vic ca b nh ROM
Hình 1.5 mô t nguyên tc cu to ca b nh PROM. Trong hình v ma trn nh bao
gm 4 hàng và 8 ct. Ti mt thi đim tng ng vi trng thái hai ngõ vào A1A0 s có 1 trong
4 hàng mang trng thái 0. Trng thái ca 8 ct s tu thuc vic ni hay không ni hàng và ct
tng ng bng diode. Tng ng vi đim ni trng thái ca ct s bng 0, không ni là 1. ng
vi trng thái ca ngõ vào A2 b multiplex s chn 4 ct T3 – T0 hoc P3 – P0 cung cp ra các
đng D3 – D0. Nh vy b nh s bao gm 8 ô nh, mi ô nh cha 4 bit d liu. ng vi mt
trng thái ca A2A1A0 s có mt ô nh đc chn.

+Vcc





T3 P3 T2 P2 T1 P1 T0 P0
D3 D2 D1 D0
A0
A1
A2
Gii
mã đa
ch
Multiplex









Hình 1.5: Nguyên tc cu to ca b nh ROM.

Mi loi b nh ROM s có cách kt ni các đim ca ma trn nh khác nhau nh trên
hình 1.6. Mask ROM có các đim ca ma trn nh đc kt ni ngay khi sn xut. B nh PROM
kt ni các đim ma trn nh bng các diode và các cu chì mnh, khi lp trình cn cung cp dòng
đin đ ln đ làm đt các cu chì ti các đim mun lu tr các bit 1. i vi các b nh
EPROM và EEPROM các đim ma trn nh đc kt ni bng các transistor MOS, khi lp trình
cn cung cp đin trng ca đin áp cao đ các ht him đ nng lng chuyn qua bán dn cc
cng, kênh dn mt kh nng dn đin, đim ma trn gi bit 1. Nu mun xoá các bit 1 đã ghi có
5
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý

th dùng đin trng đin áp cao (EEPROM) hoc nng lng cung cp bng tia cc tím
(EPROM) đ các đin t t do tr v kênh dn.

W
B
W
B
1
W
B
W
B
W
B
0
V
D
W
B
G
N
Diode MOS ROM MOS ROM

Hình 1.7: Ni các đim ma trn nh ca các loi ROM.
Ngoài các tín hiu đa ch và điu khin các b nh ROM còn có các tín hiu điu khin,
hình 1.8 mô t các tín hiu ca EPROM 2764 trong đó:
A12 – A0 : Các đng đa ch.
D7 – D0 : Các đng d liu.
CE (Chip Enable): Tín hiu chn mch, tín hiu này không tích cc BUS d liu s  trng thái
tr kháng cao.

OE (Output Enale): Tín hiu cho phép xut cho phép b đm d liu ngõ ra đ cung cp d liu t
bên trong ra ngoài các đng D7 – D0.
VPP : Ngõ vào đin áp cao cung cp ngun lp trình cho EPROM.
PGM: Ngõ vào cung cp xung lp trình cho EPROM.

U1
2764
10
9
8
7
6
5
4
3
25
24
21
23
2
11
12
13
15
16
17
18
19
22
27

1
20
A
0
A
1
A
2
A
3
A
4
A
5
A
6
A
7
A
8
A
9
A
10
A
11
A
12
D0
D1

D2
D3
D4
D5
D6
D7
OE
PGM
VPP
CE
Hình 1.8: Các tín hiu EPROM 2764.
6
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
1.2.2. Cu trúc và nguyên tc làm vic ca b nh RAM



Hình 1.9: Cu to mt bit nh SRAM.

Hình 1.9 mô t cu to ca mt bit nh SRAM, trong s đ khi cp ngun mt trong hai
transistor M1 hoc M2 dn, gi s M2 dn Q = 0 nên M1 không dn, lúc này các đng BL và
BL\ s đc cung cp ti mch khuch đi đc đ cung cp d liu mc 0 khi đc chn.  ghi
mt d liu, chn bit nh bng cách cung cp mc 1 ti WL làm các transistor M3 và M4 dn,
cung cp mc 1 ti đng BL (BL\ = 0) làm M2 tt, M1 dn, bit nh s lu tr d liu 1.
Ngoài tín hiu chn mch CE cho phép xut d liu OE nh b nh EPROM, các b nh
SRAM còn có thêm tín hiu cho phép ghi WE, ch ghi tín hiu này tích cc d liu mi đc lu
tr vào b nh.
Cu to mt bit nh DRAM mt transistor mô t trên hình 1.10.  ghi d liu ti bit nh
này cn cung cp mc 1 ti WWL và cung cp d liu ghi ti BL1, transistor BL1 s dn, đin áp

s đc np cho t Cs. Khi đc cp mc 1 ti RWL làm M3 dn, khi Cs gi mc 1 M2 dn ngõ ra
BL2 tng ng vi mc 0 và mch khuch đi đc s cp ra ngoài mc 1.

M
3
R
L
R
L
V
D
WL
Q Q
M
1
M
2
M
4
BL BL
WWL
BL
1
M
1
X
M
3
M
2

C
S
BL
2
RWL

V

D
D
V
D
D
2
V
T
D
V
V
D
D
2
V

T
B
L 2
B
L 1
X

R
WL
WWL


Hình 1.10: Cu to bit nh DRAM.

1.2.3.
T chc b nh
Nh đã mô t  trên, b nh lu tr các d liu theo các đa ch duy nht, trên hình 1.11
7
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
tng ng vi trng thái 1 đng Si = 0 mt ô nh s đc chn.  gim bt s tín hiu chn
phi cung cp có th dùng b gii mã đa ch, nu cn N tín hiu cho vic chn N ô nh ch cn
cung cp K đng đa ch (K = logN).
Word 0
Word 1
Word 2
Word
N
-2
Word
N
-1
T bào
N
h
M


bits
M

bits
S
0
S
1
S
2
S
N
-2
A
0
A
1
A
K
-1
K
=
log
2
N
S
N
-1
Word 0
Word 1

Word 2
Word
N
-2
Word
N
-1
T bào
nh
S
0
Vào - Ra
(
M

bits)
Vào - Ra
(
M

bits)

Hình 1.11: T chc lu tr các bit trong b nh.
Vi cu trúc trên vi dung lng nh ln, ma trn nh s mt đi xng (nhiu hàng, ít
ct), đ ma trn nh đi xng có th s dng thêm b gii mã ct nh hình 1.12. Tng ng vi
mt trng thái ca các đa ch ct s chn đc mt nhóm ct duy nht cung cp d liu ra bên
ngoài.

Row Decoder
Bit line

2
L 2 K
Word line
A
K
A
K 11
A
L 21
A
0
M.2
K
A
K 21
Sense amplifiers / Drivers
Column decoder
Input-Output
(M bits)
Storage cel
l

Selects
word

Hình 1.12: T chc các khi chc nng trong b nh.
Khi CPU mun truy cp (đc ghi) d liu t b nh, trc ht nó phi cung cp đa ch đ
xác đnh ti v trí cn truy cp, sau đó cn cung cp tín hiu chn mch (CE) cho phép b nh
8
OPEN.PTIT.EDU.VN

Chng 1: Kin trúc ca h thng vi x lý
hot đng, tip theo trong ch đ đc CPU cn cung cp tín hiu OE và nhn d liu t BUS d
liu, trong ch đ ghi CPU cn cp d liu ti BUS d liu và tín hiu cho phép ghi WE.
Các đi lng đc trng cho b nh là dung lng và thi gian truy xut b nh
. Thi
gian tru
h có
A đn




Hình 1.13: Gii mã kt ni 4 b nh trong h thng vi x lý.
B nh s dn t là byte, các
IC nh
u, hình 1.13 s dng b gii
mã 2 ra
đa ch riêng bit vùng đa ch
cho tn
: 000000H 3FFFFH


y xut b nh là khon thi gian t lúc b nh nhn đc đa ch và các tín hiu điu
khin cho đn khi đa đc d liu ra tuyn d liu trong ch đ đc và lu xong d liu vào các
bit nh trong ch đ ghi. B nh có thi gian truy xut càng nh thì hot đng càng nhanh.
Dung lng b nh tu thuc vào s đng d liu và s đng đa ch ca nó. B n
g đa ch, D đng d liu s có dung lng 2
A
x D bit. B nh có dung lng càng ln thì
càng cha đc nhiu thông tin.
















g trong h thng vi x lý thng t chc theo đn v truy xu
đc kt ni sao cho truyn d liu vi CPU theo bi s ca byte. Trong thc t, b nh
bán dn đc sn xut theo dng các linh kin có dung lng hn ch (t vài KB cho đn c vài
chc MB). Trong h thng vi x lý thng có ít nht hai loi b nh (ROM và RAM), mt khác
trong trng hp dung lng các IC b nh không đ đáp ng dung lng b nh ca h thng
khi thit k, nhà thit k phi ghép nhiu IC nh li. Các IC nh s s dng chung các BUS d
liu và đa ch, vì vy ti mt thi đim truy xut h thng phi đc kt ni sao cho ch có mt
IC nh đc chn, công vic này đc gi là gii mã đa ch b nh.
Vic gii mã đa ch có th thc hin theo nhiu cách khác nha
4 đ kt ni 4 IC nh 256 KB thành dung lng nh 1 MB.
Theo s đ kt ni, mi IC nh trong mch s có mt vùng
g IC nh trong hình 1.13 nh sau:
256KB đu tiên
256KB th hai : 400000H 7FFFFH
256KB th ba : 800000H BFFFFH và

256KB th t : C00000H FFFFFH.
8088
Minimum
Mode
A
17
A
0
:
D 7
D 0
:
M
EM
R

M
EMW
A

18
256 KB
#3
A
1
7
A
0
:
D

7
D 0
:
R
D
WR
C
S
A
19
256 KB
#2
A
1
7
A
0
:
D 7
D
0
:
R
D
WR
C
S
256 KB
#1
A

1
7
A
0
:
D 7
D
0
:
R
D
WR
C
S
1
7
A
A
:
0
256 KB
#4
D 7
D
:
0
R
D
WR
C

S
I
1
O
3
I 0
O
2
O 1
O
0
9
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
Công vi  IC nh trong mt h thng vi xc xác đnh vùng đa ch cho t ng  lý đc gi là
lp bn
1.3. ÀO RA TRONG H THNG VI X LÝ
.3.1. Cu trúc và nguyên tc làm vic ca cng vào ra
hit b ngoi vi khác nhau, các thit
trên tt c các đng d liu vi
ng cng có các
it b
ó các tín hiu bt tay vi
it b
.3.2.
Mch ba trng thái và mch cài
bn nht thng đc s dng trong tt c các loi
Vi các cng ba trng thái, d liu s đc truyn qua nó khi tín hiu cho phép OC  trng
cng cài s gi nguyên trng thái logic  ngõ ra ca nó khi tín hiu
đ b nh.


V

1
Trong h thng vi x lý, thông thng s dng nhiu t
b ngoi vi này s dng đ giao tip vi ngi s dng, hoc là các thit b chp hành s điu
khin ca h thng vi x lý trong mt ng dng nào đó.  điu khin các thit b ngoi vi hot
đng, CPU cn truyn d liu vi chúng. CPU s dng chung mt BUS d liu đ truyn d liu
vi tt c các b nh và thit b ngoi vi. Các cng vào ra đóng vai trò là các cng ngn cách gia
các thit b ngoi vi và BUS d liu, các cng này ch m khi đc CPU cung cp đúng đa ch
ca nó, và các cng còn li có đa ch khác s không đc m.
CPU luôn s dng các lnh truyn đng thi nhiu bit
bên ngoài. Tuy nhiên các cng vào ra sau khi nhn d liu t CPU có th truyn đng thi tt c
các bit hoc có th truyn tng bit ti thit b. Các cng vào ra truyn đng thi tt c các bit đc
gi là các cng vào ra song song, các cng truyn tng bit là cng vào ra ni tip. Các cng vào ra
ni tip s có li đim là s lng dây dn truyn d liu s ít hn loi song song, và tránh đc
nhiu gia các đng truyn song song khi d liu đc truyn vi tc đ cao.
Ngoài ra có nhng loi thit b truyn nhn d liu di dng s 0, 1. Nh
th truyn nhn d liu di dng tín hiu thay đi liên tc theo thi gian, khi đó cn phi s
dng các ADC cho chiu nhn d liu và DAC cho chiu truyn d liu.
Các vào ra cng có th truyn d liu mt cách th đng, hoc c
th đ chc chn là thit b đã đc kt ni vi vào ra và d liu đc thit b truyn nhn vi
vào ra.

1
Mch ba trng thái là cu trúc s c
cng vào ra ca h thng vi x lý. Cu to ca cng ba trng thái đc mô t trên hình 1.14.




D
Q

G
Cng đm 3 trng thái
Cng cài
Hình 1.14: Các cng vào ra s c bn
OC





thái tích cc, vì vy tín hiu cho phép này thng đc cp t b gii mã đa ch, nh trên hình
1.15 cng đm 3 trng thái s m khi đa ch cung co t CPU là FFFFH = 1111 1111 1111
1111B. Khi tín hiu cho phép không tích cc, ngõ ra ca cng đm s  trng thái tr kháng cao,
ngõ vào s không nh hng ti ngõ ra, nh vy BUS d liu s đc ngn cách vi thit b ngoi
vi mà nó điu khin, lúc này CPU có th s BUS d liu đ liên lc vi mt thit b khác, tng
ng vi mt đa ch khác.
Khác vi cng đm,
10
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
cho phép ht tích cc (nó không chuyn qua trng thái tr kháng cao). Các cng cài s thích hp
vi các thit b ra cn gi nguyên logic điu khin sau tác đng ca lnh, ví d bóng đèn LED ni
vi cng đm s tt khi CPU thc hin xong lnh truyn d liu, vì CPU ngng cp đa ch làm
ngõ ra cng đm chuyn qua trng thái tr kháng cao. Nu s dng làm cng vào, ngõ ra cng cài
cn đc ni tip vi mt cng đm trc khi ni ti BUS d liu.

1.3.3. Các cng vào ra đn gin

ác mch tích hp ca các cng đm cài c bn, các mch vào
ào D ti
u
ó
c khái nim:
c hin đc tt c các chc nng ca các vi mch s khác
• p đ vi x lý thc hin đc mt chc
• t chui các lnh đc sp xp theo gii thut ca bài toán hay
• ot đng đc cn có kt ni phn cng đúng và chng trình phn
•  lý bao gm: CPU, b nh và vào ra. CPU thc hin các chng trình
• n,
Các cng vào ra đn gin là c
ra mt chiu c bn thông dng nht là các IC 74244 và 74373 vi cu to nh hình 1.15.
IC 74244 đc tích hp tám cng đm c bn, nó s truyn đng thi 8 bit s t các ngõ v
các ngõ ra Q khi OC tích cc mc 0. Vi mch cài mt chiu 74373 d liu vào các ngõ D s
đc gi  các ngõ ra Q ca các Flip – Flop, khi OC tích cc mc thp d liu s cung cp ti các
ngõ ra Q. Nh vy khi s dng làm ngõ vào, CPU cn cung cp đa ch đ tích cc OC, còn khi s
dng làm cng ra có th tác đng tích cc ti chân G, còn OC có th luôn cung cp mc 0.
IC74374 khác 74373  ch tín hiu cho phép G s tác đng cnh lên (thay vì tác đng mc cao).
Mt s thit b vào ra cn truyn d liu theo c hai chiu vi CPU, IC đm cài hai chi
74245 thng đc s dng cho các ng dng này. Vi IC 74245 mi đng d liu s bao gm
hai cng đm ni ngc chiu, tín hiu DIR s quyt đnh chiu truyn d liu nh mô t trên
hình 1.16.













T m tt ni dung hc tp:
Trong chng này cn nh cá
• Vi x lý là mt vi mch s có th th
bng cách thc hin tun t các chc nng s c bn.
Mt lnh ca b vi x lý là chui các bit 0, 1 cung c
nng s c bn ca nó.
Mt chng trình vi x lý là m
công vic cn thc hin.
 có h thng vi x lý h
mm hot đng đúng.
Phn cng h thng v x
đ điu khin hot đng ca toàn b h thng. B nh là ni lu tr các chng trình, là ni
khai báo các hng và bin trong chng trình. Vào ra đ giao tip vi các thit b bên ngoài.
Các khi trong h thng vi x lý đc kt ni vi nhau bng mt lot các đng dây dn đi
mi đng này đc gi là mt tín hiu ca h thng, các tín hiu đc chia thành 03 nhóm
D0
D7
Q0
74LS244
Q7
OC
.
.
.
.

.
.
.
.
.

G
D
Q
.
.
.
74LS373
D0
Q0
OC
Hình 1.15: Các cng vào ra mt chiu c bn.
G
11
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
chính gi là ba BUS: BUS đa ch, BUS d liu và BUS điu khin. BUS d liu đ truyn d
liu gia các khi. CPU s dng mt BUS d liu đ truyn d liu vi mi ni nên nó cn
BUS đa ch đ xác đnh v trí nào s truyn d liu vi nó. BUS điu khin s xác đnh các
ch đ làm vic khác nhau ca h thng.
B nh bán dn có ba ch đ làm vic ch
• ính là đc, ghi và không chn. Khi không chn các
• hi bng các logic điu khin thông thng ca vi x lý, b nh
• in mch đin sao cho ng vi mt đa ch mà CPU cung cp
•  truyn d liu  ngõ vào ti ngõ ra khi có tín hiu chn mch. Khi không

• b đm cài đc s dng làm các cng vào ra đ cho phép thit b truyn d liu vi CPU
• ch sao cho ng vi mt đa ch mà

ÀI TP:
ài 1:
Cho bit đa ch bt đu ca mt vùng nh Ram là 00000H và dung lng ca vùng nh
Bài 2 t, v bn đ b nh
Bài 3: h sau:
BUS đa ch và d liu ca b nh  trng thái tr kháng cao. Khi mun đc b nh cn tác
đng tín hiu chn b nh, cung cp đa ch xác đnh ô nh s đc trong b nh, cung cp tín
hiu yêu cu đc và b nh s cung cp d liu ra BUS d liu. Khi mun ghi b nh cng
cn cung cp tín hiu chn b nh, cung cp đa ch ô nh s ghi, cung cp d liu cn ghi và
cung cp tín hiu yêu cu ghi.
Các b nh RAM có th đc g
ROM ch có th đc bng các logic điu khin thông thng, mun ghi d liu vào nó cn có
các ch đ điu khin đc bit.
Gii mã đa ch b nh là thc h
ch có mt vi mch nh duy nht đc cung cp tín hiu chn mch, các vi mch nh còn li
s không đc chn và có các BUS  trng thái tr kháng cao và chúng s không kt ni v
đin vi h thng.
Các b đm và cài s
đc chn các b đm s có ngõ ra tr kháng cao, còn các b cài s gi li trng thái ra trc
đó.
Các
ch khi CPU cp đúng đa ch đ chn nó, trong khi các cng không đúng đa ch s không
đc chn và chúng không kt ni v mt đin vi CPU.
Tng t nh gii mã b nh, gii mã vào ra s là mt m
CPU cung cp ch có mt cng vào ra duy nht đc chn.
B


B
này là 641KB. Hãy xác đnh đa ch vt lý cui cùng ca vùng nh này.
: Thit k vùng nh RAM 1MB x 8bit t các b nh RAM 256K x 4 bi
và cho bit vùng đa ch mà các b nh đc chn.
Thc hin mch gii mã đa ch cho các bn đ b n

EPROM
(
256KB
)

EPROM
(
256KB
)

SRAM
(
256KB
)

SRAM
(
256KB
)

EPROM
(
256KB
)


SRAM (512KB)
EPROM
(
256KB
)
EPROM
(
256KB
)

SRAM (512KB)
EPROM
(
256KB
)
SRAM
(
128KB
)

SRAM
(
128KB
)

SRAM (256KB)

EPROM (512KB)
SRAM

(
128KB
)
SRAM (256KB)
SRAM
(
128KB
)

EPROM (512KB)
SRAM (256KB)
SRAM (256KB)
SRAM
(
128KB
)

EPROM
(
512KB
)












12
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý


Cho bit vùng đa ch ca tng b nh trong các bn đ (các b nh đu có 8 bit d liu).
Bài 4: T
0H.
ai cng vào s dng

hc hin cng ra điu khin tám LED đn có đa ch là F000H.
Bài 5: Thc hin cng vào nhn d liu t 8 phím nhn có đa ch là F00
Bài 6: Thc hin mch gii mã đa ch vào ra trong h thng có 2 cng ra và h
các b đm cài 8 bit.





13
OPEN.PTIT.EDU.VN
Chng 2: Nguyên tc làm vic ca b vi x lý h Intel 80x86
CHNG 2: NGUYÊN TC LÀM VIC CA B VI X LÝ
H INTEL 80X86
Gii thiu:
Ni dung chng này trc ht gii thiu v cu trúc ca b vi x lý 80286 và chc nng các
khi mch ca nó nh: khi giao tip BUS (BU) tác đng mi tín hiu đ giao tip vi th gii
bên ngoài., khi gii mã lnh (IU) thc hin chc nng to ra các tín hiu điu khin các khi

mch trong CPU hot đng đ thc hin lnh, khi EU thc hin các lnh, khi AU to ra đa ch
đ giao tip vi b nh và vào ra.
 có th thc hin đc các chng trình hp ng vit cho vi x lý h Intel (chng 3), sinh
viên cn nh các thanh ghi ca 80286, và các chc nng mà chúng đm nhn bao gm: các thanh
ghi đa nng, các thanh ghi đon, thanh ghi c trng thái và các thanh ghi đc bit. c bit chú ý
ti s tác đng ca các c trng thái trong thanh ghi c.
 hiu đc nguyên lý hot đng ca h thng vi x lý cn đc bit quan tâm ti các chu k
máy ca CPU. Trong bn chu k máy: đc, ghi b nh và đc ghi vào ra cn chú ý ti thi đim
tác đng ca các tín hiu trong h thng, và chc nng ca chúng s dng làm gì trong h thng.
Ngoài ra cng cn chú ý ti trng thái ca các c các thanh ghi ca 80286 sau khi khi đng
và c ch ngt ca CPU. C ch ngt đc s dng rt ph bin trong các h thng vi x lý trong
các ng dng thc t, đc bit là đi vi các h thng điu khin hot đông ca máy móc thit b.
Các c ch qun lý b nh o rt quan trng khi lp trình h thng chy trong các môi trng
đa nhim, tuy nhiên đi vi các chc nng ng dng nh s cha cn chú ý ti các c ch này.
Phn cui cùng ca chng gii thiu v các b vi x lý th h tip theo ca 80286 vi các
chc nng tiên tin nh: b nh đm, c ch pipeline, c ch siêu phân lung …

2.1. CU TRÚC CA B VI X LÝ 80286 INTEL























Hình 2.1: S đ khi b vi x lý 80286






EXECUTION UNIT (EU)
ADDRESS UNIT (AU)
INSTRUCTION
UNIT (IU)
INSTRUCTION
DECODER
3 DECODER
INSTRUCTION
QUEUE
ADDRESS
LATCH AND DRIVER
PREFETCH
PROCESSOR

EXTENTION
INTERFACE



BUS CONTROL
DATA
TRANSCEIVERS
6 BYTE
PREFETCH
QUEUE

BUS
UNIT (BU)
PHYSICAL
ADDRESS
ADDER
SEGMENT
BASE
SEGMENT
SIZE
SEGMENT
LIMIT
CHECK
OFFSET
ADDER
REGISTER
LIMIT
CHECK
ALU


CONTROL

14
OPEN.PTIT.EDU.VN
Chng 2: Nguyên tc làm vic ca b vi x lý h Intel 80x86
2.1.1. S đ khi ca vi x lý 80286 Intel
B vi x lý 80286 đc cu to t 4 khi chc nng có th làm vic song song:
- Khi giao tip BUS : BU (Bus Unit).
- Khi gii mã lnh : IU (Instruction Unit)
- Khi thc hin lnh : EU (Execution Unit)
- Khi to đa ch : AU (Address Unit)

2.1.2. Khi to đa ch (AU)
AU đm bo vic qun lý, bo v b nh, tu theo ch đ đa ch các chng trình s s dng
các loi đa ch logic khác nhau, AU có nhim v chuyn các đa ch logic qun lý trong chng
trình phn mm thành đa ch vt lý cung cp ti BU đ giao tip vi bên ngoài. a ch vt lý là
đa ch cung cp trc tip cho b nh và vào ra, còn đa ch logic là các giá tr đc chng trình
qun lý s dng đ to ra đa ch vt lý, đó chính là các đa ch đon (segment) và đa ch đ di
(offset).

2.1.3. Khi giao tip BUS (BU)
BU cung cp các tín hiu đa ch, d liu và điu khin đ truy cp các b nh và vào ra. Khi
này cng cho phép giao tip vi b đng x lý hoc các b vi x lý khác.
Chc nng quan trong nht ca BU là t đng kích hot quá trình ly lnh t b nh bng b
tin truy cp lnh (Prefetch). BU còn có chc nng cho phép quá trình ly lnh t b nh thc
hin song song vi các quá trình khác nh hàng đi lnh 6 byte (Prefetch queue).
Các đa ch mà AU to ra cung cp ti các b cài (Address Latch) và s đc đnh thi cung
cp ra bên ngoài ti các thi đim thích hp. D liu truyn vi CPU s đc chuyn qua các
cng đm hai chiu (Data Transceivers).


2.1.4. Khi gii mã lnh (IU)
Lnh đc BU ly vào hàng đi, trong khi IU ly lnh đã ly trc đó gii mã và chuyn ti
hàng đi lnh đã gii mã (Decoded Istruction queue) đ EU thc hin.
Vi chc nng gii mã lnh, các lnh ngoài b nh có th mã hoá ngn nht có th, IU s to
ra các tín hiu điu khin cn thit t các mã lnh này. Bng cách s dng h gii mã lnh, dung
lng nh ca h thng s yu cu ít hn, thi gian ly lnh s đc gim ngn.

2.1.5. Khi thc hin lnh (EU)
EU thc hin các lnh x lý d liu mà IU đã gii mã, nó giao tip d liu vi bên ngoài
thông qua BU.
Các khi chc nng ca EU bao gm: B điu khin (Control) thc hin vic điu khin vic
thc hin các lnh trong EU. ALU là khi thc hin các phép toán s hc logic, cu trúc ca ALU
thông thng có hai ngõ vào nhn hai toán hng và mt ngõ ra cung cp kt qu.
Các thanh ghi s dng làm ni lu tr d liu s dng trong các phép tính và các giá tr đa
ch cho phép EU ly các toán hng t bên ngoài.

2.2. CÁC THANH GHI CA B VI X LÝ 80286

Các thanh ghi là mt b phn rt quan trng trong mt CPU. Chúng là mt s ít các ô nh
có tc đ truy xut rt nhanh, cách đánh đa ch đn gin đ CPU có th truy xut d liu mt

15
OPEN.PTIT.EDU.VN
Chng 2: Nguyên tc làm vic ca b vi x lý h Intel 80x86
cách nhanh chóng. CPU có càng nhiu thanh ghi, thì tc đ thc hin mt chng trình càng cao,
do gim đc thi gian truy xut các hng, bin ngoài b nh. Gim đc s byte lnh do không
phi cung cp đa ch các d liu toán hng. Nhng tt nhiên khi s lng thanh ghi quá ln thì
vic truy cp chúng cng tr nên phc tp nh đi vi các ô nh.
 d dàng truy xut, các thanh ghi đc chia ra các nhóm vi các chc nng riêng bit nào

đó. Các hãng sn xut khác nhau đa ra các tên gi các thanh ghi khác nhau. 80286 có các nhóm
thanh ghi: Các thanh ghi đa nng, các thanh ghi qun lý mng, các thanh ghi điu khin và trng
thái và các thanh ghi đc bit.

2.2.1. Các thanh ghi đa nng
Các thanh ghi đa nng có th s dng cho nhiu chc nng khác nhau. Thông thng các
thanh ghi đa nng trc ht đm nhim chc nng cha d liu, ngoài ra các thanh ghi này có th
s dng cho các chc nng khác nh: cha đa ch, làm b đm,
Intel 80286 có tám thanh ghi đa nng 16 bit, các thanh ghi này đu có th s dng làm thanh
ghi cha d liu 16 bit nh mô t trên hình 2.2.
Các thanh ghi AX, BX, CX và DX có th chia thành hai phn 8 bit riêng bit s dng cho
vic lu tr các d liu 8 bit: AH, AL, BH, BL, CH, CL, DH, DL.
Thanh ghi AX (Accumulator) còn mang chc nng thanh ghi cha trong các lnh nhân và
chia, trong các lnh này thanh ghi AX gi mt toán hng và kt qu cui cùng. Ví d trong lnh
MUL BX d liu trong thanh ghi AX s nhân vi d liu trong thanh ghi BX và kt qu cha
trong thanh ghi DX và AX.
Thanh ghi BX (base) trc ht có th s dng làm thanh ghi gi đa ch b nh, ví d trong
lnh MOV DH,[BX] d liu ti ô nh có đa ch gi trong BX s chuyn vào thanh ghi DH. BX
còn gi chc nng thanh ghi con tr c s, khi s dng trong chc nng này thanh ghi BX gi giá
tr đa ch c s, đa ch truy cp b nh s bng giá tr cha trong BX cng vi mt giá tr ch th
trong lnh. Ví d trong lnh MOV DL,[BX+03] d liu trong b nh t đa ch [BX+03] đc di
chuyn vào trong thanh ghi DL.
Thanh ghi BX còn s dng trong ch đ đa ch tng đi ch s
c s, trong lnh MOV CH,[BX+DI+08] d liu ti ô nh có đa ch BX+DI+08 đc ly vào
thanh ghi CH.



Hình 2.2: Các thanh ghi đa nng ca b vi x lý Intel 80286.


Thanh ghi CX (Counter) đc s dng làm b đm s ln lp trong các cu trúc lp. Ví d
lnh LOOP L1 s gim CX đi 1, nu CX ≠ 0 điu khin chng trình s chuyn ti nhãn L1.

16
OPEN.PTIT.EDU.VN
Chng 2: Nguyên tc làm vic ca b vi x lý h Intel 80x86
Thanh ghi DX (data) là thanh ghi cha d liu cho các lnh nhân chia 16 bit, nh trong lnh
MUL BX thanh ghi DX cha 16 phn cao ca kt qu lnh nhân. Ngoài ra thanh ghi DX còn là
thanh ghi duy nht lu tr đa ch cng trong các lnh vào ra. Ví d trong lnh IN CL,[DX] d
liu ti cng vào ra có đa ch cha trong DX s đc chuyn vào thanh ghi CL.
Thanh ghi ch s ngun SI (Source Index) và thanh ghi ch s đích DI (Destination Index), s
dng cho các lnh x lý chui d liu. Ví d lnh MOVSB d liu trong b nh ti đa ch gi
trong SI s chuyn ti đa ch gi trong DI, sau đó SI và DI s t đng đc tng hoc gim chun
b cho ln chuyn k tip. SI và DI còn s dng làm thanh ghi đa ch và đa ch c s (ging nh
BX) và làm thanh ghi ch s đa ch cng thêm trong ch đ tng đi ch s. Ví d lnh MOV
DL,[BP+SI+03] ly d liu ti ô nh có đa ch BP+SI+03 vào thanh ghi DL.
Thanh ghi con tr c s BP (Base Pointer) gi vai trò làm thanh ghi đa ch trong các ch đ
truy cp b nh ging nh thanh ghi BX.


















Thanh ghi con tr ngn xp SP (Stack Pointer) đóng vai trò gi đa ch đnh ngn xp trong
các lnh truy cp ti ngn xp nh: lnh np ngn xp PUSH, lnh ly d liu khi ngn xp POP,
lnh gi chng trình con CALL
Ngn xp là vùng nh đc truy cp theo nguyên tc vào trc ra sau FILO (Fist IN Last Out)
nh vào c ch t đng thay đi ca SP nh mô t trên hình 2.3. Khi khi đng SP gi đa ch ca
đnh ngn xp, tr ti giá tr cui cùng cha trong ngn xp (LastValue). Sau mi lnh PUSH giá
tr d liu s đc np vào đnh ngn xp và SP t đng gim đi đ gi đa ch giá tr mi này.
Trên hình 2.3 sau 3 lnh PUSH thanh ghi SP s gi đa ch ô nh cha giá tr ca thanh ghi CX.

lastvalue
????
????
????
????
????
????
????
????
đ

a ch cao
đ

a ch th
p


← SP
trc các l

nh PUSH
lastvalue
ax
bx
cx
????
????
????
????
????
sau các l

nh PUSH
PUSH AX
PUSH BX
PUSH CX


SP
đ

a ch cao
đ

a ch th
p


Hình 2.3: Thao tác np ngn xp và s thay đi ca thanh ghi SP
2.2.2. Các thanh qun lý đon
Các thanh ghi qun lý đon ca Intel 80286 chia thành hai phn: phn cha b chn đon và
phn cha b mô t đon. Phn cha b chn đon (còn gi là thanh ghi chn đon) có th np
bng chng trình nên thng đc gi là phn h. Phn cha b mô t đon (còn gi là các
thanh ghi mô t đon) đc CPU np t đng, không th truy cp bng chng trình nên thng
đc gi là phn kín. Trong ch đ bo v (Protect Mode) kích thc ca mt đon thay đi t 1
đn 5 GB, còn trong ch đ thc kích thc cc đi ca mt đon là 64KB. Ti mt thi đim s
có 4 đon nh xác đnh bi 4 thanh ghi chn đon 16 bit CS, SS, DS và ES trong đó:

17
OPEN.PTIT.EDU.VN
Chng 2: Nguyên tc làm vic ca b vi x lý h Intel 80x86
+ Thanh ghi đon mã lnh (CS - Code Segment) cha đa ch đon mã lnh ca chng trình
hin hành.
+ Thanh ghi đon ngn xp (SS - Stack Segment) cha đa ch đon vùng nh ngn xp.
+ Các thanh ghi đon d liu (DS - Data Segment), đon m rng (ES - Extra Segment) cha
đa ch ca các đon d liu s dng trong chng trình.
Trong ch đ đa ch thc CPU to ra đa ch vt lý truy cp b nh bng các đa ch logic là
đa ch đon (segment) và đa ch đ di (offset).
Trong đó: đa ch vt lý 20 bit = đa ch đon 16 bit x 10H + đa ch đ di 16 bit.

2.2.3. Thanh ghi c trng thái
Thanh ghi c còn đc gi là thanh ghi mã trng thái CCR (Condition Code Register) bao
gm các bit đc lp. Mi bit ch có hai trng thái 0 hoc 1 đc gi là các c. Các c rt ít khi
tác đng ln nhau, chúng ch tác đng mt cách đc lp tùy theo trng thái ca các phép tính mà
ALU thc hin. Trng thái các c là c s đ CPU thc hin các quyt đnh, nu tha điu kin
chng trình thc hin theo hng này, còn ngc li s theo mt hng khác, to ra s r nhánh
cho các chng trình phù hp vi bài toán thc t. Ngoài ra còn có các c s dng cho vic điu

khin các ch đ hot đng khác nhau ca CPU, các c này thông thng đc lp xoá bng các
lnh riêng. Thanh ghi c ca 80286 bao gm 16 bit vi v trí các bit nh mô t trên hình 2.5.







* * P A * Z S T I C D O PL * IO NT
D15 D0
Hình 2.5: Cu to thanh ghi c.
Các c trng thái: Các c trng thái tác đng theo trng thái ca kt qu các phép tính mà CPU
thc hin, các CPU thông thng có 6 c trng thái sau:
C nh CF (Carry Flag)
C nh đc s dng làm bit d tr khi kt qu các phép tính mà ALU thc hin vt ra
ngoài gii hn lu tr cho phép ca thanh cha. Ví d khi s dng các thanh ghi 8 bit đ cng
hai s 8 bit, kt qu có th là 9 bit và c C s gi bit th 9. Tng t khi cng hai s 16 bit c C
s gi bit th 17 ca kt qu.
C nh cng đc thit lp mc 1 khi ALU thc hin phép tr, gim hoc so sánh có kt qu
âm. Tc là c CF =1 khi s b tr nh hn s tr.
Ngoài ra c nh còn đc s dng nh bit thêm trong các lnh quay dch, ví d khi dch trái bit
 MSB s b rt ra ngoài, c C s gi ly bit đó.
C chn l PF (Parity Flag)
C chn l đc s dng thông báo s các bit 1 trong kt qu ca phép tính logic là chn hay
l, khi PF = 1 s bit 1 trong kt qu là mt s chn. C chn l thng đc s dng trong các
chng trình truyn các d liu ni tip, trng thái ca c có th đc phát ra đ bên thu có th
kim tra xem d liu nhn đc đúng hay sai. Chú ý là c chn l không tác đng khi ALU thc
hin các phép tính s hc.
C du SF ( Sign Flag)

Trong h thng vi x lý có hai cách biu din mt s: Cách th nht nó dùng tt c các bit
ca mt thanh ghi đ biu din mt s dng. Ví d mt thanh ghi 8 bit có th biu din các s
thp phân dng t 1 ti 255. Cách th hai CPU s dng bit trng s cao nht đ làm bit du. Ví

18
OPEN.PTIT.EDU.VN
Chng 2: Nguyên tc làm vic ca b vi x lý h Intel 80x86
d nh thanh ghi 8 bit thì bit D7 s là bit du. Khi D7  mc 0 thì các bit D0 D6 gi mt s nh
phân dng nm trong khong 0 ti 127. Khi D7=1 thì thanh ghi s gi s nh phân âm trong
khong –128 ti -1
T hp nh phân t 0000 0000 0111 1111 biu din các s t 0 127 t hp tip theo 1000
0000 trong s có du đc xem nh là -128 và tip theo 1000 0001 = -127. Khi tip tc đm lên
ti t hp 1111 1111 = -1.
C du S s báo khi du thay đi, c du =0 khi kt qu phép tính trong b cha là s dng
(bit D7=0). Nu bit D7=1 kt qu là mt s âm 7 bit thì SF=1. Da vào c này mà các chng
trình này s có cách tính thích hp vi các s có du.
C tràn OF (Overflow Flag)
C tràn OF đc dùng trong các phép tính s hc có du, nó ch th kt qu là mt s dng
ln hn hoc là mt s dng nh hn kh nng cha ca thanh ghi cha kt qu. Ví d khi cng
hai s dng trong hai thanh ghi 8 bit, CFs đc thit lp mc 1 khi có s tràn bit 1 t D6 sang
D7, tc là khi du ca s 7 bit thay đi t (+) sang (-) mc dù kt qu phi là mt s dng, nh
vy kt qu này cn phi đc bin din bng mt s 9 bit. C OF luôn đc thit lp khi có tràn,
vì vy cn phi kim tra nó tu theo trng hp só biu din là có du hay không có du, đ nó
không nh hng gì đn chng trình. C tràn s b xóa khi D7 tr v mc 0.
C ZERO ZF (Zero Flag)
Khi ALU thc hin các phép tính có kt qu trong thanh ghi cha bng 0, lúc đó ZF s đc
thit lp lên mc 1. Còn ngc li ZF=0. Thông thng ZF đ thông báo trng thái so sánh bng,
kt qu ca phép tr = 0 , các phép logic = 0. Khi thc hin các phép cng, mc dù kt qu có d
ra bit th 9 nhng nu thanh cha có giá tr 0 thì ZF vn = 1. Ví d cng FFH+01H kt qu là
100H thì s 1  c CF còn thanh cha có giá tr 00 do đó ZF =1.

C Z đc bit tin li cho các vòng lp s dng b đm xung. Vòng lp có th gim mt
thanh ghi nào đó, cho đn khi nó tr v 0 thì ngng. Vi các công dng nh trên ZF cùng vi CF
đc s dng rt nhiu trong các chng trình.
C nh ph AF (Auxiliary Carry Flag )
Không ging nh CF, đóng vai trò bit th 9 ca thanh cha, c ging c tràn nhiu hn, c
AF s đc thit lp mc 1 khi có s tràn bit 1 t D3 qua D4 s dng cho các phép tính BCD.
Tám bit ca b cha bao gm 2 nibble riêng bit, các bit 7-4 gi là nibble trng s ln MS(Most
Significant) và 3-0 là nibble trong s nh LS(Least Significant). Mi nibble là mã s thp phân
hoc HEXA đn. Khi thc hin các phép tính vi s BCD (tc s thp phân) cn phi ghi nhn
s nh ca 4 bit thp trong đn v 8 bit. Ta gi s nh này là s na nh.
Các c điu khin: Các c điu khin s dng đ xác đnh các ch đ hot đng khác nhau ca
CPU, Intel 80286 có các c điu khin sau:
C đnh hng DF (Direction Flag)
C này đc s dng đnh hng cho các lnh x lý chui d liu. Ví d nh di chuyn chui
t vùng nh này sang vùng nh khác, so sánh chui…. Khi thc hin CPU ln lt x lý tng
byte 1 trong chui.  có đc các thao tác này CPU s dng các thanh ghi đa ch SI và DI và
sau mi ln x lý 1 byte nó t đng tng hoc gim các thanh ghi này. Vic tng hay gim SI và
DI cho phép x lý chui đc t di lên trên hay t trên xung di. Khi DF=1 các lnh x lý
chui s thc hin t đa ch cao đn đa ch thp, còn mc đnh DF = 0.
Trong mt s CPU các lnh x lý chui tng và gim đa ch khác nhau, ngha là cùng là di
chuyn chui nhng có mt lnh thc hin theo chiu tng đa ch, và mt lnh thc hin theo
chiu gim đa ch. Các CPU nh th s không có c đnh hng.

19
OPEN.PTIT.EDU.VN
Chng 2: Nguyên tc làm vic ca b vi x lý h Intel 80x86
C đnh hng có th thit lp bng lnh STD và xoá bng lnh CLD hoc x lý thông qua
ngn xp bng cách ct thanh ghi c vào ngn xp, x lý bit DF trong ngn xp sau đó lt tr li
thanh ghi c.
C ngt IF : (Interrupt Flag)

C ngt đc thit lp =1 bng lnh STI (Set Interrupt ) và xóa bng lnh CLI(Clear
Interrupt). Khi c ngt=1 cho phép CPU ghi nhn tín hiu yêu cu ngt t ngõ vào INTR, và thc
hin chng trình ngt. Khi c ngt =0, mc dù có tín hiu yêu cu, chng trình ngt s không
đc thc hin. Vi các yêu cu ngt không che NMI (Non-Mask able Interrupt) c ngt không
có ý ngha.
C by TF: (Trap Flag)
C by ch có th thay đi giá tr thông qua ngn xp, khi c by bng 1, CPU hot đng 
ch đ chy tng bc đ g ri sa sai chng trình. C th là khi CPU thc hin xong mt lnh
nó chuyn qua chng trình con giám sát (Monitor), TF đc t đng ct vào ngn xp và TF
đc xoá v 0, các lnh ca chng trình con giám sát s đc thc hin. Chng trình con giám
sát đc thc hin bi ngi s dng đ kim tra li kt qu ca lnh va thc hin  các ô nh,
các thanh ghi, các c. Khi kt thúc chng trình con giám sát, thanh ghi c đc phc hi, TF li
bng 1, điu khin đc quay v lnh tip theo ca chng trình chính. Và sau khi thc hin xong
lnh này, chng trình con giám sát li tip tc đc thc hin.
C nhim v lng nhau NT (Nested Tast)
NT cho bit lnh đang thc hin tin trin trong cùng mt nhim v hay s gây ra vic chuyn
nhim v. NT ch đc dùng trong ch đ bo v ca Intel 80286.
C ch th mc đc quyn vào ra (IOPL)
Hai bit này ch th mc đc quyn thp nht mà tác nhim đang thc hin cn có đ đc phép
thc hin các lnh vào ra. Hai bit này cng ch đc s dng trong ch đ bo v.

2.2.4. Các thanh ghi đc bit
Thanh ghi con tr lnh: (IP - Instruction Pointer) S dng trong vic cung cp đa ch đ di
(offset) ca vùng nh mã lnh. Sau khi ly vào mt lnh BIU s đi giá tr trong IP đ tr ti mã
lnh s thc hin trong chu k k tip.  các lnh thông thng sau khi ly vào mt byte mã lnh
IP s t đng tng lên 1.  các lnh nhy giá tr ca IP s đc xóa đi đ np mt giá tr mi, giá
tr mi này đc cung cp trong lnh nhy. Trong các lnh gi chng trình con trc khi xóa giá
tr c đ np giá tr mi giá tr c ca IP đc ct vào đnh ngn xp, và khi có lnh quay v nó s
đc phc hi. Khi phc v ngt quá trình bin đi IP cng thc hin tng t nh khi xy ra
lnh gi chng trình con.

Thanh ghi trng thái máy: Thanh ghi MSW 16 bit, trong đó s dng 4 bit nh mô t trên hình
2.6, các bit còn li d phòng cho th h k tip:
- TS (Task Set): là bit chuyn nhim v, bit này bng 1 xy ra vic chuyn nhim v.
- EM (Emulate Processor Extention): Cho phép mô phng b đng x lý toán hc.
- MP (Monitor Coprocesor Extention): Cho bit h thng có b đng x lý toán hc đang
làm vic.
- PE (Protect Mode Enable): Cho phép ch đ bo v, khi bit này đc lp 80286 chuyn
qua hoc đng  ch đ bo v. Khi đã thit lp, ch khi RESET bit này mi đc xoá.




MP TS EM

PE
D15 D0
Hình 2.6: Cu to thanh ghi trng thái máy MSW.

20

×