Tài liệu môn học: Ghép nối và ñiều khiển thiết bị ngoại vi CHƯƠNG 4: GHÉP NỐI ðIỀU KHIỂN NGẮT 4.1 Khái niệm và phân loại ngắt 4.1.1 Khái niệm Mỗi khi một thiết bị phần cứng hay một chương trình cần ñến sự giúp ñỡ của CPU, nó gửi ñi một tín hiệu hoặc lệnh gọi là ngắt (Interrupt Request – IRQ) ñến bộ vi xử lý chỉ ñịnh một công việc cụ thể nào ñó mà nó cần CPU thực hiện. Khi bộ vi xử lý nhận ñược tín hiệu ngắt, nó thường tạm ngưng tất cả các hoạt ñộng khác và kích hoạt một chương trình con ñang có trong bộ nhớ gọi là chương trình xử lý ngắt (Interrupt Service Routine _ ISR) tương ứng với từng số liệu ngắt cụ thể. Sau khi chương trình xử lý ngắt làm xong nhiệm vụ, các hoạt ñộng của máy tính sẽ tiếp tục lại từ nơi ñã bị tạm dừng lúc xảy ra ngắt. 4.1.2 Phân loại ngắt Có ba loại ngắt chính, ñầu tiên là các ngắt ñược tạo ra bởi mạch ñiện của máy tính nhằm ñáp lại một sự kiện nào ñó như nhấn phím trên bàn phím ... Các ngắt này ñược bộ ñiều khiển ngắt 8259A quản lý. 8259A sẽ ấn ñịnh mức ñộ ưu tiên cho từng ngắt rồi gửi ñến CPU. Thứ hai là các ngắt do CPU tạo ra khi gặp phải một kết quả bất thường trong khi thực hiện chương trình như chia cho 0 chẳng hạn … Cuối cùng là các ngắt do chính chương trình tạo ra nhằm gọi các chương trình con ở xa ñang nằm trong ROM hoặc RAM, các ngắt này gọi là ngắt mềm chúng thường là bộ phận của các chương trình con phục vụ của ROM-BIOS hoặc của DOS. Ngoài ba loại ngắt trên còn có loại ngắt ñặc biệt là ngắt không bị che NMI ñòi hỏi CPU phục vụ ngay khi có yêu cầu. Loại ngắt này thường ñược dùng ñể báo hiệu sự cố như sụt ñiệp áp hay lỗi bộ nhớ. Như vậy NMI là mức ngắt có ñộ ưu tiên cao nhất . Các ngắt trong PC có thể chia thành 4 nhóm như sau : - Các ngắt vi xử lý : Thường gọi là các ngắt logic ñược thiết kế sẵn trong bộ VXL. Bốn trong số các ngắt này (0,1,3,4 ) do chính bộ VXL tạo ra, còn ngắt 2 (NMI ) sẽ ñược kích hoạt khi có tín hiệu tạo ra bởi một trong các thiết bị ngoài. 1. Các ngắt cứng Ðược thiết kế sẵn trong phần cứng của của PC, tám ngắt trong số các ngắt này (2,8,9,từ Bh ñến Fh) ñược gắn chết vào trong bộ VXL hoặc vào bảng mạch chính của hệ thống. Tất cả các ngắt cứng ñều do 8259A ñiều khiển . 2. Các ngắt mềm Giảng viên: Nguyễn Văn Minh Trí 55 Tài liệu môn học: Ghép nối và ñiều khiển thiết bị ngoại vi Những ngắt này là một phần của các chương trình ROM -BIOS, các số hiệu dành cho các ngắt của ROM- BIOS là từ 10h ñến 1C h và 48h . Ngoài ra còn có các ngắt DOS và ngắt BASIC phục vụ hệ ñiều hành DOS và chương trình BASIC . 3. Các ngắt ñịa chỉ Bảng 4.1 : Bảng chức năng các ngắt trong máy vi tính INT (Hex) 00 01 02 03 04 05 - 07 08 09 0A 0B 0C 0D 0E 0F 10 - 6F 70 71 72 73 74 75 76 77 78 - FF IRQ Exception Handlers Exception Handlers Non-Maskable IRQ Exception Handlers Exception Handlers Exception Handlers Hardware IRQ0 Hardware IRQ1 Hardware IRQ2 Hardware IRQ3 Hardware IRQ4 Hardware IRQ5 Hardware IRQ6 Hardware IRQ7 Software Interrupts Hardware IRQ8 Hardware IRQ9 Hardware IRQ10 Hardware IRQ11 Hardware IRQ12 Hardware IRQ13 Hardware IRQ14 Hardware IRQ15 Software Interrupts Common Uses Chia một số cho 0 Thực hiện từng bước Non-Maskable IRQ (Các lỗi chẵn lẻ) ðiểm dừng chương trình do người sử dụng ñặt Vượt quá nội dung thanh ghi hay bộ nhớ -Bộ thời gian hệ thống Bàn phím Redirected Cổng nối tiếp COM2/COM4 Cổng nối tiếp COM1/COM3 Reserved/Sound Card ðiểu khiển ñĩa mềm Cổng song song Ngắt ROM-BIOS hay DOS ðồng hồ thời gian thực Redirected IRQ2 Reserved Reserved PS/2 Mouse Math`s Co-Processor Hard Disk Drive Reserved - Ba trong số các ngắt này trỏ ñến ba bảng rất quan trọng, ñó là bảng khởi tạo màn hình, bảng cơ sở ñĩa và bảng các ký tự ñồ thị. Các bảng này chứa các tham số ñược ROM Giảng viên: Nguyễn Văn Minh Trí 56 Tài liệu môn học: Ghép nối và ñiều khiển thiết bị ngoại vi BIOS dùng khi khởi ñộng hệ thống và tạo các ký tự ñồ thị. Các số hiệu dành cho các ngắt này là từ 1D hex ñến 1F hex. 4.2 Xử lý ngắt của nhiều thiết bị ngoại vi Thông thường một MVT cần xử lý ngắt của nhiều TBNV, do ñó cần giải quyết các vấn ñề sau: - Cho phép hoặc cấm ngắt cho một yêu cầu ngắt của một TBNV. - Ghi nhận và sắp xếp nhiều yêu cầu ngắt theo thứ tụ ưu tiên. - Xác ñịnh nguồn ngắt do TBNV nào gây ra. - Tạo vector ngắt, tức ñịa chỉ ô nhớ của lệnh ñầu tiên trong chương trình con phục vụ ngắt. 4.2.1 Cho phép hoặc cấm ngắt 1. Cho phép hoặc cấm ngắt bằng lệnh - Lệnh cấm ngắt DI (Disable interrupt) và cho phép ngắt EI (Enable Interrupt) của 8085. - Ghi vào thanh ghi cờ nội dung bit IF (Interrupt Flag) các giá trị: IF =1 : cho phép ngắt IF=0 : cấm ngắt 2. Cho phép hoặc cấm ngắt bằng mạch phần cứng Với lối vào NMI và yêu cầu ngắt của TBNV, ta có thể dùng các mạch lật ñể ñiều khiển cho phép hoặc cấm ngắt. 4.2.2 Sắp xếp ưu tiên ngắt Theo một trong ba phương pháp sau: 1. Phương pháp hỏi vòng (polling): Dùng chương trình, ñọc theo thứ tự ưu tiên các bit trạng thái của các TBNV và kiểm tra chúng. Nếu bit nào xác lập lên 1, tức TBNV tương ứng có yêu cầu ngắt, và VXL chuyển sang chương trình con ngắt phục vụ TBNV ñó. Sau ñó lại ñọc và kiểm tra bit trạng thái TBNV có mức ưu tiên thấp hơn. Phương pháp này ñơn giản về thiết bị nhưng mất thời gian hỏi vòng. 2. Phương pháp ngắt cứng ðể tránh mất thời gian hỏi vòng, người ta nối các bit trạng thái của TBNV với mạch OR, lối ra cổng OR nối vào chân INTR của VXL. Khi bất kỳ TBNV nào có yêu cầu ngắt, VXL sẽ nhận biết qua INTR và tiến hành hỏi vòng. Phương pháp này giảm ñược thời gian kiểm tra trạng thái khi chưa có yêu cầu ngắt nào, nhưng cũng không thay ñổi ñược thứ tự ưu tiên. 3. Phương pháp xử lý ưu tiên bằng mạch cứng Có hai loại ưu tiên theo vị trí và ưu tiên tuỳ theo mạch so sánh. Ưu tiên theo vị trí ñặt gần VXL Sơ ñồ mạch ví dụ trên hình 4.1, với hoạt ñộng như sau: - Tín hiệu trả lời ngắt INTA (Interrupt Acknowledge) từ VXL ñi nối tiếp qua các BGN, qua mạch xử lý ngắt và trở về lại VXL theo một mắt xích kín (daisy chain). BGN nào ñặt gần VXL có mức ưu tiên cao Giảng viên: Nguyễn Văn Minh Trí 57 Tài liệu môn học: Ghép nối và ñiều khiển thiết bị ngoại vi - Nếu một BGN ñã ghi nhận ngắt, tín hiệu INTA bị chặn và không truyền tới BGN sau. Do ñó, VXL không nhận ñược tín hiệu INTA, nghĩa là có một yêu cầu ngắt ñã xảy ra. 1 DI0¸DIn INTR VXLINTA BGN1 BGN2 BGN3 DI0¸DIn INTA INTA 0 (a) (b) Hình 4.1: Sơ ñồ ưu tiên ngắt theo vị trí và vector ngắt Phương pháp này tuy ñơn giản nhưng thứ tự ưu tiên không thay ñổi ñược và nếu có một BGN nào bị hỏng, mạch sẽ luôn báo có yêu cầu ngắt. Ưu tiên ngắt dùng mạch so sánh Dùng các vi mạch Intel 8214, 8259 có thể thay ñổi ưu tiên ngắt bằng chương trình. 4.2.3 Xác ñịnh nguồn gây ngắt Có những phương pháp xác ñịnh TBNV nào gây ngắt ñể chuyển sang chương trình con phục vụ ngắt tưng ứng cho TBNV ñó: - Phương pháp hỏi vòng: VXL ñọc và kiểm tra lần lượt trạng thái các TBNV. Nếu kết quả là 1, trạng thái TBNV là sẵn sàng và nguồn ngắt là TBNV ñó. - Phương pháp ñọc vector ngắt tạo bởi tín hiệu ngắt INTA trong ưu tiên ngắt theo vị trí. - Phương pháp ñọc vào thanh ghi ưu tiên PR trong sơ ñồ dùng mạch so sánh. 4.2.4 Tạo vector ngắt Vector ngắt chứa ñịa chỉ ñầu của chương trình con phục vụ ngắt. Các vector ngắt của MVT – PC ñược trình bày trên bảng 4.1. Ta có thể tạo vector ngắt bằng cổng AND colector hở như hình 4.1 (b). Phương pháp này thay ñổi ñược mức ưu tiên và cách tìm nguồn ngắt, nhưng mạch phức tạp và ñắt tiền. Giảng viên: Nguyễn Văn Minh Trí 58 Tài liệu môn học: Ghép nối và ñiều khiển thiết bị ngoại vi CHƯƠNG 5: GHÉP NỐI VÀO RA ðIỀU KHIỂN BẰNG DMA 5.1 Khái niệm DMA cơ bản 5.1.1 Khái niệm DMA Phương pháp trao ñổi dữ liệu theo chương trình sẽ chậm do: - VXL phải giải mã và thực hiện lệnh - Trao ñổi dữ liệu từng byte thông qua thanh chứa AX của VXL. Kỹ thuật vào ra DMA (direct memory access) là phương pháp truy cập trực tiếp tới bộ nhớ hoặc I/O mà không có sự tham gia của CPU. Phương pháp này trao ñổi dữ liệu giữa bộ nhớ và thiết bị ngoại vi với tốc ñộ cao và chỉ bị hạn chế bởi tốc ñộ của bộ nhớ hoặc của bộ ñiều khiển DMA. Tốc ñộ truyền DMA có thể ñạt tới 10 ¸ 12 Kbyte/s với các bộ nhớ RAM có tốc ñộ cao. DMA ñược ứng dụng trong nhiều mục ñích nhưng thông thường nó ñược dùng trong quá trình "refresh" DRAM, xuất màn hình, ñọc ghi ñĩa, truyền dữ liệu giữa các vùng nhớ với tốc ñộ cao . 5.1.2 Hoạt ñộng DMAC (DMA Controller) cơ bản Hai tín hiệu ñể yêu cầu và xác nhận trong hệ thống VXL là HOLD ñược sử dụng ñể yêu cầu DMA và HLDA là ñầu ra xác nhận DMA. Khi tín hiệu HOLD hoạt ñộng (HOLD = 1), DMA ñược yêu cầu. Bộ VXL trả lời bằng cách kích hoạt tín hiệu HLDA, xác nhận yêu cầu, ñồng thời thả nổi các công việc hiện thời cùng các bus dữ liệu và ñịa chỉ, ñiều khiển ñược ñặt ở trạng thái trở kháng cao. Trạng thái này cho phép các thiết bị I/O bên ngoài hoặc các bộ VXL khác nắm quyền ñiều khiển bus hệ thống ñể truy cập trực tiếp bộ nhớ . Tín hiệu HOLD có mức ưu tiên cao hơn INTR hoặc ñầu vào NMI (ngắt không che ñược) và chỉ sau RESET. Tín hiệu HOLD luôn có hiệu lực tại bất kỳ thời ñiểm nào trong suốt quá trình thực hiện các lệnh khác của VXL. Chú ý rằng từ lúc tín hiệu HOLD thay ñổi cho ñến khi tín hiệu HLDA thay ñổi ñã trải qua một số chu kỳ clock . DMA thường ñược thực hiện giữa thiết bị I/O và bộ nhớ. Quá trình ñọc DMA là quá trình ñưa dữ liệu từ bộ nhớ ra thiết bị I/O, và ngược lại quá trình ghi DMA là quá trình ñưa dữ liệu từ I/O tới bộ nhớ. Trong cả hai chu trình này thiết bị I/O và bộ nhớ ñược ñiều khiển ñồng thời dẫn ñến cần có các tín hiệu ñiều khiển khác nhau. Ðể ñiều khiển quá trình ñọc DMA ta cần hai tín hiệu hoạt ñộng MEMR (ñọc bộ nhớ ) và IOW (ghi I/O). Ðể ñiều khiển quá trình ghi ta có hai tín hiệu MEMW (ghi bộ bộ nhớ) và IOR (ñọc I/O). Bộ ñiều khiển DMA cung cấp ñịa chỉ bộ nhớ và tín hiệu chọn thiết bị I/O cho 8088 trong suốt quá trình DMA. Do tốc ñộ truyền DMA phụ thuộc vào tốc ñộ của bộ nhớ và tốc ñộ của bộ ñiều khiển DMA nên trong trường hợp tốc ñộ của bộ ñiều khiển DMA nhỏ hơn so với bộ nhớ thì bộ ñiều khiển DMA sẽ làm giảm tốc ñộ chung của hệ thống . Hình vẽ sau minh hoạ quá trình hoạt ñộng DMA cơ bản cùng ñồ thị thời gian ñọc / ghi DMA : Giảng viên: Nguyễn Văn Minh Trí 59 ... - tailieumienphi.vn