Tài liệu Vi xử lý - Chương 4: Tổ chức nhập/xuất - Phạm Hùng Kim Khánh
1. Các mạch phụ trợ 8284 và 8288
1.1. Mạch tạo xung nhịp 8284
Mạch tạo xung nhịp dùng để cung cấp xung nhịp cho µP
CSYNC (Clock Synchronisation): ngõ vào xung đồng bộ chung khi hệ thống có
các 8284 dùng dao động ngoài tại chân EFI. Khi dùng mạch dao động trong thì phải
nối đất.
PCLK (Peripheral Clock): xung nhịp f = fX/6 (fX là tần số thạch anh)
AEN1, AEN2 (Address Enable): cho phép chọn các chân RDY1, RDY2 báo
hiệu trạng thái sẵn sàng của bộ nhớ hay thiết bị ngoại vi
Chỉ đến vị trí chứa các ký tự MOV SI, DX ADD SI,2 next: LODSB ; Lấy ký tự từ bộ nhớ CMP AL,0 ; Nếu không còn ký tự nào JNE cont ; thì kết thúc JMP exit cont: MOV AH,AL ; Lưu ký tự vừa đọc MOV DX,0FEh status: IN AL,DX ; Đọc vào từ Port C AND AL,02h ; Chỉ nhận PC1 JE status ; Nếu máy in không sẵn sàng thì chờ MOV AL,AH MOV DX,0FDh ; Xuất ký tự đã nhận ra OUT DX,AL ; máy in (Port B) JMP next ; Xử lý ký tự kế tiếp exit: RET Mô tả chương trình: - Ta sử dụng 8255A trong phần thiết kế này cho phép 2 hoạt động: xuất ra máy in và lấy dữ liệu vào từ bàn phím. Giao tiếp với máy in dùng kiểm tra trạng thái và giao tiếp bàn phím dùng ngắt. - Trong chương trình con PRINT, ký tự được đặt trong thanh ghi tích luỹ A và trạng thái đọc từ Port C. Ban đầu Port B trống, bit PC1 ( BOBF ) ở mức cao. Ta thực hiện lệnh OUT gởi dữ liệu ra Port B. Tín hiệu BOBF sẽ xuống mức thấp do tác động cạnh lên của tín hiệu WR , xác định rằng dữ liệu đã gởi ra máy in. Sau khi nhận byte dữ liệu, máy in gởi trở lại tín hiệu ACK xác định đã nhận. Tín hiệu ACK làm cho BOBF ở mức cao xác định máy in sẵn sàng nhận ký tự kế tiếp và chương trình con PRINT tiếp tục thực hiện cho đến khi không còn ký tự nào trong vùng nhớ. - Nếu một phím được nhấn khi chương trình con PRINT đang thực thi, byte dữ liệu truyền tới Port A và ASTB xuống mức thấp, đặt IBFA lên mức cao. Khi ASTB trở lại mức cao thì sẽ tạo ra INTRA. Tín hiệu này tạo ngắt đến µP và điều khiển được chuyển đến chương trình phục vụ ngắt. Chương trình này sẽ đọc nội dung Port A, cho phép ngắt và quay về chương trình con PRINT. Tài liệu vi xử lý Tổ chức nhập / xuất Phạm Hùng Kim Khánh Trang 97 2.4.7.3. Truyền dữ liệu giữa hai microprocessor trong xử lý phân bố dùng 8255A ở Mode 2 Ta thiết kế mạch giao tiếp để truyền dữ liệu hai chiều dạng chủ – tớ (master – slave) giữa hai µP. Hình 4.18 chỉ sơ đồ khối thiết lập thông tin hay chiều giữa chủ và tớ . Sơ đồ khối chỉ hai data bas hai chiều – chủ và tớ – được nối với nhau thông qua 8225A, trong đó 8225A làm việc như thiết bị giao tiếp của µP chủ. Port A của 8225A được dùng để truyền dữ liệu hai chiều và 4 tín hiệu từ port C được dùng để bắt tay. Quá trình truyền dữ liệu tương tự như Mode 1 của 8225A. Khi µP chủ ghi 1 byte dữ liệu vào 8225A tín hiệu OBF xuống mức thấp để báo cho µP tớ biết là đã gởi dữ liệu vào, µP tớ sẽ báo nhận được khi nó đọc byte dữ liệu này. Tương tự, hai tín hiệu bắt tay khác được dùng khi µP tớ truyền 1 byte dữ liệu đến µP chủ. µP chủ đòi hỏi các port I/O dùng để đọc và ghi dữ liệu và kiểm tra trạng thái của các tín hiệu bắt tay. Tương tự, µP tớ cần các port I/O để thực hiện Đọc và Ghi. Truyền dữ liệu có thể được thực hiện bằng cách kiểm tra trạng thái hay dùng ngắt. Tốc độ xử lý dữ liệu đối với µP chủ quan trọng hơn nên thường dùng µP chủ ở chế độ ngắt và µP tớ ở chế độ kiểm tra trạng thái. Ở ví dụ này, ta sẽ dùng cả 2 µP ở chế độ kiểm trạng thái. Các hoạt động truyền dữ liệu giữa 2 I/O kiểm tra trạng thái có thể liệt kê như sau: Truyền dữ liệu từ µP chủ đến µP tớ: 1. µP chủ đọc trạng thái của OBF để kiểm tra xem µP tớ đã đọc dữ liệu chưa. Đây là chức năng nhập cho µP chủ. 2. µp chủ ghi dữ liệu vào Port A và 8225A báo cho µP tớ biết bằng cách đưa tín hiệu OBF xuống mức thấp. Đây là chức năng xuất của µP chủ. Hình 4.18 – Thông tin 2 chiều giữa 2 µP dùng 8255A PA7 ÷ PA0 PC4 PC5 PC3 PC7 PC6 STB IBF INTR OBF ACK CS RD WR µP chủ Giải mã µP tớ Tài liệu vi xử lý Tổ chức nhập / xuất Phạm Hùng Kim Khánh Trang 98 3. µP tớ kiểm tra tín hiệu OBF (từ µP chủ) để xác định tính sẵn sàng của dữ liệu. Đây là chức năng nhập đối với µP tớ. 4. µP tớ đọc dữ liệu từ Port A và báo cho biết đã nhận được bằng cách đưa tín hiệu ACK xuống mức thấp . Đây là chức năng nhập đối với µP tớ. Truyền dữ liệu từ µP tớ dến µp chủ: 1. µP tớ kiểm tra tín hiệu bắt tay IBF để xem port A có sẵn sàng truyền dữ liệu hay không để truyền 1 byte . Đây là chức năng nhập đối với µP tớ . 2. µP đặt byte dữ liệu lên data bus và báo cho 8225A biết rằng sẵn sàng gởi dữ liệu bằng cách dùng tín hiệu STB . Đây là chức năng xuất đối vói µP tớ. 3. 8225A đưa IBF lên mức cao, µP chủ đọc tín hiệu này để xác định dữ liệu sẵn sàng chưa . Đây là chức năng nhập đối với µP chủ . 4. µP chủ đọc byte dữ liệu . Đây là chức năng nhập đối với µP chủ. Kết nối phần cứng: Hình 4.19 cho thấy sơ đồ kết nối các port cần thiết và logic chọn chip cho 8255A. µP chủ thực hiện giải mã chọn 8255A dùng cổng NAND 8 ngõ vào nên 8255A được chọn khi tất cả các ngõ vào của cổng NAND đều ở mức 1. Từ đó, ta có các địa chỉ Port của 8255A đối với µP chủ là: PA: FCh PB: FDh PC: FEh CR: FFh 2 3 1 74LS30 1 2 3 4 5 6 11 12 8 +5V +5V uP-Master D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3 A4 A5 A6 A7 IOR IOW 2 3 1 8255 34 33 32 31 30 29 28 27 5 36 9 8 35 6 4 3 2 1 40 39 38 37 18 19 20 21 22 23 24 25 14 15 16 17 13 12 11 10 D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1 RESET CS PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 uP-Slav e D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3 A4 A5 A6 A7 IOR IOW 74LS365 2 4 6 10 12 14 1 15 3 5 7 9 11 13 A1 A2 A3 A4 A5 A6 G1 G2 Y1 Y2 Y3 Y4 Y5 Y6 2 3 1 74LS138 1 2 3 6 4 5 15 14 13 12 11 10 9 7 A B C G1 G2A G2B Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 +5V Hình 4.19 – Thông tin hai chiều giữa µP chủ và µP tớ Ph ạm H ùng Kim K hánh Trang 99 Tài liệu vi xử l ý T ổ chức nhập / xuất Tài liệu vi xử lý Tổ chức nhập / xuất Phạm Hùng Kim Khánh Trang 100 Port A được sử dụng ở Mode 2 dùng 4 tín hiệu từ Port C. µP chủ kiểm tra các tín hiệu ACK và STB bằng cách đọc các bit trạng thái OBF và IBF ở Port C. Hai tín hiệu bắt tay khác - OBF và IBF – được nối tương ứng với các bit D7 và D0 của data bus của µP tớ thông qua bộ đệm 3 trạng thái 74LS365. Logic giải mã cho các đường tín hiệu tại Port C chính là bộ giải mã 3 sang 8 74LS138. Giả sử các đường logic không sử dụng (A3 và A4) ở mức 0, 8 đường ra của bộ giải mã sẽ cho phép vùng địa chỉ 80h ÷ 87h (Bảng 4.6). Hai đường ra của bộ giải mã được kết hợp với tín hiệu điều khiển IOR để tạo ra 2 xung chọn thiết bị nhận (85h và 87h). Xung chọn thiết bị nhập 87h được dùng để đọc trạng thái ở các đường dữ liệu D7 và D0. Đường giải mã có địa chỉ 80h được kết hợp với IOW để tạo tín hiệu STB . Bảng 4.6: A7 A6 A5 A4 A3 A2 A1 A0 Chân giải mã Địa chỉ hex 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 80h 81h 82h 83h 84h 85h 86h 87h Từ điều khiển mode 2: D7 D6 D5 D4 D3 D2 D1 D0 1 1 0 0 0 0 0 0 = C0h I/O Mode 2 Không sử dụng Từ trạng thái mode 2: Trạng thái của hoạt động I/O ở Mode 2 có thể kiểm rta bằng cách đọc nội dung Port C. D7 D6 D5 D4 D3 D2 D1 D0 AOBF INTE1 IBFA INTE2 INTRA X X X Trạng thái của tín hiệu OBF được kiểm tra bằng cách đọc bit D7 và trang thái của IBF kiểm tra bằng bit D0. Các tác vụ Đọc và Ghi của µP tớ: Một byte dữ liệu có thể được đọc bởi µP tớ từ Port A bằng cách gởi một xung chọn thiết bị tác động mức thấp đến tín hiệu ACK , không cần xây dựng Port nhập. Tương tự, một byte dữ liệu có thể được ghi vào µP bằng cách đưa tín hiệu STB xuống thấp. Tài liệu vi xử lý Tổ chức nhập / xuất Phạm Hùng Kim Khánh Trang 101 Lưu đồ giải thuật: Chương trình: ¾ Đoạn chương trình chủ: (Master program) MOV SP,stack1 MOV SI,master ; Địa chỉ các byte cần xuất MOV CX,byte_no ; Số byte cần xuất MOV AL,0C0h ; Từ điều khiển MOV DX,0FFh ; Địa chỉ thanh ghi điều khiển OUT DX,AL Begin Khởi động 8255A Xác định vị trí các ô nhớ Đọc Port C xác định OBF OBF cao? Xuất byte Đã truyền hết? Đọc byte End Y N Y N Chương trình chủ Begin Khởi động 8255A Xác định vị trí các ô nhớ Đọc Port C xác định OBF OBF thấp? Cất byte Đã nhận hết? Đọc byte End Y N Y N Chương trình tớ Tài liệu vi xử lý Tổ chức nhập / xuất Phạm Hùng Kim Khánh Trang 102 next: MOV DX,0FEh ; Địa chỉ Port C wait: IN AL,DX ; Đọc vào từ Port C AND AL,80h ; Kiểm tra OBF JNE wait ; Chờ đến khi OBF = 0 LODSB ; Đọc byte MOV DX,0FCh ; Xuất byte vừa đọc OUT DX,AL ; ra Port A LOOP next ; Nếu còn byte truyền thì tiếp tục END ¾ Đoạn chương trình tớ: (Slave program) MOV ES,stack2 MOV DI,slave ; Địa chỉ các byte sẽ lưu MOV CX,byte_no ; Số byte cần nhận next: MOV DX,87h wait: IN AL,DX ; Đọc OBF AND AL,80h ; Kiểm tra OBF JE wait ; Chờ đến khi OBF = 1 MOV DX,85h IN AL,DX ; Đọc dữ liệu STOSB ; Cất vào ô nhớ LOOP next ; Nếu còn byte truyền thì tiếp tục END - Ta thấy rằng cả hai chương trình sẽ kiểm tra trạng thái OBF. Chương trình chủ đợi cho đến khi OBF lên mức cao sẽ ghi một byte vào Port A. Ngược lại, chương trình tớ đợi cho đến khi OBF xuống mức thấp thì sẽ đọc dữ liệu. - Khi µP chủ ghi một byte dữ liệu, nó sẽ chốt tại Port A và byte dữ liệu được đặt trên data bus của µP tớ khi ACK xuống mức thấp. - Hai chương trình trên chỉ cho phép truyền một khối dữ liệu từ µP chủ đến µP tớ nhưng không thể truyền ngược lại. Để chuyển một khối dữ liệu từ µP tớ đến µP chủ, cần phải đọc tín hiệu IBF. µP chủ đợi cho đến khi IBF = 1 thì sẽ đọc một byte dữ liệu còn µP tớ đợi cho đến khi IBF = 0 thì ghi một byte dữ liệu. - Giản đồ thời gian ở hình 3.4.16 cho thấy tín hiệu INTR dùng để truyền dữ liệu bằng ngắt. Trong ví dụ này, ta không sử dụng ngắt. Tài liệu vi xử lý Tổ chức nhập / xuất Phạm Hùng Kim Khánh Trang 103 WR OBF ACK STB RD INTR IBF Bus ngoại vi Data từ ngoại vi đến 8255A Data từ 8255A đến ngoại vi Data từ 8255A đến µP Hình 4.20 – Giản đồ thời gian ở Mode 2
File đính kèm:
- tai_lieu_vi_xu_ly_chuong_4_to_chuc_nhapxuat_pham_hung_kim_kh.pdf