Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 155

1/Chapter4

© DHBK 2005

Nội dung môn học


1. Giới thiệu chung về hệ vi xử lý
2. Bộ vi xử lý Intel 8088/8086
3. Lập trình hợp ngữ cho 8086
4. Tổ chức vào ra dữ liệu
5. Ngắt và xử lý ngắt
6. Truy cập bộ nhớ trực tiếp DMA
7. Các bộ vi xử lý trên thực tế
2/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• 4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
• 4.2 Ghép nối 8088 với bộ nhớ
• 4.3 Ghép nối 8086 với bộ nhớ
• 4.4 Ghép nối với thiết bị ngoại vi
3/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
4.1.1 Các tín hiệu của 8086
4.1.2 Phân kênh và việc đệm cho các bus
4.1.3 Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288
4.1.4 Biểu đồ thời gian của các lệnh ghi/đọc
4.2 Ghép nối 8088 với bộ nhớ
4.3 Ghép nối 8086 với bộ nhớ
4.4 Ghép nối với thiết bị ngoại vi
4/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• 4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
 4.1.1 Các tín hiệu của 8086
 Phân kênh và việc đệm cho các bus
 Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288
 Biểu đồ thời gian của các lệnh ghi/đọc
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
5/Chapter4
© DHBK 2005

4.1.1 Các chân tín hiệu của 8086


M/IO (S2) 16 đường
AD0-AD15 địa chỉ thấp/dữ liệu
DT/R(S1)
RD A16/S3
Tín hiệu điều
khiển hệ thống WR (LOCK)
A17/S4
DEN (S0) 4 đường
A18/S5 bus C/ địa chỉ cao
SS0
A19/S6
READY
BHE/S7
NMI 8086
INTR
Tín hiệu điều khiển HOLD(RQ/GT0)
CPU RESET
MN/MX HLDA(RQ/GT1) Tín hiệu điều
INTA(QS1) khiển bus
TEST
CLK ALE(QS0)
đồng hồ Vcc
và nguồn
GND
GND
6/Chapter4
© DHBK 2005

4.1.1 Các chân tín hiệu của 8086


• AD0-AD15:
 ALE =1: 16 chân địa chỉ cho bộ nhớ hoặc I/O
 ALE=0: 16 đường dữ liệu
• A19/S6-A16/S3
 4 bit địa chỉ cao S4 S3
 4 bit trạng thái: 0 0 ES
 S6 luôn bằng 1
0 1 SS
 S5: trạng thái của IF
 S4, S3: bit trạng thái về thanh ghi đoạn 1 0 CS or No
đang truy cập 1 1 DS

• INTR: interrupt request


 IF=1 và INTR=1 => xảy ra ngắt
• TEST
 nếu =0, CPU ở trạng thái đợi và thực hiện lệnh NOP
 =1, lệnh WAIT đợi đến khi TEST=0
7/Chapter4
© DHBK 2005

4.1.1 Các chân tín hiệu của 8086


• NMI (Non-maskable interrupt)
 NMI=1 => thực hiện INT 2
• RESET
 1: khởi động lại hệ thống và thực hiện lệnh tại ô nhớ FFFF0H
• MN/MX
 1: chế độ min
 0: chế độ max
• BHE/S7:
 0: cho phép truy cập byte cao dữ liệu
 Trạng thái S7 luôn bằng 1
• RD
 0: CPU đọc dữ liệu từ bộ nhớ hoặc thiết bị ngoại vi
• Các chân ở chế độ min
 M/IO
 1: truy cập bộ nhớ
 0: truy cập thiết bị ngoại vi I/O
 WR
 0: dữ liệu hợp lệ tại bus dữ liệu để đưa ra bộ nhớ hoặc thiết bị ngoại vi
8/Chapter4
© DHBK 2005

4.1.1 Các chân tín hiệu của 8086


• Các chân ở chế độ min
 INTA: interrupt acknowledge
 0: khi INTR=1 và IF=1
 ALE: address latch enable
 DT/R: data transmit/receive
 1: bus dữ liệu đang truyền dữ liệu đi
 0: bus dữ liệu đang nhận dữ liệu
 DEN: Data enable
 0: kích hoạt đệm dữ liệu ngoài
 HOLD
 1: CPU tạm dừng hoạt động để nhường quyền điều khiển cho DMA, các bus
được đặt ở trạng thái trở kháng cao
 HLDA (Hold Acknowledge)
 khi HOLD=1, HLDA=1
9/Chapter4
© DHBK 2005

4.1.1 Các chân tín hiệu của 8086


• Các chân ở chế độ Max
 S2, S1, S0
 ghép nối với điều khiển bus 8288

S2 S1 S0 chu kỳ điều khiển của bus


0 0 0 chấp nhận yêu cầu ngắt
0 0 1 đọc thiết bị ngoại vi
0 1 0 Ghi thiết bị ngoại vi
0 1 1 Dừng
1 0 0 đọc mã lệnh
1 0 1 đọc bộ nhớ
1 1 0 ghi bộ nhớ
1 1 1 bus rỗi
10/Chapter4
© DHBK 2005

4.1.1 Các chân tín hiệu của 8086


• Các chân ở chế độ Max
 RQ/GT0 và RQ/GT1: Request/Grant
 Tín hiệu yêu cầu dùng bus của các bộ vi xử lý khác/chấp nhận treo bus của CPU
 GT0 có mức ưu tiên cao hơn GT1
 LOCK
 0: cấm các bộ vi xử lý khác dùng bus
 QS0 và QS1:
 trạng thái của hàng đợi lệnh

QS1 QS0 Trạng thái hàng đợi lệnh


0 0 không hoạt động
0 1 đọc byte mã lệnh đầu tiên
1 0 hàng đợi rỗng
1 1 đọc byte tiếp theo
11/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• 4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
 Các tín hiệu của 8086
 4.1.2 Phân kênh và việc đệm cho các bus
 Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288
 Biểu đồ thời gian của các lệnh ghi/đọc
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
12/Chapter4
© DHBK 2005

4.1.2 Phân kênh và đệm cho các bus


• Vì sao phải phân kênh và khuyếch đại đệm:
 Các bus địa chỉ và dữ liệu dùng chung chân
 Nâng cao khả năng tải của bus
• Các vi mạch phân kênh và đệm:
 74LS373: phân kênh
 74LS245: đệm dữ liệu 2 chiều
 74LS244: đệm 3 trạng thái theo 1 chiều
13/Chapter4
© DHBK 2005

4.1.2 Phân kênh và đệm cho các bus


M/IO M/IO
RD ‘244 RD
WR WR
BHE/S7 BH
A19/S6 74LS373 A19

A16/S3 G A16
A15

A8
A7
8086
A0

ALE G G
74LS373 74LS373

AD15 D15

‘245
AD8 G DIR D8
AD7 D7
‘245

AD0 G DIR D0
DEN
DT/R
14/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
 Các tín hiệu của 8086
 Phân kênh và việc đệm cho các bus
 Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288
 Biểu đồ thời gian của các lệnh ghi/đọc
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
15/Chapter4
© DHBK 2005
Mạch tạo xung nhịp 8284 và mạch điều
khiển bus 8288
16/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
 Các tín hiệu của 8086
 Phân kênh và việc đệm cho các bus
 Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288
 Biểu đồ thời gian của các lệnh ghi/đọc
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
17/Chapter4
© DHBK 2005

4.1.4 Biểu đồ thời gian


18/Chapter4
© DHBK 2005

4.1.4 Biểu đồ thời gian


• Các ký hiệu trong biểu đồ thời gian:

Min max Units

CS 1 CS hold time 60 ns
1
2 CS to data valid 30 ns
Data
3 Data hold time 5 10 ns
2 3
19/Chapter4
© DHBK 2005

4.1.4 Biểu đồ thời gian


• Một chu kỳ ghi/đọc của CPU (chu kỳ bus): 4 chu kỳ xung
nhịp T
 5 MHz: 4*200 ns=800 ns
 T1:
 CPU đưa ra địa chỉ của bộ nhớ hoặc I/O, DT/R, M/IO
 T2:
 CPU đưa ra RD hoặc WR, DEN và dữ liệu trên D0-D15 nếu là lệnh ghi
 CPU đọc tín hiệu READY tại cuối chu kỳ của T2 để xử lý trong chu kỳ
tiếp theo khi nó làm việc với bộ nhớ hay I/O chậm
 T3:
 Nếu READY=0 => T3 trở thành chu kỳ đợi: Tw=n*T
 Tại cuối T3, CPU sẽ đọc dữ liệu nếu là lệnh đọc dữ liệu
 T4:
 Các tín hiệu trên bus được giải phóng
 WR chuyển từ 0 lên 1 kích hoạt quá trình ghi của bộ nhớ
20/Chapter4
© DHBK 2005

4.1.4 Biểu đồ thời gian


21/Chapter4
© DHBK 2005

4.1.4 Biểu đồ thời gian


22/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• 4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
• 4.2 Ghép nối 8088 với bộ nhớ
 4.2.1 Các loại bộ nhớ bán dẫn
 4.2.2 Giải mã địa chỉ cho bộ nhớ
 4.2.3 Ghép nối 8088 với bộ nhớ
• 4.3 Ghép nối 8086 với bộ nhớ
• 4.4 Ghép nối với thiết bị ngoại vi
23/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
• Ghép nối 8088 với bộ nhớ
 Các loại bộ nhớ bán dẫn
 Giải mã địa chỉ cho bộ nhớ
 Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
24/Chapter4
© DHBK 2005

4.2.1 Các loại bộ nhớ bán dẫn


• Bộ nhớ không bị mất dữ liệu (non-volatile)
 ROM (Read Only Memory)
 PROM (Programmable ROM)
 EPROM (Electrically programmable ROM)
 Flash
 EEPROM (Electrically Erasable Programmable ROM)
 FeRAM (Ferroelectric Random Access Memory)
 MRAM (Magnetoelectronic Random Access Memory)
• Bộ nhớ bị mất dữ liệu (volatile)
 SRAM (Static RAM)
 SBSRAM (Synchronous Burst RAM)
 DRAM (Dynamic RAM)
 FPDRAM (Fast Page mode Dynamic RAM)
 EDO DRAM (Extended Data Out Dynamic RAM)
 SDRAM (Synchronous Dynamic RAM)
 DDR-SDRAM (Double Data Rate SDRAM)
 RDRAM (Rambus Dynamic RAM)
25/Chapter4
© DHBK 2005

4.2.1 Các loại bộ nhớ bán dẫn

A0 D0
Tín hiệu A1 D1
Dữ liệu
địa chỉ A2 D2

Am Dn

WR WE
CS OE

WR: write
WE: Write enable
chọn chip RD OE: Output enable
CS: Chip Select
RD: read
26/Chapter4
© DHBK 2005

EPROM

Lớp cách ly Cực thả nổi


Gate
Source Cực cửa Drain
Cực nguồn Cực máng

n+ n+
p
27/Chapter4
© DHBK 2005

EPROM

Khi không có e tự do ở cực thả nổi

Vô cùng nhiều
electrons tự do
Vss
Vss Vss

Nhiều electron tự Nhiều electron


do tự do
n+ n+
p

D=Vss

G=Vss Rất ít electron tự do,


Không có đường dẫn điện
giữa cực máng và cực nguồn
S=Vss
28/Chapter4
© DHBK 2005

EPROM

Khi không có e tự do ở cực thả nổi

Vcc
Vss Vss

n+ n+
p

D=Vss
Các e tự do bị hút bởi điện áp
G=Vcc VGS, VGD, bị chặn bởi lớp
cách điện:
Kênh dẫn giữa cực nguồn và
S=Vss cực máng
29/Chapter4
© DHBK 2005

EPROM

Nhiều electron tự do bị nhốt tại cực thả nổi

Vcc
Vss Vss

n+ n+
p

D=Vss
Không có e tự do bị hút:
G=Vcc ĐIện áp dương bị chặn bởi điện tích
âm ở cực thả nổi:
Không có đường dẫn giữa nguồn và
máng
S=Vss
30/Chapter4
© DHBK 2005

EPROM: đọc
Vcc Vcc Vcc Vcc

Address

2-to-4 Decoder

2
MSB

2
LSB
2-to-4 Mux

Data
31/Chapter4
© DHBK 2005
Read(0x6)
EPROM: đọc
Vcc Vcc Vcc Vcc

0110

2-to-4 Decoder

01

10

2-to-4 Mux

0
32/Chapter4
© DHBK 2005
Read(0x8)
EPROM: đọc
Vcc Vcc Vcc Vcc

1000

2-to-4 Decoder

10

00

2-to-4 Mux

1
33/Chapter4
© DHBK 2005

EPROM: xóa UV
Vcc Vcc Vcc Vcc light

Address

2-to-4 Decoder

2
MSB

2
LSB
2-to-4 Mux

Data
34/Chapter4
© DHBK 2005
Write 1 at 0x2
EPROM: ghi 12V

Vcc Vcc Vcc Vcc

Address
0010

2-to-4 Decoder

2
00
MSB

2
10
LSB
2-to-4 Mux

Data
35/Chapter4
© DHBK 2005

EPROM
• Ghi vào EPROM
 Dùng mạch nạp với điện áp 12 V
 1 ms một bit
• Xoá EPROM
 20 phút dưới tia tử ngoại
 Số lần ghi 3 lần
• Đọc EPROM
 100 ns
• EPROM họ 27xxx
 2708 (1K*8), 2716 (2K*8), 2732 (4K*8), 2764 (8K*8)
 27128 (16K*8), 27256 (32K*8), 27512 (64K*8)
36/Chapter4
© DHBK 2005

EPROM
• Ví dụ: 2716 EPROM

U2

8
A0 O0
9 Address
7 10
6 A1 O1 11
5 A2 O2 13
4 A3 O3 14
3 A4 O4 15 CE
2 A5 O5 16
1 A6 O6 17
23 A7 O7
22 A8
19 A9
A10 Output
20
18 OE
120 100
CE
21
VPP
450

2716
37/Chapter4
© DHBK 2005

So sánh các loại ROM

Loại ROM Thời gian ghi Thời gian đọc số lần ghi Kích thước

ROM NA 35 ns 0 Mbits

PROM 1s/bit 35 ns 1 128 Kbits


EPROM 1ms/bit 45 ns 3 16 Mbits
Flash 1s/2 KB 35 ns 1 triệu GBits
EEPROM 10 ms/page 200 ns 10000 Mbit
FeRAM 60 ns 50 ns 1000 tỉ 32 Mbits
MRAM 5ns 5ns 1015 4 Mbits
38/Chapter4
© DHBK 2005

SRAM
Bộ giải mã: 1 hàng được đọc ra

Bộ dồn kênh chọn 1 trong các hàng này


0110

1bit 1bit 1bit 1bit


2-to-4 Decoder cell cell cell cell

01
1bit 1bit 1bit 1bit
cell cell cell cell

1bit 1bit 1bit 1bit


4 cell cell cell cell

1bit 1bit 1bit 1bit


cell cell cell cell
10

2-to-4 Mux
39/Chapter4
© DHBK 2005

SRAM bit cell


Bit line Bit line inverse

Word
Vcc

Họat động
như điện trở
40/Chapter4
© DHBK 2005

Lưu trữ SRAM bit cell


Bit line Bit line inverse

Word
Vcc

5V 0V

Current

Giả thiết
Trạng thái ổn định; lưu trữ bit ‘1’

Liên tục tiêu thụ điện


41/Chapter4
© DHBK 2005

Lưu trữ SRAM bit cell


Bit line Bit line inverse

Word
Vcc

0V 5V

Current

Giả thiết
Trạng thái ổn định; lưu trữ bit‘0’

Liên tục tiêu thụ điện


42/Chapter4
© DHBK 2005

Đọc bit ‘1’ SRAM bit cell


Bit line Bit line inverse

Word
Vcc

5V 0V

Current

1 0
43/Chapter4
© DHBK 2005

Đọc bit ‘0’ SRAM bit cell


Bit line Bit line inverse

Word
Vcc

0V 5V

Current

0 1
44/Chapter4
© DHBK 2005

Ghi ‘1’ SRAM bit cell


Vcc Vcc

Word
Word
Vcc

Bit line
Bit R
Bit line
line inverse
0V
5V 5V
0V

Current

Current
Current
W.D’ W.D
45/Chapter4
© DHBK 2005

SRAM
• Đặc điểm:
 6 transistors 1 bit: đắt!
 Bị mất dữ liệu khi mất nguồn
 nhanh: thời gian đọc và ghi 5 ns
 Liên tục tiêu thụ năng lượng
 Kích thước: 16 Mbit
• ứng dụng:
 Bộ nhớ nhỏ và nhanh (cache)
 Không dùng cho các thiết bị chạy pin
• Ví dụ: 4016 (2K*8), 250 ns, 6264(8Kx8), 62128(16Kx8)
A0-A10
D0-D7
OE
WE
CS
46/Chapter4
© DHBK 2005

Bit DRAM Word


line line

Address

1bit 1bit 1bit 1bit


2-to-4 Decoder cell cell cell cell
2
MSB
1bit 1bit 1bit 1bit
cell cell cell cell

1bit 1bit 1bit 1bit


4 cell cell cell cell

1bit 1bit 1bit 1bit


cell cell cell cell
2
LSB
2-to-4 Mux

Data
47/Chapter4
© DHBK 2005
DRAM
Bộ giải mã: 1 hàng được đọc ra

Bộ dồn kênh chọn 1 trong các hàng này


0110

1bit 1bit 1bit 1bit


2-to-4 Decoder cell cell cell cell

01
1bit 1bit 1bit 1bit
cell cell cell cell

1bit 1bit 1bit 1bit


4 cell cell cell cell

1bit 1bit 1bit 1bit


cell cell cell cell
10

2-to-4 Mux

Data
48/Chapter4
© DHBK 2005
DRAM bit cell
Vcc/2
1 bit
Pre-
cell
charge
Word
line

Vcc/2 Vcc/2 Vcc/2 Bit line


Refres
h

Sense
amplifier

MUX
49/Chapter4
© DHBK 2005
Lưu trữ
DRAM bit cell
Vcc/2

Pre-
charge
Word
line
5V 0V 5V

0V 5V 5V

Vcc/2 Vcc/2 Vcc/2


30 fF in
Refres

.2 m
h

Stores
.5 M e-

MUX
50/Chapter4
© DHBK 2005
Đọc
DRAM bit cell
Vcc/2

Pre-
charge
Word
line
2.55V
5V 2.45V
0V 2.55V
5V
2.55V
2.5V
5V

0V 5V 5V

Vcc/2 Vcc/2 Vcc/2


Refres
h

MUX
51/Chapter4
© DHBK 2005

DRAM bit cell


• Chu kỳ đọc
 1. Precharge
 2. RAS (Row Address Select): đọc tất cả các bit trong hàng được
chọn. Việc đọc này làm giá trị điện áp trên tụ điện bị thay đổi
 3. Khuếch đại tín hiệu trên các cột tương ứng
 4.a CAS (Column Address Select): chọn 1 cột và đưa dữ liệu ra
ngoài
 4.b Refresh: khôi phục lại dữ liệu ban đầu của hàng đã được chọn
ở bước 2.
52/Chapter4
© DHBK 2005
Ghi
DRAM bit cell
Vcc/2

Pre-
charge
Word
line
2.55V
5V 2.45V
0V
5V 2.55V
5V

0V 5V 5V

Vcc/2 Vcc/2 Vcc/2


Refres
h

MUX
53/Chapter4
© DHBK 2005

DRAM bit cell


• Chu kỳ ghi
 1. Precharge
 2. RAS (Row Address Select): đọc tất cả các bit trong hàng được
chọn. Việc đọc này làm giá trị điện áp trên tụ điện bị thay đổi
 3. Khuếch đại tín hiệu trên các cột tương ứng
 4.a CAS (Column Address Select): chọn 1 cột và đưa giá trị cần ghi
vào cột đó
 4.b Refresh: khôi phục lại dữ liệu ban đầu của hàng đã được chọn
ở bước 2 trừ bit vừa mới được ghi vào.
© DHBK 2005 Refresh 54/Chapter4

Làm tươi DRAM bit cell


Vcc/2

Pre-
charge
Word
line
2.51V
5V
3V 2.49V
0V
2V 2.51V
5V
3V

2V
2.49V
0V 2.51V
3V
5V 2.51V
3V
5V

Vcc/2 Vcc/2 Vcc/2


Refres
h

MUX
55/Chapter4
© DHBK 2005

DRAM bit cell


• Chu kỳ làm tươi
 1. Precharge
 2. RAS (Row Address Select): đọc tất cả các bit trong hàng được
chọn. Việc đọc này làm giá trị điện áp trên tụ điện bị thay đổi
 3. Khuếch đại tín hiệu trên các cột tương ứng
 4. Refresh: khôi phục lại dữ liệu ban đầu của hàng đã được chọn ở
bước 2.
56/Chapter4
© DHBK 2005

DRAM
• Đặc điểm:
 1 transistor 1 bit: rẻ, tuy nhiên việc điều khiển quá trình làm tươi
làm tăng giá thành của DRAM
 Chỉ tiêu thụ năng lượng trong quá trình làm tươi và truy nhập
 Tương đối nhanh: thời gian đọc và ghi 50 ns
 Mỗi một hàng phải được làm tươi sau 4 ms
 Nếu có 1024 hàng, chu kỳ làm tươi sẽ là 4 µs
 Kích thước: 4 Gbits
• Được dùng làm bộ nhớ chính trong các hệ vi xử lý
• Ví dụ: TMS 4464 (64K*4)

A0-A7
D0-D3 CAS: cho phép chốt địa chỉ cột
OE WE
RAS: cho phép chốt địa chỉ hàng

CAS RAS
57/Chapter4
© DHBK 2005

SRAM vs DRAM

Cost
SRAM

DRAM

Refresh
controller
Size
58/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• 4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
• 4.2 Ghép nối 8088 với bộ nhớ
 Các loại bộ nhớ bán dẫn
 4.2.2 Giải mã địa chỉ cho bộ nhớ
 Dùng cổng NAND
 Dùng bộ giải mã 74LS138, 74LS139
 Dùng PROM
 Dùng PAL (Programmable Array Logic)
 Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
59/Chapter4
© DHBK 2005
4.2.2 Giải mã địa chỉ bộ nhớ
dùng cổng NAND
• Ví dụ: Ghép EPROM 2716 (2K * 8) với 8088
• Phân tích:
 2716: 11 đường địa chỉ A10-A0
 8088: 20 đường địa chỉ A19-A0
 Chọn vùng nhớ 2K trong 1M?
 EPROM: 00000H-003FFH: không được phép
 chọn: FF800H-FFFFFH: chứa đoạn khởi động FFFF0H-FFFFFH

A19A18A17A16 A15A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0

• FF800: 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
1111 1111 1xxx xxxx xxxx
• FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
60/Chapter4
© DHBK 2005
4.2.2 Giải mã địa chỉ bộ nhớ
dùng cổng NAND
A19A18A17A16 A15A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0
• FF800: 1111 1111 1000 0000 0000
1111 1111 1xxx xxxx xxxx
• FFFFF: 1111 1111 1111 1111 1111

A19
A18 8088 A
A17 A0-A10 8088 D
Bus
A16 D0-D7 Bus
A15
A14
CS OE
A13
A12
A11
RD
IO/M
61/Chapter4
© DHBK 2005
4.2.2 Giải mã địa chỉ bộ nhớ
dùng bộ giải mã
• Ví dụ: Dùng EPROM 2764 (8K*8) để ghép thành bộ nhớ 64 K cho 8088 bắt đầu
từ địa chỉ F0000H
• Phân tích:
 Địa chỉ bắt đầu F0000H => địa chỉ kết thúc: FFFFFH
 Cần ghép 8 EPROM 2764 vì 64=8*8K
A19A18A17A16 A15A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0

• F0000: 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IC 0
• F1FFF: 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1

• F2000: 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 IC 1
• F3FFF: 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1

• F4000: 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IC 2
• F5FFF: 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1
...
...

• FE000: 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 IC 7
• FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
62/Chapter4
© DHBK 2005
4.2.2 Giải mã địa chỉ bộ nhớ
dùng bộ giải mã
• Dùng
U1 bộ giải mã 3-8 74LS138
1 15 C B A G2B G2A G1 y0 y1 y2 y3 y4 y5 y6 y7
2 A Y0 14
B Y1 x x x 1 x x 1 1 1 1 1 1 1 1
3 13
C Y2 12 x x x x 1 x 1 1 1 1 1 1 1 1
6 Y3 11 x x x x x 0 1 1 1 1 1 1 1 1
4 G1 Y4 10
G2A Y5 0 0 0 0 0 1 0 1 1 1 1 1 1 1
5 9
G2B Y6 7 0 0 1 0 0 1 1 0 1 1 1 1 1 1
Y7 0 1 0 0 0 1 1 1 0 1 1 1 1 1
0 1 1 0 0 1 1 1 1 0 1 1 1 1
74LS138
1 0 0 0 0 1 1 1 1 1 0 1 1 1
1 0 1 0 0 1 1 1 1 1 1 0 1 1
1 1 0 0 0 1 1 1 1 1 1 1 0 1
1 1 1 0 0 1 1 1 1 1 1 1 1 0
63/Chapter4
© DHBK 2005
4.2.2 Giải mã địa chỉ bộ nhớ
dùng bộ giải mã
• Dùng bộ giải mã 3-8 74LS138

A0-A12 A0-A12
A0-A10
D0-D7 D0-D7
A0-A10
2764
D0-D7
A0-A10
U1 RD 2764
OE D0-D7
A0-A10
2764
OE D0-D7
A13 1 15 A0-A10
2764
CS OE D0-D7
2 A Y0 14 A0-A10
A14 B Y1 CS OE D0-D7
2764
3 13 A0-A10
CS OE D0-D7
A15 C Y2 2764
12 CS OE D0-D7
2764
6 Y3 11
A16 G1 Y4 CS OE 2764
4 10 CS OE
IO/M 5 G2A Y5 9 CS
G2B Y6 7
A17 CS
Y7
A18
A19 74LS138
64/Chapter4
© DHBK 2005
4.2.2 Giải mã địa chỉ bộ nhớ
dùng bộ giải mã
• Dùng bộ giải mã kép 2-4 74LS139

1A 1Y0
1B 1Y1
1Y2
1G 1Y3

2A 2Y0
2B 2Y1
2Y2
2G 2Y3

• Ví dụ: Dùng EPROM 27128 (16K*8) để ghép thành bộ nhớ


64 K cho 8088 bắt đầu từ địa chỉ F0000H
65/Chapter4
© DHBK 2005
4.2.2 Giải mã địa chỉ bộ nhớ
dùng PROM
• Dùng PROM TPB28L42 (512*8)

A0-A12 A0-A12
A0-A10
D0-D7 D0-D7
A0-A10
2764
D0-D7
A0-A10
RD 2764
OE D0-D7
A0-A10
2764
OE D0-D7
A13 A0 O0 A0-A10
2764
CS OE D0-D7
A14 A1 O1 A0-A10
CS OE D0-D7
2764
A15 A2 O2 A0-A10
CS OE D0-D7
2764
A16 A3 O3 CS OE D0-D7
2764
A17 A4 TPB28L42
O4 CS OE 2764
A18 A5
O5 CS OE
A19 A6
O6 CS
A7
CS
A8 O7
G

IO/M
66/Chapter4
© DHBK 2005
4.2.2 Giải mã địa chỉ bộ nhớ
dùng PAL
67/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
• 4.2 Ghép nối 8088 với bộ nhớ
 Các loại bộ nhớ bán dẫn
 Giải mã địa chỉ cho bộ nhớ
 4.2.3 Ghép nối 8088 với bộ nhớ
 Ghép nối 8088 với ROM
 Ghép nối 8088 với SRAM
 Ghép nối 8088 với DRAM
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
68/Chapter4
© DHBK 2005

4.2.3 Ghép nối 8088 với bộ nhớ


• Nguyên tắc:
 Ghép trực tiếp:
 Thời gian truy cập bộ nhớ của CPU > thời gian truy cập của bộ nhớ +
thời gian giải mã địa chỉ
 Ghép có chèn thêm thời gian đợi của CPU
 Thời gian truy cập bộ nhớ của CPU < thời gian truy cập của bộ nhớ +
thời gian giải mã địa chỉ

8088 hoạt động ở 5 MHz có thời gian truy cập bộ nhớ 460 ns
69/Chapter4
© DHBK 2005
4.2.3 Ghép nối 8088 với bộ nhớ
ROM
• Ví dụ: ghép nối 8088 với EPROM 2732-450 ns

A0-A11 A0-A11
A0-A10
D0-D7 D0-D7
A0-A10
2732
D0-D7
A0-A10
U1 RD 2764
OE D0-D7
A0-A10
2764
OE D0-D7
A12 1 15 F8000-F8FFF A0-A10
2764
CS OE D0-D7
2 A Y0 14 F9000- A0-A10
A13 B Y1 CS OE D0-D7
2764
3 13 F9FFF A0-A10
CS OE D0-D7
2764
A14 C Y2 12 CS OE D0-D7
Y3 2764
6 11 CS OE 2764
A15 4 G1 Y4 10
G2A Y5 CS OE
IO/M 5 9 CS
A16 G2B Y6 7 FF000-FFFFF
Y7 CS
A17
A18 Bộ tạo Tw
74LS138
A19
Tới chân RDY1 của 8284
70/Chapter4
© DHBK 2005
4.2.3 Ghép nối 8088 với bộ nhớ
SRAM
• Ví dụ: ghép nối 8088 với SRAM 62256 (32K*8) để được bộ
nhớ 256 KB, bắt đầu từ địa chỉ 00000H

A0-A14 A0-A14
A0-A10
D0-D7 D0-D7
A0-A10
62256
D0-D7
A0-A10
U1 RD 2764
OE D0-D7
WR WE A0-A10
2764
OE D0-D7
A15 1 15 00000-07FFF A0-A10
2764
CS OE D0-D7
2 A Y0 14 A0-A10
08000-0FFFF CS OE D0-D7
2764
A16 3 B Y1 13 10000-17FFF A0-A10
CS OE D0-D7
2764
A17 C Y2 12 CS OE D0-D7
Y3 2764
A18 6 11 CS OE 2764
4 G1 Y4 10
G2A Y5 CS OE
IO/M 5 9 CS
G2B Y6 7 38000-3FFFF CS
Y7
A19
74LS138
71/Chapter4
© DHBK 2005
4.2.3 Ghép nối 8088 với bộ nhớ
DRAM
• Cần có DRAM controller:
 Dồn kênh 2 loại tín hiệu địa chỉ cho mỗi mạch nhớ và cung cấp
xung cho phép chốt địa chỉ RAS và CAS
 Cung cấp tín hiệu việc ghi đọc bộ nhớ
 Làm tươi bộ nhớ trong thời gian thích hợp
 Đảm bảo không có xung đột trong hoạt động ghi đọc với công việc
làm tươi
72/Chapter4
© DHBK 2005
4.2.3 Ghép nối 8088 với bộ nhớ
DRAM
• Ví dụ: ghép 8088 với TMS 4464 (64K*4) DRAM để được bộ
nhớ 128 KB, bắt đầu tại địa chỉ 00000H

A0-A7
RA0-RA7
MA0-MA7 A0-A7

A8-A15 CA0-CA7 2x4464


RAS0 RAS
ALE ALE
CAS CAS
A16 REN1
RD ACR TMS 4500A
WR ACW
A0-A7
RDY RDY
RAS1
2x4464
CLK CLK RAS
A17
A18 CAS
A19 CS
IO/M
73/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• 4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
• 4.2 Ghép nối 8088 với bộ nhớ
• 4.3 Ghép nối 8086 với bộ nhớ
• 4.4 Ghép nối với thiết bị ngoại vi
74/Chapter4
© DHBK 2005

4.3 Ghép nối 8086 với bộ nhớ


FFFFF FFFFE
FFFFD 8088 8086
FFFFC
FFFFB FFFFA
8 bit 16 bit
IO/M M/IO
BHE

00005 00004
00003 00002
BHE A0 Chức năng
00001 00000
Bank cao Bank thấp
(bank lẻ) (Bank chẵn)
0 0 chọn cả 2 bank

0 1 chọn bank cao

1 0 chọn bank thấp

1 1 không chọn bank nào


75/Chapter4
© DHBK 2005

4.3 Ghép nối 8086 với bộ nhớ


• Ví dụ: Ghép EPROM 2716 (2K * 8) với 8086 để được vùng
bộ nhớ FF000H-FFFFFH
 Cần 2 IC vì 4KB=2*2KB

A19A18A17A16 A15A14A13A12 A11A10A9A8 A7 A6 A5 A4 A3 A2 A1 A0

• FF000: 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
Bank thấp
• FFFFE: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0

• FF001: 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 Bank cao


• FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
76/Chapter4
© DHBK 2005

4.3 Ghép nối 8086 với bộ nhớ


A19
A18
A17 A1-A11 A0-A10
D0-D7 D0-D7
A16
A15 2716
A14
CS OE
A13
A12
M/IO RD
A0
A19
A18
A17 A1-A11 A0-A10
D0-D7 D8-D15
A16
A15 2716
A14
CS OE
A13
A12
M/IO RD
BHE
77/Chapter4
© DHBK 2005

4.3 Ghép nối 8086 với bộ nhớ


BHE
HRD
RD A1-A11 A0-A10
D0-D7 D0-D7
A0 LRD 2716

CS OE

LRD
A19
A18
A17 A1-A11 A0-A10
D0-D7 D8-D15
A16
A15 2716
A14
CS OE
A13
A12
M/IO HRD
78/Chapter4
© DHBK 2005

4.3 Ghép nối 8086 với bộ nhớ


• Ví dụ: ghép nối 8086 với SRAM 62256 (32K*8) để được bộ
nhớ 256 KB, bắt đầu từ địa chỉ 00000H

BHE
HWR
WR

A0 LWR
79/Chapter4
© DHBK 2005

4.3 Ghép nối 8086 với bộ nhớ


• Ví dụ: thiết kế hệ thống nhớ cho 8086 với 64 KB EPROM và
128 KB SRAM sử dụng SRAM 62256 (32K*8) và EPROM
27128 (16K*8)
80/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


4.1 Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
4.2 Ghép nối 8088 với bộ nhớ
4.3 Ghép nối 8086 với bộ nhớ
4.4 Ghép nối với thiết bị ngoại vi
4.4.1 Các kiểu ghép nối vào/ra
4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra
4.4.3 Mạch ghép nối vào ra song song lập trình được 8255A
4.4.4 Mạch điều khiển bàn phím/màn hình lập trình được 8279
4.4.5 Bộ định thời lập trình được 8254
4.4.6 Giao tiếp truyền thông lập trình được 16550
4.4.7 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
81/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• 4.4 Ghép nối với thiết bị ngoại vi
 4.4.1 Các kiểu ghép nối vào/ra
 Giải mã địa chỉ cho các thiết bị vào/ra
 Mạch ghép nối vào ra song song lập trình được 8255A
 Mạch điều khiển bàn phím/màn hình lập trình được 8279
 Bộ định thời lập trình được 8254
 Giao tiếp truyền thông lập trình được 16550
 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
82/Chapter4
© DHBK 2005

4.4.1 Các kiểu ghép nối vào ra


• Thiết bị vào ra có không gian địa chỉ cách biệt:
FFFF Địa chỉ: 0000H-FFFFH
M/IO=0
Vùng mở rộng

03FF Vào ra dữ liệu bằng lệnh IN, OUT


COM1
03F8
03F0
Điều khiển đĩa mềm Ví dụ:
CGA adapter IN AX, 00H
03D0
LPT1 IN AL, F0H
0378 IN AX, DX
Điều khiển ổ cứng
0320
COM2
02F8
8255
OUT 00H, AX
0060
Định thời (8253)
OUT F0H, AL
0040 OUT DX, AX
Điều khiển ngắt
0020
0000 Điều khiển DMA
83/Chapter4
© DHBK 2005

4.4.1 Các kiểu ghép nối vào ra


• Thiết bị vào ra có không gian địa chỉ cách biệt:
84/Chapter4
© DHBK 2005

4.4.1 Các kiểu ghép nối vào ra


• Thiết bị vào/ra có cùng không gian địa chỉ với bộ nhớ
FFFFF

M/IO=1

Vào ra dữ liệu bằng bất kỳ lệnh


di chuyển dữ liệu nào giữa
I/O CPU và bộ nhớ

Ví dụ:
MOV AX, [0FF3H

00000

Memory + I/O
85/Chapter4
© DHBK 2005

4.4.1 Các kiểu ghép nối vào ra


• Ví dụ cổng vào đơn giản:
VCC

8
7
6
5
4
3
2
1
10K

10

12
13
14
15
16
11
9

U1

2 18
4 A1 Y1 16
6 A2 Y2 14
8 A3
A4
Y3
Y4
12 Tới bus dữ liệu
11 9
13 A5
A6
Y5
Y6
7 của CPU
15 5
17 A7 Y7 3
A8 Y8
1
19 1OE
2OE

74ALS244
SEL

Từ giải mã địa chỉ cổng


86/Chapter4
© DHBK 2005

4.4.1 Các kiểu ghép nối vào ra


• Ví dụ cổng ra đơn giản:
VCC

330

U2

3 2
4 D0 Q0 5
7 D1 Q1 6
Từ bus dữ liệu 8 D2
D3
Q2
Q3
9
13 12
của CPU 14 D4 Q4 15
17 D5 Q5 16
18 D6 Q6 19
D7 Q7
11
CLK
1
OE

74ALS374
SEL
Từ giải mã địa chỉ cổng
87/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• Ghép nối với thiết bị ngoại vi
 Các kiểu ghép nối vào/ra
 4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra
 Mạch ghép nối vào ra song song lập trình được 8255A
 Mạch điều khiển bàn phím/màn hình lập trình được 8279
 Bộ định thời lập trình được 8254
 Giao tiếp truyền thông lập trình được 16550
 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
88/Chapter4
© DHBK 2005

4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra


• 8 bit địa chỉ hay 16 bit?
 Tổng số thiết bị < 256: 8 bit A0-A7: 00H-FFH
 Tổng số thiết bị >256: 16 bit A0-A15: 0000H-FFFFH
• 8 bit dữ liệu hay 16 bit?
 Nếu cổng là 8 bit: chọn 1 trong 2 bank
 Nếu cổng là 16 bit: chọn cả 2 bank

BHE A0
FFFF FFFE
FFFD FFFC
FFFB FFFA

D8-D15 D0-D7

0005 0004
0003 0002
0001 0000
Bank cao Bank thấp
(bank lẻ) (Bank chẵn)
89/Chapter4
© DHBK 2005

4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra


• Ví dụ: Giải mã địa chỉ cho thiết bị ra 8 bit với địa chỉ 07H
 07H= 0000 0111

A0 A0
A1 D0-D7 D8-D15
A1
A2 D0-D7 A2 D0-D7
A3 A3
A4 A4
CS WE CS WE
A5 A5
A6 A6
A7 A7
WR WR
IO/M M/IO
BHE
8088 8086
90/Chapter4
© DHBK 2005

4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra


• Ví dụ: Giải mã địa chỉ cho thiết bị ra 16 bit với địa chỉ cổng
64H và 65H
 64H= 0110 0100
 65H= 0110 0101
D8-D15 D8-D15

CS WE
A1
A2
A3 WR
A4
A5
A6 D7-D0 D0-D7
A7
M/IO CS WE
91/Chapter4
© DHBK 2005

4.4.2 Giải mã địa chỉ cho các thiết bị vào/ra


• Ví dụ: Giải mã địa chỉ cho các cổng vào ra 8 bit ở bank
thấp với các địa chỉ 10H, 12H, 14H, 16H, 18H, 1AH, 1CH,
1EH
 10H=0001 0000
 12H=0001 0010
 ....
 1EH=0001 1110 U1

A1 1 15 10H
2 A Y0 14 12H
A2 3 B Y1 13 14H
A3 C Y2 12 16H
6 Y3 11 18H
A0 G1 Y4 1AH
4 10
M/IO 5 G2A Y5 9 1CH
A4 G2B Y6 7 1EH
A5 Y7
A6
A7 74LS138
92/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• 4.4 Ghép nối với thiết bị ngoại vi
 Các kiểu ghép nối vào/ra
 Giải mã địa chỉ cho các thiết bị vào/ra
 4.4.3 Vi mạch ghép nối vào ra song song lập trình được 8255A
 Cấu trúc của 8255A
 Các chế độ làm việc của 8255A
 Lập trình cho 8255A
 Mạch điều khiển bàn phím/màn hình lập trình được 8279
 Bộ định thời lập trình được 8254
 Giao tiếp truyền thông lập trình được 16550
 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
93/Chapter4
© DHBK 2005

4.4.3.1 Cấu trúc của 8255A


• Giao tiếp các thiết bị tương thích TTL với vi xử lý
• Thường được dùng để giao tiếp bàn phím và máy in trong
các may tính PC (dưới dạng là một khối trong chíp tích
hợp)
• Cần chèn trạng thái đợi khi làm việc với vi xử lý >8 Mhz
• Có 24 đường vào ra và có 3 chế độ làm việc
• Trong các máy PC, địa chỉ cổng của 8255 là 60H-63H
94/Chapter4
© DHBK 2005

4.4.3.1 Cấu trúc của 8255A


95/Chapter4
© DHBK 2005

4.4.3.1 Cấu trúc của 8255A


96/Chapter4
© DHBK 2005

4.4.3.1 Cấu trúc của 8255A

RD
WR
97/Chapter4
© DHBK 2005

4.4.3.2 Các chế độ làm việc của 8255A


98/Chapter4
© DHBK 2005
99/Chapter4
© DHBK 2005
100/Chapter4
© DHBK 2005

4.4.3.2 Các chế độ làm việc của 8255A


• Chế độ 0: Chế độ vào ra đơn giản: các cổng có thể làm
việc như là cổng vào có đệm hoặc cổng ra có chốt đệm.
• Chế độ 1: Chế độ này cho phép cổng A và B làm việc như
các thiết bị vào hoặc ra có tín hiệu móc nối (handshaking)
do các bit tương ứng của cổng C trong cùng nhóm đảm
nhiệm
• Chế độ 2: chế độ này cho phép cổng A làm việc 2 chiều với
các tín hiệu móc nối do cổng PCH đảm nhiệm. Cổng B có
thể làm việc ở chế độ 1 hoặc 0
101/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 0

RD
WR
102/Chapter4
© DHBK 2005 ; Lập trình cho 8255
MOV AL, 10000000B ; Port A, Port B mode 0, output
MOV
OUT
DX, 703H
DX, AL
Chế độ 0
; Thủ tục hiển thị LED từ dữ liệu chứa trong bộ nhớ
DISP PROC NEAR
Giả thiết PUSHF ; cất các thanh ghi vào ngăn xếp

địa chỉ PUSH


PUSH
AX
BX
của các PUSH
PUSH
DX
SI
cổng ; Thiết lập các thanh ghi để hiển thị
MOV BX, 8 ;số LED
của MOV AH, 7FH ;chọn LED đầu tiên 0111 1111
8255 là MOV SI, OFFSET MEM-1 ; địa chỉ chứa dữ liệu
MOV DX,701H ; địa chỉ cổng B
0700H- ;Hiển thị 8 số
0703H DISP1: MOV AL, AH ;chọn 1 số
OUT DX, AL
DEC DX ; địa chỉ cổng A
MOV AL, [BX+SI] ; dữ liệu của 7 đoạn led
OUT DX, AL
CALL Delay ; trễ 1 ms
ROR AH, 1 ;số tiếp theo
INC DX ; địa chỉ cổng B
DEC BX ;giảm chỉ số
JNZ DISP1 ; lặp lại 8 lần
;khôi phục lại các thanh ghi
POP SI
POP DX
POP BX
POP AX
POPF
RET
DISP ENDP
103/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 0
104/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 0
105/Chapter4
© DHBK 2005ROWS EQU 4 ; 4 hàng
COLS EQU 4 ; 4 cột
PORTA EQU 50H
PORTB EQU 51H
KEY PROC NEAR USES CX
CALL SCAN ;test all keys SCAN PROC NEAR USES BX
JNZ KEY ; if key closed MOV CL, ROWS ;form row mask
CALL DELAY ; đợi 10 ms MOV BH, OFFH
CALL SCAN SHL BH, CL
JNZ KEY MOV CX, COLS ;load column count
KEY1: MOV BL, OFEH ;get selection mode
CALL SCAN SCAN1:
JZ KEY1 ; if no key closed MOV AL, BL ;select column
CALL DELAY OUT PORTB, AL
CALL SCAN ROL BL, 1
JZ KEY1 IN AL, PORTA; read rows
PUSH AX ;cất mã hàng OR AL,BH
MOV AL, COLS ;cal starting row key CMP AL, 0FFH ;test for a key
SUB AL, CL JNZ SCAN2
MOV CH, ROWS LOOP SCAN1
MUL CH
MOV CL, AL SCAN2:
DEC CL RET
POP AX SCAN ENDP
KEY2:
ROR AL,1 ;find row position DELAY PROC NEAR USES CX
INC CL MOV CX, 5000 ;10ms (8MHZ)
JC KEY2 DELAY1:
MOV AL,CL ;move code to AL LOOP DELAY1
RET RET
KEY ENDP DELAY ENDP
106/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1
• Port A và B làm việc ở chế độ cổng vào có chốt:
 dữ liệu sẽ được giữ tại cổng A, B cho đến khi CPU sẵn sàng
 cổng C làm cổng điều khiển và cấp tín hiệu móc nối
107/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1
108/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1

PA 0-PA 7 ASCII D0-D7

STB
PC4 DAV

82C55 Keyboard
109/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1
• Port A và B làm việc ở chế độ cổng ra có chốt:
 tương tự như cổng ra ở chế độ 0
 cổng C làm cổng điều khiển và cấp tín hiệu móc nối

1
110/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1
111/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1

PB0-PB7 ASCII D0-D7

ACK
PC2 ACK

PC4 DS

82C55 Printer
112/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 1
BIT1 EQU 2
PORTC EQU 62H
PORTB EQU 61H
CMD EQU 63H

PRINT PROC NEAR


;check printer ready
IN AL,PORTC ;get OBF
TEST AL, BIT1 ;test OBF
JZ PRINT ;if OBF=0

;send character to printer


MOV AL, AH ;get data
OUT PORTB, AL ;print data
;send data strobe to printer

MOV AL, 8 ;clear DS


OUT CMD,AL
MOV AL, 9 ;set DS
OUT CMD, AL
RET
PRINT ENDP
113/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 2
• Chỉ cho phép đối với cổng A
• Cổng A là cổng 2 chiều, dùng để giao tiếp giữa 2 máy tính
hoặc dùng trong chuẩn giao tiếp IEEE-488 GPIB...
114/Chapter4
© DHBK 2005
4.4.3.2 Các chế độ làm việc của 8255A
Chế độ 2
115/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• 4.4 Ghép nối với thiết bị ngoại vi
 Các kiểu ghép nối vào/ra
 Giải mã địa chỉ cho các thiết bị vào/ra
 Mạch ghép nối vào ra song song lập trình được 8255A
 4.4.4 Mạch điều khiển bàn phím/màn hình lập trình được 8279
 Bộ định thời lập trình được 8254
 Giao tiếp truyền thông lập trình được 16550
 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
116/Chapter4
© DHBK 2005

4.4.4 Mạch điều khiển 8279


• Điều khiển bàn phím và màn hiển thị 8279:
 quét và mã hoá cho bàn phím tới 64 phím
 bộ đệm FIFO có thể chứa 8 ký tự
 Điều khiển màn hiển thị tới 16 số
 16*8 RAM để chứa thông tin về 16 số hiển thị
• Các tín hiệu chính:
 A0: chọn giữa chế độ dữ liệu hoặc điều khiển
 BD: xoá trắng màn hiển thị
 CLK: tín hiệu xung nhịp vào
 CN/ST (control/Strobe): cổng vào nối với
phím điều khiển của bàn phím
 CS : chip select
 DB7-DB0: bus dữ liệu 2 chiều
 IRQ: =1 khi có phím bấm
 OUTA3-OUTA0: dữ liệu tới màn hiển thị (bit cao)
 OUTB3-OUTB0: dữ liệu tới màn hiển thị (bit thấp)
 RD: cho phép đọc dữ liệu từ thanh ghi điều khiển hoặc trạng thái
 RL7-RL0: xác định phím được nhấn
 SHIFT: nối với phím shift của bàn phím
 SL3-SL0: tín hiệu quét màn hình và màn hiển thị
 WR: viết dữ liệu vào thanh ghi điều khiển hoặc thanh ghi dữ liệu
117/Chapter4
© DHBK 2005
4.4.4 Mạch điều khiển 8279
Ghép nối 8279 với 8088
118/Chapter4
© DHBK 2005
4.4.4 Mạch điều khiển 8279
Ghép nối 8279 với bàn phím
119/Chapter4
© DHBK 2005
4.4.4 Mạch điều khiển 8279
Ghép nối 8279 với màn hiển thị
120/Chapter4
© DHBK 2005
4.4.4 Mạch điều khiển 8279
Lập trình cho 8279
• Từ điều khiển: D7D6D5D4D3D2D1D0
121/Chapter4
© DHBK 2005
4.4.4 Mạch điều khiển 8279
Lập trình cho 8279
122/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• 4.4 Ghép nối với thiết bị ngoại vi
 Các kiểu ghép nối vào/ra
 Giải mã địa chỉ cho các thiết bị vào/ra
 Mạch ghép nối vào ra song song lập trình được 8255A
 Mạch điều khiển bàn phím/màn hình lập trình được 8279
 4.4.5 Bộ định thời lập trình được 8254
 Giao tiếp truyền thông lập trình được 16550
 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
123/Chapter4
© DHBK 2005

4.4.5 Bộ định thời lập trình được 8254


124/Chapter4
© DHBK 2005

4.4.5 Bộ định thời lập trình được 8254


125/Chapter4
© DHBK 2005

4.4.5 Bộ định thời lập trình được 8254


126/Chapter4
© DHBK 2005

4.4.5 Bộ định thời lập trình được 8254


127/Chapter4
© DHBK 2005

4.4.5 Bộ định thời lập trình được 8254


128/Chapter4
© DHBK 2005

4.4.5 Bộ định thời lập trình được 8254


129/Chapter4
© DHBK 2005

4.4.5 Bộ định thời lập trình được 8254


130/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• 4.4 Ghép nối với thiết bị ngoại vi
 Các kiểu ghép nối vào/ra
 Giải mã địa chỉ cho các thiết bị vào/ra
 Mạch ghép nối vào ra song song lập trình được 8255A
 Mạch điều khiển bàn phím/màn hình lập trình được 8279
 Bộ định thời lập trình được 8254
 4.4.6 Giao tiếp truyền thông lập trình được 16550
 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
131/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
132/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
133/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
134/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
135/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
136/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
137/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
138/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
139/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
140/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
141/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
142/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
143/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
144/Chapter4
© DHBK 2005

Các chuẩn truyền cận đồng bộ

• UART (0: 0V, 1: 5v)


• RS-232 (0: -12V, 1: +12V)
145/Chapter4
© DHBK 2005

Các chuẩn truyền cận đồng bộ

• RS-485 (vi sai)


146/Chapter4
© DHBK 2005

Data rate (baud rate) Distance # wire

UART 9600,19200 bps,... 5 cm GND, Tx, Rx

RS-232 9600,19200bps,... 10-30 m GND, Tx, Rx


RS-485 9600,19200bps,...1Mbps 100m-1km GND, Tx+, Tx- Rx+, Rx-

USB 480 Mbps 1m GND, Tx+, Tx- Rx+, Rx-


147/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
148/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
149/Chapter4
© DHBK 2005
4.4.6 Giao tiếp truyền thông lập trình được
16550
150/Chapter4
© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu


• Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288
• Ghép nối 8088 với bộ nhớ
• Ghép nối 8086 với bộ nhớ
• 4.4 Ghép nối với thiết bị ngoại vi
 Các kiểu ghép nối vào/ra
 Giải mã địa chỉ cho các thiết bị vào/ra
 Mạch ghép nối vào ra song song lập trình được 8255A
 Mạch điều khiển bàn phím/màn hình lập trình được 8279
 Bộ định thời lập trình được 8254
 Giao tiếp truyền thông lập trình được 16550
 4.4.7 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số
ADC0804
151/Chapter4
© DHBK 2005

4.4.7.1 Bộ biến đổi số tương tự DAC


152/Chapter4
© DHBK 2005

4.4.7.1 Bộ biến đổi số tương tự DAC


153/Chapter4
© DHBK 2005

4.4.7.2 Bộ biến đổi tương tự số ADC


154/Chapter4
© DHBK 2005

4.4.7.2 Bộ biến đổi tương tự số ADC


155/Chapter4
© DHBK 2005

4.4.7.2 Bộ biến đổi tương tự số ADC

You might also like