Sự phát triển đi lên vượt bậc của ngành kỹ thuật máy tính và điện tử hiện nay đã được minh chứng cụ thể qua cuộc sống hằng ngày của chúng ta trong tất cả các lĩnh vực.
Việc ứng dụng máy vi tính vào kỹ thuật đo lường và điều khiển đã đem lại những kết quả đầy tính ưu việt. Các thiết bị, hệ thống đo lường và điều khiển ghép nối với máy tính có độ chính xác cao, thời gian thu thập số liệu ngắn, nhưng đáng quan tâm hơn là mức độ tự động hoá trong việc thu nhận và xử lý dữ liệu.
Kỹ thuật số ra đời đã khắc phục được các khuyết điểm của kỹ thuật tương tự, làm cho các bộ phận máy móc trở nên đơn giản, gọn nhẹ, ít tốn kém năng lượng và xử lý thông tin nhanh, chính xác hơn so với kỹ thuật tương tự.
Tuy vậy, nếu sử dụng các bộ điều khiển dùng các IC số chúng vẫn còn mắc một số khuyết điểm mà so với kỹ thuật vi xử lý nó vẫn tồn tại như:
- Kích thước lớn.
- Năng lượng tiêu thụ lớn.
- Tính mềm dẽo thấp, khó thay đổi.
- Khó sửa chữa, bảo trì.
Vi xử lý là một vi mạch điện tử có mật độ tích hợp cao, trong đó gồm các mạch số có khả năng nhận, xử lý và xuất dữ liệu. Đặc biệt là quá trình xử lý dữ liệu được điều khiển theo một chương trình gồm tập hợp các lệnh từ bên ngoài mà người sử dụng có thể thay đổi được một cách dễ dàng. Một vi xử lý có thể thực hiện rất nhiều yêu cầu điều khiển khác nhau.
Kỹ thuật vi xử lý ra đời với sự kết hợp giữa phần cứng và phần mềm đã làm cho hoạt động của các mạch điện trở nên mềm dẽo hơn với những phần mềm rất linh hoạt mà ta có thể sửa chữa, thay đổi hoặc bổ sung làm cho chương trình điều khiển thêm phong phú tùy theo nhu cầu của người sử dụng.
Kỹ thuật vi xử lý có tính phức tạp trong hoạt động, thiết kế nhưng lại rất kinh tế vì giá thành hạ và kích thước chiếm chỗ không nhiều, có dung lượng cao. Ngoài ra về mặt kỹ thuật cũng hơn hẳn kỹ thuật số vì quá trình hoạt động rất mềm dẽo, tốc độ xử lý cao và lại có thể mở rộng tính năng hoạt động sau này cho mạch điện. Đây là ưu điểm rất thuận lợi mà kỹ thuật vi xử lý mang lại.
Chúng em xin chân thành cảm ơn Thầy Nguyễn Xuân Minh đã tận tình hướng dẫn để hoàn thành luận văn này. Chúng tôi cũng xin chân thành cảm ơn các bạn bè đã đóng góp ý kiến và chỉ dẫn trong khi thực hiện đề tài.
Vì trình độ có hạn và đây làđề tài đầu tiên thực hiện một cách có hệ thống cho nên chắc chắn không thể tránh khỏi nhiều thiếu sót.
155 trang |
Chia sẻ: ngtr9097 | Lượt xem: 2266 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đồ án Thiết kế, thi công và viết chương trình điều khiển mạch thực hành cho Z80 CPU Giao tiếp với máy tính qua ngõ máy in( ĐH Khoa học kĩ thuật), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC KỸ THUẬT
KHOA CÔNG NGHỆ THÔNG TIN
LUẬN VĂN TỐT NGHIỆP
Đề tài:
Thiết kế, thi công và viết chương trình điều khiển
mạch thực hành cho Z80 CPU.
Giao tiếp với máy tính qua ngõ máy in.
Giáo viên hướng dẫn: Thầy Nguyễn Xuân Minh.
Sinh viên thực hiện : Hoàng Lê Bình.
Lưu Đình Dũng.
Lớp : KSII_K6_T.
Đề tài:
Thiết kế, thi công và viết chương trình điều khiển mạch thực hành cho Z80 CPU với các đặc điểm sau:
- Giao tiếp với máy tính qua ngõ máy in.
- Giả lập ROM để nhận chương trình từ máy tính.
- Có khả năng chạy từng bước từ bên máy tính.
- Có khả năng thông báo trạng thái các thanh ghi về bên máy tính.
- Có khả năng điều khiển một số cổng xuất nhập đơn giản.
- Thi công mạch, thử mạch.
- Viết chương trình và thử chạy theo từng chức năng.
&
MỤC LỤC
Mở đầu trang 4
Chương I Phân tích yêu cầu
1.1 Phân tích yêu cầu trang 5
1.2 Phương hướng giải quyết vấn đề trang 5
Chương II Thiết kế phần cứng
l 2.1. Phân tích các chức năng của cổng ghép nối với máy in trang 8
l 2.2. Kiến trúc Z80 CPU. trang 10
l 2.3. Thiết kế chi tiết. trang 48
l 2.4. Nguyên lý hoạt động. trang 49
Chương III. Giới thiệu phần soạn thảo văn bản
3.1. Các thành phần chính của main menu trang 55
3.2. Hướng dẫn sử dụng trong màn hình soạn thảo trang 55
F Chương IV. Giải thuật trang 57
F Chương V. Chương trình nguồn
5.1. Chương trình đưa data ra RAM chung, Debug, Dump, Run trang 71
5.2. Chương trình con viết bằng ngôn ngữ con Assembler Z80 dùng
đọc trạng thái các thanh ghi trang 109
5.3. Chương trình con viết bằng ngôn ngữ con Assembler Z80 dùng
dump memory trang 111
5.4. Chương trình tạo tiện ích soạn thảo văn bản vàhỗ trợ chế độ chạy
debug Z80 trang 111
5.5. Các chương trình ví dụ trang 133
F Phụ lục A: Các thông báo lỗi. trang 142
F Phụ lục B: Vi mạch 8255. trang 143
F Tài liệu tham khảo. trang 145
&
Lời nói đầu
Sự phát triển đi lên vượt bậc của ngành kỹ thuật máy tính và điện tử hiện nay đã được minh chứng cụ thể qua cuộc sống hằng ngày của chúng ta trong tất cả các lĩnh vực.
Việc ứng dụng máy vi tính vào kỹ thuật đo lường và điều khiển đã đem lại những kết quả đầy tính ưu việt. Các thiết bị, hệ thống đo lường và điều khiển ghép nối với máy tính có độ chính xác cao, thời gian thu thập số liệu ngắn, nhưng đáng quan tâm hơn là mức độ tự động hoá trong việc thu nhận và xử lý dữ liệu.
Kỹ thuật số ra đời đã khắc phục được các khuyết điểm của kỹ thuật tương tự, làm cho các bộ phận máy móc trở nên đơn giản, gọn nhẹ, ít tốn kém năng lượng và xử lý thông tin nhanh, chính xác hơn so với kỹ thuật tương tự.
Tuy vậy, nếu sử dụng các bộ điều khiển dùng các IC số chúng vẫn còn mắc một số khuyết điểm mà so với kỹ thuật vi xử lý nó vẫn tồn tại như:
- Kích thước lớn.
- Năng lượng tiêu thụ lớn.
- Tính mềm dẽo thấp, khó thay đổi.
- Khó sửa chữa, bảo trì.
Vi xử lý là một vi mạch điện tử có mật độ tích hợp cao, trong đó gồm các mạch số có khả năng nhận, xử lý và xuất dữ liệu. Đặc biệt là quá trình xử lý dữ liệu được điều khiển theo một chương trình gồm tập hợp các lệnh từ bên ngoài mà người sử dụng có thể thay đổi được một cách dễ dàng. Một vi xử lý có thể thực hiện rất nhiều yêu cầu điều khiển khác nhau.
Kỹ thuật vi xử lý ra đời với sự kết hợp giữa phần cứng và phần mềm đã làm cho hoạt động của các mạch điện trở nên mềm dẽo hơn với những phần mềm rất linh hoạt mà ta có thể sửa chữa, thay đổi hoặc bổ sung làm cho chương trình điều khiển thêm phong phú tùy theo nhu cầu của người sử dụng.
Kỹ thuật vi xử lý có tính phức tạp trong hoạt động, thiết kế nhưng lại rất kinh tế vì giá thành hạ và kích thước chiếm chỗ không nhiều, có dung lượng cao. Ngoài ra về mặt kỹ thuật cũng hơn hẳn kỹ thuật số vì quá trình hoạt động rất mềm dẽo, tốc độ xử lý cao và lại có thể mở rộng tính năng hoạt động sau này cho mạch điện. Đây là ưu điểm rất thuận lợi mà kỹ thuật vi xử lý mang lại.
Chúng em xin chân thành cảm ơn Thầy Nguyễn Xuân Minh đã tận tình hướng dẫn để hoàn thành luận văn này. Chúng tôi cũng xin chân thành cảm ơn các bạn bè đã đóng góp ý kiến và chỉ dẫn trong khi thực hiện đề tài.
Vì trình độ có hạn và đây làđề tài đầu tiên thực hiện một cách có hệ thống cho nên chắc chắn không thể tránh khỏi nhiều thiếu sót.
&
Chương I. Phân tích yêu cầu
1.1. Phân tích yêu cầu.
1.1.1. Đặc điểm của cổng ghép nối với máy in.
Việc nối máy in với máy tính được thực hiện qua ổ cắm 25 chân ở phiá sau máy tính. Nhưng đây không chỉ là chỗ nối với máy in mà khi sử dụng máy tính vào mục đích đo lường và điều khiển thì việc ghép nối cũng thực hiện qua ổ cắm này. Qua cổng này dữ liệu được truyền đi song song nên đôi khi còn được gọi là cổng ghép nối song song và tốc độ truyền dữ liệu cũng đạt đến mức lớn đáng kể. Tất cả các đường dẫn của cổng này đều tương thích TTL, nghĩa là chúng đều cung cấp một mức điện áp nằm giữa 0V và 5V. Do đó ta còn cần phải lưu ý là ở các đường dẫn lối vào cổng này không được đặt các mức điện áp quá lớn.
1.1.2. Đặc điểm chung của Z80 CPU.
Z80 CPU là một vi xử lý 8 bit của hãng ZILOG được thiết kế để có thể làm việc một cách độc lập, có thể giao tiếp với các bộ xử lý khác thông qua các thiết bị ngoại vi.
Đặc điểm chung:
- Data bus: 8 bits.
- Addr bus: 16 bits.
- Tập thanh ghi được phân thành 3 loại:
. Tập thanh ghi chính (8 bit).
. Tập thanh ghi phụ (8 bit).
. Tập thanh ghi chuyên dụng (16 bits)
- Tập lệnh CPU Z80 có thể chia làm nhiều nhóm khác nhau theo nhiều cách. Ở đây có thể chia thành 4 nhóm sau:
. Nhóm lệnh xử lý dữ kiện.
. Nhóm lệnh truyền dữ kiện.
. Nhóm lệnh kiểm soát chương trình.
. Nhóm lệnh kiểm soát trạng thái.
Phần mô tả chi tiết Z80 CPU sẽ được nói kỹ trong chương II.
1.2. Phương hướng giải quyết vấn đề.
1.2.1. Giao tiếp giữa PC & KIT Z80.
Để có thể thực hiện việc giao tiếp giữa máy tính và một KIT Z80 có thể dùng một trong hai phương pháp sau:
Phương pháp thứ nhất: Thực hiện việc bắt tay giữa máy tính và KIT Z80 khi thao tác truyền dữ liệu. Muốn thực hiện được điều này thì máy tính và KIT Z80 sẽ ở trong trạng thái sẵn sàng hoạt động trước khi thực hiện thao tác bắt tay để truyền dữ liệu. Như vậy trên KIT Z80 sẽ có một chương trình để có thể thực hiện thao tác này, việc ghép nối bus cùng với việc phát các tín hiệu bắt tay giữa máy tính và KIT Z80 sẽ do chương trình bên trong KIT Z80 và chương trình bên trong máy tính đảm nhiệm. Phương pháp này có ưu điểm là việc thu và nhận data sẽ diễn ra đồng bộ, nhanh chóng và chính xác nhưng lại hơi phức tạp trong việc thực hiện các thao tác bắt tay.
Phương pháp thứ hai: Mọi thao tác truyền dữ liệu sẽ do máy tính chủ động, dữ liệu truyền sẽ được chứa trong RAM (được gọi là RAM chung). RAM này giả lập ROM để chạy chương trình từ máy tính.
Để đơn giản cho việc thiết kế (cả phần cứng và phần mềm) và phù hợp với nội dung của yêu cầu đặt ra, người thiết kế lựa chọn phương pháp thứ hai để thực hiện yêu cầu của bài toán đặt ra.
1.2.2. Dừng và cho chạy Z80 CPU.
Sử dụng các mức logic thích hợp đưa vào chân WAIT để tạm thời dừng hoạt động của Z80 CPU, đặt Z80 CPU vào trạng thái chờ hoặc cho Z80 CPU hoạt động ở chế độ bình thường.
Khi chân WAIT ở mức logic '1', Z80 CPU hoạt động bình thư ờng.
Khi mức logic tại chân WAIT là '0', Z80 CPU sẽ được đặt vào trạng thái chờ. Ở trạng thái này dữ liệu trên đường địa chỉ và data được giữ ổn định, đồng thời CPU liên tục đọc vào mức logic trên chân WAIT cho đến khi chân này đạt trở lại mức logic '1'. Sau khi thoát khỏi trạng thái WAIT Z80 CPU sẽ dành 2 chu kỳ xung clock để làm tươi bộ nhớ Ram động, sau đó thi hành bước kế tiếp của lệnh hoặc thi hành lệnh kế.
Như vậy khi đặt Z80 CPU vào trạng thái chờ ta có thể đọc được dữ liệu trên data bus, address bus hoặc có thể can thiệp vào hoạt động của CPU bằng cách đặt một giá trị khác lên data bus trong thời gian CPU lấy mã lệnh hoặc truy xuất bộ nhớ chương trình (lúc này cần thiết phải cấm CS bộ nhớ chương trình (ROM chương trình)).
1.2.3. Hướng mở rộng đề tài.
Do có ý đồ mở rộng đề tài theo hướng dùng KIT để sử dụng như là 1 thiết bị mô phỏng dùng cho Z80 CPU nên trong phần thiết kế đã cố gắng tránh can thiệp nhiều vào Z80 CPU. Để Z80 CPU có thể chạy được ở chế độ Debug chỉ cần lấy tín hiệu CSROM và M1 để điều khiển quá trình. Như vậy, có thể dùng KIT để làm 1 bộ mô phỏng ( simulator) cho các thiết kế khác có sử dụng Z80 CPU. Sơ đồ khối như sau :
1
S
e
t
B
r
Addr bus : được lấy trực tiếp từ adress bus của KIT
Data bus : được lấy trực tiếp từ data bus của KIT
Ctrl bus gồm :
Wait : nối vào chân số của 74LS74 (U8A)
Reset : nối vào chân số của 74LS04 (U2E)
Chú ý : Trong chế độ Debug cần phải có biện pháp can thiệp vào chân interrupt của KIT Z80 bất kỳ, khi KIT này chạy ở chế độ có dùng ngắt.
i
a
r
t
Cấm=’0’ : Khi chạy ở chế độ Debug(cấm ngắt).
&
Chương II. Thiết kế phần cứng
2.1. Phân tích các chức năng của cổng ghép nối với máy in.
Sự sắp xếp các chân ra ở cổng máy in với tất cả các đường dẫn được mô tả trên hình 2.1.
Chân Ký hiệu Vào/Ra Mô tả
1 STB Output Bit 0 của thanh ghi điều khiển
2 D0 Output Đường dữ liệu D0
3 D1 Output Đường dữ liệu D1
4 D2 Output Đường dữ liệu D2
5 D3 Output Đường dữ liệu D3
6 D4 Output Đường dữ liệu D4
7 D5 Output Đường dữ liệu D5
8 D6 Output Đường dữ liệu D6
9 D7 Output Đường dữ liệu D7
10 ACK Input Bit 6 của thanh ghi trạng thái
11 BUSY Input Bit 7 của thanh ghi trạng thái
12 PE Input Bit 5 của thanh ghi trạng thái
13 SLCT Input Bit 4 của thang ghi trạng thái
14 AF Output Bit 1 của thanh ghi điều khiển
15 ERROR Input Bit 3 của thanh ghi trạng thái
16 INIT Output Bit 2 của thanh ghi điều khiển
17 SLCTIN Output Bit 3 của thanh ghi điều khiển
18 GND
19 GND
20 GND
21 GND
22 GND
23 GND
24 GND
25 GND
Hình 2.1. Bố trí chân ở cổng máy in ở máy tính PC.
Ta thấy bên cạnh 8 bit dữ liệu còn có những đường dẫn tín hiệu khác, tổng cộng người sử dụng có thể trao đổi một cách riêng biệt với 17 đường dẫn, bao gồm 12 đường dẫn ra và 5 đường dẫn vào. Bởi vì 8 đường dẫn dữ liệu D0 - D7 không phải là đường dẫn 2 chiều trong tất cả các loại máy tính, nên ta sẽ sử dụng D0 - D7 như là lối ra. Các lối ra khác nữa là STB, AF, INIT và SLCTIN.
Các đường dẫn lối vào là: ERROR, SLCT, PE, ACK, BUSY.
Tất cả các đường dẫn tín hiệu vừa được giới thiệu cho phép trao đổi qua các địa chỉ bộ nhớ của máy tính PC. 17 đường dẫn của cổng máy in sắp xếp thành 3 thanh ghi: thanh ghi data, thanh ghi trạng thái, thanh ghi điều khiển. Hình 2.2 chỉ ra sự sắp xếp của các đường dẫn tín hiệu tới các bit dữ liệu riêng biệt của thanh ghi.
Thanh ghi data (Địa chỉ cơ bản)
D7 D6 D5 D4 D3 D2 D1 D0
D0 (pin 2)
D1 (pin 3)
D2 (pin 4)
D3 (pin 5)
D4 (pin 6)
D5 (pin 7)
D6 (pin 8)
D7 (pin 9)
Thanh ghi trạng thái (Địa chỉ_cơ bản + 1)
D7 D6 D5 D4 D3 0 0 0
ERROR (pin 15)
SLCT (pin 13)
PE (pin 12)
ACK (pin 10)
BUSY (pin 11)
Thanh ghi điều khiển (Địa chỉ cơ bản + 2)
D7 D6 D5 D4 D3 D2 D1 D0
STB (pin 1)
AF (pin 14)
INIT (pin 16)
SLCTIN (pin 17)
IRQ-Enable
Hình 2.2. Thanh ghi ở cổng máy in của máy tính PC.
Địa chỉ đầu tiên đạt đến được của cổng máy in được xem như là địa chỉ cơ bản. Ở các máy tính PC địa chỉ cơ bản của cổng máy in được sắp xếp như sau:
LPT1 (Cổng máy in thứ nhất) => Địa chỉ cơ bản = 378H
Hoặc là 3BCH ở máy Laptop
LPT2 (Cổng máy in thứ hai) => Địa chỉ cơ bản = 278H
Địa chỉ cơ bản đồng nhất với thanh ghi dữ liệu. Thanh ghi trạng thái có địa chỉ = địa chỉ cơ bản + 1. Cần chú ý rằng mức logic của BUSY (chân 11) được sắp xếp ngược với bit D7 của thanh ghi trạng thái. Thanh ghi điều khiển với 4 đường dẫn lối ra của nó có địa chỉ = địa chỉ cơ bản + 2. Ở đây lại cần chú ý tới sự đảo ngược của các tín hiệu: STB, AF, SLCTIN.
2.2. Kiến trúc Z80 CPU.
2.2.1. Sơ đồ khối Z80 CPU. Bus dữ kiện 8 bits
Kiểm soát dữ kiện
Giải mã
&
điều khiển CPU
ALU
Thanh
ghi
lệnh
Thanh ghi
Kiểm soát địa chỉ
Init
Init 8255
Entry Filename
File Exist?
N
ERROR
Y
End
Open file
Read one byte
Y
Eof?
Close file
N
Get To Active
Out Addrlow byte
Finish
Out Addrhigh byte
End
1
2
Write RAM
2
1
Read RAM
Count++
N
Count= 3?
Exact?
N
Y
Y
Addr++
ERROR
End
Start
D0-D7='1'
Tạo xung INIT
End
Start
Khởi động 8255
PA=PC=Output
Tạo xung WR
End
Start
AddrLow=XXH
AddrHi=XXH
Tx=AddrLow
Tạo xung WR
Đưa Tx ra PA
Tx=AddrHi
Tạo xungWR
Đưa Tx ra PC
End
Start
Chọn CS RAM
Đưa data lên bus
Tạo xung WR
/OE='1'
Chọn /OE RAM
Đọc vào thanh ghi
trạng thái 4 bit thấp
Cất 4 bit thấp
Đọc vào thanh ghi
trạng thái 4 bit cao
Khôi phục byte
N
Byte phát đúng?
Y
End
Hình 1-2: Cấu trúc các thanh ghi của Z80 CPU
Thanh ghi đa dụng
Thanh ghi đa dụng
Tập thanh ghi phụ
Tập thanh ghi chính
Chu kỳ T
/Clk
T1
T2
T3
T4
T1
T2
T3
T1
T2
T3
Chu kỳ máy M1
Đọc bộ nhớ M2
Chu kỳ lệnh
Hình 3 -1 : Giản đồ thời gian cơ bản
/RFSH
D7¸D0
/M1
/WAIT
/RD
/MREQ
A15¸A0
Refresh address
PC
T1
T2
T3
T4
T1
Chu kỳ M1
/Clk
IN
Hình 3-2: Chu kỳ lấy mã lệnh
Hình 3-2: Chu kỳ đọc ghi bộ nhớ.
MEMORY ADDR
D7¸D0
/WAIT
/RD
/MREQ
A15¸A0
MEMORY ADDR
T1
T2
T3
T1
T2
Chu kỳ đọc bộ nhớ
/Clk
IN
T3
/WR
DATA OUT
Chu kỳ ghi bộ nhớ
D7¸D0
Hình 3-4: Chu kỳ xuất / nhập.
D7¸D0
/WAIT
/RD
/IORQ
A15¸A0
PORT ADDRESS
T1
T2
TW
T3
T1
/Clk
IN
/WR
OUT
CHU KỲ GHI
CHU KỲ ĐỌC
/BUSACK
Hình 3-5: CHU KỲ BUS REQ/ACK
D7¸D0
/MERQ /RD, /WR
/IORQ
/RFSH
/BUSRQ
A15¸A0
Trạng thái T cuối
Tx
Tx
/Clk
CHU KỲ M BẤT KỲ
Tx
T1
TRẠNG THÁI CÓ THỂ CỦA BUS
Floating
Mẫu
Mẫu
Mẫu
/MREQ
REFRESH
/IORQ
Hình 3-6: CHU KỲ NGẮT REQ/ACK
/M1
Trạng thái T cuối
T2
Tw’
/Clk
CHU KỲ M CUỐI LỆNH
Tw’
T3
M1
T1
/INT
A15¸A0
PC
D7¸D0
/WAIT
IN
/RD
/MREQ
REFRESH
/RD
Hình 3-7 : Giản đồ thời gian của NMI.
/M1
Trạng thái T cuối
T2
T3
/Clk
CHU KỲ M CUỐI LỆNH
T4
T1
M1
T1
/NMI
A15¸A0
PC
/RFSH
Hình 3-8: Thoát khỏi trạng thái HALT
/HALT
T2
T3
/Clk
M1
T4
T1
M1
T1
/INT HAY /NMI
M1
Lệnh Halt được nhận tại thời điểm này.
/HALT
/Clk
T1
T2
T3
T4
T1
T2
T3
T4
/M1
Hình 3-9: Power – Down Acknowledge
/HALT
/Clk
T1
T2
T3
T4
T1
/M1
Hình 3-10: Power – Down Release Cycle No.1
/NMI
/HALT
/Clk
/M1
Hình 3-11: Power – Down Release Cycle No.2
/RESET
T1
T2
T3
T4
/HALT
/Clk
/M1
Hình 3-12: Power – Down Release Cycle No.3
/RESET
T1
T2
Twa
Twa
T1
T2
T3
T4
SƠ ĐỒ CHÂN Z80
29
GND
11
+5 V
6
/CLK
1 hay 2 byte
Mã lệnh
Lệnh PUSH
Lệnh POP
CY
b7 ¬ b0
Vòng quay trái
Dịch phải Logic
CY
b7 ® b0
0
Dịch phải số học
CY
b7 ® b0
CY
b7 ¬ b0
Dịch trái số học
Quay phải
CY
b7 ® b0
CY
b7 ¬ b0
Quay trái
CY
b7 ® b0
Vòng quay phải
b3 – b0
b7 – b4
b3 – b0
ACC
Quay phải số học
(HL)
b3 – b0
b7 – b4
b3 – b0
ACC
Quay trái số học
(HL)
Đích nhập
Khối lệnh nhập
Khối lệnh xuất
Port địa chỉ đích
Chỉ đến bảng ngắt, thanh ghi I là địa chỉ cao, đáp ứng ngoại vi là địa chỉ thấp.
Địa chỉ phục vụ ngắt
23
/BUSACK
25
/BUSREQ
26
/RESET
17
/NMI
16
/INT
24
/WAIT
18
/HALT
28
/RFSH
22
/WR
21
/RD
20
/IORQ
19
/MREQ
27
/M1
13
D7
10
D6
9
D5
7
D4
8
D3
12
D2
15
D1
14
D0
5
A15
4
A14
3
A13
2
A12
1
A11
40
A10
39
A9
38
A8
37
A7
36
A6
35
A5
34
A4
33
A3
32
A2
31
A1
30
A0
Z80 CPU
Ghi bộ nhớ M3
End
Y
N
Tín hiệu INT
Khôi phục nội dung các thanh ghi AF , IX , IY , BC , DE
IY = IX ?
Tăng IY
Phát nội dung của IY ra RAM chung
Nạp vào IX địa chỉ cuối
Nạp vào IY địa chỉ đầu
Cất vào thanh ghi
AF , IX , IY , BC , DE
4.6. Đoạn chương trình Assembly Z80 CPU dùng Dump bộ nhớ
Start
Counter = 1 : Đưa giá trị C3H ra data bus
Counter = 2 : Byte địa chỉ thấp của đoạn Dump trong bộ nhớ Ram chung Counter = 3 : Byte địa chỉ cao của đoạn Dump trong bộ nhớ Ram chung
Y
N
End
Set chân WAIT lên 1 để Z80 tiếp tục chạy lại điểm đã dừng
Dừng Z80 CPU ở chu kỳ M1 đầu tiên được tìm thấy
Địa chỉ hợp lệ ?
Báo lỗi
Nhập vào địa chỉ đầu
Nhập vào địa chỉ cuối
Start
4.7. Giải thuật Dump bộ nhớ
Khôi phục nội dung các thanh ghi
Đưa nội dung các thanh ghi A’, B’ , C’ , D’ , E’ , H’ , L’ , F’ ra RAM chung
End
Hoán vị các thanh ghi
Hoán vị các thanh ghi bằng lệnh EX , EXX
Đưa nội dung các thanh ghi A, B , C , D , E , H , L , R , IX , IY , SP ra RAM chung
Cất các thanh ghi
AF , BC
Start
4.8. Đoạn chương trình Assembly Z80 CPU
dùng đọc nội dung các thanh ghi
Counter = 142 : Đưa giá trị C3H ra data bus
Counter = 143 : Đưa byte thấp của mã lệnh sắp thực hiện ra data bus Counter = 144 : Đưa byte cao của mã lệnh sắp thực hiện ra data bus
Counter = các giá trị khác ® set chân WAIT để Z80 chạy tiếp
Counter = 9,14,19,24,29,34,39,45,51,58,66,71,79,84,92,97,102, 107,112, 117,122,129,138,139
Đọc các giá trị : A,B,C,D,E,H,L,I,R,F,IX,IY
A’,B’,C’,D’,E’,H’,L’,F’,SP
End
Counter = 1 : Đưa giá trị C3H ra data bus
Counter = 2 : Đưa byte thấp của đoạn chương trình đọc & ghi Counter = 3 : Đưa byte cao của đoạn chương trình đọc & ghi
Start
4.9. Giải thuật đọc nội dung các thanh ghi
Y
Y
C2 ?
Đọc giá trị từ data bus
Đưa byte thấp của vòng lặp ra data bus Đưa byte cao của vòng lặp ra data bus
32 ?
N
Đưa byte thấp của vòng lặp ra data bus
Đưa byte cao của vòng lặp ra data bus
C3 ?
Cho CPU chạy tiếp
N
N
Đọc mã lệnh
Counter = 17 : Đưa byte thấp của địa chỉ đầu cần Dump
Counter = 18 : Đưa byte cao của địa chỉ đầu cần Dump
Counter = 15¸16 set WAIT=’1’ cho Z80 chạy bình thường
Đưa lệnh Jump ra data bus
Counter = 13 : Đưa byte thấp của địa chỉ cuối cần Dump ra data bus Counter = 14 : Đưa byte cao của địa chỉ cuối cần Dump ra data bus
Counter = các giá trị khác ® set chân WAIT để Z80 chạy tiếp
Counter = 4¸12 set WAIT = ‘1’ cho Z80 chạy bình thường
Y
Lệnh Jump
T.h cho phép/cấm
16
Z80 CPU
KIT Z80 bất kỳ
Simulator
Rom chương trình
Z80 CPU
Các linh kiện khác
Adrres bus
Data bus
Ctrl bus
PC
Jack 25
pin
Gọi hàm Run
Gọi hàm Debug
End
Y
N
F7 or F8 ?
Dịch chương trình đang soạn thảo ra dạng *.bin
4.10. Giải thuật chương trình xử lý phím F7 & F8 (Debug)
Ctrl F9
Start
Cập nhật các chữ số :
hàng, cột
Xử lý các phím : LEFT, UP, RIGHT, DOWN, HOME, END, DEL, BACKSPACE, PAGEUP, PAGEDOWN, ENTER, TAB
End
Đưa ký tự ra màn hình
Cất ký tự vào chuỗi
4.11. Giải thuật chương trình xử lý ký tự
Start
Cập nhật màn hình
Xử lý ký tự
Y
N
Alt_X ?
T
Bus nội
Tín hiệu
điều khiển Kiểm soát CPU
hệ thống
h
& CPU
ư
Bus địa chỉ 16 bits
Hình 1-1: Sơ đồ khối Z80 CPU.
Sơ đồ khối của kiến trúc bên trong Z80 CPU được cho trong hình 1-1. Sơ đồ này trình bày tất cả các phần tử chính trong CPU và nó sẽ được xem xét kỹ qua các phần mô tả sau.
2.2.2. Các thanh ghi của CPU.
Z80 CPU chứa một bộ nhớ R/W 208 bit. Bộ nhớ này có thể được truy xuất bởi người lập trình. Hình 1-2 cho thấy bộ nhớ này được cấu tạo bởi 8 thanh ghi 8 bit và 4 thanh ghi 16 bit. Tất cả các thanh ghi của Z80 CPU đều dùng RAM tĩnh. Cac thanh ghi bao gồm 2 tập 6 thanh ghi đa dụng, tập các thanh ghi này có thể được sử dụng độc lập như là các thanh ghi 8 bit hoặc từng cặp như là các thanh ghi 16 bit. Có hai tập ( chính và phụ) thanh ghi tích lũy, thanh ghi cờ và sáu thanh ghi đặc biệt.
Tập các thanh ghi đặc biệt.
Program Counter (PC): giữ địa chỉ mười sáu bit của lệnh hiện tại đang được lấy về từ bộ nhớ. PC tự động tăng sau khi nội dung của nó được đặt lên bus địa chỉ. Khi 1 lệnh nhảy xảy ra, 1 giá trị mới được tự động đặt vào trong PC thay cho giá trị sẽ được tăng của nó.
Stack pointer (SP): giữ địa chỉ 16 bit của đỉnh ngăn xếp hiện hành trong bộ nhớ RAM ngoài. Bộ nhớ ngăn xếp bên ngoài được tổ chức như là 1 file vào sau ra trước (LIFO). Dữ liệu có thể được đẩy vào ngăn xếp từ các thanh ghi xác định của CPU hay được lấy ra khỏi ngăn xếp để đưa vào các thanh ghi xác định của CPU qua việc thi hành các lệnh Push và Pop. Dữ liệu được lấy ra từ ngăn xếp luôn luôn là dữ liệu được đẩy vào ngăn xếp sau cùng. Ngăn xếp cho phép đơn giản hóa việc thi hành các loại ngắt quãng không giới hạn các chương trình con lồng nhau và đơn giản hóa nhiều kiểu thao tác trên dữ liệu.
Hai t