1/Chapter4
© DHBK 2005
Nội dung môn học • • • • • • •
Giới thiệu chung về hệ vi xử lý Bộ vi xử lý Intel 8088/8086 Lập trình hợp ngữ cho 8086 Tổ chức vào ra dữ liệu Ngắt và xử lý ngắt Truy cập bộ nhớ trực tiếp DMA Các bộ vi xử lý trên thực tế
© DHBK 2005
2/Chapter4
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
3/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
4/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
5/Chapter4
© DHBK 2005
Các chân tín hiệu của 8086 M/IO (S2) AD0-AD15
DT/R(S1) Tín hiệu điều khiển hệ thống
RD WR (LOCK) DEN (S0) SS0 READY BHE/S7
Tín hiệu điều khiển CPU
đồng hồ và nguồn
NMI INTR RESET MN/MX TEST CLK Vcc GND GND
16 đường địa chỉ thấp/dữ liệu
A16/S3 A17/S4 A18/S5 A19/S6
4 đường bus C/ địa chỉ cao
8086 HOLD(RQ/GT0) HLDA(RQ/GT1) INTA(QS1) ALE(QS0)
Tín hiệu điều khiển bus
6/Chapter4
© DHBK 2005
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 4 bit trạng thái: S6 luôn bằng 1 S5: trạng thái của IF S4, S3: bit trạng thái về thanh ghi đoạn đang truy cập
•
READY: input pin,
S4 S3 0
0
ES
0
1
SS
1
0
CS or No
1
1
DS
0 => vi xử lý vào trạng thái đợi 1: has no effect
•
INTR: interrupt request IF=1 và INTR=1=> cho phép 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
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
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
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
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
chu kỳ điều khiển của bus
10/Chapter4
© DHBK 2005
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 • 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
12/Chapter4
© DHBK 2005
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
Phân kênh và đệm cho các bus M/IO RD WR BHE/S7 A19/S6 A16/S3
M/IO RD WR BH A19
‘244 74LS373
A16 A15
G
A8
A7
8086
A0 ALE
G
74LS373
G
74LS373
D15
AD15
‘245 AD8 AD7
G DIR
D8 D7
‘245 AD0
DEN DT/R
G DIR
D0
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
© DHBK 2005
15/Chapter4
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
Biểu đồ thời gian
18/Chapter4
© DHBK 2005
Biểu đồ thời gian • Các ký hiệu trong biểu đồ thời gian:
Min
CS
1
CS hold time
2
CS to data valid
3
Data hold time
max
60
Units
ns
1
Data 2
3
5
30
ns
10
ns
19/Chapter4
© DHBK 2005
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, ALE
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
Biểu đồ thời gian
21/Chapter4
© DHBK 2005
Biểu đồ thời gian
22/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
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
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
Các loại bộ nhớ bán dẫn
A0 Tín hiệu địa chỉ
WR
A1 A2
D0 D1 D2
Am
Dn
Dữ liệu
WE CS
OE WR: write
chọn chip
WE: Write enable RD
OE: Output enable CS: Chip Select RD: read
26/Chapter4
© DHBK 2005
EPROM Floating Gate
Isolator Gate
Source
n+
Drain
n+ p
27/Chapter4
© DHBK 2005
EPROM No charges on floating gate Infinite number of free electrons Vss
Vss
Vss
Many free electrons
Many free electrons n+
n+ p
D=Vss G=Vss
S=Vss
Hardly any free electrons: no conducting path between Source and Drain
28/Chapter4
© DHBK 2005
EPROM No charges on floating gate
Vcc
Vss
n+
Vss
n+ p
D=Vss G=Vcc
S=Vss
Many free electrons attracted by positive gate voltage: conducting channel between Source and Drain
29/Chapter4
© DHBK 2005
EPROM Many electrons trapped on floating gate
Vcc
Vss
n+
Vss
n+ p
D=Vss G=Vcc
S=Vss
No free electrons: positive gate voltage is shielded by negative floating gate: no conducting channel between Source and Drain
30/Chapter4
© DHBK 2005
EPROM: reading Vcc
Vcc
Vcc
Address
2-to-4 Decoder
2 MSB
4
2 LSB
2-to-4 Mux Data
Vcc
© DHBK 2005
Read(0x6) Vcc
31/Chapter4
EPROM: reading Vcc
Vcc
Vcc
0110
2-to-4 Decoder
01
4
10
2-to-4 Mux 0
© DHBK 2005
Read(0x8) Vcc
32/Chapter4
EPROM: reading Vcc
Vcc
Vcc
1000
2-to-4 Decoder
10
4
00
2-to-4 Mux 1
33/Chapter4
© DHBK 2005
EPROM: erasing Vcc
Vcc
Vcc
Address
2-to-4 Decoder
2 MSB
4
2 LSB
2-to-4 Mux Data
Vcc
UV light
© DHBK 2005
Write 1 at 0x2 Vcc
34/Chapter4
EPROM: writing Vcc
Vcc
Address 0010
2-to-4 Decoder
2 00 MSB
4
2 10 LSB
2-to-4 Mux Data
12V Vcc
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
23 22 19 20 18 21
8 7 6 5 4 3 2 1
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 OE CE VPP 2716
O0 O1 O2 O3 O4 O5 O6 O7
9 10 11 13 14 15 16 17
Address CE
Output 120 450
100
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
© DHBK 2005
38/Chapter4
SRAM
One row of cells is read out at once MUX selects one out of these cells
0110
2-to-4 Decoder
01
4
10
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
2-to-4 Mux
39/Chapter4
© DHBK 2005
SRAM bit cell Bit line inverse
Bit line Word Vcc
Acts as a resistor
40/Chapter4
© DHBK 2005
Storage
SRAM bit cell Bit line inverse
Bit line Word Vcc R 5V
0V
Current Assumption
Stable situation; stores a ‘1’ Dissipates continuously
41/Chapter4
© DHBK 2005
SRAM bit cell
Storage
Bit line inverse
Bit line Word Vcc R 0V
5V
Current Stable situation; stores a ‘0’ Dissipates continuously
Assumption
42/Chapter4
© DHBK 2005
Reading of a ‘1’
SRAM bit cell Bit line inverse
Bit line Word Vcc R 5V
0V
Current 1
0
43/Chapter4
© DHBK 2005
Reading of a ‘0’
SRAM bit cell Bit line inverse
Bit line Word Vcc R 0V
5V
Current 0
1
44/Chapter4
© DHBK 2005
Writing of a ‘1’
SRAM bit cell
Vcc
Vcc
Word Word Vcc R
Bit Bit line line 0V 5V
Bit line inverse
5V 0V
Current W.D’
Current
Current
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 A0-A10 D0-D7 OE WE CS
46/Chapter4
© DHBK 2005
DRAM
Bit line
Word line
Address
2-to-4 Decoder
2 MSB
4
2 LSB
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
2-to-4 Mux Data
© DHBK 2005
47/Chapter4
DRAM One row of cells is read out at once MUX selects one out of these cells
0110
2-to-4 Decoder
01
4
10
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
1bit cell
2-to-4 Mux Data
DRAM bit cell
© DHBK 2005
Vcc/2
1 bit cell
Precharge Word line
Refresh
Vcc/2
48/Chapter4
Vcc/2
Vcc/2
Bit line Sense amplifier
MUX
© DHBK 2005
Storage
DRAM bit cell
49/Chapter4
Vcc/2 Precharge Word line
Refresh
Vcc/2
5V
0V
5V
0V
5V
5V
Vcc/2
Vcc/2
MUX
30 fF in .2 µm Stores .5 M e-
© DHBK 2005
Read
DRAM bit cell
50/Chapter4
Vcc/2 Precharge Word line 2.55V 2.5V 5V
Refresh
Vcc/2
2.55V 5V
2.45V 0V
2.55V 5V
0V
5V
5V
Vcc/2
Vcc/2
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.
© DHBK 2005
Write
DRAM bit cell
52/Chapter4
Vcc/2 Precharge Word line
Refresh
Vcc/2
2.55V 5V
2.45V 0V 5V
2.55V 5V
0V
5V
5V
Vcc/2
Vcc/2
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
DRAM bit cell
54/Chapter4
Vcc/2 Precharge Word line
Refresh
Vcc/2
2.51V 5V 3V
2.49V 0V 2V
2.51V 5V 3V
2V 2.49V 0V
3V 2.51V 5V
3V 2.51V 5V
Vcc/2
Vcc/2
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 OE
WE
CAS
RAS
CAS: cho phép chốt địa chỉ cột RAS: cho phép chốt địa chỉ hàng
57/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 OE
WE
CAS
RAS
CAS: cho phép chốt địa chỉ cột RAS: cho phép chốt địa chỉ hàng
58/Chapter4
© DHBK 2005
DRAM • Examples of DRAM: SIMM (Single Inline Memory Module): 72 pins DIMM (Dual Inline Memory Module): 168 pins
72-Pin SIMM
59/Chapter4
© DHBK 2005
SRAM - DRAM Cost
SRAM
DRAM
Refresh controller
Size
60/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ớ Dùng Dùng Dùng Dùng
cổng NAND bộ giải mã 74LS138, 74LS139 PROM 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
© DHBK 2005
Giải mã địa chỉ bộ nhớ dùng cổng NAND
61/Chapter4
• 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ỉ A20-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
• FF800: • FFFFF:
1111 1111
A15A14A13A12
1111 1111
A11A10A9A8
1000 1111
A7 A6 A5 A4
A3 A2 A1 A0
0000 0000 1111 1111
© DHBK 2005
• FF800: • FFFFF:
A19 A18 A17 A16 A15 A14 A13 A12 A11 IO/M
Giải mã địa chỉ bộ nhớ dùng cổng NAND A19A18A17A16
1111 1111
A15A14A13A12
1111 1111
8088 A Bus
A11A10A9A8
A7 A6 A5 A4
1000 1111
A0-A10 D0-D7
CS
OE
RD
62/Chapter4
A3 A2 A1 A0
0000 0000 1111 1111
8088 D Bus
Giải mã địa chỉ bộ nhớ dùng bộ giải mã
© DHBK 2005
• •
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: F1FFF:
1111 1111
0000 0000 0001 1111
0000 1111
0000 1111
IC 1
• •
F2000: F3FFF:
1111 1111
0010 0000 0011 1111
0000 1111
0000 1111
IC 2
• •
F4000: F5FFF: ...
1111 1111
0100 0000 0101 1111
0000 1111
0000 1111
IC 3
FE000: 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
IC 8
... • •
63/Chapter4
64/Chapter4
Giải mã địa chỉ bộ nhớ dùng bộ giải mã
© DHBK 2005
• Dùng bộ giải mã 3-8 74LS138 U1 1 2 3 6 4 5
A B C G1 G2A G2B
74LS138
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
15 14 13 12 11 10 9 7
C
B
A
G2 B
x x x 0 0 0 0 1 1 1 1
x x x 0 0 1 1 0 0 1 1
x x x 0 1 0 1 0 1 0 1
1 x x 0 0 0 0 0 0 0 0
G2 A
G1
y0
y1
y2
y3
y4
y5
y6
y7
x 1 x 0 0 0 0 0 0 0 0
x x 0 1 1 1 1 1 1 1 1
1 1 1 0 1 1 1 1 1 1 1
1 1 1 1 0 1 1 1 1 1 1
1 1 1 1 1 0 1 1 1 1 1
1 1 1 1 1 1 0 1 1 1 1
1 1 1 1 1 1 1 0 1 1 1
1 1 1 1 1 1 1 1 0 1 1
1 1 1 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1 1 0
Giải mã địa chỉ bộ nhớ dùng bộ giải mã
© DHBK 2005
65/Chapter4
• Dùng bộ giải mã 3-8 74LS138 A0-A12 D0-D7 RD
U1
A13 A14 A15 A16 IO/M A17 A18 A19
1 2 3 6 4 5
A B C G1 G2A G2B
74LS138
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
15 14 13 12 11 10 9 7
A0-A12 A0-A10 D0-D7 A0-A10 2764 D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 CS OE D0-D7 A0-A10 CS OE D0-D7 2764 A0-A10 CS OE D0-D7 2764 CS OE D0-D7 2764 CS OE 2764 CS OE CS CS
© DHBK 2005
Giải mã địa chỉ bộ nhớ dùng bộ giải mã
66/Chapter4
• Dùng bộ giải mã kép 2-4 74LS139 1A 1B 1G 2A 2B 2G
1Y0 1Y1 1Y2 1Y3 2Y0 2Y1 2Y2 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
Giải mã địa chỉ bộ nhớ dùng PROM
© DHBK 2005
67/Chapter4
• Dùng PROM TPB28L42 (512*8) A0-A12 D0-D7 RD A13 A14 A15 A16 A17 A18 A19
A0 A1 A2 A3 A4 TPB28L42 A5 A6 A7 A8 G
IO/M
O0 O1 O2 O3 O4 O5 O6 O7
A0-A12 A0-A10 D0-D7 A0-A10 2764 D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 CS OE D0-D7 A0-A10 CS OE D0-D7 2764 A0-A10 CS OE D0-D7 2764 CS OE D0-D7 2764 CS OE 2764 CS OE CS CS
© DHBK 2005
Giải mã địa chỉ bộ nhớ dùng PAL
68/Chapter4
69/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 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
70/Chapter4
© DHBK 2005
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ớ 420 ns
71/Chapter4
© DHBK 2005
Ghép nối 8088 với ROM • Ví dụ: ghép nối 8088 với EPROM 2732-450 ns
A0-A11 D0-D7 RD
U1
A12 A13 A14
A16 A17 A18 A19
A15 IO/M
1 2 3 6 4 5
A B C G1 G2A G2B
74LS138
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
15 14 13 12 11 10 9 7
F8000-F8FFF F9000-F9FFF
FF000-FFFFF
A0-A11 A0-A10 D0-D7 A0-A10 2732 D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 CS OE D0-D7 A0-A10 CS OE D0-D7 2764 A0-A10 CS OE D0-D7 2764 CS OE D0-D7 2764 CS OE 2764 CS OE CS CS
Bộ tạo Tw
Tới chân RDY1 của 8284
72/Chapter4
© DHBK 2005
Ghép nối 8088 với 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 D0-D7 U1
A15 A16 A17 A18 IO/M
1 2 3 6 4 5
A B C G1 G2A G2B
A19 74LS138
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
15 14 13 12 11 10 9 7
RD WR
00000-07FFF 08000-0FFFF 10000-17FFF
38000-3FFFF
A0-A14 A0-A10 D0-D7 A0-A10 62256 D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 OE D0-D7 WE A0-A10 2764 CS OE D0-D7 A0-A10 CS OE D0-D7 2764 A0-A10 CS OE D0-D7 2764 CS OE D0-D7 2764 CS OE 2764 CS OE CS CS
73/Chapter4
© DHBK 2005
Ghép nối 8088 với 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
74/Chapter4
© DHBK 2005
Ghép nối 8088 với 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
A8-A15 ALE A16 RD WR
RA0-RA7 CA0-CA7 ALE REN1 ACR TMS ACW
MA0-MA7
A0-A7
2x4464 RAS0
RAS
CAS
CAS
4500A A0-A7
A17 A18 A19 IO/M
RDY
RDY
CLK
CLK CS
RAS1
2x4464 RAS CAS
© DHBK 2005
75/Chapter4
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
76/Chapter4
© DHBK 2005
Ghép nối 8086 với bộ nhớ FFFFF
FFFFE
FFFFD
FFFFC
FFFFB
FFFFA
00005
00004
00003
00002
00001
00000 Bank cao (bank lẻ)
8088
8086
8 bit IO/M
16 bit M/IO BHE
BHE A0 Bank thấp (Bank chẵn)
Chức năng
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
77/Chapter4
© DHBK 2005
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 FFFFE: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
Bank thấp
• •
FF001: 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Bank cao
78/Chapter4
© DHBK 2005
Ghép nối 8086 với bộ nhớ A19 A18 A17 A16 A15 A14
A1-A11
D0-D7
2716
CS
A13 A12 M/IO A0
A0-A10 D0-D7
OE
RD A19 A18 A17 A16 A15 A14 A13 A12 M/IO BHE
A1-A11
A0-A10 D0-D7
2716
CS
OE
RD
D8-D15
79/Chapter4
© DHBK 2005
Ghép nối 8086 với bộ nhớ BHE
HRD A1-A11
RD LRD
A0
A0-A10 D0-D7
D0-D7
2716
CS
OE
LRD A19 A18 A17 A16 A15 A14 A13 A12 M/IO
A1-A11
A0-A10 D0-D7
2716
CS
OE
HRD
D8-D15
80/Chapter4
© DHBK 2005
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
81/Chapter4
© DHBK 2005
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)
© DHBK 2005
82/Chapter4
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 giao tiếp giữa vi xử lý và 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 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số ADC0804
© DHBK 2005
83/Chapter4
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 giao tiếp giữa vi xử lý và 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 Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số ADC0804
© DHBK 2005
84/Chapter4
Các kiểu giao tiếp giữa vi xử lý và thiết bị ngoại vi Memory bus CPU
Memory
Bus Adapter I/O Bus
I/O Controller
I/O Controller
I/O Controller
I/O Device
I/O Device
I/O Device
© DHBK 2005
Các kiểu giao tiếp giữa vi xử lý và thiết bị ngoại vi
•
Giao tiếp kiểu thăm dò, móc nối (handshaking)
•
Giao tiếp bằng ngắt (Interrupt)
•
85/Chapter4
1. CPU kiểm tra trạng thái của thiết bị ngoại vi 2. Nếu thiết bị ngoại vi sẵn sàng trao đối dữ liệu việc trao đối sẽ được thực hiện bởi tín hiệu móc nối 3. Nếu thiết bị ngoại vi chưa sẵn sàng, CPU sẽ thực hiện công việc khác và quay lại bước 1 1. Thiết bị ngoại vi muốn trao đổi dữ liệu với CPU, nó sẽ gửi tín hiệu yêu cầu ngắt tới chân INTR của CPU 2. CPU chấp nhận yêu cầu ngắt bằng cách gửi tín hiệu INTA tới thiết bị ngoại vi 3. CPU thực hiện chương trình con phục vụ ngắt
Giao tiếp bằng truy cập bộ nhớ trực tiếp (DMA)
1. Thiết bị ngoại vi muốn truy cập trực tiếp bộ nhớ không thông qua CPU, nó đưa tín hiệu yêu cầu tới chân HOLD của CPU thông qua khối điều khiển DMA 2. CPU chấp nhận và gửi tín hiệu HLDA tới khối điều khiển DMA và treo các bus 3. Khối điều khiển DMA sẽ điều khiển việc trao đổi dữ liệu giữa thiết bị ngoại vi và bộ nhớ
© DHBK 2005
86/Chapter4
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 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
87/Chapter4
© DHBK 2005
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 Vùng mở rộng 03FF 03F8 03F0 03D0 0378 0320 02F8 0060 0040 0020 0000
COM1 Điều khiển đĩa mềm CGA adapter LPT1 Điều khiển ổ cứng COM2 8255 Định thời (8253) Điều khiển ngắt Điều khiển DMA
Địa chỉ: 0000H-FFFFH M/IO=0 Vào ra dữ liệu bằng lệnh IN, OUT Ví dụ:
IN AX, 00H IN AL, F0H IN AX, DX OUT 00H, AX OUT F0H, AL OUT DX, AX
88/Chapter4
© DHBK 2005
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:
89/Chapter4
© DHBK 2005
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ộ FFFFF nhớ M/IO=1
I/O
Vào ra dữ liệu bằng bất kỳ lệnh di chuyển dữ liệu nào giữa CPU và bộ nhớ Ví dụ:
00000
Memory + I/O
MOV AX, [0FF3H]
90/Chapter4
© DHBK 2005
Các kiểu ghép nối vào ra • Ví dụ cổng vào đơn giản:
8 7 6 5 4 3 2 1
VCC
9 10 11 12 13 14 15 16
10K
U1
11 13 15 17 19
SEL
2 4 6 8
1
A1 A2 A3 A4 A5 A6 A7 A8
Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8
1OE 2OE 74ALS244
Từ giải mã địa chỉ cổng
18 16 14 12 9 7 5 3
Tới bus dữ liệu của CPU
91/Chapter4
© DHBK 2005
Các kiểu ghép nối vào ra • Ví dụ cổng ra đơn giản: VCC
330
U2 3 4 7 8
Từ bus dữ liệu của CPU
13 14 17 18 11
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
CLK 1
SEL
D0 D1 D2 D3 D4 D5 D6 D7
OE 74ALS374
Từ giải mã địa chỉ cổng
2 5 6 9 12 15 16 19
© DHBK 2005
92/Chapter4
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 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
© DHBK 2005
93/Chapter4
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 FFFF FFFD FFFB
A0 FFFE FFFC FFFA
D8-D15 0005 0003 0001
Bank cao (bank lẻ)
D0-D7 0004 0002 0000
Bank thấp (Bank chẵn)
© DHBK 2005
94/Chapter4
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 A1 A2 A3 A4
D0-D7 D0-D7 CS
A5 A6 A7
WE
WR
IO/M
8088
A0 A1 A2 A3 A4
D8-D15 D0-D7 CS
A5 A6 A7
WE
WR
M/IO BHE 8086
© DHBK 2005
95/Chapter4
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
A1 A2 A3 A4 A5 A6 A7 M/IO
WE
WR
D7-D0
D0-D7 CS
WE
96/Chapter4
Giải mã địa chỉ cho các thiết bị vào/ra
© DHBK 2005
• 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 A2 A3 A0 A4 A5 A6 A7
M/IO
1 2 3 6 4 5
A B C G1 G2A G2B
74LS138
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
15 14 13 12 11 10 9 7
10H 12H 14H 16H 18H 1AH 1CH 1EH
97/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 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 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
98/Chapter4
© DHBK 2005
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à 60H63H
99/Chapter4
© DHBK 2005
Cấu trúc của 8255A
100/Chapter4
© DHBK 2005
Cấu trúc của 8255A
101/Chapter4
© DHBK 2005
Cấu trúc của 8255A
RD WR
© DHBK 2005
102/Chapter4
Các chế độ làm việc của 8255A
© DHBK 2005
103/Chapter4
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
104/Chapter4
© DHBK 2005
Chế độ 0
RD WR
© DHBK 2005
; Lập trình cho 8255 MOV AL, 10000000B MOV DX, 703H OUT DX, AL ; Thủ tục hiển thị LED từ dữ liệu chứa trong bộ nhớ DISP PROC NEAR
105/Chapter4
; Port A, Port B mode 0, output
Chế độ 0
; cất các ngăn xếp • Giả thiết địaPUSHF chỉ của các cổng cthanh ủaghi vào 8255 là 0700HPUSH AX PUSH BX 0703H PUSH DX PUSH
SI
; Thiết lập các thanh ghi để hiển thị MOV BX, 8 MOV AH, 7FH MOV SI, OFFSET MEM-1 MOV DX,701H ;Hiển thị 8 số DISP1: MOV AL, AH OUT DX, AL DEC DX MOV AL, [BX+SI] OUT DX, AL CALL Delay ROR AH, 1 INC DX DEC BX JNZ DISP1 ;khôi phục lại các thanh ghi POP POP POP POP POPF RET
DISP
ENDP
SI DX BX AX
;số LED ;chọn LED đầu tiên 0111 1111 ; địa chỉ chứa dữ liệu ; địa chỉ cổng B ;chọn 1 số ; địa chỉ cổng A ; dữ liệu của 7 đoạn led ; trễ 1 ms ;số tiếp theo ; địa chỉ cổng B ;giảm chỉ số ; lặp lại 8 lần
106/Chapter4
© DHBK 2005
Chế độ 0
107/Chapter4
© DHBK 2005
Chế độ 0
© DHBK 2005ROWS
KEY
4 ; 4 hàng 4 ; 4 cột 50H 51H USES CX ;test all keys ; if key closed ; đợi 10 ms
108/Chapter4
COLS PORTA PORTB PROC CALL JNZ CALL CALL JNZ
EQU EQU EQU EQU NEAR SCAN KEY DELAY SCAN KEY
CALL JZ CALL CALL JZ PUSH MOV SUB MOV MUL MOV DEC POP
SCAN KEY1 ; if no key closed DELAY SCAN KEY1 AX ;cất mã hàng AL, COLS ;cal starting row key AL, CL CH, ROWS CH CL, AL CL AX
SCAN1:
ROR INC JC MOV RET ENDP
AL,1 CL KEY2 AL,CL
DELAY
Chế độ 0
KEY1:
KEY2:
KEY
;find row position
SCAN
PROC MOV MOV SHL MOV MOV
NEAR USES BX CL, ROWS ;form row mask BH, OFFH BH, CL CX, COLS ;load column count BL, OFEH ;get selection mode
MOV OUT ROL IN OR CMP JNZ LOOP
AL, BL ;select column PORTB, AL BL, 1 AL, PORTA; read rows AL,BH AL, 0FFH ;test for a key SCAN2 SCAN1
SCAN2: SCAN
RET ENDP PROC MOV
NEAR CX, 5000
LOOP RET ENDP
DELAY1
DELAY1: ;move code to AL DELAY
USES CX ;10ms (8MHZ)
109/Chapter4
© DHBK 2005
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
110/Chapter4
© DHBK 2005
Chế độ 1
111/Chapter4
© DHBK 2005
Chế độ 1 PA0-PA7
PC4
ASCII STB
D0-D7
DAV Keyboard
82C55 Bit5 PortC PortA
EQU EQU EQU
20H 22H 20H
Read
PROC
NEAR
IN AL, PortC Test AL, Bit5 JZ READ IN AL, PortA RET Read Endp
; ; ; ;
read PortC test IBF if IBF=0 read data
112/Chapter4
© DHBK 2005
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
113/Chapter4
© DHBK 2005
Chế độ 1
114/Chapter4
© DHBK 2005
Chế độ 1
PB0-PB7
PC2
ASCII ACK
PC4 82C55
D0-D7
ACK DS Printer
DS: data strobe
115/Chapter4
© DHBK 2005
Chế độ 1 BIT1 PORTC PORTB CMD
EQU EQU EQU EQU
2 62H 61H 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 OUT PORTB, AL ;send data strobe to printer MOV OUT MOV OUT RET PRINT ENDP
AL, 8 CMD,AL AL, 9 CMD, AL
;get data ;print data ;clear DS ;set DS
116/Chapter4
© DHBK 2005
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...
117/Chapter4
© DHBK 2005
Chế độ 2
© DHBK 2005
118/Chapter4
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 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
119/Chapter4
© DHBK 2005
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
120/Chapter4
© DHBK 2005
Ghép nối 8279 với 8088
121/Chapter4
© DHBK 2005
Ghép nối 8279 với bàn phím
© DHBK 2005
122/Chapter4
Ghép nối 8279 với màn hiển thị
123/Chapter4
© DHBK 2005
Lập trình cho 8279 • Từ điều khiển: D7D6D5D4D3D2D1D0
124/Chapter4
© DHBK 2005
Lập trình cho 8279
© DHBK 2005
125/Chapter4
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 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
© DHBK 2005
126/Chapter4
Bộ định thời lập trình được 8254
© DHBK 2005
127/Chapter4
Bộ định thời lập trình được 8254
© DHBK 2005
128/Chapter4
Bộ định thời lập trình được 8254
© DHBK 2005
129/Chapter4
Bộ định thời lập trình được 8254
© DHBK 2005
130/Chapter4
Bộ định thời lập trình được 8254
© DHBK 2005
131/Chapter4
Bộ định thời lập trình được 8254
© DHBK 2005
132/Chapter4
Bộ định thời lập trình được 8254
© DHBK 2005
133/Chapter4
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 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
© DHBK 2005
134/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
135/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
136/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
137/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
138/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
139/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
140/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
141/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
142/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
143/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
144/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
145/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
146/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
147/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
148/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
149/Chapter4
Giao tiếp truyền thông lập trình được 16550
© DHBK 2005
150/Chapter4
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 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
151/Chapter4
© DHBK 2005
Bộ biến đổi số tương tự DAC
152/Chapter4
© DHBK 2005
Bộ biến đổi số tương tự DAC
153/Chapter4
© DHBK 2005
Bộ biến đổi tương tự số ADC
154/Chapter4
© DHBK 2005
Bộ biến đổi tương tự số ADC
155/Chapter4
© DHBK 2005
Bộ biến đổi tương tự số ADC