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 đủ
pdf 21 trang myanh 26260 Free
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:

  • pdfbai_giang_vi_xu_ly_chuong_1_gioi_thieu_he_vi_xu_ly_tong_quat.pdf