Bài giảng Vi xử lý - Chương 1: Giới thiệu hệ vi xử lý tổng quát - Hồ Trung Mỹ
13-Feb-11
ĐHBK Tp HCM-Khoa Đ-ĐT
BMĐT
GVPT: Hồ Trung Mỹ
Môn học: Vi Xử Lý
Chưꢁng 1
Giꢂi thiꢃu
Vi Xꢀ Lý
hꢃ VXL tꢄng quát
Hꢋ vi mꢌch sꢍ và công nghꢃ
• Integrated Circuits
– Integrated Circuits → IC
– Families of Integrated Circuits :
1.1 GIꢅI THIꢆU Sꢇ PHÁT TRIꢈN
CꢉA CÁC Hꢆ VI Xꢊ LÝ
• TTL
Transistor-Transistor Logic
Emitter-Coupled Logic
• ECL
• MOS
• CMOS
Metal-Oxide Semiconductor
Complementary Metal-Oxide
Semiconductor
– Integrated Circuits classification :
– Various series of the TTL logic family :
Classification Transistor
Typical IC
TTL Series
Prefix Example
74 7486
SSI
MSI
LSI
10 or less
10 to 100
54/74 logic gate
counter, adders
Standard TTL
High-speed TTL
Low-power TTL
Schottky TTL
74H 74H86
74L 74L86
74S 74S86
74LS 74LS86
74AS 74AS86
100 to 1000 small memory ICs,
gate array
VLSI
ULSI
1000 to 106 large memory ICs,
microprocessor
Low-power Schottky TTL
Advanced Schottky TTL
106 and up
Multifunction ICs
Advanced Low-power Schottky TTL 74ALS74ALS86
1
13-Feb-11
– Signal assignment and logic polarity :
– Various series of the CMOS logic family :
Positive Logic
Negative Logic
CMOS Series
Prefix Example
logic level signal level
logic level signal level
Original CMOS
40
4009
1
0
H
L
0
1
H
L
Pin compatible with TTL
74C
74C04
High-speed and
Pin compatible with TTL
74HC 74HC04
logic
value
signal
value
logic
value
signal
value
High-speed and
electrically compatible with TTL
74HCT 74HCT04
1
0
H
L
0
1
H
L
Sꢁ ꢎꢏ khꢍi mꢐt máy tính cꢄ ꢎiꢑn
– Demonstration of positive and negative logic
x y
z
x
y
z
x
y
z
L L
L
0(L) 0(L) 0(L)
0(L) 1(H) 0(L)
1(H) 0(L) 0(L)
1(H) 1(H) 1(H)
1(L) 1(L) 1(L)
1(L) 0(H) 1(L)
0(H) 1(L) 1(L)
0(H) 0(H) 0(H)
L H
H L
H H
L
L
H
Truth table
with H and L
Truth table for
positive logic
Truth table for
Negative logic
x
y
x
y
z
z
x
y
TTL
gate
z
Positive logic
AND gate
Negative logic
OR gate
Sꢁ ꢎꢏ khꢍi máy vi tính
Mꢍt máy tính dꢓa trên vi xꢉ lý thì ꢄꢀꢑc gꢏi là máy vi
tính (microcomputer) và ꢄꢀꢑc gꢏi tꢒt là µC (uC)
Phân loꢌi CPU
Ngꢀꢁi ta có thꢂ chia CPU làm 3 loꢃi :
• Multi-chip CPU (CPU ꢄa chip): Cꢅn 2 hay nhiꢆu chip
LSI ꢄꢂ cài ꢄꢇt ALU và phꢅn ꢄiꢆu khiꢂn cꢈa máy tính.
• Microprocessor (Vi xꢉ lý): ta sꢊ hꢃn chꢋ tꢌ
microprocessor (mP/UP) cho mꢍt chip LSI/VLSI chꢎa
ALU và phꢅn ꢄiꢆu khiꢂn cꢈa mꢍt máy tính.
• Single chip microprocessor (Vi xꢉ lý ꢄơn chip): (còn
gꢏi là microcomputer/microcontroller) là 1 chip
LSI/VLSI chꢎa toàn bꢍ mꢍt máy tính nhꢀ ꢐ hình 1.1, và
thꢀꢁng ꢄꢀꢑc gꢏi tꢒt là MCU (Micro-Controller Unit).
2
13-Feb-11
Tꢄ chꢒc bên trong cꢓa vi xꢀ lý
Thí dꢔ cài ꢎꢕt ngꢖn xꢗp trong bꢐ nhꢂ.
Thanh ghi trꢌng thái (Status Register)
Thanh ghi tích lꢘy (Accumulator)
• Các kꢋt quꢔ cꢈa các phép toán cꢈa ALU
thꢀꢁng ꢄꢀꢑc cꢕt trong thanh ghi tích lꢖy (cꢖng
ꢄꢀꢑc gꢏi là ACC). Thí dꢗ ALU thꢓc thi lꢘnh
ADD (cꢍng) nhꢀ sau:
• Trong khi thꢓc hiꢘn mꢍt sꢙ phép toán sꢙ hꢏc
hoꢇc logic, mꢍt sꢙ ꢄiꢆu kiꢘn nhꢕt ꢄꢚnh phát sinh
mà ꢔnh hꢀꢐng ꢄꢋn trình tꢓ thꢓc thi chꢀơng trình.
• Ngꢀꢁi ta cꢅn phꢔi lꢀu trꢛ các ꢄiꢆu kiꢘn nhꢀ vꢜy
trong mꢍt nhóm các flipflop (hoꢇc thanh ghi)
ꢄꢀꢑc gꢏi là thanh ghi trꢌng thái (status
register) (cꢖng ꢄꢀꢑc gꢏi là thanh ghi mã ꢎiꢙu
kiꢃn) [code condition register]) trong mꢍt
khoꢔng thꢁi gian ꢄꢂ xác ꢄꢚnh trình tꢓ thꢓc thi
chꢀơng trình.
Mꢐt sꢍ cꢚ trong thanh ghi trꢌng thái
Lịch sử phát triển vi xử lý
Thời kỳ đầu
• Cꢁ Z (Zero)
• Cꢁ S (Sign)
• Cꢁ C (Carry)
• Cꢁ HC (Half Carry)
• Cꢁ OV (Overflow)
• . . .
•
1969 - 70 Intel 4004, vi xꢀ lý ꢁꢂu tiên, 4-bit Intel 4040,
nhanh hꢃn 4004
•
•
1971 Intel 8008, phiên bꢄn 8 bit cꢅa 4004
1973 Intel 8080, 10 lꢂn nhanh hꢃn 8008
(Các sꢄn phꢆm tưꢃng tꢇ: Motorola MC6800, Zilog Z80)
•
•
1974 MITS Altair 8800, máy vi tính ꢁꢂu tiên ꢁưꢈc lꢉp trình
bꢊng BASIC ꢁưꢈc phát triꢋn bꢌi Bill Gates và Paul Allen.
1977 Apple II, máy tính gia ꢁình phꢍ cꢉp ꢁꢂu tiên Intel
8085, vi xꢀ lý 8 bit sau cùng
•
•
1978 Intel 8086, vi xꢀ lý 16 bit , nhanh hꢃn nhiꢎu
1979 Intel 8088
3
13-Feb-11
Từ thập niên 1990 trở lại đây
Thꢛp niên 1980
•
1990 Microsoft Windows 3.0 ra ꢁꢏi
• 1980 Motorola 68000
Motorola 68040 ꢁưꢈc triꢋn khai.
•
•
•
1991 Apple và IBM hꢈp tác ꢁꢋ khꢄo sát RISC
1992 Microsoft Windows 3.1 ꢁã trꢌ thành chuꢆn cho các PC.
• 1981 IBM PC vꢝi Intel 8088, chꢃy ꢐ xung nhꢚp 4.77
MHz vꢝi mꢍt ꢞ ꢄꢟa mꢆm 160KB và hꢘ ꢄiꢆu hành MS-
DOS 1.0/1.1
1993 Intel Pentium (80586) ra ꢁꢏi, công nghꢐ MMX ꢁưꢈc cung cꢑp
sau.
• 1982 Intel 80286
•
•
•
•
•
•
1995 Microsoft Windows 95
1995 Intel Pentium Pro (P6)
1997 Intel Pentium II
• 1984 Apple Macintosh, vꢝi Motorola 68000
• 1985 Intel 80386
1998 Intel Pentium II Xeon
1999 Intel Pentium III
• 1987 Macintosh II
2001 Intel Pentium IV
• 1989 Intel 80486 vꢝi tꢙc ꢄꢍ xung nhꢚp 25 MHz cao hơn.
1.2 Sꢜ ꢝꢞ KHꢟI
MꢠT Hꢆ VI Xꢊ LÝ Cꢜ BꢡN
4
13-Feb-11
Chu kꢢ nhꢛn (Fetch)–giꢣi mã (Decode)–
thꢤc thi (Excecution) cꢓa CPU
Các đường tín hiệu kết nối với
một vi xử lý tiêu biểu
Hai tín hiꢐu ꢁiꢎu khiꢋn cꢃ
bꢄn là READ &WRITE
thưꢏng ꢁưꢈc gꢒi là read
strobe (lấy mẫu đọc) &
write strobe (lấy mẫu
ghi).
1.3 CPU
5
13-Feb-11
Các thành phần chính của CPU
Mã hóa các tác vꢔ (hoꢌt ꢎꢐng) cꢓa ALU
Dạng lệnh
•
Các vùng trong lꢐnh
Thí dꢔ: các vi tác vꢔ cꢓa ALU
1. Vùng mã lꢐnh (Op-code): Cho biꢓt tác vꢔ nào sꢕ ꢁưꢈc thꢇc
hiꢐn.
2. Vùng ꢁꢖa chꢗ: chꢗ ꢁꢖa chꢗ bꢘ nhꢙ hoꢚc thanh ghi cꢅa CPU.
3. Vùng cách ꢁꢖnh ꢁꢖa chꢗ (mode): chꢗ cách xác ꢁꢖnh toán hꢛng
hoꢚc ꢁꢖa chꢗ thꢉt.
•
•
Sꢜ vùng ꢁꢖa chꢗ trong lꢐnh phꢔ thuꢘc vào tꢍ chꢝc nꢘi cꢅa CPU.
Có 3 tꢍ chꢝc CPU thông dꢔng nhꢑt:
6
13-Feb-11
Các cách định địa chỉ
(Addressing modes)
Cách ꢀꢁnh ꢀꢁa chꢂ hiꢃu ngꢄm (Implied addressing mode) hay
hàm ý
•
ꢢꢚa chꢠ cꢈa các toán hꢃng ꢄꢀꢑc hiꢂu ngꢅm trong lꢘnh, nhꢀ vꢜy
không cꢅn ꢄꢚa chꢠ cho toán hꢃng ꢄó trong lꢘnh.
Cách ꢎꢥnh ꢎꢥa chꢦ (còn gꢋi là cách ꢎꢥnh vꢥ ꢎꢥa chꢦ)
•
Nꢋu gꢏi tꢒt ꢄꢚa chꢠ thꢜt là EA (Effective Address) thì vꢝi các
lꢘnh ꢄó thꢀꢁng
• Cách ꢄꢚnh ꢄꢚa chꢠ cho biꢋt các quy tꢒc ꢄꢂ diꢡn dꢚch hay
sꢉa ꢄꢞi vùng ꢄꢚa chꢠ cꢈa lꢘnh (trꢀꢝc khi toán hꢃng ꢄꢀꢑc
tham chiꢋu thꢜt sꢓ).
EA = AC hay EA = Stack[SP] (nghꢟa là ꢄꢠnh ngꢣn xꢋp)
Cách ꢀꢁnh ꢀꢁa chꢂ tꢅc thꢆi (Immediate addressing mode)
• Có nhiꢆu cách ꢄꢚnh ꢄꢚa chꢠ ꢄꢂ:
•
Thay vì chꢠ ra ꢄꢚa chꢠ cꢈa toán hꢃng, vꢝi cách này thì toán
hꢃng có sꢤn trong lꢘnh. Do ꢄó:
– cho ngꢀꢁi sꢉ dꢗng lꢜp trình linh hoꢃt.
– sꢉ dꢗng các bit trong vùng ꢄꢚa chꢠ mꢍt cách hꢛu hiꢘu.
– Không cꢅn có ꢄꢚa chꢠ cꢈa toán hꢃng ꢄó trong lꢘnh.
– Tuy nhiên phꢔi chꢠ rõ giá trꢚ toán hꢃng trong lꢘnh.
– ꢢôi khi cꢅn nhiꢆu bit hơn sꢙ bit dành cho ꢄꢚa chꢠ.
– Nhanh chóng có ꢄꢀꢑc giá trꢚ toán hꢃng.
• Sau ꢄây chúng ta sꢊ khꢔo sát các cách ꢄꢚnh ꢄꢚa chꢠ thông
dꢗng trong các CPU.
Cách ꢀꢁnh ꢀꢁa chꢂ thanh ghi
(Register addressing mode)
Cách ꢀꢁnh ꢀꢁa chꢂ gián tiꢃp qua thanh ghi
(Register Indirect addressing mode)
Vùng ꢄꢚa chꢠ trong lꢘnh chꢎa ꢄꢚa chꢠ cꢈa thanh ghi
cꢈa CPU.
- Toán hꢃng cꢅn lꢕy phꢔi là thanh ghi.
- ꢢꢚa chꢠ ngꢒn hơn ꢄꢚa chꢠ bꢍ nhꢝ.
- Tiꢋt kiꢘm vùng ꢄꢚa chꢠ trong lꢘnh.
Trong lꢘnh chꢠ ra thanh ghi chꢎa ꢄꢚa chꢠ bꢍ nhꢝ cꢈa toán hꢃng.
- Tiꢋt kiꢘm sꢙ bit trong lꢘnh vì ꢄꢚa chꢠ thanh ghi ngꢒn hơn ꢄꢚa chꢠ
bꢍ nhꢝ.
- Nhꢜn toán hꢃng chꢜm hơn ꢄꢚnh ꢄꢚa chꢠ thanh ghi hay ꢄꢚnh ꢄꢚa
chꢠ bꢍ nhꢝ.
- ꢢꢚa chꢠ thꢜt EA = [IR(R)] (vꢝi [x] là nꢍi dung cꢈa x).
- Nhꢜn ꢄꢀꢑc toán hꢃng nhanh hơn ꢄꢚnh ꢄꢚa chꢠ bꢍ
nhꢝ.
- ꢢꢚa chꢠ thꢜt EA = IR(R) (IR=thanh ghi lꢘnh;
IR(R): vùng thanh ghi cꢈa IR)
Thanh ghi ꢄꢀꢑc sꢉ dꢗng trong cách này có thꢂ có thêm ꢄꢇc tính
tꢓ ꢄꢍng tꢣng (thêm 1) hoꢇc tꢓ ꢄꢍng giꢔm (bꢝt 1), ꢄꢇc tính này
ꢄꢇc biꢘt có lꢑi khi dùng thanh ghi ꢄꢂ truy cꢜp bꢍ nhꢝ, giá trꢚ
trong thanh ghi ꢄꢀꢑc tꢣng (thêm 1) hoꢇc giꢔm (bꢝt 1) mꢍt cách
tꢓ ꢄꢍng.
7
13-Feb-11
Cách ꢀꢁnh ꢀꢁa chꢂ trꢄc tiꢃp
(Direct addressing mode)
Cách ꢀꢁnh ꢀꢁa chꢂ gián tiꢃp
(Indirect addressing mode)
Trong lꢘnh chꢎa ꢄꢚa chꢠ bꢍ nhꢝ mà có thꢂ ꢄꢀꢑc
sꢉ dꢗng trꢓc tiꢋp vꢝi bꢍ nhꢝ thꢜt.
Vùng ꢄꢚa chꢠ cꢈa lꢘnh chꢠ ra ꢄꢚa chꢠ cꢈa ô nhꢝ
mà chꢎa ꢄꢚa chꢠ cꢈa toán hꢃng.
- Nhanh hơn các cách ꢄꢚnh ꢄꢚa chꢠ bꢍ nhꢝ khác.
- Khi sꢉ dꢗng ꢄꢚa chꢠ viꢋt gꢏn có thꢂ ꢄꢚnh ꢄꢚa chꢠ
cho vùng bꢍ nhꢝ lꢝn vꢝi sꢙ bit tꢀơng ꢄꢙi nhꢥ.
- Vꢝi vùng nhꢝ thꢜt lꢝn thì cꢅn quá nhiꢆu bit cho
ꢄꢚa chꢠ.
- Làm chꢜm viꢘc nhꢜn ꢄꢀꢑc toán hꢃng vì phꢔi
truy cꢜp thêm bꢍ nhꢝ.
- ꢢꢚa chꢠ thꢜt EA = IR(addr) (IR(addr)=vùng ꢄꢚa
chꢠ cꢈa IR)
- ꢢꢚa chꢠ thꢜt EA = M[IR(addr)]
Các cách ꢀꢁnh ꢀꢁa chꢂ tưꢅng ꢀꢆi
(Relative addressing modes)
Các thí dꢔ vꢙ các cách ꢎꢥnh ꢎꢥa chꢦ
Vùng ꢄꢚa chꢠ trong lꢘnh chꢠ ra phꢅn ꢄꢚa chꢠ (ꢄꢚa chꢠ viꢋt gꢏn) mà
có thꢂ ꢄꢀꢑc sꢉ dꢗng cùng vꢝi thanh ghi có ꢄꢆ cꢜp trong lꢘnh ꢄꢂ
tính ra ꢄꢚa chꢠ thꢜt cꢈa toán hꢃng.
- Vùng ꢄꢚa chꢠ trong lꢘnh ngꢒn.
- Có thꢂ truy cꢜp vùng bꢍ nhꢝ lꢝn vꢝi sꢙ bit cho ꢄꢚa chꢠ nhꢥ.
- ꢢꢚa chꢠ thꢜt EA = f(IR(addr), R) (vꢝi R ꢄôi khi ꢄꢀꢑc hiꢂu ngꢅm)
Bit, Byte và word
Vꢝi thꢁi ꢄꢃi sꢙ hiꢘn nay thì thông tin ꢄꢀꢑc sinh ra, truyꢆn
ꢄi và lꢀu trꢛ dꢀꢝi dꢃng nhꢚ phân.
• Bit là ꢄơn vꢚ cơ bꢔn cꢈa thông tin nhꢚ phân (bit=binary
digit). Nó lꢕy giá trꢚ 0 hoꢇc 1. Trong các máy tính sꢙ thì
bit ꢄꢀꢑc truyꢆn ꢄi qua kꢋt nꢙi ꢄiꢘn và ꢄꢀꢑc lꢀu trꢛ trong
tꢋ bào nhꢝ.
1.4 BỘ NHỚ
• Byte là ꢄơn vꢚ lꢝn hơn gꢦm 8 bit.
• Word là nhóm gꢦm nhiꢆu byte (tùy theo quy ꢀꢝc có
thꢂ sꢙ byte là 1, 2, 4, 8,... ).
Theo quy ꢀꢝc thông thꢀꢁng thì word gꢦm 2 byte (hay 16
bit) và word dài gꢦm 4 byte (32 bit).
8
13-Feb-11
Các loại bộ nhớ
Các loại bộ nhớ
•
•
•
•
•
•
•
RAM= Random Access Memory (bꢍ nhꢝ truy cꢜp ngꢧu nhiên)
SRAM (S=Static), DRAM (D=Dynamic)
ROM= Read Only Memory
M= Mask Programmed (ꢄꢀꢑc lꢜp trình bꢨng che mꢇt nꢃ)
P = Programmable (lꢜp trình ꢄꢀꢑc, khꢔ lꢜp trình)
EP = Erasable and Programmable
EEP = Electrically Erasable and Programmable (xóa và lꢜp trình
bꢨng ꢄiꢘn) (E2ROM)
•
•
•
•
PLD = Programmable Logic Device
PLA = Programmable Logic Array (mꢔng logic lꢜp trình ꢄꢀꢑc)
PAL = Programmable Array Logic (logic mꢔng lꢜp trình ꢄꢀꢑc)
LCA = Logic Cell Array (Mꢔng tꢋ bào logic)
Dung lượng bộ nhớ
Các IC ROM thông dꢗng
• Mꢘt bꢘ nhꢙ có ꢁꢘ rꢘng dꢞ liꢐu m bit vꢙi N
ꢁưꢏng ꢁꢖa chꢗ thì sꢕ có dung lưꢈng (tính
theo bit) là 2N x m.
• Dung lưꢈng nhꢙ cꢟng ꢁưꢈc tính theo
kilobyte (KB), megabyte (MB) và gigabyte
(GB) (vꢙi m=8)
1K=210=1024
1M=220=1024K
1G=230=1024M=220K
Mꢘt sꢜ IC SRAM
Mꢘt sꢜ IC DRAM
9
13-Feb-11
Cấu trúc ROM nội và tác dụng của
các ngõ vào điều khiển
ROM 8 x 4 ꢎꢁn giꢣn
Mảng bộ nhớ (Memory array)
Mꢃch hꢩ trꢑ cho bꢍ nhꢝ 16 x 1 vꢝi
mꢔng bꢍ nhꢝ 4 x 4
Tꢍ chꢝc mꢄng 4 x 4 cꢅa bꢘ nhꢙ 16 bit
Little Endian và Big Endian (tt)
Little Endian và Big Endian
Khi kꢋ ꢁánh sꢜ byte trong word thì ta có ꢁꢓn 4 khꢄ nꢢng:
• ꢠánh sꢜ thꢝ tꢇ tꢡ phꢄi sang trái (tꢡ MSB ꢁꢓn LSB)
gꢒi là little endian
•
•
•
•
nhất quán với little endian (TD: họ Intel 80x86)
ꢁánh sꢜ byte tꢡ phꢄi sang trái, ꢁánh sꢜ bit tꢡ phꢄi sang trái.
nhꢑt quán vꢙi big endian (TD: PDP11, TI 9900)
• ꢠánh sꢜ thꢝ tꢇ tꢡ trái sang phꢄi (tꢡ LSB ꢁꢓn MSB)
gꢒi là big endian
ꢁánh sꢜ byte tꢡ trái sang phꢄi, ꢁánh sꢜ bit tꢡ trái sang phꢄi.
không nhꢑt quán vꢙi little endian
ꢁánh sꢜ byte tꢡ phꢄi sang trái, ꢁánh sꢜ bit tꢡ trái sang phꢄi.
không nhất quán với big endian (TD: Motorola 68000)
ꢁánh sꢜ byte tꢡ trái sang phꢄi, ꢁánh sꢜ bit tꢡ phꢄi sang trái.
10
13-Feb-11
Thí dꢔ: thꢝ tꢇ byte trong little
endian và big endian
One Annoying Thing: Byte Order
• Hosts differ in how they store data
– E.g., four-byte number (byte3, byte2, byte1, byte0)
• Little endian (“little end comes first”) ꢀ Intel
PCs!!!
– Low-order byte stored at the lowest memory location
– Byte0, byte1, byte2, byte3
• Big endian (“big end comes first”)
– High-order byte stored at lowest memory location
– Byte3, byte2, byte1, byte 0
• Makes it more difficult to write portable code
– Client may be big or little endian machine
– Server may be big or little endian machine
Endian Example: Where is the Byte?
31
24 23
16 15
8
7
0
1
2
3
4
5
6
8 bits memory
16 bits Memory
32 bits Memory
+1
+0
78
+3 +2 +1 +0
78
1000
1001
1002
1003
78
78
1000
1002
1004
1006
1000
1004
1008
100C
Little-
Endian
1.5 NGOẠI VI
+0
+1
+0 +1 +2 +3
1000
1001
1002
1003
1000 78
1002
1000 78
1004
Big-
Endian
1004
1008
1006
100C
Bus I/O và các module giao tiếp
Phân loại ngoại vi
11
13-Feb-11
• Mꢩi thiꢋt bꢚ ngoꢃi vi có mꢍt module giao tiꢋp tꢀơng
ꢎng vꢝi nó. Module giao tiꢋp có nhiꢘm vꢗ:
– Giꢔi mã ꢄꢚa chꢠ thiꢋt bꢚ (mã thiꢋt bꢚ)
– Giꢔi mã các lꢘnh (tác vꢗ)
– Cung cꢕp các tín hiꢘu cho bꢍ ꢄiꢆu khiꢂn ngoꢃi vi.
– ꢢꢦng bꢍ hóa luꢦng dꢛ liꢘu và giám sát tꢙc ꢄꢍ chuyꢂn dꢛ liꢘu
giꢛa ngoꢃi vi vꢝi CPU hoꢇc bꢍ nhꢝ.
• Lꢘnh I/O tiêu biꢂu có dꢃng:
Bus I/O và bus bꢐ nhꢂ (1/2)
TD: Kꢓt nꢜi bus I/O ꢁꢓn mꢛch giao tiꢓp
•
•
Chꢅc nꢇng cꢈa các bus
- Bus bꢍ nhꢝ: dành cho chuyꢂn thông tin giꢛa CPU và bꢍ nhꢝ.
- Bus I/O: dành cho chuyꢂn thông tin giꢛa CPU và các thiꢋt bꢚ
ngoꢃi vi qua giao tiꢋp I/O
Tꢉ chꢅc vꢊt lý
- Nhiꢆu hꢘ thꢙng sꢉ dꢗng chung mꢍt bus hꢘ thꢙng cho cꢔ bꢍ
nhꢝ và các ꢄơn vꢚ I/O. Sꢉ dꢗng mꢍt bus chung vꢝi các ꢄꢀꢁng
ꢄiꢆu khiꢂn riêng cho mꢩi chꢎc nꢣng hoꢇc dꢃng có nhꢛng
ꢄꢀꢁng ꢄiꢆu khiꢂn chung cho cꢔ 2 chꢎc nꢣng.
- Mꢍt sꢙ hꢘ sꢉ dꢗng 2 bus riêng, mꢍt ꢄꢂ liên lꢃc vꢝi bꢍ nhꢝ, cái
còn lꢃi liên lꢃc vꢝi các giao tiꢋp I/O.
I/O cách ly và I/O ánh xꢌ bꢐ nhꢂ
(Isolated I/O and memory-mapped I/O)
Bus I/O và bus bꢐ nhꢂ (2/2)
Bus I/O
- Liên lꢃc giꢛa CPU và tꢕt cꢔ các ꢄơn vꢚ giao tiꢋp qua bus
I/O chung.
- Giao tiꢋp kꢋt nꢙi vꢝi thiꢋt bꢚ ngoꢃi vi có thꢂ có mꢍt sꢙ
các thanh ghi dꢛ liꢘu, thanh ghi ꢄiꢆu khiꢂn và thanh ghi
trꢃng thái.
- Lꢘnh ꢄꢀꢑc chuyꢂn ꢄꢋn ngoꢃi vi bꢨng cách gꢉi ꢄꢋn thanh
ghi ngoꢃi thích hꢑp.
- Có thꢂ không cꢅn mã chꢎc nꢣng và các ꢄꢀꢁng dò (cꢔm
nhꢜn) (sense lines) (chuyꢂn dꢛ liꢘu, ꢄiꢆu khiꢂn và thông
tin trꢃng thái luôn luôn qua bus I/O chung).
12
13-Feb-11
Giao tiꢗp I/O lꢛp trình ꢎưꢧc
Các vꢨn ꢎꢙ chuyꢑn dꢩ liꢃu
Hoꢌt ꢎꢐng ꢎꢏng bꢐ và bꢨt ꢎꢏng bꢐ
– ꢀꢋng bꢌ (synchronous):
Tꢕt cꢔ các thiꢋt bꢚ có ꢄꢀꢑc thông tin ꢄꢚnh thì tꢌ
ꢄꢀꢁng xung nhꢚp chung.
– bꢍt ꢀꢋng bꢌ (asynchronous):
Không có xung nhꢚp chung.
Chuyꢃn dꢎ liꢏu bꢍt ꢀꢋng bꢌ vꢒi xung strobe
Chuyꢃn dꢎ liꢏu bꢍt ꢀꢋng bꢌ
• Chuyꢂn dꢛ liꢘu bꢕt ꢄꢦng bꢍ giꢛa 2 ꢄơn vꢚ ꢄꢍc lꢜp cꢅn có
các tín hiꢘu ꢄiꢆu khiꢂn truyꢆn giꢛa các ꢄơn vꢚ truyꢆn
thông ꢄꢂ chꢠ thꢁi ꢄiꢂm mà dꢛ liꢘu sꢊ ꢄꢀꢑc truyꢆn.
• Có hai phꢀơng pháp chuyꢂn dꢛ liꢘu bꢕt ꢄꢦng bꢍ:
– Xung strobe: Xung strobe ꢄꢀꢑc cung cꢕp bꢐi mꢍt ꢄơn
vꢚ này ꢄꢂ báo cho ꢄơn vꢚ kia khi viꢘc chuyꢂn dꢛ liꢘu
xꢔy ra.
– Thꢐc hiꢏn bꢑt tay (Handshaking): Mꢍt tín hiꢘu ꢄiꢆu
khiꢂn ꢄꢀꢑc ꢄi kèm vꢝi mꢩi dꢛ liꢘu sꢊ ꢄꢀꢑc truyꢆn ꢄꢂ
chꢠ sꢓ hiꢘn diꢘn cꢈa dꢛ liꢘu. ꢢơn vꢚ nhꢜn trꢔ lꢁi vꢝi
tín hiꢘu ꢄiꢆu khiꢂn khác ꢄꢂ báo nhꢜn ꢄꢀꢑc dꢛ liꢘu rꢦi.
Chuyꢃn dꢎ liꢏu khꢓi ꢀꢌng bꢓi ꢀơn vꢁ ꢀích vꢒi
phương pháp bꢑt tay
Chuyꢃn dꢎ liꢏu khꢓi ꢀꢌng bꢓi ꢀơn vꢁ nguꢋn
vꢒi phương pháp bꢑt tay
13
13-Feb-11
Truyꢙn dꢩ liꢃu nꢍi tiꢗp bꢨt ꢎꢏng bꢐ
Truyꢙn dꢩ liꢃu nꢍi tiꢗp bꢨt ꢎꢏng bꢐ
(Asynchronous serial transfer)
• Có 4 loꢃi truyꢆn dꢛ liꢘu:
- Truyꢆn nꢙi tiꢋp bꢕt ꢄꢦng bꢍ.
- Truyꢆn nꢙi tiꢋp ꢄꢦng bꢍ.
- Truyꢆn song song bꢕt ꢄꢦng bꢍ.
- Truyꢆn song song ꢄꢦng bꢍ.
Bꢍ thu có thꢂ phát hiꢘn ꢄꢀꢑc ký tꢓ dꢓa trên 4 quy tꢒc sau:
1. Khi dꢛ liꢘu không ꢄꢀꢑc gꢉi ꢄi, ꢄꢀꢁng dây ꢄꢀꢑc giꢛ ꢐ trꢃng thái 1
(trꢃng thái nghꢠ).
2. Khꢐi ꢄꢍng truyꢆn ký tꢓ ꢄꢀꢑc phát hiꢘn bꢐi “Start bit” (luôn luôn
bꢨng 0).
• Truyꢔn nꢕi tiꢖp bꢍt ꢀꢋng bꢌ
3. Các bit ký tꢓ luôn luôn theo sau “Start bit”.
4. Sau khi hꢋt ký tꢓ, “Stop bit” ꢄꢀꢑc phát hiꢘn khi ꢄꢀꢁng dây quay
vꢆ trꢃng thái 1 trong khoꢔng thꢁi gian ít nhꢕt 1 bit.
- Sꢉ dꢗng các bit ꢄꢇt biꢘt chèn vào cꢔ 2 ꢄꢅu cꢈa mã ký tꢓ.
- Mꢩi ký tꢓ bao gꢦm 3 phꢅn: bit bꢒt ꢄꢅu (Start bit), các bit
dꢛ liꢘu (Data bits) và các bit dꢌng (Stop bits) (có thꢂ 1,
1½ hoꢇc 2 bit dꢌng) .
Bꢍ thu phꢔi biꢋt trꢀꢝc tꢙc truyꢆn các bit và sꢙ bit thông tin mong muꢙn.
Bꢌ thu phát bꢍt ꢀꢋng bꢌ vꢗn nꢇng UART
(Universal Asysnchronous Receiver-Transmitter)
Các phưꢁng pháp ꢎiꢙu khiꢑn I/O
Có 3 phꢀơng pháp cơ bꢔn ꢄꢂ chuyꢂn dꢛ liꢘu giꢛa máy tính
trung tâm (CPU hay bꢍ nhꢝ) và các thiꢋt bꢚ ngoꢃi vi:
1. Hꢥi vòng (polling) hay còn gꢏi là I/O ꢄꢀꢑc ꢄiꢆu
khiꢂn bꢨng chꢀơng trình (Program-controlled I/O)
2. I/O bꢨng ngꢒt (interrupt-initiated I/O), và
3. DMA (Direct Memory Access=Truy cꢜp bꢍ nhꢝ
trꢓc tiꢋp).
Chú ý: Ngꢀꢁi ta cꢖng có thꢂ kꢋt hꢑp các phꢀơng pháp trên.
Polling hoꢇc I/O ꢀiꢈu khiꢉn bꢊng lꢋp trình
Lꢀu ꢄꢦ vòng lꢇp polling
Kꢪ thuꢜt polling có 2 hꢃn chꢋ:
1. Mꢕt thꢁi gian cꢈa MPU (do kiꢂm tra trꢃng thái cꢈa tꢕt cꢔ các
ngoꢃi vi thꢀꢁng xuyên ).
2. Chꢜm, do ꢄó làm trꢐ ngꢃi trong hꢘ thꢙng thꢁi gian thꢓc, không
thꢥa mãn cho các thiꢋt bꢚ nhanh (thí dꢗ: disks hoꢇc CRT).
14
13-Feb-11
I/O bꢘng ngꢑt (Interrupt)
DMA (Direct Memory Access)
Phꢅn cꢎng DMAC (Direct Memory Access Controller= Bꢍ ꢄiꢆu
khiꢂn truy cꢜp bꢍ nhꢝ trꢓc tiꢋp) ꢄꢀꢑc thiꢋt kꢋ ꢄꢂ thꢓc hiꢘn
chuyꢂn dꢛ liꢘu tꢙc ꢄꢍ cao giꢛa bꢍ nhꢝ và thiꢋt bꢚ.
Do ꢄó, DMAC sꢊ cꢅn sꢉ dꢗng cꢔ hai bus dꢛ liꢘu và bus ꢄꢚa chꢠ.
Bus
1.6 BUS Hꢆ THꢟNG
•
•
Bus có thꢋ hai chiều (bidirectional) hay một chiều (unidirectional)
Nꢓu cꢄ hai dꢞ liꢐu và ꢁꢖa chꢗ ꢁưꢈc truyꢎn trên cùng mꢘt bus thì ngưꢏi ta gꢒi
bus có dồn kênh (multiplexed).
•
Nꢓu hai thiꢓt bꢖ gꢀi thông tin ꢁꢣng thꢏi trên cùng bus thì xꢄy ra tranh chấp bus
(bus contention) và có thiꢓt bꢖ hư.
Cài đặt bus chung với
Bus dꢌn kênh (Multiplexer Bus)
Cài ꢎꢕt bus chung vꢂi
Các bꢌ ꢀꢏm bus 3 trꢗng thái
15
13-Feb-11
Chu kỳ ghi bus (Write Bus Cycle)
Chu kꢢ ꢎꢋc bus (Read Bus Cycle)
Giꢣi mã ꢎꢥa chꢦ (Addressing Decoding)
•
CPU cho phép mꢍt chip bꢍ nhꢝ (hoꢇc thiꢋt bꢚ I/O) chꢠ
khi nó muꢙn liên lꢃc vꢝi nó. ꢢꢂ thꢓc hiꢘn viꢘc này
CPU sꢉ dꢗng mꢃch giꢔi mã ꢄꢚa chꢠ.
•
Các phꢀơng pháp giꢔi mã ꢄꢚa chꢠ:
1. Giꢙi mã ꢀꢄy ꢀꢈ hay toàn phꢄn (Full decoding):
Mꢩi ngoꢃi vi ꢄꢀꢑc gán vꢝi mꢍt ꢄꢚa chꢠ duy nhꢕt. Tꢕt
cꢔ các bit ꢄꢚa chꢠ ꢄꢀꢑc dùng ꢄꢂ ꢄꢚnh nghꢟa vꢚ trí tham
chiꢋu.
1.7 GIꢡI MÃ ꢝꢪA CHꢫ
2. Giꢙi mã mꢌt phꢄn (Partial decoding): Không phꢔi
tꢕt cꢔ các bit ꢄꢀꢑc xꢉ dꢗng trong quá trình giꢔi mã.
Các ngoꢃi vi có thꢂ ꢄáp ꢎng vꢝi hơn 1 ꢄꢚa chꢠ.
Phꢀơng pháp này làm giꢔm ꢄꢍ phꢎc tꢃp trong mꢃch
giꢔi mã ꢄꢚa chꢠ.
16
13-Feb-11
Thí dꢚ:
Thiꢋt kꢋ mꢃch ánh xꢃ 8 chip bꢍ nhꢝ EPROM 2764 khác nhau
(mꢩi EPROM ꢄꢀꢑc tꢞ chꢎc nhꢀ 8K x 8 bits) thành khꢙi bꢍ nhꢝ
64K byte vꢝi ꢄꢚa chꢠ vꢜt lý trong dãi F0000H ꢄꢋn FFFFFH.
Bài giꢙi.
Mꢩi EPROM 2764 có thꢂ ꢄꢀꢑc ánh xꢃ trꢓc tiꢋp vào khꢙi 8 KB
nhꢀ sau
Khꢙi thꢎ 1: F0000 - F1FFFh
Khꢙi thꢎ 2: F2000 - F3FFFH
Khꢙi thꢎ 3: F4000 - F5FFFH
Khꢙi thꢎ 4: F6000 - F7FFFH
Khꢙi thꢎ 5: F8000 - F9FFFH
Khꢙi thꢎ 6: FA000 - FBFFFH
Khꢙi thꢎ 7: FC000 - FDFFFH
Khꢙi thꢎ 8: FE000 - FFFFFH
Bꢣng bꢐ nhꢂ (memory map) và bꢣng I/O
• Bꢣng bꢐ nhꢂ
Bꢔng bꢍ nhꢝ minh hꢏa nhꢛng ꢄoꢃn nào sꢊ ꢄꢀꢑc sꢉ dꢗng
vꢝi RAM, ROM và mꢍt sꢙ trꢀꢁng hꢑp là các thiꢋt bꢚ I/O.
Thí dꢗ:
1.8 ꢝꢪNH THÌ
(Timing)
• Bꢣng I/O hay Vùng I/O
ꢢꢀꢑc tꢞ chꢎc và ꢄꢚnh ꢄꢚa chꢠ nhꢀ vùng nhꢝ. Mꢩi ꢄꢚa chꢠ
tꢀơng ꢎng vꢝi mꢍt cꢞng I/O (thông thꢀꢁng rꢍng 8 bit).
Các quy ước trong giản đồ định thì
17
13-Feb-11
ꢝꢥnh thì ꢎꢋc cꢨp hꢃ thꢍng
Giao tiꢖp DRAM
ꢝꢥnh thì ghi bꢐ nhꢂ
18
13-Feb-11
ꢛꢁnh thì ꢀꢜc vꢒi DRAM
ꢛꢁnh thì ghi vꢒi DRAM
Chưꢅng trình
• Chꢀơng trình (program) là danh sách các lꢘnh
(instruction=lꢘnh, chꢠ thꢚ) hay các phát biꢂu (statement)
ꢄꢂ ꢄiꢆu khiꢂn máy tính hay CPU thꢓc hiꢘn công viꢘc xꢉ
lý dꢛ liꢘu mong muꢙn.
• Có nhiꢆu loꢃi ngôn ngꢛ lꢜp trình:
– Ngôn ngꢛ máy (machine language)
+ Mã nhꢚ phân
1.9 CHꢬꢜNG TRÌNH
+ Mã bát phân hay thꢜp lꢗc phân
– Hꢑp ngꢛ (Assembly Language) (cꢅn có Assembler
[Trìnhdꢚch hꢑp ngꢛ]) ꢁ Mã ký hiꢘu
– Ngôn ngꢛ cꢕp cao (cꢅn có Compiler [Trình biên dꢚch])
Ngôn ngꢍ máy
Mꢍt chuꢩi các mã nhꢚ phân biꢂu diꢡn các công viꢘc mà vi xꢉ
lý sꢊ thꢓc thi. Dꢃng dài các bit có thꢂ ꢄꢀꢑc ꢄơn giꢔn hóa bꢨng
dꢃng sꢙ Hex hay Octal. Ngôn ngꢛ này khó lꢜp trình. Các vi xꢉ
lý khác nhau sꢊ có nhꢛng ngôn ngꢛ máy khác nhau.
•
•
Thí dꢗ:
19
13-Feb-11
Lưu ꢎꢏ chưꢁng trình (Program flowchart)
1.10 VI ꢝIꢭU KHIꢈN
So sánh vi xꢝ lý (MPU) và vi ꢀiꢔu khiꢃn (MCU)
Các giới hạn của vi xử lý
•
MPU:
– ꢢꢀꢑc thiꢋt kꢋ ꢄꢂ thꢓc hiꢘn chꢎc nꢣng CPU trong hꢘ máy vi
tính.
– Cꢅn bꢍ nhꢝ ngoài ꢄꢂ thꢓc thi chꢀơng trình.
– Không thꢂ giao tiꢋp trꢓc tiꢋp vꢝi các thiꢋt bꢚ I/O.
– Tꢜp lꢘnh ꢄꢀꢑc sꢒp xꢋp ꢄꢂ cho phép mã và mꢍt lꢀꢑng lꢝn dꢛ
liꢘu ꢄꢀꢑc chuyꢂn ꢄi giꢛa vi xꢉ lý vꢝi bꢍ nhꢝ và thanh ghi
ngoài.
– Các tác vꢗ tác ꢄꢍng vꢝi nhóm bit không nhꢥ hơn 4 bit.
MCU:
•
•
– ꢢꢀꢑc thiꢋt kꢋ ꢄꢂ làm viꢘc vꢝi mꢃch ngoài tꢙi thiꢂu.
– Tꢜp lꢘnh ꢄơn giꢔn (khoꢔng 255 lꢘnh).
– Các tác vꢗ có thꢂ tác ꢄꢍng lên tꢌng bit.
MCU là máy tính vꢝi tꢕt cꢔ trong mꢍt chip:
MCU = CPU + Bꢍ nhꢝ + Giao tiꢋp I/O
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Vi xử lý - Chương 1: Giới thiệu hệ vi xử lý tổng quát - Hồ Trung Mỹ", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_vi_xu_ly_chuong_1_gioi_thieu_he_vi_xu_ly_tong_quat.pdf

