Các phương pháp điều khiển vào ra dữ liệu

Chia sẻ: Hoang Cuong | Ngày: | Loại File: DOC | Số trang:30

0
280
lượt xem
61
download

Các phương pháp điều khiển vào ra dữ liệu

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Như đã biết hệ thống CPU bao gồm 3 phần chính : CPU, bộ nhớ và vào ra. Trong đó CPU đóng vai trò là nơi chỉ đạo tất cả các hoạt động của các nơi còn lại. Đối với bộ nhớ chúng có tốc độ hoạt động khá nhanh, có thể đáp ứng gần như tức thời khi CPU truy cập, mặt khác bộ nhớ sử dụng lưu trữ các hằng và biến nên khi cần chúng sẽ được truy xuất bằng một lệnh truyền dữ liệu, khi đó dữ liệu đã có sẵn trong bộ nhớ...

Chủ đề:
Lưu

Nội dung Text: Các phương pháp điều khiển vào ra dữ liệu

  1. CAC PHƯƠNG PHAP ĐIÊU KHIÊN ́ ́ ̀ ̉ VAO RA DỮ LIÊU ̀ ̣
  2. Mục lục 1. GIỚI THIÊU CAC PHƯƠNG PHAP ĐIÊU KHIÊN VAO/RA DỮ LIÊU. ̣ ́ ́ ̀ ̉ ̀ ̣ 2. VAO RA DỮ LIÊU BĂNG PHƯƠNG PHAP QUET VONG. ̀ ̣ ̀ ́ ́ ̀ 3. VAO RA DỮ LIÊU BĂNG PHƯƠNG PHAP NGĂT. ̀ ̣ ̀ ́ ́ Nội dung CAC PHƯƠNG PHAP ĐIÊU KHIÊN VAO RA DỮ LIÊU ́ ́ ̀ ̉ ̀ ̣ 1. GIỚI THIÊU CAC PHƯƠNG PHAP ĐIÊU KHIÊN VAO/RA DỮ LIÊU. ̣ ́ ́ ̀ ̉ ̀ ̣ Như đã biêt hệ thông CPU bao gôm 3 phân chinh : CPU, bộ nhớ và vao ra. Trong đó ́ ́ ̀ ̀ ́ ̀ CPU đong vai trò là nơi chỉ đao tât cả cac hoat đông cua cac nơi con lai. Đôi với bộ ́ ̣ ́ ́ ̣ ̣ ̉ ́ ̀ ̣ ́ nhớ chung có tôc độ hoat đông khá nhanh, có thể đap ứng gân như tức thời khi CPU ́ ́ ̣ ̣ ́ ̀ truy câp, măt khac bộ nhớ sử dung lưu trữ cac hăng và biên nên khi cân chung sẽ được ̣ ̣ ́ ̣ ́ ̀ ́ ̀ ́ truy xuât băng môt lênh truyên dữ liêu, khi đó dữ liêu đã có săn trong bộ nhớ mà ́ ̀ ̣ ̣ ̀ ̣ ̣ ̃ không phai chờ đap ứng từ bên ngoai. Con đôi với vao ra thông thường có tôc độ đap ̉ ́ ̀ ̀ ́ ̀ ́ ́ ứng châm, măt khac đôi khi chung con phai chờ tac đông từ bên ngoai (ví dụ như khi ̣ ̣ ́ ́ ̀ ̉ ́ ̣ ̀ đoc ban phim CPU phai chờ cho người sử dung nhân phim …). Khi hệ thông CPU có ̣ ̀ ́ ̉ ̣ ́ ́ ́ nhiêu thiêt bị vao ra có thể thực hiên ba giai phap quan lý thiêt bị bao gôm: ̀ ́ ̀ ̣ ̉ ́ ̉ ́ ̀ - Vao ra dữ liêu băng phương phap quet vong (polling). ̀ ̣ ̀ ́ ́ ̀ - Vao ra dữ liêu băng ngăt (interrupt). ̀ ̣ ̀ ́ - Vao ra dữ liêu băng phương phap thâm nhâp trực tiêp bộ nhớ ( DMA -Direct ̀ ̣ ̀ ́ ̣ ́ Memory Access). Với phương phap quet vong CPU sẽ hoat đông theo chế độ phân chia thời gian, nó sẽ ́ ́ ̀ ̣ ̣ kiêm tra lân lượt từng thiêt bị và thực hiên chương trinh phuc vụ khi có thiêt bị hoat ̉ ̀ ́ ̣ ̀ ̣ ́ ̣ đông. Với phương phap ngăt thiêt bị hoat đông sẽ thông bao để CPU biêt phuc vụ no. ̣ ́ ́ ́ ̣ ̣ ́ ́ ̣ ́ Con với phương phap vao ra băng DMA, CPU sẽ được yêu câu ngưng hoat đông để ̀ ́ ̀ ̀ ̀ ̣ ̣ thiêt bị vao ra (thường là ổ đia) truyên dữ liêu theo từng khôi với bộ nhớ. ́ ̀ ̃ ̀ ̣ ́ Môi phương phap điêu khiên vao ra dữ liêu nêu trên có cac đăc điêm khac nhau và sẽ ̃ ́ ̀ ̉ ̀ ̣ ́ ̣ ̉ ́ được ứng dung trong cac trường hợp khac nhau, chung sẽ được mô tả cụ thể trong cac ̣ ́ ́ ́ ́ muc kế tiêp cua chương. ̣ ́ ̉ 2. VAO RA DỮ LIÊU BĂNG PHƯƠNG PHAP QUET VONG. ̀ ̣ ̀ ́ ́ ̀ Như đã noi trong phương phap quet vong CPU sẽ kiêm tra lân lượt từng thiêt bị có ́ ́ ́ ̀ ̉ ̀ ́ trong hệ thông cua no. Đôi với cac thiêt bị luôn săn sang hoat đông thiêt bị có thể truyên ́ ̉ ́ ́ ́ ́ ̃ ̀ ̣ ̣ ́ ̀ dữ liêu môt cach hoan toan thụ đông tới vao ra, CPU sẽ mở cửa vao ra để đoc dữ liêu ̣ ̣ ́ ̀ ̀ ̣ ̀ ̀ ̣ ̣ hoăc ghi dữ liêu tới thiêt bị khi chung tới vong phuc vu. Luc nay cac bộ vao ra chỉ đong ̣ ̣ ́ ́ ̀ ̣ ̣ ́ ̀ ́ ̀ ́ vai trò là cac công ngăn cach giữa Bus hệ thông và thiêt bi, để cac hoat đông cua thiêt bị ́ ̉ ́ ́ ́ ̣ ́ ̣ ̣ ̉ ́ không anh hưởng tới hệ thông trong khi CPU phuc vụ cac thiêt bị khac. Ví dụ như ̉ ́ ̣ ́ ́ ́ trong hệ thông đo nhiêt độ và hiên thị lên LED 7 đoan: cứ tới vong phuc vụ CPU sẽ đoc ́ ̣ ̉ ̣ ̀ ̣ ̣ được giá trị số tương ứng với nhiêt độ đâu dò luôn săn sang tai ngõ ra bộ biên đôi A/D, ̣ ̀ ̃ ̀ ̣ ́ ̉ và sau đó sẽ cung câp ra LED 7 đoan để hiên thi. Và nêu vong phuc vụ đủ ngăn, có thể ́ ̣ ̉ ̣ ́ ̀ ̣ ́ luôn thây nhiêt độ cân đo hiên thị trên LED trong khi cac thiêt bị khac cua hệ thông vân ́ ̣ ̀ ̉ ́ ́ ́ ̉ ́ ̃ được phuc vu. Tuy nhiên trong thực tế không phai tât cả cac thiêt bị lam viêc với CPU ̣ ̣ ̉ ́ ́ ́ ̀ ̣ đêu luôn ở trang thai săn sang như trên. Nên rât dễ xay ra khả năng tới vong phuc vụ ̀ ̣ ́ ̃ ̀ ́ ̉ ̀ ̣ mà thiêt bị chưa săn sang truyên dữ liêu với CPU. Để chăc chăn truyên được dữ liêu ́ ̃ ̀ ̀ ̣ ́ ́ ̀ ̣
  3. với thiêt bị trong phương phap thăm dò khi tới vong phuc vu, trước khi thực hiên viêc ́ ́ ̀ ̣ ̣ ̣ ̣ truyên dữ liêu CPU sẽ kiêm tra trang thai cua thiêt bị băng cach đoc vao cac tin hiêu băt ̀ ̣ ̉ ̣ ́ ̉ ́ ̀ ́ ̣ ̀ ́ ́ ̣ ́ tay (Handshake Signal). Ví dụ trên hinh 6.1 trinh bay mach giao tiêp vao (Input) có băt ̀ ̀ ̀ ̣ ́ ̀ ́ tay giữa môt thiêt bị và CPU. ̣ ́ Macḥ ̣ ̀ Mach cai Thiêt bị ́ Data Bus ̣ đêm vaò D0 –D7 G Trên hinh 6.1 khi thiêt bị OC có dữ liêu truyên cho CPU, nó cung STB tin hiêu STB đê ̉ ̀ ́ ̀ vao ̣ ̀ câp ́́ ̣ cai dữ liêu vao bộ cai đông thời kich cho mach lât tao tin hiêu săn sang lam viêc mức 1. ̀ ̣ ̀ ̀ ̀ ́ ̣ ̣ ̣ ́ ̣ ̃ ̀ ̀ ̣ Khi tới vong phuc vụ cua thiêt bị nay, trước hêt CPU đoc công 0 (CS0 = 0) nêu đ ược ̀ ̣ ̉ ́ ̀ ́ ̣ ̉ ́ dữ liêu với bit D0 = 1 thì nó hiêu răng thiêt bị nay đã săn sang lam viêc. Khi CPU đoc ̣ ̉ ̀ ́ ̀ ̃ ̀ ̀ ̣ ̣ công 1 (CS1 = 0) để lây CS1liêu nó sẽ xoá luôn tin hiêu săn sang ̉ ́ dữ ̣ ́ ̣ +5V̀ để chuân bị cho lân ̃ ̉ ̀ truyên dữ liêu tiêp theo. ̀ ̣ ́ pr Data Bus Q D D0CPU 8255 clk PC4 clr STB Thiêt bị vao ́ ̀ CS0 PC5 ACK D0-D7 PA0-PA7 D0 –D7 CS1 Hinh 6.1: Mach giao tiêp vao có băt tay. ̀ ̣ ́ ̀ ́ PC1 STB Thiêt bị ra ́ PC2 ACK D0 –D7 PB0-PB7 Hinh 6.2: Vao ra có băt tay sử dung 8255 ̀ ̀ ́ ̣ Trong cac hệ thông vi xử lý cac mach vao ra có băt tay thông thường được thực hiên ́ ́ ́ ̣ ̀ ́ ̣ băng cac bộ vao ra có lâp trinh, viêc thiêt kế mach sẽ đơn gian hơn rât nhiêu vì cac ̀ ́ ̀ ̣ ̀ ̣ ́ ̣ ̉ ́ ̀ ́ mach tao tin hiêu băt tay được tich hợp ngay trong chip vao ra nay. Hinh 6.2 trinh bay ̣ ̣ ́ ̣ ́ ́ ̀ ̀ ̀ ̀ ̀ sơ đồ vao ra có băt tay sử dung 8255. Trên sơ đô, 8255 đong vai trò giao tiêp với môt ̀ ́ ̣ ̀ ́ ́ ̣ thiêt bị vao và môt thiêt bị ra. Công A cua 8255 danh cho viêc truyên dữ liêu vao, PC 4, ́ ̀ ̣ ́ ̉ ̉ ̀ ̣ ̀ ̣ ̀ PC5 sử dung lam cac thiêt bị băt tay vao. Khi thiêt bị vao có dữ liêu truyên, trước hêt nó ̣ ̀ ́ ́ ́ ̀ ́ ̀ ̣ ̀ ́ kiêm tra tin hiêu ACK, nêu tin hiêu nay tich cực thì dữ liêu truyên trước đó chưa được ̉ ́ ̣ ́ ́ ̣ ̀ ́ ̣ ̀ CPU đoc vao, nêu ACK không tich cực thiêt bị sẽ cung câp tin hiêu STB để cai dữ liêu ̣ ̀ ́ ́ ́ ́ ́ ̣ ̀ ̣ vao PA cua 8255, 8255 sẽ nhân dữ liêu và tac đông ACK. Tin hiêu STB sẽ được giữ ̀ ̉ ̣ ̣ ́ ̣ ́ ̣ nguyên cho đên khi ACK hêt tich cực, do đó CPU có thể kiêm tra tin hiêu nay để xac ́ ́ ́ ̉ ́ ̣ ̀ ́ đinh đã có dữ liêu săn sang chưa. Khi CPU đoc dữ liêu từ công A, STB và ACK sẽ ̣ ̣ ̃ ̀ ̣ ̣ ̉ được xoa. Môt giao tiêp gân tương tự sẽ sử dung cho thiêt bị ra. ́ ̣ ́ ̀ ̣ ́ 3. VAO RA DỮ LIÊU BĂNG PHƯƠNG PHAP NGĂT. ̀ ̣ ̀ ́ ́ i. Khai quat. ́ ́ Với phương phap quet vong dù chỉ kêt nôi thụ đông theo dữ liêu hay có băt tay, CPU ́ ́ ̀ ́ ́ ̣ ̣ ́ đêu đong vai trò chủ đông nó đi quet thường xuyên cac thiêt bị xem có cân phuc vụ hay ̀ ́ ̣ ́ ́ ́ ̀ ̣
  4. không. Giai phap nay sẽ lam lăng phí thời gian cua CPU khi cac thiêt bị không có nhu ̉ ́ ̀ ̀ ̃ ̉ ́ ́ câu phuc vụ thường xuyên, mà CPU vân phai thực hiên chương trinh kiêm tra. Có môt ̀ ̣ ̃ ̉ ̣ ̀ ̉ ̣ giai phap vao ra khac tranh được nhược điêm trên, đó là cơ chế ngăt. Trong giai phap ̉ ́ ̀ ́ ́ ̉ ́ ̉ ́ nay cac thiêt bị có yêu câu phuc vụ sẽ nhăc chừng CPU băng cach cung câp tin hiêu từ ̀ ́ ́ ̀ ̣ ́ ̀ ́ ́ ́ ̣ ngoai, luc nay CPU sẽ tam ngưng công viêc nó đang thực hiên để phuc vụ thiêt bi, khi ̀ ́ ̀ ̣ ̣ ̣ ̣ ́ ̣ thiêt bị được phuc vụ xong CPU sẽ quay về với công viêc mà nó đang thực hiên dở. ́ ̣ ̣ ̣ Hâu hêt cac họ vi xử lý đêu cho phep ngưng chương trinh binh thường đang thực ̀ ́ ́ ̀ ́ ̀ ̀ hiên để chuyên qua môt chương trinh tai vị trí đăc biêt, băng môt số tin hiêu cung câp ̣ ̉ ̣ ̀ ̣ ̣ ̣ ̀ ̣ ́ ̣ ́ từ bên ngoai hoăc môt số lênh đăc biêt trong chương trinh. Viêc chuyên điêu khiên nay ̀ ̣ ̣ ̣ ̣ ̣ ̀ ̣ ̉ ̀ ̉ ̀ giông như cơ chế goi chương trinh con, hoat đông được chuyên từ chương trinh chinh ́ ̣ ̀ ̣ ̣ ̉ ̀ ́ qua chương trinh con phuc vụ cho ngăt.̀ ̣ ́ INTR CPU INTA Bộ điêu khiên ̀ ̉ ngăt́ ́ ̀ Cac yêu câu ́ ngăt Hinh 6.3: Cung câp cac yêu câu ngăt cho CPU thông qua bộ điêu khiên ngăt. ̀ ́ ́ ̀ ́ ̀ ̉ ́ Thông thường cac CPU có hai tin hiêu để nhân cac tin hiêu yêu câu ngăt la: ngăt ́ ́ ̣ ̣ ́ ́ ̣ ̀ ́ ̀ ́ không che (NMI - Non Mask able Interrupt), và ngăt có thể che được băng phân mêm ́ ̀ ̀ ̀ (INT - Interrupt). Tin hiêu yêu câu ngăt NMI có độ ưu tiên cao hơn INT, và khi nhân ́ ̣ ̀ ́ ̣ được tin hiêu NMI thì CPU băt buôc phai chuyên điêu khiên qua chương trinh ngăt. ́ ̣ ́ ̣ ̉ ̉ ̀ ̉ ̀ ́ Con khi nhân được tin hiêu INT thì CPU con đi xet cờ ngăt, nêu cờ ngăt đã đ ược lâp ̀ ̣ ́ ̣ ̀ ́ ́ ́ ́ ̣ nó sẽ chuyên điêu khiên qua chương trinh ngăt, con nêu cờ ngăt chưa được lâp thì yêu ̉ ̀ ̉ ̀ ́ ̀ ́ ́ ̣ câu ngăt sẽ không được phuc vu. Cờ ngăt có thể được lâp hay xoa băng lênh hợp ngữ ̀ ́ ̣ ̣ ́ ̣ ́ ̀ ̣ trong chương trinh, với cac công viêc quan trong không cho phep tam ngưng chung ta ̀ ́ ̣ ̣ ́ ̣ ́ có thể câm ngăt băng lênh xoá cờ ngăt ở đâu chương trinh. ́ ́ ̀ ̣ ́ ̀ ̀ Để phuc vụ ngăt được nhiêu thiêt bi, trong cac hệ thông vi xử lý thường sử dung bộ ̣ ́ ̀ ́ ̣ ́ ́ ̣ điêu khiên ngăt. Cac tin hiêu yêu câu sẽ được đưa tới bộ điêu khiên ngăt và tuy theo ̀ ̉ ́ ́ ́ ̣ ̀ ̀ ̉ ́ ̀ thứ tự ưu tiên sẽ gửi tới CPU như hinh 6.3. ̀ Nêu chỉ có môt yêu câu ngăt nó sẽ được chuyên ngay tới CPU, nêu có nhiêu yêu câu ́ ̣ ̀ ́ ̉ ́ ̀ ̀ ngăt xay ra đông thời thì yêu câu nao có độ ưu tiên cao hơn sẽ được bộ điêu khiên ngăt ́ ̉ ̀ ̀ ̀ ̀ ̉ ́ gửi tới CPU phuc vụ trước. Độ ưu tiên sẽ được lâp trinh khi khởi đông bộ điêu khiên ̣ ̣ ̀ ̣ ̀ ̉ ngăt. ́ ii. Ví dụ về cơ chế ngăt cua CPU 8086/8088 và Z80. ́ ̉ • Cơ chế ngăt cua CPU 8086/8088. ́ ̉ ́ Khai quat: ́ Môt yêu câu ngăt trong hệ thông 8086/8088 có thể cung câp từ môt trong 3 nguôn sau: ̣ ̀ ́ ́ ́ ̣ ̀ - Nguôn thứ nhât cung câp từ bên ngoai qua cac ngõ vao INTR (Interrupt Request), ̀ ́ ́ ̀ ́ ̀ hoăc NMI, chung được goi là cac ngăt cứng. ̣ ́ ̣ ́ ́
  5. - Nguôn thứ 2 thực hiên băng môt lênh ngăt trong chương trinh (INT), trường hợp ̀ ̣ ̀ ̣ ̣ ́ ̀ nay được goi là ngăt mêm. ̀ ̣ ́ ̀ - Nguôn thứ ba xuât phat từ môt số điêu kiên lôi trong môt số lênh mà chương trinh ̀ ́ ́ ̣ ̀ ̣ ̃ ̣ ̣ ̀ thực hiên. Ví dụ như khi thực hiên lênh chia cho 0, 8086/8088 sẽ tự đông ngăt ̣ ̣ ̣ ̣ ́ chương trinh đang thực hiên. Trường hợp nay được goi là ngăt ngoai lệ (exception). ̀ ̣ ̀ ̣ ́ ̣ Tai cuôi môi chu kỳ thực hiên lênh 8086/8088 sẽ kiêm tra cac yêu câu ngăt. Khi có yêu ̣ ́ ̃ ̣ ̣ ̉ ́ ̀ ́ câu 8086 sẽ đap ứng băng cac bước sau: ̀ ́ ̀ ́ - Nap thanh ghi cờ vao đinh ngăn xêp và giam thanh ghi con trỏ ngăn xêp đi 2. ̣ ̀ ̉ ́ ̉ ́ - Không cho phep ngăt INT băng cach xoa cờ ngăt IF trong thanh ghi cờ. ́ ́ ̀ ́ ́ ́ - Xoa cờ bây TF trong thanh ghi cờ. ́ ̃ - Nap thanh ghi đoan lênh CS vao đinh ngăn xêp và giam con trỏ ngăn xêp đi 2. ̣ ̣ ̣ ̀ ̉ ́ ̉ ́ - Nap thanh ghi con trỏ lênh IP vao đinh ngăn xêp và giam con trỏ ngăn xêp đi 2. ̣ ̣ ̀ ̉ ́ ̉ ́ - Nhay xa tới chương trinh con phuc vụ ngăt tương ứng theo yêu câu. ̉ ̀ ̣ ́ ̀ Chương trinh chinh ̀ ́ PUSH FLAGS Chương trinh phuc vụ ngăt ̀ ̣ ́ CLEAR IF CLEAR TF ́ PUSH cac thanh ghi PUSH CS PUSH IP Nhay tới chương ̉ ̀ trinh ngăt́ POP IP POP CS POP FLAGS ́ POP cac thanh ghi IRET Hinh 6.4: Qui trinh phuc vụ ngăt cua 8086/8088. ̀ ̀ ̣ ́ ̉ Quá trinh trên được tông kêt trong hinh 6.4. Như trên hinh ve, 8086 cât thanh ghi cờ ̀ ̉ ́ ̀ ̀ ̃ ́ vao đinh ngăn xêp, không cho phep ngõ vao yêu câu ngăt INTR và chức năng chay ̀ ̉ ́ ́ ̀ ̀ ́ ̣ từng bước, rôi thực hiên lênh goi xa tới chương trinh phuc vụ ngăt. Lênh IRET tai ̀ ̣ ̣ ̣ ̀ ̣ ́ ̣ ̣ cuôi chương trinh phuc vụ ngăt sẽ chuyên điêu khiên quay về chương trinh chinh. ́ ̀ ̣ ́ ̉ ̀ ̉ ̀ ́ Như đã biêt khi thực hiên lênh goi xa 8086/8088 sẽ lâp giá trị mới cho thanh ghi đoan ́ ̣ ̣ ̣ ̣ ̣ CS và thanh ghi con trỏ lênh IP. Để thực hiên viêc goi xa gian tiêp, 8086 lây giá trị mới ̣ ̣ ̣ ̣ ́ ́ ́ cho CS và IP từ 4 ô nhớ. Tương tự như vây khi đap ứng ngăt 8086/8088 cung lây đia ̣ ́ ́ ̃ ́ ̣ chỉ chương trinh ngăt từ 4 ô nhớ liên tiêp. Trong hệ thông 8086/8088, 1KB bộ nhớ từ ̀ ́ ́ ́ đia chỉ 00000H tới đia chỉ 003FFH được danh riêng để chứa cac đia chỉ cua cac ̣ ̣ ̀ ́ ̣ ̉ ́ chương trinh ngăt được goi là bang vector ngăt, hay bang con trỏ ngăt. Môi đia chỉ sẽ ̀ ́ ̣ ̉ ́ ̉ ́ ̃ ̣ chứa trong 4 ô nhớ, nên bang nay sẽ chứa được đia chỉ cua 256 chương trinh ngăt. ̉ ̀ ̣ ̉ ̀ ́ Hinh 6.5 trinh bay bang vector ngăt. Chú ý là giá trị nap cho thanh ghi con trỏ lênh (IP) ̀ ̀ ̀ ̉ ́ ̣ ̣
  6. luôn đăt tai đia chỉ thâp, con cho thanh ghi đoan lênh (CS) năm ở đia chỉ cao. Môi từ ̣ ̣ ̣ ́ ̀ ̣ ̣ ̀ ̣ ̃ kep cho môt vector ngăt được nhân dang băng môt số trong khoang từ 0 tới 255. Nó ́ ̣ ́ ̣ ̣ ̀ ̣ ̉ được goi là số hiêu ngăt hay số kiêu ngăt. ̣ ̣ ́ ̉ ́ Trong bang 5 vector ngăt đâu tiên danh cho cac ngăt đăc biêt, cac vector từ 5 tới 31 dự ̉ ́ ̀ ̀ ́ ́ ̣ ̣ ́ phong cho cac thế hệ vi xử lý sau cua Intel, cac vector từ 32 tới 255 đã được sử dung ̀ ́ ̉ ́ ̣ cho cac ngăt cứng và cac ngăt mêm. Do môi vector ngăt gôm 4 byte, vì thế 8086/8088 ́ ́ ́ ́ ̀ ̃ ́ ̀ sẽ xac đinh đia chỉ cua cac vector ngăt trong bang băng cach nhân số hiêu ngăt với 4. ́ ̣ ̣ ̉ ́ ́ ̉ ̀ ́ ̣ ́ Người sử dung cung có thể thay thế đia chỉ chương trinh cua minh vao bang vector ̣ ̃ ̣ ̀ ̉ ̀ ̀ ̉ ngăt, luc nay môi lân xay ra ngăt điêu khiên sẽ được chuyên tới chương trinh cua ́ ́ ̀ ̃ ̀ ̉ ́ ̀ ̉ ̉ ̀ ̉ người sử dung thay vì chuyên tới chương trinh phuc vụ ngăt cu. ̣ ̉ ̀ ̣ ́ ̃ 03FFH Con trỏ ngăt kiêu 255 ́ ̉ 244 vector 03FCH ngăt đã sử ́ ̣ dung Con trỏ ngăt kiêu 33 ́ ̉ 084H Con trỏ ngăt kiêu 32 ́ ̉ 080H 27 vector ngăt dự ́ Con trỏ ngăt kiêu 31 (dự trữ) ́ ̉ ̀ phong Con trỏ ngăt kiêu 5 (dự trữ) ́ ̉ 014H Con trỏ ngăt kiêu 4 (tran) ́ ̉ ̀ 010H 5 vector Con trỏ ngăt kiêu 3 (1byte lênh INT) ́ ̉ ̣ ́ ̀ ngăt danh 00CH riêng Con trỏ ngăt kiêu 2 (ngăt không che) ́ ̉ ́ 008H Con trỏ ngăt kiêu 1 (chay từng bước) ́ ̉ ̣ 004H 000H Con trỏ ngăt kiêu 0 (lôi chia) ́ ̉ ̃ Hinh 6.5: Bang vector ngăt trong hệ thông 8086/8088. ̀ ̉ ́ ́ ́ ̉ Cac kiêu ngăt cua 8086/8088. ́ ̉ ́ - Ngăt kiêu 0 : chia cho 0. ̉ 8086/8088 sẽ tự đông thực hiên ngăt kiêu 0 khi kêt quả cac phep chia vượt quá khả ̣ ̣ ́ ̉ ́ ́ ́ năng chứa trong thanh ghi đich. Khi đó cac cờ, CS, IP sẽ được nap vao đinh ngăn ́ ́ ̣ ̀ ̉ xêp, IF và TF sẽ bị xoa. Sau đó CS và IP sẽ được nap giá trị mới từ cac đia chỉ ́ ́ ̣ ́ ̣ 00002Hvà 00000H trong bang vector ngăt. ̉ ́ Vì ngăt 0 xay ra môt cach tự đông không thể câm được, do đó để tranh ngăt nay trong ́ ̉ ̣ ́ ̣ ́ ́ ́ ̀ chương trinh phai kiêm tra để chăc răng số chia khac 0. Hoăc viêt môt chương trinh ̀ ̉ ̉ ́ ̀ ́ ̣ ́ ̣ ̀ phuc vụ ngăt mới, sau đó đôi vector ngăt hiên có trong bang, nhưng khi đó chương ̣ ́ ̉ ́ ̣ ̉ trinh sẽ khá phức tap. ̀ ̣ - Ngăt kiêu 1: Chay từng bước. ́ ̉ ̣ Ngăt nay sẽ thực hiên chương trinh theo từng lênh, khi nay có thể xem nôi dung cua ́ ̀ ̣ ̀ ̣ ̀ ̣ ̉ cac ô nhớ và cac thanh ghi để kiêm tra kêt quả cua lênh. Khi lênh đã thực hiên đung có ́ ́ ̉ ́ ̉ ̣ ̣ ̣ ́ thể cho phep CPU thực hiên lênh tiêp theo. Noi cach khac trong chế độ chay từng bước ́ ̣ ̣ ́ ́ ́ ́ ̣
  7. 8086 ngưng lai sau khi chay xong môi lênh, và chờ quyêt đinh tiêp theo từ người sử ̣ ̣ ̃ ̣ ́ ̣ ́ dung. Nhờ viêc lâp xoa thanh ghi cờ nên thủ tuc chay từng bước thực hiên khá dễ dang ̣ ̣ ̣ ́ ̣ ̣ ̣ ̀ trong hệ thông 8086. ́ Khi cờ bây được lâp, 8086 sẽ tự đông thực hiên ngăt 1 sau khi thực hiên xong môt ̃ ̣ ̣ ̣ ́ ̣ ̣ lênh, với vector ngăt được lây trong bang vector ngăt tai cac đia chỉ từ 00004H tới ̣ ́ ́ ̉ ́ ̣ ́ ̣ 00008H. Khi đó cờ bây sẽ được lâp cac thanh ghi được lưu vao đinh ngăn xêp, chương ̃ ̣ ́ ̀ ̉ ́ trinh con phuc vụ cho ngăt 1 sẽ tuy thuôc theo hệ thông. Chú ý là không có lênh thiêt lâp ̀ ̣ ́ ̀ ̣ ́ ̣ ́ ̣ hay xoa cờ bây, muôn thực hiên công viêc trên cân nap thanh ghi cờ vao đinh ngăn ́ ̃ ́ ̣ ̣ ̀ ̣ ̀ ̉ xêp sau đó sử dung môt lênh xử lý dữ liêu để lâp bit, và cuôi cung phuc hôi lai thanh ́ ̣ ̣ ̣ ̣ ̣ ́ ̀ ̣ ̀ ̣ ghi cờ từ đinh ngăn xêp. Trong quá trinh thực hiên chương trinh phuc vụ ngăt cờ bây ̉ ́ ̀ ̣ ̀ ̣ ́ ̃ sẽ được xoa. ́ - Ngăt kiêu 2: Phuc vụ ngăt không che. ́ ̉ ̣ ́ 8086/8088 sẽ tự đông thực hiên ngăt 2 khi nhân được môt canh lên tai ngõ vao NMI. ̣ ̣ ́ ̣ ̣ ̣ ̣ ̀ Ngăt nay luôn được thực hiên mà không bị che bởi phân mêm, vì thế ngăt nay thường ́ ̀ ̣ ̀ ̀ ́ ̀ được sử dung cho cac công viêc quan trong. Ví dụ có thể sử dung ngăt 2 để backup ̣ ́ ̣ ̣ ̣ ́ chương trinh khi mât nguôn. ̀ ́ ̀ - Ngăt kiêu 3 : Thiêt lâp điêm dừng trong chương trinh. ́ ̉ ́ ̣ ̉ ̀ Ngăt nay được sử dung cho viêc gỡ rôi môt chương trinh. Khi chen vao chương trinh ́ ̀ ̣ ̣ ́ ̣ ̀ ̀ ̀ ̀ môt điêm dừng hệ thông sẽ thực hiên cac lênh cua chương trinh cho tới điêm dừng rôi ̣ ̉ ́ ̣ ́ ̣ ̉ ̀ ̉ ̀ chuyên điêu khiên qua thủ tuc ngăt 3. Tuy theo từng hệ thông, thủ tuc ngăt 3 có thê ̉ ̉ ̀ ̉ ̣ ́ ̀ ́ ̣ ́ gửi nôi dung cac thanh ghi, hoăc cac ô nhớ lên man hinh rôi chờ cho tới khi nhân ̣ ́ ̣ ́ ̀ ̀ ̀ ̣ được lênh kế tiêp từ người sử dung. ̣ ́ ̣ - Ngăt kiêu 4 : Ngăt tran. ́ ̉ ́ ̀ Cờ tran OF cua 8086 sẽ tự đông được thiêt lâp sau khi thực hiên cac phep tinh số hoc ̀ ̉ ̣ ́ ̣ ̣ ́ ́ ́ ̣ mà kêt quả có sự tran bit 1 qua bit có trong số lớn nhât. Ví dụ khi công 01101100 (108 ́ ̀ ̣ ́ ̣ thâp phân) với 01010001 (81 thâp phân) kêt quả sẽ là 10111101 (189 thâp phân). Kêt ̣ ̣ ́ ̣ ́ quả nay chỉ đung đôi với phep công số nhị phân không dâu, mà không đung đôi với số ̀ ́ ́ ́ ̣ ́ ́ ́ nhị phân có dâu. Đôi với số nhị phân có dâu, bit cao nhât băng 1 sẽ chỉ thị số âm và ́ ́ ́ ́ ̀ giá trị sẽ là bù 2, như vây kêt quả ở trên sẽ là -67 thâp phân. Có hai cach để phat hiên ̣ ́ ̣ ́ ́ ̣ và đap ứng môt lôi tran. Cach thứ nhât có thể sử dung lênh JO (nhay khi cờ tran = 1) ́ ̣ ̃ ̀ ́ ́ ̣ ̣ ̉ ̀ ngay sau cac lênh số hoc, nêu cờ tran được thiêt lâp sau lênh số hoc điêu khiên ́ ̣ ̣ ́ ̀ ́ ̣ ̣ ̣ ̀ ̉ chương trinh sẽ được chuyên tới đia chỉ thị trong lênh JO để có thể xử lý lôi tran. ̀ ̉ ̣ ̣ ̃ ̀ Cach thứ hai là viêc phat hiên và đap ứng môt lôi tran được đăt vao môt ngăt. Trong ́ ̣ ́ ̣ ́ ̣ ̃ ̀ ̣ ̀ ̣ ́ chương trinh sau cac lênh số hoc sẽ đăt lênh INT 0 để chuyên tới chương trinh ngăt khi ̀ ́ ̣ ̣ ̣ ̣ ̉ ̀ ́ cờ ngăt được lâp. ́ ̣ - Cac ngăt mêm từ 0 tới 255. ́ ́ ̀ Lênh INT cua 8086/8088 có thể sử dung để goi cac ngăt mêm từ 0 tới 255. Ngăt được ̣ ̉ ̣ ̣ ́ ́ ̀ ́ goi sẽ chỉ thị băng số hiêu cua nó trong lênh INT, ví dụ INT 32H sẽ goi chương trinh ̣ ̀ ̣ ̉ ̣ ̣ ̀ ngăt 32H. Đia chỉ chương trinh ngăt trong bang vector ngăt sẽ năm tai đia chỉ băng số ́ ̣ ̀ ́ ̉ ́ ̀ ̣ ̣ ̀ hiêu ngăt nhân 4. Lênh INT có nhiêu cach sử dung, có thể dung INT 0 để chay thử ̣ ́ ̣ ̀ ́ ̣ ̀ ̣ chương trinh phuc vụ ngăt chia cho 0, mà không cân phai thực hiên lênh chia cho 0 ̀ ̣ ́ ̀ ̉ ̣ ̣ thực sự, hoăc cung có thể thử chương trinh ngăt NMI băng lênh INT 2 mà không cân ̣ ̃ ̀ ́ ̀ ̣ ̀ có tin hiêu yêu câu ngăt đưa vao chân NMI. ́ ̣ ̀ ́ ̀ - Cac yêu câu ngăt kiêu 0 tới 255. ́ ̀ ́ ̉ Ngõ vao INTR cua 8086 cho phep nhân cac tin hiêu yêu câu ngăt từ bên ngoai để thực ̀ ̉ ́ ̣ ́ ́ ̣ ̀ ́ ̀ hiên cac chương trinh ngăt tương ứng với chung. Khac với ngõ vao NMI, INTR có thể ̣ ́ ̀ ́ ́ ́ ̀
  8. che được băng phân mêm. Nêu cờ ngăt IF bị xoa thì cac yêu câu đưa tới INTR sẽ ̀ ̀ ̀ ́ ́ ́ ́ ̀ không được đap ứng. Cờ ngăt IF có thể thiêt lâp băng lênh STI, và xoa băng lênh ́ ́ ́ ̣ ̀ ̣ ́ ̀ ̣ CLI. Khi reset cờ ngăt IF sẽ tự đông được xoa, như vây trước khi muôn 8086 đap ứng ́ ̣ ́ ̣ ́ ́ ́ ̀ ngăt cân phai lâp IF. ̉ ̣ Khi chuyên điêu khiên qua chương trinh ngăt, cờ ngăt cung tự đông được xoa. Điêu ̉ ̀ ̉ ̀ ́ ́ ̃ ̣ ́ ̀ nay được thực hiên do 2 nguyên nhân sau: nguyên nhân thứ nhât là do nêu không xoa ̀ ̣ ́ ́ ́ cờ ngăt thì khi chương trinh phuc vụ môt ngăt nay đang thực hiên có thể sẽ có môt ́ ̀ ̣ ̣ ́ ̀ ̣ ̣ yêu câu ngăt mới, lam điêu khiên chương trinh sẽ chuyên tiêp tới môt chương trinh ̀ ́ ̀ ̀ ̉ ̀ ̉ ́ ̣ ̀ ngăt mới nữa. Nêu muôn điêu đó xay ra thì chỉ viêc thực hiên lênh lâp IF tai đâu ́ ́ ́ ̀ ̉ ̣ ̣ ̣ ̣ ̣ ̀ chương trinh ngăt. Nguyên nhân thứ hai là nêu không xoa IF thì khi trang thai mức cao ̀ ́ ́ ́ ̣ ́ tai ngõ vao INTR con được giữ chương trinh ngăt sẽ bị goi lai trong chinh nó nhiêu ̣ ̀ ̀ ̀ ́ ̣ ̣ ́ ̀ lân. Lênh IRET tai cuôi chương trinh ngăt sẽ phuc hôi thanh ghi cờ, điêu nay lam cho ̀ ̣ ̣ ́ ̀ ́ ̣ ̀ ̀ ̀ ̀ cờ ngăt trở về mức 1 tiêp tuc cho phep 8086/8088 đap ứng ngăt. ́ ́ ̣ ́ ́ ́ Để nhân được nhiêu yêu câu ngăt hệ thông 8086/8088 sử bộ điêu khiên ngăt 8259. ̣ ̀ ̀ ́ ́ ̀ ̉ ́ 8086/8088 sẽ nhân môt trong cac đường yêu câu ngăt IR để gửi tới chân yêu câu ngăt ̣ ̣ ́ ̀ ́ ̀ ́ INTR cua 8086. Nêu cờ IF được lâp 8086 sẽ trả lời yêu câu ngăt băng tin hiêu INTA ̉ ́ ̣ ̀ ́ ̀ ́ ̣ (Interrupt Acknowledge), sau đó nó sẽ đoc vao vector ngăt cung câp từ 8259 qua cac ̣ ̀ ́ ́ ́ đường dữ liêu thâp D0 tới D7. Vector ngăt chinh là số hiêu ngăt được lâp trinh trước ̣ ́ ́ ́ ̣ ́ ̣ ̀ trong 8259 nó sẽ được nhân với 4 để xac đinh vị trí chứa đia chỉ chương trinh phuc vụ ́ ̣ ̣ ̀ ̣ ngăt trong bang vector ngăt. Khi có đông thời 2 hoăc nhiêu nguôn yêu câu ngăt, 8086 ́ ̉ ́ ̀ ̣ ̀ ̀ ̀ ́ sẽ đap ứng cho ngăt có độ ưu tiên cao nhât, sau đó sẽ tới cac ngăt có độ ưu tiên tiêp ́ ́ ́ ́ ́ ́ theo. Độ ưu tiên cua cac ngăt cung được lâp trinh trước trong 8259. ̉ ́ ́ ̃ ̣ ̀ iii. Cơ chế ngăt cua Z80. ́ ̉ - Ngăt có thể che: ́ Trong hệ thông Z80 ngăt INT sẽ tac đông ở canh xuông cua tin hiêu đưa tới ngõ vao ́ ́ ́ ̣ ̣ ́ ̉ ́ ̣ ̀ INT, và cờ ngăt IFF đã được thiêt lâp băng lênh EI. Cờ ngăt cung bị xoa khi chương ́ ́ ̣ ̀ ̣ ́ ̃ ́ trinh ngăt được thực hiên, khi reset, hoăc khi thực hiên lênh DI. Khi đap ứng ngăt INT ̀ ́ ̣ ̣ ̣ ̣ ́ ́ CPU Z80 có thể hoat đông ở môt trong 3 chế đô: Mode 0, Mode 2 và Mode 3 tuy thuôc ̣ ̣ ̣ ̣ ̀ ̣ vao lênh khởi tao chế độ ngăt thực hiên trước khi có tin hiêu yêu câu ngăt là IM0, IM1 ̀ ̣ ̣ ́ ̣ ́ ̣ ̀ ́ hay IM2. Mode 0: khi đap ứng ngăt mode 0 CPU Z80 sẽ yêu câu thiêt bị cung câp môt lênh vao ́ ́ ̀ ́ ́ ̣ ̣ ̀ BUS dữ liêu, thường là lênh RST (vì khi nay cơ chế cung câp lênh sẽ đơn gian do chỉ ̣ ̣ ̀ ́ ̣ ̉ có môt byte), nhưng cung có thể là môt lênh goi chương trinh con hoăc môt lênh bât kỳ ̣ ̃ ̣ ̣ ̣ ̀ ̣ ̣ ̣ ́ nao đo. ̀ ́ Mode 1: khi đap ứng trong mode nay Z80 sẽ nhay tới đia chỉ 0038H, tai đia chỉ nay ́ ̀ ̉ ̣ ̣ ̣ ̀ có thể là chương trinh phuc vụ ngăt, cung có thể chỉ là môt lênh nhay tới chương trinh ̀ ̣ ́ ̃ ̣ ̣ ̉ ̀ ngăt. Cung có thể sử dung môt lênh nhay gian tiêp (ví dụ JP (HL)) để có thể quyêt đinh ́ ̃ ̣ ̣ ̣ ̉ ́ ́ ́ ̣ đia chỉ chương trinh ngăt trước khi có tin hiêu yêu câu ngăt. ̣ ̀ ́ ́ ̣ ̀ ́ Mode 2 : Mode nay là khả năng đap ứng ngăt manh nhât cua CPU Z80. Khi khởi đông ̀ ́ ́ ̣ ́ ̉ ̣ mode nay, CPU sẽ thực hiên chương trinh phuc vụ ngăt tai đia chỉ chứa trong cac ô ̀ ̣ ̀ ̣ ́ ̣ ̣ ́ nhớ có đia chỉ cung câp bởi thanh ghi đia chỉ trang ngăt I và thiêt bị yêu câu ngăt. ̣ ́ ̣ ́ ́ ̀ ́ Thanh ghi I cung câp 8 bit cao, con thiêt bị yêu câu ngăt sẽ cung câp 8 bit thâp cua ô ́ ̀ ́ ̀ ́ ́ ́ ̉ nhớ đo. Thực ra thiêt bị chỉ cân cung câp 7 bit cao, con bit có trong số nhỏ nhât (D0) ́ ́ ̀ ́ ̀ ̣ ́ luôn có giá trị là 0, vì giá trị mới trong thanh ghi PC phai được giữ trong hai ô nhớ liên ̉ tiêp. ́
  9. Dựa theo nguyên tăc hoat đông trên, người sử dung có thể lâp môt loat đia chỉ cua cac ́ ̣ ̣ ̣ ̣ ̣ ̣ ̣ ̉ ́ chương trinh phuc vụ ngăt cho cac thiêt bị khac nhau tai môt vung nhớ nao đó goi là ̀ ̣ ́ ́ ́ ́ ̣ ̣ ̀ ̀ ̣ bang vector ngăt. Khi hệ thông băt đâu hoat đông có thể nap đia chỉ trang ngăt băng lênh ̉ ́ ́ ́ ̀ ̣ ̣ ̣ ̣ ́ ̀ ̣ LD I,A. Môi thiêt bị sẽ yêu câu chương trinh phuc vụ ngăt cua minh băng cach cung ̃ ́ ̀ ̀ ̣ ́ ̉ ̀ ̀ ́ câp 7 bit đia chỉ con lai. ́ ̣ ̀ ̣ Có thể biêu diên hoat đông cua ngăt mode 2 cua Z80 trên hinh 6.6 : ̉ ̃ ̣ ̣ ̉ ́ ̉ ̀ 000H . . nnmmH . Byte thâp cua đia chỉ ́ ̉ ̣ chương trinh phuc vụ ngăt ̀ ̣ ́ UV (UVh) Byte cao cua đia chỉ ̉ ̣ chương trinh phuc vụ ngăt ̀ ̣ ́ nn mm (XYh) Thanh ghi I 7 bit do thiêt́ bị cung câp ́ 0 XYUVH Chương trinh phuc vụ ̀ ̣ ngăt ́ INTA INT ́ - Ngăt không che: NMI DATA BUS Ngăt không che cuà Z80 seHoat đông cua ngăt INT mode ́ 2LOGIC̉ cờ ngăt IFF, khi đap ́ Hinh 6.6: ̃ được thực hiên ́bât CONTROL trị cua BUFFER ̉ ̣ ̣ ̉ ̣ ́ châp gia cua Z80. ́ ̉ ́ ́ ứng ngăt nay cờ ngăt IFF sẽ bị xoa, thanh ghi PC được nap vao đinh ngăn xêp và điêu ́ ̀ ́ ́ ̣ ̀ ̉ ́ ̀ D0 chương trinh sau đó sẽ chuyên qua đia chỉ 0066H. Tương tự như ngăt INT khiên ̉ - D7 ̀ ̉ ̣ ́ mode 1, tai đia chỉ nay có thể là chương trinh phuc vụ ngăt cung có thể chỉ là môt lênh ̣ ̣ ̀ ̀ ̣ ́ ̃ ̣ ̣ nhay tới chương trinh phuc vụ ngăt. ̉ ̀ ̣ ́ iv. BỘ ĐIÊU KHIÊN NGĂT 8259. READ/WRITE ̀ ̉ ́ RD • Khai quat và nôi ghep với hệ thông. IN WR ́ ́ LOGIC ́ ́ ́ IR0 A0 được goi là bộ điêu khiên ngăt ưu tiên, no ̣ ̀ ̉ ́ SERVICE ́ nhân cac tin hiêu yêu câu ngăt từ ̣ PRIORITY ̣ ́ ́ 8259 INTERRUPT ́ ̀ REQUEST thiêt bị để cung câp tới CPU theo trinh tựREG tiên. SơRESOLVER ̉ 8259 được thực ́ ́ ̀ ưu đồ khôi cua ́ REG (ISR) hiên như hinh 6.7: ̣ ̀ (IRR) CS IR7 CASCADE CAS0 BUFFER / CAS1 COMPARATOR INTERRUPT MASK REG (IMR) CAS2 CP/EN Hinh 6.7: Sơ đồ khôi bộ điêu khiên ngăt 8259. ̀ ́ ̀ ̉ ́
  10. Trước hêt xem xet chức năng cua cac tin hiêu. Cac tin hiêu cua 8259 được chia thanh ́ ́ ̉ ́ ́ ̣ ́ ́ ̣ ̉ ̀ 3 nhom chinh: ́ ́ - Bus dữ liêu D0 - D7 sử dung để CPU lâp trinh 8259 hoat đông theo cac chế độ ̣ ̣ ̣ ̀ ̣ ̣ ́ khac nhau, và theo chiêu ngược lai sử dung để 8259 cung câp vector ngăt tới ́ ̀ ̣ ̣ ́ ́ CPU. - Cac tin hiêu yêu câu ngăt IR0 - IR7 nhân tin hiêu yêu câu ngăt từ cac thiêt bi. ́ ́ ̣ ̀ ́ ̣ ́ ̣ ̀ ́ ́ ́ ̣ ́ ́ - Cac tin hiêu điêu khiên bao gôm : ̣ ̀ ̉ ̀ + RD, WR nhân điêu khiên từ CPU để xac đinh chiêu truyên dữ liêu giữa CPU và ̣ ̀ ̉ ́ ̣ ̀ ̀ ̣ 8259. + A0 xac đinh cac vị trí khac nhau trong 8259 truyên nhân dữ liêu với CPU. ́ ̣ ́ ́ ̀ ̣ ̣ CS chon mach: nhân tin hiêu từ giai mã đia chỉ chon mach cho phep 8259 được phep ̣ ̣ ̣ ́ ̣ ̉ ̣ ̣ ̣ ́ ́ ̣ hoat đông. ̣ + CAS0 - CAS3 (Cascade): tin hiêu sử dung cho viêc ghep tâng 8259. ́ ̣ ̣ ̣ ́ ̀ + SP/EN: khi 8259 lam viêc ở chế độ không có đêm trên bus dữ liêu thì tin hiêu nay ̀ ̣ ̣ ̣ ́ ̣ ̀ sử dung để chon 8259 là mach chủ hay mach tớ. Con khi 8259 có đêm thì tin hiêu nay ̣ ̣ ̣ ̣ ̀ ̣ ́ ̣ ̀ đong vai trò là tin hiêu cho phep EN để mở công đêm dữ liêu tai thời điêm thich hợp. ́ ́ ̣ ́ ̉ ̣ ̣ ̣ ̉ ́ + INT sử dung cung câp yêu câu ngăt tới CPU, INTA nhân tin hiêu châp nhân tin ̣ ́ ̀ ́ ̣ ́ ̣ ́ ̣ ́ hiêu yêu câu ngăt từ CPU. ̣ ̀ ́ • Chức năng cac thanh ghi bên trong 8259 bao gôm: ́ ̀ - Thanh ghi măt nạ ngăt (IMR) sử dung để cho phep (unmask) hoăc không cho phep ̣ ́ ̣ ́ ̣ ́ (mask) phuc vụ cac ngõ vao yêu câu ngăt. Môi bit trong thanh ghi nay sẽ tương ứng ̣ ́ ̀ ̀ ́ ̃ ̀ với môt ngõ vao yêu câu ngăt. Có thể không cho phep môt ngõ vao đó băng cach ghi 0 ̣ ̀ ̀ ́ ́ ̣ ̀ ̀ ́ tới bit tương ứng cua nó trong IMR. ̉ - Thanh ghi yêu câu ngăt (IRR) sẽ giữ lai cac yêu câu ngăt cua cac ngõ vao. Khi có tin ̀ ́ ̣ ́ ̀ ́ ̉ ́ ̀ ́ hiêu yêu câu ngăt đưa tới ngõ vao nao thì bit tương ứng cua nó trong thanh ghi nay sẽ ̣ ̀ ́ ̀ ̀ ̉ ̀ được lâp lên 1. ̣ - Thanh ghi phuc vụ ngăt (ISR) sẽ lưu trang thai cac ngõ vao yêu câu ngăt đang đ ược ̣ ́ ̣ ́ ́ ̀ ̀ ́ phuc vu. Bit tương ứng trong thanh ghi sẽ được lâp tương ứng với ngõ vao đang ̣ ̣ ̣ ̀ được phuc vu. ̣ ̣
  11. - Khôi xử lý ưu tiên (Priority resolver) sẽ đong vai trò quyêt đinh yêu câu tai ngõ vao ́ ́ ́ ̣ ̀ ̣ ̀ nao được phuc vu, băng cach xem xet cac bit trong cac thanh ghi IMR, ISR và IRR. ̀ ̣ ̣ ̀ ́ ́ ́ ́ Ví dụ: giả sử IR2 và IR4 không bị che và có môt tin hiêu yêu câu ngăt đưa tới ngõ vao ̣ ́ ̣ ̀ ́ ̀ IR4. Yêu câu trên IR4 sẽ lâp bit thứ 4 trong thanh ghi IRR lên 1. Trước tiên bộ xử lý ̀ ̣ ưu tiên xem bit tương ứng với nó trong thanh ghi IMR, nêu bit nay băng 1 yêu câu ngăt ́ ̀ ̀ ̀ ́ bị che và sẽ không được phuc vu. Nêu băng 0 bộ xử lý ưu tiên sẽ kiêm tra cac bit trong ̣ ̣ ́ ̀ ̉ ́ thanh ghi ISR để xem có ngõ vao nao có mức ưu tiên cao hơn đang được phuc vụ hay ̀ ̀ ̣ không. Nêu có môt ngõ vao có mức ưu tiên cao hơn đang được phuc vụ thì bộ xử lý ́ ̣ ̀ ̣ ưu tiên sẽ không tao ra tac đông nao ca. Ngược lai nêu không có yêu câu ngăt ưu tiên ̣ ́ ̣ ̀ ̉ ̣ ́ ̀ ́ cao hơn đang được phuc vụ thì bộ xử lý ưu tiên sẽ chuyên mach cho tin hiêu yêu câu ̣ ̉ ̣ ́ ̣ ̀ ngăt gửi tới CPU. Khi CPU đap ứng băng tin hiêu trả lời INTA, 8259 sẽ gửi số hiêu ́ ́ ̀ ́ ̣ ̣ ngăt đã được lâp trinh từ trước tới CPU theo Bus dữ liêu. ́ ̣ ̀ ̣ • Lâp trinh cho 8259. ̣ ̀ Để 8259 có thể hoat đông được, thì sau khi câp nguôn nó phai được lâp trinh từ 2 tới ̣ ̣ ́ ̀ ̉ ̣ ̀ 4 từ điêu khiên ICW (Input Control Word), và sau đó là cac từ điêu khiên OCW ̀ ̉ ́ ̀ ̉ (Output Control Word). Cac từ điêu khiên sẽ đinh nghia cac chế độ hoat đông cụ thể ́ ̀ ̉ ̣ ̃ ́ ̣ ̣ cho 8259, chung được đinh nghia như sau: ́ ̣ ̃ Cac từ điêu khiên ICW: ́ ̀ ̉ • ICW1 Bit D0 (IC4) xac đinh 8259 được nôi với họ vi xử lý nao. Khi nôi với hệ thông 16/32 ́ ̣ ́ ̀ ́ ́ bit 8086/8088 thì nhât thiêt phai cân ICW4 (IC4=1), con đôi với hệ thông 8 bit ́ ́ ̉ ̀ ̀ ́ ́ 8080/8085 thì IC4=0 và như vây cac bit cua ICW4 sẽ bị xoa về 0. Bit D1 (SNGL) ̣ ́ ̉ ́ đinh nghia 8259 hoat đông trong chế độ chỉ có 1 mach chủ hay có thêm cac mach tớ. D2 ̣ ̃ ̣ ̣ ̣ ́ ̣ (ADI) đinh nghia khoang cach đia chỉ cua bang vector ngăt. D3 (LITM) đinh nghia ̣ ̃ ̉ ́ ̣ ̉ ̉ ́ ̣ ̃ ngõ vao yêu câu ngăt tac đông mức hay canh. Cac bit con lai là cac bit đia chi ̉ ̀ ̀ ́ ́ ̣ ̣ ́ ̀ ̣ ́ ̣ A7A6A5 trong hệ thông 8080/85, đôi với cac hệ thông 16/32 bit chung không xac ́ ́ ́ ́ ́ ́ đinh.̣ ICW1: A0=0 A7 A6 A5 1 LTIM ADI SNGL IC4 ̀ 1: Cân ICW4 Là đia chỉ vector đôi với 8080/85 ̣ ́ 0: bỏ ICW4 Không xac đinh với hệ 16/32 bit ́ ̣ Single: 1: chỉ có 1 mach 8259 ̣ Level Trigger Mode: Chế độ cua xung yêu câu ngăt ̉ ̀ ́ ̀ ̣ 0: nhiêu mach 8259 1: theo mức dương Address Interval: ̣ 0: theo canh lên K/c giữa cac vector ngăt ́ ́ 1: 4 byte (80x86/88) 0: 8 byte (8080/85) ICW2: A0=1 T7 T6 T5 T4 T3 T2 T1 T0 ICW2 là 8 bit đia chỉ cao cua vector ngăt (AD15 - AD8) trong hệ thông 8080/85, là ̣ ̉ ́ ́ vector ngăt (T7- T3)trong hệ thông 8086/88. ́ ́
  12. ̣ ̉ ICW3 mach chu: A0=1 S7 S6 S5 S4 S3 S2 S1 S0 1: ngõ vao tương ứng có 1 mach tớ ̀ ̣ 0: không có mach tớ ở ngõ vao ̣ ̀ ICW3 cho mach tớ: ̣ A0=1 0 0 0 0 0 ID2 ID1 ID0 000 cho mach tớ tai ngõ vao IR0 … ̣ ̣ ̀ 111 cho mach tớ tai ngõ vao IR7. ̣ ̣ ̀ • ICW2 Từ điêu khiên nay cho phep chon kiêu ngăt (số hiêu ngăt) ứng với cac bit T7-T3 trong ̀ ̉ ̀ ́ ̣ ̉ ́ ̣ ́ ́ hệ thông 8086/88, khi đó cac bit con lai luôn được gan giá trị 0 ứng với ngõ vao ́ ́ ̀ ̣ ́ ̀ IR0. Cac vector ngăt cua cac ngõ vao tiêp theo sẽ lân lượt tăng lên 1. Ví dụ nêu ICW2 ́ ́ ̉ ́ ̀ ́ ̀ ́ = 40H thì cac vector ngăt sẽ lân lượt mang số hiêu từ 40H tới 47H. Trong cac hệ ́ ́ ̀ ̣ ́ thông 8080/85 thì ICW2 sẽ cung câp cac bit đia chỉ cao cua đia chỉ vector ngăt. ́ ́ ́ ̣ ̉ ̣ ́ • ICW3 Từ điêu khiên nay chỉ dung tới khi bit SNGL trong ICW1 = 0 tức là trong hệ thông có ̀ ̉ ̀ ̀ ́ nhiêu 8259 nôi tâng với nhau. Như vây sẽ tôn tai hai loai ICW3: môt cho mach chủ ̀ ́ ̀ ̣ ̀ ̣ ̣ ̣ ̣ (master) và 1 cho mach tớ (slave). Cac bit ICW3 cua 8259 chủ sử dung để chỉ đinh ̣ ́ ̉ ̣ ̣ ngõ vao nao có ghep tâng (cascade). Trong 8259 tớ chỉ sử dung 3 bit thâp để xac đinh ̀ ̀ ́ ̀ ̣ ́ ́ ̣ nó được nôi tới ngõ vao nao cua 8259 chu. ́ ̀ ̀ ̉ ̉ ICW4 A0=1 0 0 0 SFNM BUF M/S AEOI µPM N Special Fully Nested Mode µP mode Chế độ lông hoan toan. ̀ ̀ ̀ 1: 8086/88 1: SFNM 0: 8080/8085 0x: Chế độ không đêṃ Auto End Of Interrupt: 10: Chế đêm mach tớ ̣ ̣ 1: EOI tự đông ̣ 11: Chế độ đêm mach chủ ̣ ̣ 0: EOI thông thường • ICW4 Từ điêu khiên nay chỉ dung đên khi trong từ điêu khiên ICW1 có bit D0 =1. Bit µPM ̀ ̉ ̀ ̀ ́ ̀ ̉ cung câp khả năng chon vi xử lý lam viêc với 8259. ́ ̣ ̀ ̣ Bit SFNM = 1 cho phep chon chế độ ưu tiên cố đinh đăc biêt. Trong chế độ nay cac ́ ̣ ̣ ̣ ̣ ̀ ́ yêu câu ngăt với mức ưu tiên cao nhât hiên thời từ môt mach tớ lam viêc theo kiêu ̀ ́ ́ ̣ ̣ ̣ ̀ ̣ ̉ nôi tâng sẽ được mach chủ nhân biêt ngay cả khi mach chủ con đang phuc vụ môt yêu ́ ̀ ̣ ̣ ́ ̣ ̀ ̣ ̣
  13. câu ngăt ở mach tớ khac nhưng với mức ưu tiên thâp hơn. Sau khi cac yêu câu ngăt ̀ ́ ̣ ́ ́ ́ ̀ ́ được phuc vụ xong thì chương trinh phuc vụ ngăt phai có lênh kêt thuc yêu câu ngăt ̣ ̀ ̣ ́ ̉ ̣ ́ ́ ̀ ́ EOI đăt trước lênh IRET đưa đên cho mach 8259 chu. ̣ ̣ ́ ̣ ̉ Khi SFNM = 0 thì chon chế độ ưu tiên cố đinh ( mức ưu tiên giam từ IR0 t ới IR7). ̣ ̣ ̉ Nêu 8259 không dung tới ICW4 thì chế độ nay cung được coi như măc đinh. Trong ́ ̀ ̀ ̃ ̣ ̣ chế độ nay nêu chỉ có môt yêu câu ngăt đang được phuc vụ thì cac yêu câu có mức ưu ̀ ́ ̣ ̀ ́ ̣ ́ ̀ tiên thâp hơn sẽ bị câm, và cac yêu câu có mức ưu tiên cao hơn sẽ ngăt cac yêu câu ́ ́ ́ ̀ ́ ́ ̀ có mức ưu tiên thâp hơn. ́ Bit BUF cho phep chon chế độ lam viêc giữa 8259 và CPU là có đêm hay không có ́ ̣ ̀ ̣ ̣ đêm. Khi BUF =1 M/S = 0/1 sẽ chon đêm ở mach chủ hoăc mach tớ. ̣ ̣ ̣ ̣ ̣ ̣ Bit AEOI = 1 cho phep kêt thuc yêu câu ngăt tự đông. Luc nay 8259 sẽ tự đông xoa ́ ́ ́ ̀ ́ ̣ ́ ̀ ̣ ́ ISRi = 0 khi xung INTA chuyên lên mức cao mà không lam thay đôi thứ tự ưu tiên. ̉ ̀ ̉ Ngược lai khi AEOI = 0 chương trinh phuc vụ ngăt phai có thêm lênh EOI trước IRET ̣ ̀ ̣ ́ ̉ ̣ đưa tới cho 8259. Cac từ điêu khiên ICW được lâp trinh cho 8259 theo giai thuât hinh 6.8: ́ ̀ ̉ ̣ ̀ ̉ ̣ ̀ ICW1 ICW2 D1 (ICW1) = 1 ? ICW3 D1 (ICW1) = 1 ? ICW4 ̃ ̀ Săn sang nhân ̣ ̀ ́ yêu câu ngăt Cac từ điêu khiên 6.8: ̣ Giai thuât lâp trinh cac từ điêu khiên ICW cho 8259. ́ ̀ Hinh hoat đông OCW: ̀ ̀ ̉ ̣̉ ̣ ̣ ́ ̀ ̉ • OCW1 A0=1 M7 M6 M5 M4 M3 M2 M1 M0 Măt nạ cac ngăt tai cac ngõ vao yêu câu: ̣ ́ ́ ̣ ́ ̀ ̀ 1: có măt nạ ̣ 0: không có măt nạ ̣ • OCW2 A0=0 R SL EOI 0 0 L2 L1 L0 Mã hoa chế độ kêt thuc Mã hoa mức ưu tiên ngăt bị tac đông ́ ́ ́ ́ ́ ́ ̣ ngăt ́ 000: mức 0; … ; 111: mức 7
  14. • OCW3 A0=0 0 ESM SMM 0 1 P ERIS RIS 10: đoc IRR ở lân sau ̣ ̀ 11: đoc ISR ở lân sau ̣ ̀ Special Mask Mode 10:xoa chế độ măt nạ đăc biêt ́ ̣ ̣ ̣ Thăm dò trang thai hiên tai cua yêu câu ngăt.1: ̣ ́ ̣ ̣ ̉ ̀ ́ 11:lâp chế độ măt nạ đăc biêt ̣ ̣ ̣ ̣ đoc mã ưu tiên cao nhât ở lân đoc sau ̣ ́ ̀ ̣ Cac từ điêu khiên OCW sẽ quyêt đinh 8259 hoat đông như thế nao khi nó đã được ́ ̀ ̉ ́ ̣ ̣ ̣ ̀ khởi đông băng cac từ đêu khiên ICW. ̣ ̀ ́ ̀ ̉ OCW1: OCW1 dung để ghi giá trị cua cac bit măt nạ vao thanh ghi măt nạ IMR. Khi môt bit ̀ ̉ ́ ̣ ̀ ̣ ̣ măt nạ nao đó cua IMR được lâp thì yêu câu tương ứng với ngõ vao đó sẽ không ̣ ̀ ̉ ̣ ̀ ̀ được phuc vu. Từ điêu khiên nay phai được ghi tới 8259 ngay sau cac từ ICW. Cung ̣ ̣ ̀ ̉ ̀ ̉ ́ ̃ có thể đoc lai IMR để xem tai thời điêm hiên tai ngõ vao nao có yêu câu bị che. ̣ ̣ ̣ ̉ ̣ ̣ ̀ ̀ ̀ OCW2: Cac bit R, SL, EOI cho phep chung ta chon cach thức kêt thuc ngăt khac nhau. Môt ́ ́ ́ ̣ ́ ́ ́ ́ ́ ̣ vai cach kêt thuc ngăt con tac đông tới cac yêu câu ngăt được chỉ đinh với mức ưu ̀ ́ ́ ́ ́ ̀ ́ ̣ ́ ̀ ́ ̣ tiên được mã hoa bởi 3 bit L3L2L1. ́ Cac chế độ kêt thuc ngăt bao gôm: ́ ́ ́ ́ ̀ - Chế độ ưu tiên cố đinh: ̣ Đây là chế độ lam viêc măc đinh cua 8259 sau khi đã được nap cac từ lam viêc khởi ̀ ̣ ̣ ̣ ̉ ̣ ́ ̀ ̣ đâu. Trong chế độ nay có mức ưu tiên tai cac ngõ vao măc đinh giam dân từ IR0 tới ̀ ̀ ̣ ́ ̀ ̣ ̣ ̉ ̀ IR7. Cac ngõ vao có mức ưu tiên thâp hơn sẽ bị câm, và cac yêu câu có mức ưu ́ ̀ ́ ́ ́ ̀ tiên cao hơn sẽ ngăt cac yêu câu có mức ưu tiên thâp hơn. ́ ́ ̀ ́ - Chế độ quay mức ưu tiên. Ở chế độ nay khi môt yêu câu ngăt được phuc vụ xong nó sẽ được gan mức ưu tiên ̀ ̣ ̀ ́ ̣ ́ thâp nhât để tao điêu kiên cho cac yêu câu ngăt khac có cơ hôi được phuc vu. ́ ́ ̣ ̀ ̣ ́ ̀ ́ ́ ̣ ̣ ̣ - Chế độ quay mức ưu tiên chỉ đinh. ̣ Trong chế độ nay cân phai chỉ rõ ngõ vao nao được gan mức ưu tiên thâp nhât băng ̀ ̀ ̉ ̀ ̀ ́ ́ ́ ̀ cac bit L2L1L0. Ngõ vao có chỉ số kế tiêp nó sẽ được gan mức ưu tiên cao nhât. ́ ̀ ́ ́ ́ Với cac chế độ ưu tiên trên cac bit R, SL,EOI trong OCW2 đ ược mã hoa đê ̉ chỉ thi ̣ ́ ́ ́ cac chế độ kêt thuc ngăt khac nhau như sau: ́ ́ ́ ́ ́ 1. Kêt thuc ngăt thông thường: Chương trinh con phuc vụ ngăt phai có lênh EOI đăt ́ ́ ́ ̀ ̣ ́ ̉ ̣ ̣ trước lênh trở về IRET cho 8259. Mach 8259 sẽ xac đinh yêu câu ngăt vừa được ̣ ̣ ́ ̣ ̀ ́
  15. phuc vụ và xoa bit tương ứng với nó trong thanh ghi ISR, tao điêu kiên cho yêu câu ̣ ́ ̣ ̀ ̣ ̀ ngăt ở chinh ngõ vao nay hoăc cac ngăt có yêu câu thâp hơn được phuc vu. ́ ́ ̀ ̀ ̣ ́ ́ ̀ ́ ̣ ̣ 2. Kêt thuc yêu câu ngăt chỉ đinh: chương trinh con phuc vụ ngăt cung phai có lênh ́ ́ ̀ ́ ̣ ̀ ̣ ́ ̃ ̉ ̣ EOI đăt trước lênh IRET. Mach 8259 sẽ xoa đich danh bit ISR được chỉ đinh bởi ̣ ̣ ̣ ́ ́ ̣ cac bit L2L1L0 để tao điêu kiên cho yêu câu ngăt ở chinh ngõ vao nay hoăc cac ́ ̣ ̀ ̣ ̀ ́ ́ ̀ ̀ ̣ ́ ngõ vao có yêu câu thâp hơn được phuc vu. ̀ ̀ ́ ̣ ̣ 3. Quay đôi mức ưu tiên khi kêt thuc ngăt thông thường: chương trinh con phuc vụ ̉ ́ ́ ́ ̀ ̣ ngăt cung cân lênh EOI. Mach 8259 sẽ xac đinh ngõ vao vừa được phuc vu, xoa ́ ̃ ̀ ̣ ̣ ́ ̣ ̀ ̣ ̣ ́ bit tương ứng trong ISR và gan cho ngõ vao nay mức ưu tiên thâp nhât, con đâu ́ ̀ ̀ ́ ́ ̀ ̀ vao có chỉ số kế tiêp (i+1) sẽ được gan mức ưu tiên cao nhât. ̀ ́ ́ ́ 4. Quay đôi mức ưu tiên trong chế độ kêt thuc ngăt tự đông: chỉ cân cung câp lênh ̉ ́ ́ ́ ̣ ̀ ́ ̣ chon chế độ nay môt lân băng cach chon chế độ quay khi EOI tự đông. Từ đó trở ̣ ̀ ̣ ̀ ̀ ́ ̣ ̣ đi 8259 sẽ đôi mức ưu tiên môi khi kêt thuc ngăt như mô tả trong phân 3. Muôn ̉ ̃ ́ ́ ́ ̀ ́ xoa bỏ chế độ nay chỉ viêc lâp trinh lai chế độ khac cho 8259. ́ ̀ ̣ ̣ ̀ ̣ ́ 5. Quay đôi mức ưu tiên khi kêt thuc yêu câu ngăt chỉ đinh: chương trinh phuc vụ ̉ ́ ́ ̀ ́ ̣ ̀ ̣ ngăt phai có lênh EOI chỉ đich danh trước lênh IRET. Mach 8259 sẽ xoa bit ́ ̉ ̣ ́ ̣ ̣ ́ tương ứng trong thanh ghi ISR và gan mức ưu tiên thâp nhât cho ngõ vao có chỉ số ́ ́ ́ ̀ chỉ đinh bởi L2L1L0.̣ 6. Lâp mức ưu tiên: chế độ nay cho phep thay đôi mức ưu tiên cố đinh hoăc mức ưu ̣ ̀ ́ ̉ ̣ ̣ tiên gan trước băng cach gan mức ưu tiên thâp nhât cho ngõ vao chỉ đinh bởi ́ ̀ ́ ́ ́ ́ ̀ ̣ L2L1L0, yêu câu ngăt có chỉ số kế tiêp (i+1) sẽ có mức ưu tiên cao nhât. ̀ ́ ́ ́ Cac bit R,SL và EOI được mã hoa cho cac chế độ như mô tả trong bang sau: ́ ́ ́ ̉ 001 Lênh EOI thông thường ̣ ́ ́ ́ Kêt thuc ngăt EOI 011 Lênh EOI chỉ đinh ̣ ̣ 101 Đôi mức ưu tiên khi có EOI thường ̉ Đôi mức ưu tiên tự đông ̉ ̣ 100 Lâp chế độ quay khi có EOI tự đông ̣ ̣ 000 Xoa chế độ quay khi có EOI tự đông ́ ̣ 111 Đôi mức ưu tiên khi có EOI chỉ đinh ̉ ̣ Đôi mức ưu tiên chỉ đinh ̉ ̣ 110 Lâp mức ưu tiên ̣ 010 Không lam gì cả ̀ Từ điêu khiên hoat đông OCW3 sau khi ghi vao 8259 cho phep thực hiên cac công viêc ̀ ̉ ̣ ̣ ̀ ́ ̣ ́ ̣ sau: + Chon ra cac thanh ghi để đoc. ̣ ́ ̣ + Thăm dò trang thai yêu câu ngăt băng cach đoc trang thai cua ngõ vao có mức ưu ̣ ́ ̀ ́ ̀ ́ ̣ ̣ ́ ̉ ̀ tiên cao nhât cung với mã đâu vao cua no. ́ ̃ ̀ ̀ ̉ ́ + Thao tac với măt nạ đăc biêt. ́ ̣ ̣ ̣ Khi đoc cac thanh ghi IRR và ISR có thể biêt được cac ngõ vao nao đang có yêu câu ̣ ́ ́ ́ ̀ ̀ ̀ phuc vu, và ngõ vao nao đang được phuc vu. ̣ ̣ ̀ ̀ ̣ ̣ Băng viêc cho bit P cua OCW3 = 1 có thể đoc được trên bus dữ liêu ở lân đoc ngay ̀ ̣ ̉ ̣ ̣ ̀ ̣ sau đó từ thăm do, trong từ thăm dò nay sẽ có cac thông tin về yêu câu ngăt có mức ưu ̀ ̀ ́ ̀ ́ tiên cao nhât như hinh sau: ́ ̀
  16. I x x x x W2 W1 W0 1: Đang có yêu câu ngăt ̀ ́ Mã hoa số hiêu ngõ vao có ́ ̣ ̀ 0: không có yêu câu ngăt ̀ ́ mức ưu tiên cao nhât ́ Chú ý trước khi đoc từ thăm dò cân phai câm cac yêu câu ngăt băng lênh CLI. ̣ ̀ ̉ ́ ́ ̀ ́ ̀ ̣ Bit ESM = 1 cho phep thao tac với chế độ măt nạ đăc biêt. Chế độ măt nạ đăc biêt ́ ́ ̣ ̣ ̣ ̣ ̣ ̣ được dung để thay đôi chế độ ưu tiên ngay bên trong chương trinh con phuc vụ ngăt. ̀ ̉ ̀ ̣ ́ Ví dụ trong trường hợp có môt yêu câu ngăt bị câm (bị che bởi chương trinh phuc vụ ̣ ̀ ́ ́ ̀ ̣ ngăt với từ lênh OCW1) mà ta lai muôn cho phep cac yêu câu ngăt với mức ưu tiên ́ ̣ ̣ ́ ́ ́ ̀ ́ thâp hơn so với yêu câu ngăt bị câm đó được tac đông, khi đó cân phai sử dung chế độ ́ ́ ́ ́ ́ ̣ ̀ ̉ ̣ măt nạ đăc biêt. Khi đã được thiêt lâp thì chế độ măt nạ đăc biêt sẽ tôn tai cho đên khi ̣ ̣ ̣ ́ ̣ ̣ ̣ ̣ ̀ ̣ ́ xoa băng cach ghi vao 8259 môt từ OCW3 khac có bit SMM = 0. Măt nạ đăc biêt ́ ̀ ́ ̀ ̣ ́ ̣ ̣ ̣ không anh hưởng tới cac yêu câu ngăt với mức ưu tiên cao hơn. Hinh 6.9 biêu diên ̉ ́ ́ ́ ̀ ̉ ̃ viêc kêt nôi 8259 chủ với CPU 8088 ở chế độ MIN. ̣ ́ ́ 8259 D0-D7 D0-D7 RD RD WR WR A0 A0 INTR INT INTA INTA A1 -A7 CS IO/M Hinh 6.9: Kêt nôi môt 8259 với CPU 8088 ở chế độ MIN. ̀ ́ ́ ̣ b. VAO RA DỮ LIÊU BĂNG DMA. (Direct Memory Access ). ̀ ̣ ̀ i. Nguyên tăc chung. ADDRESS ́ LATCHES Trong cac nguyên tăc vao ra quet vong và ngăt đã biêt, dữ liêu được truyên trực tiêp ́ ́ ̀ ́ ̀ ́ ́ ̣ ̀ ́ giữa CPU vaALE công vao ra, tôc độ truyên dữ liêu sẽ tuy thuôc vao cac lênh cua CPU, ̀ cac ̉ ́ ̀ ́ ̀ ̣ ̀ ̣ ̀ ́ ̣ ̉ vì thế sẽ không thể thực hiên viêc truyên dữ liêu môt cach nhanh chong. Để truyên dữ ̣ ̣ ̀ ̣ ̣ ́ ́ ̀ liêu với AD0-AD15nhanh hơn người ta sử dung phương phap vao ra băng cơ chế thâm ̣ tôc độ ́ ̣ ́ ̀ ̀ nhâp trực tiêp bộ nhớ (DMA - Direct Memory Access). Trong cơ chế nay thiêt bị ngoai ̣ ́ ̀ ́ ̣ vi sẽ truyên dữ liêu theo khôi với bộ nhớ mà không thông qua sự điêu khiên cua CPU, ̀ ̣ ́ ̀ ̉ ̉ bộ điêu khiên DMA tao ra cac đia chỉ môt cach tuân tự để truyên trực tiêp dữ liêu giữa ̀ CPU ̉ ̣ ́ ̣ ̣ ́ ̀ ̀ ́ MEMORY ̣ DATA BUS bộ nhớ và vao ra, mà không phai thực hiên cac chu kỳ đoc ghi BUS CPU, do đó tôc độ ̀ ̉ ̣ ́ DATA như ̣ ́ truyên sẽ rât nhanh. CONTROL BUS ̀ ́ Sơ đồ khôi cua hệ (IOR, IOW, MEMR,MEMW) theo nguyên tăc DMA có thể mô tả như hinh ́ ̉ thông vao ra dữ liêu ́ ̀ ̣ ́ CONTROL BUS ̀ 6.10: DATA BUS HOLD HRQ DMA CONTROL BUS CONTROLLER HLDA HLDA DREQ PERIPHERAL DACK DEVICE Hinh 6.10: Nguyên tăc vao ra băng DMA trong hệ thông vi xử ly. ̀ ́ ̀ ̀ ́ ́
  17. Trong sơ đồ nay CPU và DMAC sẽ luôn phiên sử dung cac BUS đia chi, dữ liêu, và ̀ ̣ ́ ̣ ̉ ̣ ̀ ̉ điêu khiên thông qua viêc điêu khiên chuyên mach ba công tăc lên phia trên hoăc xuông ̣ ̀ ̉ ̉ ̣ ́ ́ ̣ ́ phia dưới. Khi hệ thông băt đâu hoat đông cac công tăc năm ở phia trên, vì thế cac Bus ́ ́ ́ ̀ ̣ ̣ ́ ́ ̀ ́ ́ sẽ nôi ghep giữa CPU với bộ nhớ và cac thiêt bị ngoai vi. Hệ thông sẽ hoat đông binh ́ ́ ́ ́ ̣ ́ ̣ ̣ ̀ thường cho đên khi cân thực hiên môt chu kỳ truy câp DMA (ví dụ đoc 1 file từ đia từ ́ ̀ ̣ ̣ ̣ ̣ ̃ trong hệ thông may vi tinh PC). Để đoc môt khôi dữ liêu từ thiêt bi, cân phai gửi môt ́ ́ ́ ̣ ̣ ́ ̣ ́ ̣ ̀ ̉ ̣ chuôi lênh tới thiêt bị để xac đinh vị trí cua khôi dữ liêu. Khi thiêt bị đã có dữ liêu săn ̃ ̣ ́ ́ ̣ ̉ ́ ̣ ́ ̣ ̃ sang để truyên nó sẽ gửi tin hiêu yêu câu DMA băng tin hiêu DREQ tới bộ điêu khiên ̀ ̀ ́ ̣ ̀ ̀ ́ ̣ ̀ ̉ DMA (DMAC). Nêu DMAC được lâp trinh không che (cho phep hoat đông khi có yêu ́ ̣ ̀ ́ ̣ ̣ câu ), nó sẽ gửi tin hiêu yêu câu treo bus HRQ tới ngõ vao HOLD cua CPU. Luc nay ̀ ́ ̣ ̀ ̀ ̉ ́ ̀ CPU sẽ treo cac bus cua nó lên trang thai trở khang cao (tương đương với viêc chuyên ́ ̉ ̣ ́ ́ ̣ ̉ mach cac công tăc xuông phia dưới, ngăt CPU ra khoi cac Bus), và trả lời châp nhân ̣ ́ ́ ́ ́ ́ ̉ ́ ́ ̣ yêu câu treo bus băng tin hiêu HLDA cho bộ điêu khiên DMA. Khi nhân được tin hiêu ̀ ̀ ́ ̣ ̀ ̉ ̣ ́ ̣ châp nhân HLDA từ CPU, bộ điêu khiên DMA sẽ băt đâu thực hiên viêc điêu khiên cac ́ ̣ ̀ ̉ ́ ̀ ̣ ̣ ̀ ̉ ́ Bus. Nó sẽ gửi đia chỉ tới bộ nhớ để xac đinh vị trí mà byte đâu tiên sẽ được ghi vao. ̣ ́ ̣ ̀ ̀ Tiêp theo DMAC sẽ gửi tin hiêu châp nhân DMA băng tin hiêu DACK tới cho thiêt bi, ́ ́ ̣ ́ ̣ ̀ ́ ̣ ́ ̣ tin hiêu nay sẽ thông bao cho thiêt bị trang thai săn sang cho thiêt bị gửi ra môt byte dữ ́ ̣ ̀ ́ ́ ̣ ́ ̃ ̀ ́ ̣ liêu. Cuôi cung DMAC sẽ tao ra cả hai tin hiêu ghi bộ nhớ (MEMW) và đoc vao ra ̣ ́ ̀ ̣ ́ ̣ ̣ ̀ (IOR) môt cach đông thời, IOR sẽ cho phep thiêt bị cung câp dữ liêu ra data Bus, ̣ ́ ̀ ́ ́ ́ ̣ MEMW cho phep bộ nhớ nhân dữ liêu từ data Bus. Như vây DMA đã điêu khiên viêc ́ ̣ ̣ ̣ ̀ ̉ ̣ ghi trực tiêp dữ liêu từ thiêt bị tới bộ nhớ mà không thông qua CPU. ́ ̣ ́ Khi đã hoan thanh viêc truyên dữ liêu, DMAC sẽ giai phong Bus và dừng tac đông tin ̀ ̀ ̣ ̀ ̣ ̉ ́ ́ ̣ ́ hiêu HOLD. CPU sẽ quay về điêu khiên BUS trở lai cho đên khi có môt yêu câu DMA ̣ ̀ ̉ ̣ ́ ̣ ̀ mới. CPU sẽ tiêp tuc thực hiên tiêp chương trinh tai nơi mà nó đã dừng lai để thực ́ ̣ ̣ ́ ̀ ̣ ̣ ̣ hiên yêu câu DMA. ̀ Quá trinh ghi trực tiêp dữ liêu từ bộ nhớ tới thiêt bị sẽ được thực hiên hoan toan ̀ ́ ̣ ́ ̣ ̀ ̀ tương tự. Khi đó DMAC sẽ tao ra cac tin hiêu điêu khiên đoc bộ nhớ (MEMR) và ghi ̣ ́ ́ ̣ ̀ ̉ ̣ vao ra (IOWC) môt cach đông thời. ̀ ̣ ́ ̀ Trong thực tế có 3 chế độ trao đôi dữ liêu theo nguyên tăc DMA: ̉ ̣ ́ - Treo CPU môt khoang thời gian để trao đôi cả mang dữ liêu. ̣ ̉ ̉ ̉ ̣ - Treo CPU môt số chu kỳ may để trao đôi từng byte ̣ ́ ̉
  18. - Tân dung thời gian CPU không sử dung Bus để truyên dữ liêu. ̣ ̣ ̣ ̀ ̣ Để hiêu rõ cac nguyên tăc nay chung ta có thể xem xet bộ điêu khiên DMA 8237 cua ̉ ́ ́ ̀ ́ ́ ̀ ̉ ̉ ̃ hang Intel. ii. Vi mach DMAC 8237 - A. ̣ 1. Cac đăc tinh cơ ban. ́ ̣ ́ ̉ ̀ ̉  Điêu khiên cho phep hoăc không cho phep cac kênh DMA môt cach riêng biêt. ́ ̣ ́ ́ ̣ ́ ̣  Có 4 kênh DMA đôc lâp nhau. ̣ ̣  Có khả năng truyên dữ liêu từ bộ nhớ tới bộ nhớ. ̀ ̣  Có thể truyên theo chiêu tăng hoăc giam đia chi. ̀ ̀ ̣ ̉ ̣ ̉  Hiêu suât truyên dữ liêu rât cao: với xung nhip 5Mhz có thể truyên 1.6MB/1 giây. ̣ ́ ̀ ̣ ́ ̣ ̀  Có khả năng ghep tâng (cascade) để tăng số kênh DMA. ́ ̀  Có tin hiêu ngõ vao kêt thuc viêc truyên dữ liêu. ́ ̣ ̀ ́ ́ ̣ ̀ ̣  Có khả năng nhân yêu câu DMA băng phân mêm. ̣ ̀ ̀ ̀ ̀ 2. Sơ đồ khôi và chức năng cac khôi. ́ ́ ́ Như hinh 6.11, sơ đồ khôi cua 8237 bao gôm nhiêu khôi logic và cac thanh ghi. Bus ̀ ́ ̉ ̀ ̀ ́ ́ nôi nôi cac thanh ghi cho phep thay đôi cac tin hiêu điêu khiên giữa cac khôi. 8237 có ̣ ́ ́ ́ ̉ ́ ́ ̣ ̀ ̉ ́ ́ tât cả 324 bit nhớ bên trong tao thanh cac thanh ghi bao gôm: ́ ̣ ̀ ́ ̀ - 4 thanh ghi đia chỉ cơ sở 16 bit. ̣ - 4 thanh ghi đêm số từ cơ sở 16 bit. ́ - 4 thanh ghi đia chỉ hiên hanh 16 bit. ̣ ̣ ̀ - 4 thanh ghi đêm số từ hiên hanh 16 bit.́ ̣ ̀ - 1 thanh ghi đia chỉ tam thời 16 bit. ̣ ̣ - 1 thanh ghi đêm số từ tam thời 16 bit. ́ ̣ - 1 thanh ghi trang thai 8 bit. ̣ ́ - 1 thanh ghi lênh 8 bit. ̣ - 1 thanh ghi tam thời 8 bit. ̣ - 4 thanh ghi chế độ 6 bit. - 1 thanh ghi măt nạ 4 bit. ̣ A0-A3 - 1 thanh ghi yêu câu 4 bit. Bộ giam ̀ ̉ Bộ tăng ̣ Đêm I/O EOP RESET Thanh ghi đêm ́ Thanh ghi đia ̣ Khôi ́ số từ tam thời ̣ chỉ tam thời ̣ CS A4-A7 taọ ̣ Đêm ra READY nhip ̣ CLK và AEN điêu ̀ Bộ đêm đoc ̣ ̣ Bộ đêm đoc/ghi ̣ ̣ ADSTB khiên ̉ Thanh ghi đêm ́ Thanh ghi đêm số ́ A0-A15 MEMW số từ cơ sở / đia ̣ từ hiên tai / đia chỉ ̣ ̣ ̣ MEMR chỉ cơ sở ̣ ̣ hiên tai IOR IOW ̣ Đêm ghi ̣ ̣ Đêm đoc Bộ mã hoa ́ HLDA mức ưu DB0-DB7 HRQ tiên và ̣ T.ghi lênh ̣ Đêm I/O DRQ0 - logic tao ưu ̣ DRQ3 tiên luân phiên T.ghi măt nạ ̣ DACK0 - T.ghi T.ghi T.ghi DACK3 C/độ ́ ̣ T/thai tam ̀ T.ghi yêu câu Hinh 6.11: Sơ đồ khôi bộ điêu khiên DMA 8037, ̀ ́ ̀ ̉
  19. 8237 có 3 khôi điêu khiên logic bao gôm: ́ ̀ ̉ ̀ - Khôi điêu khiên đinh thời có chức năng tao cac tin hiêu đinh thời bên trong và bên ́ ̀ ̉ ̣ ̣ ́ ́ ̣ ̣ ngoai cho 8237. ̀ - Khôi điêu khiên lênh chương trinh có chức năng mã hoa cac lênh gửi tới từ CPU ́ ̀ ̉ ̣ ̀ ́ ́ ̣ để phuc vụ môt chu kỳ DMA. Nó cung giai mã từ chế độ để chon kiêu DMA trong ̣ ̣ ̃ ̉ ̣ ̉ suôt chu kỳ phuc vu. ́ ̣ ̣ - Khôi mã hoa ưu tiên sẽ giai quyêt cac tranh châp ưu tiên giữa cac kênh DMA có ưu ́ ́ ̉ ́ ́ ́ ́ câu phuc vụ tai cung môt thời điêm. ̀ ̣ ̣ ̀ ̣ ̉ ́ ́ 3. Cac tin hiêu cua 8237. ̣ ̉ + Vcc, Vss: câp nguôn +5 Vdc ́ ̀ + CLK (Clock): Ngõ vao cung câp xung nhip cho 8237 để điêu khiên đinh thời toan bộ ̀ ́ ̣ ̀ ̉ ̣ ̀ hoat đông bên trong cua 8237, và nó sẽ quyêt đinh tôc độ truyên dữ liêu cua 8237. Có ̣ ̣ ̉ ́ ̣ ́ ̀ ̣ ̉ thể câp Clock 3 MHz với 8237A, và 5 MHz với 8237 -5. ́ + CS (Chip Select): tin hiêu chon mach, sử dung để CPU chon 8237 như môt đia chỉ ́ ̣ ̣ ̣ ̣ ̣ ̣ ̣ vao ra trong suôt chu kỳ nó lam viêc, cho phep CPU truyên dữ liêu với 8237. ̀ ́ ̀ ̣ ́ ̀ ̣ + RESET: Ngõ vao tac đông mức cao xoa toan bộ cac thanh ghi lênh, thanh ghi trang ̀ ́ ̣ ́ ̀ ́ ̣ ̣ thai, thanh ghi yêu câu và thanh ghi tam thời, nó cung xoa toan bộ cac bit che phuc vu. ́ ̀ ̣ ̃ ́ ̀ ́ ̣ ̣ Thiêt lâp lai toan bộ trang thai ban đâu cua 8237. ́ ̣ ̣ ̀ ̣ ́ ̀ ̉ + READY: Ngõ vao cung câp từ bộ nhớ tới 8237 trong cac chu kỳ đoc ghi, tin hiêu ̀ ́ ́ ̣ ́ ̣ nay sử dung để bộ nhớ thông bao trang thai săn sang cua nó tới 8237 cho phep 8237 ̀ ̣ ́ ̣ ́ ̃ ̀ ̉ ́ giao tiêp được với cac bộ nhớ châm. ́ ́ ̣ + HLDA (Hold Acknowledge): Ngõ vao tac đông mức cao nhân tin hiêu châp yêu câu ̀ ́ ̣ ̣ ́ ̣ ́ ̀ treo bus gửi tới từ CPU. Khi nhân được tin hiêu nay 8237 sẽ băt đâu chiêm bus cua ̣ ́ ̣ ̀ ́ ̀ ́ ̉ CPU để thực hiên chu kỳ DMA. ̣ + DREQ0 - DREQ3: (DMA REQUEST) là cac ngõ vao nhân cac yêu câu DMA từ ́ ̀ ̣ ́ ̀ thiêt bi. Trong chế độ ưu tiên cố đinh (fixed) DREQ0 sẽ có mức ưu tiên cao nhât, cho ́ ̣ ̣ ́ tới DREQ3 có mức ưu tiên thâp nhât. Yêu câu gửi tới kênh nao thì sẽ được trả lời ́ ́ ̀ ̀ trên đường DACK tương ứng. Cực tinh yêu câu ở cac ngõ vao nay có thể lâp trinh ́ ̀ ́ ̀ ̀ ̣ ̀ được, khi RESET nó sẽ tac đông mức cao. Tin hiêu yêu câu cân được duy trì cho tới ́ ̣ ́ ̣ ̀ ̀ khi DACK tac đông. ́ ̣ + DB0 - DB7 (Data Bus): là bus dữ liêu hai chiêu 3 trang thai, nôi tới bus hệ ̣ ̀ ̣ ́ ́ thông. Bus nay có thể sử dung ghi cac từ điêu khiên lâp trinh cac thanh ghi cua 8237, ́ ̀ ̣ ́ ̀ ̉ ̣ ̀ ́ ̉ và đoc trang thai hiên hanh cua cac thanh ghi trang thai, tam thời, và thanh ghi đêm số ̣ ̣ ́ ̣ ̀ ̉ ́ ̣ ́ ̣ ́ từ. Trong cac chu kỳ DMA 8 bit đia chỉ cao sẽ được cung câp ra cac ngõ ra nay, chứa ́ ̣ ́ ́ ̀ vao bộ cai bên ngoai băng tin hiêu ADSTB. Trong chu kỳ truyên dữ liêu giữa cac ô nhớ ̀ ̀ ̀ ̀ ́ ̣ ̀ ̣ ́ (Memory - Memory), dữ liêu sẽ được đoc vao 8237 thông qua data bus trong chu ky ̀ ̣ ̣ ̀ đoc, rôi chuyên ra data bus để chứa vao vị trí mới trong chu kỳ ghi. ̣ ̀ ̉ ̀ + IOR (Input / Output Read): là đường tin hiêu hai chiêu 3 trang thai. Trong chu kỳ rôi ́ ̣ ̀ ̣ ́ ̃ (Idle) nó được cung câp tới từ CPU để đoc giá trị cac thanh ghi điêu khiên. Trong chu ́ ̣ ́ ̀ ̉ kỳ hoat đông DMA, tin hiêu nay là ngõ ra sử dung để 8237 đoc dữ liêu từ thiêt bị ngoai ̣ ̣ ́ ̣ ̀ ̣ ̣ ̣ ́ ̣ vi trong chu kỳ DMA ghi.
  20. + IOW(Input / Output Write) là đường tin hiêu hai chiêu 3 trang thai. Trong chu kỳ rôi ́ ̣ ̀ ̣ ́ ̃ (Idle) nó được cung câp tới từ CPU, để CPU có thể ghi cac thông tin cân thiêt tới ́ ́ ̀ ́ 8237. Trong chu kỳ hoat đông DMA, tin hiêu nay là ngõ ra sử dung để 8237 ghi dữ liêu ̣ ̣ ́ ̣ ̀ ̣ ̣ tới thiêt bị ngoai vi, trong chu kỳ DMA đoc. ́ ̣ ̣ + EOP (End Of Process) : Là tin hiêu hai chiêu tac đông mức thâp, cho phep kêt thuc ́ ̣ ̀ ́ ̣ ́ ́ ́ ́ phuc vụ DMA hiên hanh. Khi thiêt bị bên ngoai muôn kêt thuc phuc vụ DMA hiên hanh ̣ ̣ ̀ ́ ̀ ́ ́ ́ ̣ ̣ ̀ nó cung câp tới ngõ vao nay môt xung mức thâp. Khi 8237 thực hiên xong môt chu kỳ ́ ̀ ̀ ̣ ́ ̣ ̣ DMA nó sẽ cung câp tin hiêu thông bao tới ngõ ra nay. Tom lai khi có mức thâp tai ́ ́ ̣ ́ ̀ ́ ̣ ́ ̣ ngõ nay quá trinh phuc vụ DMA sẽ kêt thuc, trang thai cua 8237 cân được tao lâp lai. ̀ ̀ ̣ ́ ́ ̣ ́ ̉ ̀ ̣ ̣ ̣ Nêu 8237 được lâp trinh cho phep tự đông khởi đông (auto initialize), thì thanh ghi cơ ́ ̣ ̀ ́ ̣ ̣ sở sẽ được ghi tới thanh ghi hiên hanh cua kênh đo. Bit che (mask) và bit TC (Terminal ̣ ̀ ̉ ́ Count) cua kênh hiên hanh trong thanh ghi trang thai sẽ được lâp, trừ khi kênh đó đã ̉ ̣ ̀ ̣ ́ ̣ được lâp trinh tự đông khởi đông. ̣ ̀ ̣ ̣ + A0 - A3 (Address): là cac tin hiêu hai chiêu 3 trang thai, trong chu kỳ rôi (không phuc ́ ́ ̣ ̀ ̣ ́ ̃ ̣ vụ DMA) cac tin hiêu nay là cac ngõ vao sử dung để CPU đinh vị cac thanh ghi điêu ́ ́ ̣ ̀ ́ ̀ ̣ ̣ ́ ̀ khiên bên trong 8237. Trong trang thai phuc vụ DMA chung là cac ngõ ra cung câp cac ̉ ̣ ́ ̣ ́ ́ ́ ́ bit đia chỉ thâp ra bus đia chi, sử dung cho cac bộ nhớ và thiêt bị ngoai vi. ̣ ́ ̣ ̉ ̣ ́ ́ ̣ + A4 - A7 (Address) : là cac ngõ ra 3 trang thai cung câp 4 bit đia chỉ trong cac chu kỳ ́ ̣ ́ ́ ̣ ́ phuc vụ DMA. ̣ + HRQ (Hold Request) : là ngõ ra gửi yêu câu treo bus tới CPU, nó được tac đông khi ̀ ́ ̣ có yêu câu trên môt kênh vao DREQ không che. Ngõ vao HLDA cân phai tac đông sau ̀ ̣ ̀ ̀ ̀ ̉ ́ ̣ HRQ it nhât sau 1 chu kỳ xung nhip. ́ ́ ̣ + DACK0 - DACK3 (DMA Acknowledge): là cac ngõ ra thông bao cho thiêt bị ngoai ́ ́ ́ ̣ vi biêt yêu câu DMA cua nó được châp nhân. Mức tac đông cua cac ngõ nay có thể lâp ́ ̀ ̉ ́ ̣ ́ ̣ ̉ ́ ̀ ̣ trinh được, khi khởi đông lai nó sẽ tac đông mức thâp. ̀ ̣ ̣ ́ ̣ ́ + AEN (Address Enable) : là ngõ ra tac đông mức cao cai 8 bit đia chỉ cao lên bus hệ ́ ̣ ̀ ̣ thông, tin hiêu nay có thể sử dung để câm cac thiêt bị khac truy câp bus trong khi đang ́ ́ ̣ ̀ ̣ ́ ́ ́ ́ ̣ phuc vụ DMA. ̣ + ADSTB (Address Strobe): là ngõ ra tac đông mức cao cai cac đường đia chỉ cao ra ́ ̣ ̀ ́ ̣ bộ cai bên ngoai. ̀ ̀ + MEMR (Memory Read) : là ngõ ra 3 trang thai tac đông mức thâp sử dung cho phep ̣ ́ ́ ̣ ́ ̣ ́ 8237 đoc bộ nhớ trong chu kỳ DMA đoc, hoăc trong chu kỳ truyên dữ liêu giữa bộ nhớ ̣ ̣ ̣ ̀ ̣ và bộ nhớ. + MEMW (Memory Write) : là ngõ ra 3 trang thai tac đông mức thâp sử dung cho ̣ ́ ́ ̣ ́ ̣ phep 8237 ghi bộ nhớ trong chu kỳ DMA ghi, hoăc trong chu kỳ truyên dữ liêu giữa bộ ́ ̣ ̀ ̣ nhớ và bộ nhớ. 3. Nôi ghep 8237 với hệ thông CPU. ́ ́ ́ Khi phuc vụ môt yêu câu DMA ở 1 trong cac ngõ vao DREQ, 8237 sẽ gửi yêu câu ̣ ̣ ̀ ́ ̀ ̀ treo bus tới CPU băng cach cung câp mức cao tới ngõ ra HRQ, CPU nhân tin hiêu ̀ ́ ́ ̣ ́ ̣ nay tai ngõ vao HOLD, luc nay nó thực hiên hêt chu kỳ lênh hiên hanh rôi treo cac ̀ ̣ ̀ ́ ̀ ̣ ́ ̣ ̣ ̀ ̀ ́ bus lên trang thai trở khang cao và trả lời cho 8237 băng tin hiêu HLDA. Khi nhân ̣ ́ ́ ̀ ́ ̣ ̣ được tin hiêu trả lời cua CPU, 8237 băt đâu quá trinh chiêm bus để thực hiên ́ ̣ ̉ ́ ̀ ̀ ́ ̣ chu kỳ phuc vụ DMA. Đia chỉ mà 8237 tao ra bao gôm 2 byte, 8 bit cao cung câp ̣ ̣ ̣ ̀ ́ tới cac ngõ ra A0-A7, 8 bit thâp sẽ cung câp ra data bus DB0-DB7 và được xung ́ ́ ́ ADSTB cai vao bộ cai 8 bit cung câp tới bộ nhớ. ̀ ̀ ̀ ́

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản