Phương pháp định vị tức thời Immediate : Định nghĩa: Trong phương pháp định vị này Operand dài 1 hoặc 2 bytes và được sửdụng như số liệu đem vào thanh ghi hoặc để làm phép toán với than
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA ĐIỆN - ĐIỆN TỬ
CHUYÊN ĐỀ VI XỬ LÝ
(GIỚI THIỆU VI XỬ LÝ Z80)
Trang 2BÀI 1 :
CẤU TRÚC HỆ VI XỬ LÝ VÀ TỔ CHỨC
BÊN TRONG CỦA CPU.
I SƠ ĐỒ KHỐI CỦA 1 HỆ P :
1 CPU và các thành phần chính:
- Bộ nhớ chính gồm ROM & RAM
- Các bộ giao tiếp (Input / Output Adapter)
- Các Thiết bị ngoại vi ( Peripheral)
Bus : Data Addr Ctrl
Peripheral
CPU : Là khối liên kết trung tâm, thực hiện các phép toán và điều khiển các
liên kết còn lại thông qua việc thi hành Lệnh
Vậy: Lệnh là một giá trị nhị phân tượng trưng (mã hóa) cho 1 phép tính mà CPU
thực hiện được, giá trị này do nhà sản xuất qui định.
Bộ nhớ chính : Chứa số liệu và Lệnh của CPU
Các bộ giao tiếp : Là những phần tử mạch trung gian cho phép CPU điều khiểncác Thiết bị ngoại vi (bàn phím, máy in, đèn chỉ thị, … )
2 Hệ thống Bus :
Address Bus : Là Bus 1 chiều do CPU gởi ra Số bit của Addr sẽ qui định số ô nhớ
mà CPU truy xuất được hay còn gọi là khả năng định vị (mapping) của CPU
Data Bus : Là Bus 2 chiều, là nơi chuyển lệnh hoặc số liệu trong quá trình hoạt
động của CPU
Control Bus : Mỗi đường là 1 chiều (nhưng quan điểm theo kiểu tổng quát là 2
chiều), nó chứa các tín hiệu của CPU để điều khiển các linh kiện xung quanh
II CẤU TRÚC CỦA CPU:
Trang 3 Dựa vào số bit của Data Bus để phân loại CPU:
- CPU 8 bit: 8080, 8085 của Intel
- CISC ( Complete Instruction Set Computer)
- RISC ( Reduced Instruction Set Computer)
2 Cấu trúc :
Gồm 3 phần chính:
- Tập thanh ghi ( Register Set)
- Bộ số học và Logic ( Arithmetic & Logic Unit)
- Khối điều khiển và giải mã lệnh
a Tập thanh ghi:
Chức năng : Đóng vai trò là những ô nhớ nằm bên trong CPU Mỗi thanh ghi
được nhà sản xuất qui định cho người sử dụng bằng 1 tên gọi (A, B, C, …) Cácthanh ghi là cơ sở (nơi chứa số liệu) cho đa số các phép toán mà CPU thựchiện
Phân loại :
+ Các thanh ghi địa chỉ: liên quan đến Addr Bus
+ Các thanh ghi dữ liệu: liên quan đến Data Bus
Các thanh ghi thường gặp trong CPU 8 bit :
a1 Thanh ghi PC ( Program Counter)
+ Số bit của PC = Số bit của Addr Bus
+ PC chứa địa chỉ của Lệnh mà CPU đang thực hiện
+ PC tự động tăng ghi lên 1 sau mỗi byte thực hiện
Thường khi mới Reset CPU giá trị thanh ghi PC = Hằng số
***Nhận xét:
- Các lệnh mà người sử dụng muốn CPU thực hiện tuần tự theo thời gian phảiđược đặt theo thứ tự tăng dần của địa chỉ trong bộ nhớ
- Sự thay đổi giá trị của thanh ghi PC bởi một nguyên nhân nào đó chúng sẽ
làm chuyển hướng việc thi hành Lệnh của CPU
a2 Các thanh ghi đa năng ( General Purpose):
- Số bit bằng độ rộng của Data Bus
- Các thanh ghi này thường được dùng trong các lệnh của CPU (tính toán,chuyển dời dữ liệu, …)
- Trong số các thanh ghi đa năng, có 1 thanh ghi đặc biệt gọi là bộ tích lũy
(gọi là thanh ghi A) – Accumulator Đặc biệt ở chỗ là những phép toán chỉtiến hành được trên thanh ghi A mà không thực hiện được trên các thanh ghikhác
Trang 4a3 Thanh ghi Cờ ( Flag – Condition):
- Thanh ghi này thường không tham gia vào các phép toán nhưng nó phản ánhmột giá trị đặc biệt của kết quả thu được sau phép toán đó
- Mỗi bit trong thanh ghi có ý nghĩa độc lập và thường được gọi là 1 cờ
+ Các Cờ thường gặp:
Quan điểm về số (+) và (-) trong hệ P:
Định nghĩa: Nếu xem các số đang thao tác là 1 số có dấu và nếu xét trong
một độ dài hữu hạn bit thì 2 số đối nhau được định nghĩa như sau: X + Y = 0.
Ví dụ : Nếu xét theo quan điểm trên thì FF = - 1
vì FF + 01 = 00Người ta chứng minh được : - X = X + 1Nhận xét:
Ví dụ: 00 7F:F: biểu diễn số +0 +127F:
80 FF: biểu diễn số -128 -1Giá trị của Cờ S thực chất là giá trị MSB của kết quả, do đó nếu trongtrường hợp tính toán với số có dấu thì Cờ S được dùng để xác định xem sốđó thuộc tầm (+) hay (-)
*Cờ O (OverFlow):
Cờ O chỉ sử dụng trong các phương trình tính toán với số có dấu
1 : Phản ánh hiện tượng tràn (quá tầm vực của số đó)
Trang 5a4 Thanh ghi chỉ số:
- Nó được dùng trong phép định vị chỉ số
a5 Nhà hầm và thanh ghi con trỏ nhà hầm Stack Pointer (SP):
Khái niệm : Nhà hầm là một vùng nhớ RAM được CPU chọn làm nơi chứatạm các giá trị của các thanh ghi khi cần thiết (Khi thi hành lệnh cất thanh ghi)và khi phục hồi lại chúng
Cơ chế hoạt động :
+ Nhà hầm được quản lý theo cơ chế địa chỉ: Địa chỉ của vùng nhớ RAM đượcdùng làm nhà hầm phải được nạp vào thanh ghi SP Do đó 1 lệnh nào đó cóliên quan đến nhà hầm sẽ được thực hiện theo địa chỉ này
Ví dụ: lệnh cất thanh ghi A thì CPU sẽ đem nội dung của thanh ghi A vào ô
nhớ có địa chỉ nằm trong SP (ký hiệu là [SP] )
+ Nhà hầm hoạt động theo nguyên tắc giảm, nghĩa là sau lệnh cất nội dung củamột thanh ghi 8 bit giá trị của thanh ghi SP sẽ giảm 1
+ Phục hồi lại giá trị của thanh ghi đem cất trước đó bằng cách đem nội dung ônhớ có địa chỉ chứa trong SP +1 về lại thanh ghi A sau đó tăng SP lên 1
+ Nhà hầm hoạt động theo nguyên tắc LIFO ( Last In First Out), nghĩa là thanhghi nào cất vào trước sẽ được lấy ra sau
b Nguyên tắc tổ chức của ALU :
AB
SC
AB
Ctr
Trang 6 Mạch cộng toàn phần n bit mở rộng:
Trang 78 bit
Reg1(A)
Reg2
S0 S1 S2 S3
BộTíchLũy(Acc)
Cờ
Các tín hiệu từ khốigiải mã lệnh
Trang 8c Nguyên lý khối giải mã lệnh :
III KHẢO SÁT 1 SỐ CPU ĐIỂN HÌNH:
1 Z.80 CPU của Zilog :
Thanh ghi lệnh (chứa mã lệnh)
ROM Built In
(chứa Micro Code)
Các tín hiệu điều khiển
Trang 9 A0 A15 : 16 bit của Addr Bus (3 trạng thái) Có 216B = 64 KB ô nhớ.
D0 D7F: : 8 bit của Data Bus (2 chiều – 3 trạng thái)
Điều kiện về điện :
+ CK (Clock): Sóng vuông (biên độ TTL) f 4 MHz
+ RESET: có độ rộng khoảng vài chục s, lúc reset thì PC = 0000h
CPU điều khiển các linh kiện ngoài:
+ RD (ReaD)= 0: Data Bus là vào đối với CPU
+ WR (WRite) :
WR = 0 : Data Bus là ra đối với CPU
Lưu ý : Đọc lệnh RD = 0
Xác định
Thi hành lệnh : RD = 0 hoặc WR = 0
MERQ (MEmory ReQuest):
+ Khi MERQ = 0 đảm bảo 1 giá trị ổn định trên Addr Bus
MERQ = 0: Đọc lệnh từ bộ nhớ
+ Cụ thể
MERQ = 1: Thi hành lệnh thuộc nhóm LD
+ IORQ ( In Out ReQuest):
- Chân này = 0: Báo hiệu 1 giá trị ổn định trên Addr Bus
= 0: Thi hành lệnh thuộc nhóm IN / OUT
- Cụ thể
= 1: Trạng thái phục vụ ngắt
Nhóm chân thông báo trạng thái CPU:
+ M1 ( Machine Cycle 1 ):
16 States
M1 = 0 : Nếu CPU đang ở chu kỳ máy 1
Nhận xét: M1 và MERQ có thể cùng = 0
+ HALT = 0: Báo hiệu CPU ngưng hoạt động
Lúc này CPU chỉ hoạt động lại khi có tín hiệu Reset hoặc có một hiện tượng ngắt xảy ra
+ RFSH ( ReFreSH): Xem giản đồ thời gian
Nhóm chân điều khiển trạng thái của CPU:
+ WAIT = 0 : CPU sẽ kéo dài việc thi hành hoặc đọc lệnh hiện tại cho đến khi WAIT = 1
+ INT ( Interrupt)
+ NMI ( Non Maskable Int )
Trang 10+ BUSRQ ( BUS ReQuest) = 0: CPU sẽ đưa tất cả các chân lên 3 trạng thái và thông báo bằng tín hiệu BUSACK ( ACKnownlegde) = 0.
* Tập thanh ghi của Z-80:
- Tập thanh ghi phụ ( có dấu phẩy): A’, B’, … Cất hết dữ liệu của các thanh ghi
đa năng khi cần thiết ( như một nhà hầm nhỏ )
- Thanh ghi chỉ số: IX, IY
- Thanh ghi I: Dùng trong cơ chế xử lý ngắt
- Thanh ghi R: Làm tươi RAM động
2 6802 của Motorola :
- A0 A15
- D0 D7F:
- Điều kiện về điện:
+ Không có chân Clock mà có mạch Clock bên trong, có thể mắc mạch dao độngthạch anh tại X1, X2 như sau:
+ Reset: tích cực ở mức logic 0
- Nhóm chân CPU điều khiển linh kiện bên ngoài
Giống với Z80IX
X1
X2
Fc = 4fclk Tclk = 4Tc
Trang 11+ VMA (Valid Memory Address):
Khi WMA = 1: Giá trị ổn định trên Addr Bus
- Nhóm chân điều khiển CPU:
HALT giống như BUSRQ của Z80
BA ( Bus Available) tương đươngBUSACK của Z80
MR ( Memory Ready): Tương tự WAIT của Z80
- Đặc biệät trong 6802 có 32 bytes RAM mang địa chỉ từ 0000 đến 001F (cố định) vàđược cho phép bởi RE ( Ram Enable) = 1 Trong đó 16 bytes đầu tiên có chânnguồn riêng là Vcc Standby
Tập thanh ghi :
A
B
Định nghĩa: Một vectơ là 2 ô nhớ được sử dụng làm địa chỉ của 1 ô nhớ khác
+ Chú ý: Khi mới Reset giá trị PC của 6802 là nội dung của 2 ô nhớ có địa chỉ là
FFFF và FFFE Cơ chế này gọi là cơ chế Vectơ Reset
(Bộ nhớ)
R/WRD
Trang 12Top View
VMA
BAMR
Gnd
Trang 13BÀI 2:
TẬP LỆNH CỦA CPU VÀ HỢP NGỮ
(Assembly Language)
************
I CÁC THÀNH PHẦN CỦA 1 LỆNH:
Dưới dạng mã số, 1 lệnh gồm 2 trường:
- Do nhà sản xuất qui định - Do người sử dụng qui định
Ví dụ :
Mã gợi nhớ Ý nghĩa Op_ Code Operand
LD A, n Nạp vào A một 3E n( 00 FF)
byte có giá trị n
II CÁC PHƯƠNG PHÁP ĐỊNH VỊ ĐỊA CHỈ (Address Methods):
1 Khái niệm về định vị địa chỉ:
Phép định vị địa chỉ là các cách thức mà CPU sử dụng Operand trong 1 lệnh(Ví dụ như 1 số liệu hoặc như 1 địa chỉ)
2 Các phương pháp định vị địa chỉ:
2.1 Phương pháp định vị tức thời ( Immediate) :
Định nghĩa: Trong phương pháp định vị này Operand dài 1 hoặc 2 bytes và được sửdụng như số liệu đem vào thanh ghi hoặc để làm phép toán với thanh ghi
Ví dụ : LD A, 06h
LD HL, 2000h2.2 Phương pháp định vị thanh ghi ( Register ):
Định nghĩa: Trong phương pháp định vị này không có Operand vì chỉ là những thaotác liên quan giữa các thanh ghi với nhau
Ví dụ : LD A, B
ADD A, C2.3 Phương pháp định vị trang 0:
Định nghĩa: Là phương pháp định vị trong đó Operand dài 1 byte và là byte thấp của
1 địa chỉ một ô nhớ cần truy xuất Byte cao của địa chỉ này được CPU xem như =00
Ví dụ : - Định vị thường: LD A, ( 0060h)
- Định vị trang 0: LD A, ( 60h)Định vị này không có trong CPU Z80
2.4 Phương pháp định vị trực tiếp mở rộng ( Extended Direct):
Định nghĩa : Trong phương pháp định vị này Operand dài 2 byte và được sử dụngnhư 1 địa chỉ của 1 ô nhớ cần truy xuất
Ví dụ : LD A, ( 0060h)
LD BC, (2000h)Lưuý : Phương pháp định vị này chỉ áp dụng cho 1 số thanh ghi nào đó (xem phần
nhận xét về sau cho từng CPU)
2.5 Phương pháp định vị gián tiếp qua thanh ghi ( Indirect Reg):
- Tượng trưng cho
thao tác của lệnh - Là số liệu cụ thể (nếucó) của lệnh
Trang 14Định nghĩa : Trong phương pháp định vị này địa chỉ của ô nhớ cần truy xuất là nội dung của 1 cặp thanh ghi 8 bit hoặc 1 thanh ghi 16 bit mà không phải là thanh ghi chỉsố Lệnh thuộc loại này không có Operand.
Ví dụ : LD B, ( HL)
LD (DE) , A
2.6 Phương pháp định vị ẩn ( Implied):
Định nghĩa : Người ta xem những lệnh mà ở dạng gợi nhớ phép toán dường như thiếu 1 toán hạng là phương pháp định vị ẩn
Ví dụ : SUB (HL)
AND DToán hạng còn lại được hiểu là thanh ghi A
2.7F: Phương pháp định vị theo bit (Bit):
Định nghĩa : Là phương pháp định vị của những lệnh mà đối tượng thao tác là 1 bit của một thanh ghi hoặc một ô nhớ
Ví dụ : SET 4, D b4 của D = 1
RES 5, C b5 của C = 0
2.8 Phương pháp định vị chuỗi ( String) :
Định nghĩa : Là phương pháp định vị của những lệnh có khả năng tự lặp lại
HL + 1 HL
DE + 1 DE
BC – 1 BC LDIR : Lặp lại LDI cho đến khi BC = 0
2.9 Phương pháp định vị chỉ số ( Index):
Định nghĩa: Là phép định vị trong đó Operand dài một byte và được sử dụng để cộng với thanh ghi chữ số IX, IY để tạo thành địa chỉ của ô nhớ cần truy xuất
Ví dụ :
IX = 2304h
LD A, ( IX + 00FEh)
LD A, (2302h): Địa chỉ lùi lại so với IX
2.10 Phương pháp định vị tương đối:
Khái niệm về các lệnh chuyển điều khiển chương trình :
Lệnh chuyển điều khiển chương trình là những lệnh mà sau khi thi hành, giátrị của thanh ghi PC có thể bị thay đổi một cách đột ngột
Ví dụ : Lấy giá trị tuyệt đối của 1 giá trị chứa trong bộ tích lũy (A):
Trang 15 Phương pháp định vị tương đối :
Định nghĩa : phương pháp định vị này dùng cho những lệnh chuyển điều khiểnchương trình trong đó Operand dài một byte và dùng để tính giá trị mới cho thanhghi PC theo công thức sau:
PC mới = PC cũ + 2 + OperandChú ý:Việc cộng Operand trong công thức này giống như trong phép định vị chỉ số
Ví dụ : Cũng ví dụ trên nhưng chỉ thay đổi một lệnh
0000 : CB 7F:F BIT 7F:, A
0002 : 2802 JP Z, kt ( Khác JR NZ, kt)
0004 : ED 44 NEG
0006 : 7F:6 kt : HALTTừ : PC mới = PC cũ + 2 + Operand bỏ đi byte cao này
Operand = 0006 – 0002 – 2 = 00 02
Nhận xét : Như vậy trong phương pháp định vị tương đối Operand diiễn tảkhoảng cách về địa chỉ từ lệnh nhảy đến lệnh muốn nhảy đến, khoảng cách nàykhông được > + 127F: và < - 128 so với địa chỉ của lệnh nhảy
3.Các bước thi hành 1 lệnh:
Ví dụ: Xét lệnh sau:
Mã gợi nhớ Ý nghĩa Mã máy Trong bộ nhớ (Địa chỉ đầu là 0000h)
LD (2000h),A Nạp nội dung 32 2000 0000 32
của A vào ô nhớ 0001 00 có địa chỉ là 2000h 0002 20
Giai đoạn 1: Đọc lệnh ( Op – Code Fetch)
- B1 : Giá trị của thanh ghi PC được gởi ra Addr Bus
- B2 : Sau một khoảng thời gian tín hiệu (đường) Read (RD) được đưa xuống thấp
- B3 : Sau đó giá trị của Data Bus được đưa vào thanh ghi lệnh
- B4 : Byte thấp của PC được gởi đến ALU
- B5 : Giá trị ở ALU được tăng 1
Trang 16- B6 : Giá trị ở ALU được đem về byte thấp của PC
- B7F: : Byte cao của PC được gởi đến ALU
- B8 : Nếu cộng ở B5 không có nhớ thì nhảy đến B.10
- B9 : / Phép / ghi ở ALU được tăng 1
- B.10 : Giá trị ở ALU được đem về byte cao của PC
Sau đó CPU sẽ tiếp tục đọc 2 byte nữa do ý ngfhĩa của byte ở B3 (Byte đại diện cho lệnh) sinh ra
- B.11 B.20 : Cũng gống như từ B1 B.10 nhưng giá trị đọc về không chứa vào thanh ghi lệnh
- B.21 B.30: Giống như B.11 B.20
Giai đoạn 2:
- B.31 : 2 bytes đọc được trong B.11 B.30 được gởi ra Addr Bus
- B.32 : Giá trị của thanh ghi A sẽ được ghi vào ô nhớ có địa chỉ đã chứa
IV PHÂN TÍCH TẬP LỆNH :
Nhóm 1 : Chuyển dời dữ liệu 8 bit
Dạng : LD Dest, Source
Chú ý :
-Phép định vị trực tiếp mở rộng chỉ dùng được cho thanh ghi A
-Nếu dùng cặp BC hoặc DE làm địa chỉ của 1 ô nhớ thì toán hạng còn lại chỉ có thểlà A
-Đa số các lệnh này không tác động đến Cờ trạng thái
Nhóm 2 : Chuyển dời dữ liệu 16 bit
Dạng : LD Dest, Source
16 bit (hoặc địa chỉ của 1 ô nhớ)Nhận xét : Nhóm này chỉ sử dụng cho định vị tức thời và định vị trực tiếp (mở rộng)
Nhóm 3 : Cất và phục hồi thanh ghi
Cặp 8Dạng : POP, PUSH
Thanh 16
B [ Sp – 1]
C [Sp – 2 ]
Sp – 2 Sp[Sp] C[Sp – n] B
Sp + 2 Sp
Nhóm 4 : Số học và Logic 8 bit
+ Nhóm số học :
- Dạng cộng ADD A, s A + s A
Với s là 1 thanh 8, (HL), (IX + d), (IR + d), 1 giá trị 8 bit
- Dạng cộng ADC A, s A + s + Cờ C A
- Dạng trừ :
SUB s A – s ASBC s A – s – Cờ C A
- PUSH BC
- POP BC
Trang 17Chú ý : Hầu hết các lệnh trên đều tự động tác động đến Cờ
Nhóm lệnh số học 16 bit :
Với S : BC, AL, DE, IX, IY hoặc SP
Nhận xét : Cẩn thận với sự tác động đến Cờ của các lệnh thuộc nhóm này
Nhóm Shift và Rotate :
+ Phép Shift và Rotate :
C C
Trang 18+ Shift trái 1 bit nhân 2
Shift phải 1 bit chia 2
+ Lệnh Shift và Rotate :
SLA s A : Anthmatic
- Shift : SRA s L : Logic
SRL sVới s là thanh ghi 8 bit, (HL), (IX+d), (IY+d)
- Rotate : RLC s
+ Không qua C : RCC s
Với s như đã nói ở trên
+ Có qua Cờ C : RL s
RR s
Nhóm lệnh nhảy :
- Không điều kiện : JP nn
+ Định vị không tương đối : JP (IX)
+ Định vị tương đối : JR nn
- Có điều kiện : JP Z, nn JP NZ, nn
+ Không tương đối : JP C, nn JP NC, nn
JR NZ, nn JR C, nn + Tương đối : JR NC, nn JR Z, nn
- Đặc biệt : DEC B
DINZ nn JR NZ, nn
Ví dụ 1 : Viết chương trình nhân 2 giá trị
trong A & B, kết quả chứa trong HL
D E B
HL HL + DE
A A - 1
A = Stop
A =
NYY
N
Trang 19Ví dụ 2 : Viết chương trình chia 2 giá trị
trong A cho B (giả sử B 0), thương số
đặt ở H và số dư đặt ở L
Nhóm các lệnh đặc biệt :
RLD (Rotate Left Digit)
- Ý nghĩa:
.
- RRD :
Các lệnh kiểm tra bit :
BIT b, s Bit b của s đưa vào Cờ ZSET b, s Bit b của s = 1
RES b, s Bit b của s = 0Trong đó : s là thanh ghi 8 bit, (HL), (IX + d), (IY + d) và b từ 0 đến 7F:
Nhóm lệnh CALL và RET :
Chương trình con (Subroutine, Procedure) Là một đoạn lệnh riêng biệt thựchiện một bài toán nào đó được đặt rời chương trình chính Khi cần sử dụng,chương trình chính dùng lệnh CALL để thực hiện chương trình con tương ứng,chương trình con phgải kết thúc bằng lệnh RET để có thể quay về chương trìnhchính
CALL Địa chỉ Ctc PUSH PC
JP nn (Địa chỉ CTC)
RET (Không có Operand) POP PC
- Lưu ý : Lệnh RET chính là POP PC trong đoạn chương trình chính SPphải cố định, nghĩa là không có sự vi phạm nào ở Stack
Trang 20Nhóm lệnh chuỗi :
(HL) (DE)
- LDI HL HL + 1 & DE DE + 1
BC BC – 1
- LDIR : Lặp lại LDI đến khi BC = 0
chuyển dữ liệu (từ) vùng nhớ từ (HL) sang (DE) với chiều dài BC
Nhận xét :
- Sau lệnh CPIR thì ô nhớ có địa chỉ (HL) –1 là ô nhớ đầu tiên = A
Và lưu ý:
Nếu BC > 1 và ô nhớ cuối cùng là ô cần tìm thì kết quả không đúng
- Tương tự cho 2 lệnh CPD và CPDR
Các lệnh Restart :
- Dạng : RST p CALL p
Với p có thể là : (00,08,10,18,20,28,30,38)h
- Nó có ưu điểm là mã lệnh chỉ có 1 byte
Ví dụ : Cho một bảng tra mã 7F: đoạn có địa chỉ đầu là table Viết chương trình đổi 1byte số Hexa trong thanh ghi A ra 2 byte mã 7F: đoạn chứa vào H và L
Trang 21+ Xét trường hợp đổi 1 Nibble ra mã 7F: đoạn
Lập lại 2 lần cho việc đổi 1 nibble trong A ra mã 7F: đoạn
Tra dò bảng
IX IX + A
Trang 22BÀI 3:
GIẢI MÃ ĐỊA CHỈ
*********
I ĐẶT VẤN ĐỀ :
Khi ghép nhiều linh kiện vào một CPU người thiết kế phải kiểm soát sao cho: Vớimột giá trị trên Addr Bus thì chỉ cho phép 1 trong các chân CE của các linh kiện làbằng mức logic tích cực (thường là mức 0) Vấn đề này được giải quyết bằng cáchdùng những đường chỉ cao (còn dư) để điều khiển các chân CE
II CÁC PHƯƠNG PHÁP:
Ví dụ: Xét vấn đề ghép 1 ROM 2K (27F:16) và
1 RAM 2K (6116) vào CPU Z80
Cách 1 : Dùng 1 đường địa chỉ cao để kiểm soát 1 chân CE
Y7F:
CE
A
A10D0D7F:
OE
A
A10D0D7F:
RD
Trang 23-Đối với ROM:
Khái niệm về bản đồ địa chỉ ( Memory Map) :
Một cách khác :
2K - ROM
2K - RAM
: 0000h: 07F:FFh
: 2000h: 27F:FFh: FFFFh
WR
MERQ RD
RAM
C
ABC
Trang 24Một cách linh hoạt khác :
Nhờ 7F:4 LS85 mà ta có thể thay đổi giá trị của B3 … B0 do đó dẫn đến thay đổi được các địa chỉ A3 …A0
CE
Trang 25- Phân loại :
+ Dựa vào dạng tín hiệu gởi ra thiết bị ngoài (và ngược lại):
song song (Parallel)nối tiếp ( serial)+ Dựa vào phương pháp làm việc với CPU
Ngắt (Interupt)
DMA ( Direct Memory Access)
II KHẢO SÁT MỘT SỐ BỘ GIAO TIẾP THÔNG DỤNG :
1 Giao tiếp song song :
(1) PPI 8255 của Intel
Sơ đồ chân :
Nhóm giao tiếp với CPU
- A0, A1 : Các đường địa chỉ ( Addr Bus)
- D0 …… D7F: : Các đường dữ liệu (Data Bus)
- RD, WR : Các chân đọc , viết
Từ mạch Reset
Từ
PPI 8255
Trang 26Nhóm chân Poot : Gồm 3 Port
- Port A : PA0 PA7F:
- Port B : PB0 PB7F:
- Port C : PC0 PC7F:
Các chân điều khiển :
- Reset : Ở mức cao
Lưu ý : Khi mới Reset thì cả 3 Port đều ở trạng thái ra
- CS (Chip Select) : Giống như chân CE của ROM – RAM định địa chỉ chọn
Vai trò của thanh ghi điều khiển :
Giá trị trong thanh ghi điều khiển sẽ quyết định chiều vào, ra của các Port(giá trị này còn gọi là từ điều khiển (Control Word)) do đó về mặt chương trìnhtrước khi đọc hoặc gởi dữ liệu ra các Port phải nạp vào thanh ghi điều khiển 1 giátrị thích hợp với mạch đã thiết kế Công việc này gọi là khởi tạo ( Initialization)cho 8255
PAPBPCCSChân Y2
của 7F:4138
Địa chỉ:
Port A: 4000hPort B: 4001hPort C: 4002h
CR : 4003hCR
1: IN0: OUT1: IN0: OUT
Trang 27CPL ; đảo giá trị
LD (4000h), A
JP ReadKey
Ví dụ 2 :
- Cho sẵn : * Chương trình Delay
* Bảng tra mã 7F: đoạn có địa chỉ đầu là table
- Viết chương trình tăng đến theo qui luật thập phân
Từ
CPU
Y2 của
74138
Trang 28Giải:
Start: LD HL, table
LD B,10h
LD a, (HL)Cont : LD (4000h) , A
CALL DelayINC HLDBC B
JP NZ , Cont
JP StartBài tập 1 :
Tương tự như vcí dụ 2 nhưng mở rộng cho 2 đèn Led và cộng tăng theo qui luậtthập phân
JP NZ , L1
LD HL , Table
LD B ,10hINC IXDEC C
Trang 30Sơ đồ Kit – Z 80
2 Giải mã địa chỉ cho Port :
So sánh 2 mạch giải mã (Ghép vào cùng 1 CPU)
Y7F:
Y7F:
VCC
CS8255
Tương ứng
LD
Tương ứng IN/OUT
CS8255
Trang 31Trong mạch thứ nhất 8255 sẽ được điều khiển bởi dạng lệnh LD trong khi đó ở mạchthứ hai 8255 lại bị điều khiển bởi lệnh IN/OUT Do đó người ta gọi mạch dạng 1 là: I/Omapped memory, và dạng mạch hai là: I/Oø mapped.
PIA 6821 của Motorola
* Sơ đồ chân :
* Lập trình cho 6821:
-Ý nghĩa của RS0 và RS1 :
Chỉ với 22 = 4 đường địa chỉ mà trong IC này có tới 6 thanh ghi:
Nhóm A
Nhóm B
PIA 6821
RS1
PBE
Trang 32-Vai trò của CRA và CRB :
Bit b2 của CRA (B) dùng để phân định địa chỉ cho DDRA (B) và Port A (B)
b2 = 0 : Địa chỉ thuộc về DDRA (B)
b2 = 1 : Địa chỉ thuộc về Port A (B)
-Vai trò của DDR :
DDRA (B)
Port A (B) Mỗi bit trong thanh ghi DDR sẽ qui định chiều vào ra cho chân Port tương ứng
Ví dụ : Viết đoạn lệnh khởi tạo 6821 để mỗi Port có các đường vào ra xen kẻ Giả
sử địa chỉ đầu của 6821 là 4000h