Kỹ thuật vi xử lý - Chương 8 pot

8 470 4
Kỹ thuật vi xử lý - Chương 8 pot

Đang tải... (xem toàn văn)

Thông tin tài liệu

CHƯƠNG 8 VÀO /RA DỮ LIỆU BẰNG DMA 1. Nguyên tắc của việc trao đổi dữ liệu với thiết bị ngoại vi bằng cách thâm nhập trực tiếp vào bộ nhớ (DMA) . Trong các cách điều khiển việc trao đổi dữ liệu giữa thiết bị ngoại vi và hệ vi xử lý bằng cách thăm dò trạng thái sẵn sàng của thiết bị ngoại vi hay bằng cách ngắt bộ vi xử lý đã đươc nói đến ở các chương trước , dữ liệu thường được chuyển từ bộ nhớ qua bộ vi xử lý để rồi từ đó ghi vào thiết bị ngoại vi hoặc ngược lại , từ thiết bị ngoại vi nó được đọc vào bộ vi xử lý để rồi từ đó được chuyển đến bộ nhớ . vì thế tốc độ trao đổi dữ liệu phụ thuộc rất nhiều vào tốc độ thực hiện của các lệnh MOV .IN và OUT của bộ vi xử lý và do đó việc trao đổi dữ liệu không thể tiến hành nhanh đươc . Trong thực tế có những khi ta cần trao đổi dữ liệu thật nhanh với thiết bị ngoại vi : như khi cần đưa dữ liệu hiện thị ra màn hình hoặc trao đổi dữ liệu với bộ điều khiển đĩa .trong các trường hợp đó ta cần có khả năng ghi /đọc dữ liệu trực tiếp với bộ nhớ (diret memory acces .DMA- thâm nhập vào bộ nhớ trực tiếp không thông qua CPU) thì mới đáp ứng được yêu cầu về tốc độ trao đổi dữ liệu .để làm được điều này các hệ vi xử lý nói chung đều phải dùng thêm mạch chuyên dụng để điều khiển việc thâm nhập trực tiếp vào bộ nhớ ( dircet memory access con troller.DMAC) Có thể lấy một ví dụ cụ thể để minh hoạ điiêù này .trong khi một mạch DMAC như 8237A của inter có thể điều khiển việc chuyển một byte trong một mảng dữ liệu từ bộ nhớ ra thiết bị ngoại vi chỉ hết 4 chu kỳ đồng hồ thì bộ vi xử lý 8088 phải làm hết cỡ 4 chu kỳ : ; số chu kỳ đồng hồ LAP: MOV AL, (SI );10 OUT PORT ,AL ; 10 INC SI ; 2 LOOP LAP ; 17 ; CỘNG:39 chu kỳ Để hỗ trợ cho việc trao đổi dữ liệu với thiết bị ngoại vi bằng cách thâm nhập trực tiếp vào bộ nhớ ,tại mỗi vi mạch CPU thường tồn tại chân yêu cầu treo HOLD để thiết bị ngoại vi , mỗi khi có yêu cầu dùng bú cho việc trao đổi dữ liệu với bộ nhớ thì thông qua chân này mà báo cho CPU biết . đến lượt CPU , khi nhân được yêu cầu treo thì nó tự treo lên (tự tách ra khỏi hệ thống bằng cách đưa các bit vào trạng thái trở kháng cao )và đưa xung HLDA ra ngoài để thông báo CPU cho phép sử dụng bú . Sơ đồ khối của một hệ vi xử lý có khả năng trao đổi dữ liệu theo kiểu DMA được thể hiện trên hình 8.1 Ta nhận thấy trong hệ thống này , khi CPU tự tách ra khỏi hệ thống bặng tự treo (ứng với vị trí hiện thời của các công tắc chuyển mạch )để trao quyền sử dụng bus cho DMAC phải chịu trách nhiệm điều khiển toàn bộ hoạt động trao đổi dữ liệu của hệ thống . để làm được điều đó DMAC phải có khả năng tạo ra được các tín hiệu điiêù khiển cần thiết giống như các tín hiệu của CPU và bản thân nó phải là một thiết bị lập trình được (để CPU “dăn dò ” nó bằng cách đưa vào các từ điều khiển trước khi nó có thể hoạt động độc lập ). Qua trinh hoạt động của hệ thống trên có thể được tóm tắt như sau: Khi thiết bị ngoại vi có yêu cầu trao đổi dữ liệu kiểu DMA với bộ nhớ , nó đưa yêu cầu DRQ=1 đến DMAC, DMAC sẽ đưa yêu cầu treo HRQ=1 đến chân HOLD của CPU . nhân được yêu cầu treo , CPU sẽ treo các bus của mình và trả lời chấp nhận treo qua tín hiệu HLDA=1 đến chân HACK của DMAC ,DMAC sẽ thông báo cho thiết bị ngoại vi thông qua tín hiệu DACK=1 là nó cho phép thiết bị ngoại vi trao đổi dữ liệu kiểu DMA .khi quá trình DMA kết thúc thì DMAC đưa ra tín hiệu HRQ=0. Trong thực tế tồn tại 3 kiểu trao đổi dữ liệu bằng cách thâm nhập trực tiếp vào bộ nhớ như sau: + Treo CPU một khoảng thời gian để trao đổi cả mảng dữ liệu . +treo CPU để trao đổi từng byte. +tận dụng thời gian không dùng bus để trao đổi dữ liệu . ta sẽ lần luợt giới thiệu qua các kiểu trao đổi dữ liệu này .  Trao đổi cả môt mảng dữ liệu Trong chế độ này CPU bị treo trong suốt quá trình trao đổi mảng dữ liệu .Chế độ này được dùng khi ta có nhu cầu trao đổi dữ liệu với ổ đĩa hoặc đưa dữ liệu ra hiển thị . các bước thủ tục để chuyển một mảng dữ liệu từ bộ nhớ ra thiết bị ngoại vi: 1.CPU phải ghi từ điều khiển và từ chế độ làm việc vào DMAC để quy định cách thức làm việc , địa chỉ đầu của mảng nhớ , độ dài của mảng nhớ , 2.khi thiết bị ngoại vi co yêu cầu trao đổi dữ liệu , nó đưa DRQ =1 đến DMAC . 3.DMAC đưa ra tín hiệu HRQ đến chân HOLD của CPU để yêu cầu treo CPU .tín hiệu HOLD phải ở mức cao cho đến hết quá trình trao đổi dữ liệu . 4. nhận được yêu cầu treo ,CPU kết thúc chu kỳ bus hiện tại , sau dó nó treo cá bus của mình và đưa ra tín hiệu HLDA báo cho DMAC được toàn quyền sử dụng bus. 5.DMAC đưa ra xung DACK để báo cho thiết bị ngoại vi biết là có thể bắt đầu trao đổi dữ liệu . 6.DMAC bắt đầu chuyển dữ liệu từ bộ nhớ ra thiết bị ngoại vi bằng cách đưa địa chỉ của byte đầu ra bus địa chỉ và đưa ra tín hiệu MEMR=O để đọc một byte từ bộ nhớ ra bus dữ liệu .tiếp đó DMAC đưa ra tín hiệu IOW =0 để ghi đưa dữ liệu ra thiết bị ngoại vi.DMAC sau đó giảm bộ đếm số byte còn phải chuyển , cập nhật địa chỉ của byte cần đọc tiếp , và lặp lại cá c động tác trên cho tới khi hết số đếm (TC). 7. quá trình DMA kết thúc , DMAC cho ra tín hiệu HRQ=0 để báo cho CPU biết để CPU dành lại quyền điều khiển hệ thống .  Treo CPU để trao đổi từng byte . Trong cách trao đổi dữ liệu này CPU không bị treo lâu dài trong một lần nhưng thỉnh thoảng lại bị treo trong khoảng thời gian rất ngắn đủ để trao đổi 1 byte dữ liệu (CPU bị lấy mất một số chu kỳ đồng hồ ). Do bị lấy đi một số chu kỳ đồng hồ như vậy lên tốc độ thực hiện một công việc nào đó của CPU chỉ bị suy giảm chứ không dừng lại . cách hoạt động cũng tương tự như phần trước , chỉ có điều mỗi lần DMAC yêu cầu treo CPU thi chỉ có một byte được trao đổi  Tận dụng thời gian CPU không dùng bus để trao đổi dữ liệu . Trong cách trao đổi dữ liệu này , ta phải có các logic phụ bên ngoài cần thiết để phát hiện ra các chu kỳ xử lý nội bộ của CPU (không dùng đến bus ngoài )và tận dụng các chu kỳ đó vào việc trao đổi dữ liệu giữa thiết bị ngoại vi với bộ nhớ . Trong cách làm này thì DMAC và CPU luân phiên nhau sử dụng bus và việc thâm nhập trực tiếp bộ nhớ kiểu này không ảnh hưởng gì tới hoạt động bình thường của CPU. 2.DMAC 8237A -5 trong hệ vi xử lý 8088. 2.1.tín hiệu HOLD và HLDA trong CPU 8088. Hai tín hiệu dùng để yêu cầu treo và trả lời chấp nhận yêu cầu treo trong chế độ MIN của CPU 8088 là HLDA.quan hệ giữa hai tín hiệu đó được thể hiện trên hình 8.2. Tín hiệu yêu cầu treo HOLD được láy mẫu tại sườn lên của .xung đồng hồ trước chu kỳ T4 hoặc T1. Khi nhận được yêu cầu treo .CPU kết thúc chu kỳ bus hiện tại , đưa ra tín hiệu HLDA và treo các tín hiệu của bus .busd và bus c (trừ tín hiệu ALE=O)để nhường quyền sử dụng các bus này choDMAC . Cần lưu ý rằng đầu vào HOLD có mức ưu tiên cao hơn các đầu vào yêu cầu ngắt INTR và MNI nhưng lại thấp hơn so với đầu vào RESET. Để đảm bảo việc đồng bộ tín hiệu yêu cầu treo của thiết bị ngoại vi với tín hiệu đồng hồ của hệ thống trước khi đưa vào chân HOLD của 8088 người ta thường dùng mạch trên hình 8.3. 2.2. Mạch DMAC 8237A -5của Inter Trước khi trình bày kỹ về mạch DMAC 8237A của Inter ta nói qua về các thay đổi cần có trong nhóm tín hiệu điều khiển ghi/đọc của hệ vi xử lý với CPU 8088 ở chế độ MIN để sử dụng được mạch 8237A làm DMAC Như trên hình 8.1 đã thể hiện tương đối rõ , để thể hiện được chức năng DMA trong hệ ,bus điều của hệ vi xử lý 8088 phải được thay đổi chút ít để có được các tín hiệu cần thiết cho DMAC và các bộ phận lkhác hoạt động .đó chinhd là việc các tín hiệu RD.WD và IO/M được sử dụng để taọ các tín hiệu điều khiển mới IOR.IOW .MEMR.MEMW.tương thích với các tín hiệu của DMAC 8237A -5. Hình 8.4 trình bày một khả năng tạo ra các tín hiệu điều khiển như vậy dùng mạch dồn kênh 74LS257 . trong 74LS 257 gồm 4 mạch dồn kênh 2 đường . các tín hiệu RD.WD và IO/M được bố trí sao cho khi đầu vào của mạch 74LS 257 là B=1 thì ta làm việc với thiết bị ngoại nhập với các xung IORvà IOW ,ngược lại khi B=0 thì ta làm việc với bộ nhớ với các xung MEMR.MEMW. Trên hình 8.4 ta còn thấy tín hiệu AEN của DMAC cũng được dùng để khoá các tín hiệu điều khiển mới do CPU tạo ra khi DMAC đã nắm quyền điều khiển bus. Trong chế độ truyền kiểu đọc thì dữ liệu được đọc từ bộ nhớ rồi đưa ra thiêt bị ngoại vi. Trong chế độ truyền kiểu ghi thì dữ liệu được đọc từ thiết bị ngoại vi rồi đưa vào bộ nhớ . khi 8237A -5 làm việc ở chế độ kiểm tra thì tuy địa chỉ được đưa đến bộ nhớ nhưng DMAC không tạo ra các xung điều khiển để tiến hành các thao tác ghi/đọc bộ nhớ hay thiết bị ngoại vi . Ngoài ra mạch 8237 A-5 còn hỗ trợ việc trao đổi dữ liệu giưa các vùng khác nhau của bộ nhớ và cũng chỉ riêng trong chế độ làm việc này , dữ liệu cần trao đổi mới phải di qua DMAC nhưng với tốc độ cao hơn khi đi qua CPU nhưng với tốc độ cao hơn khi đi qua CPU (trong trường hợp này ta có thể đọc được dữ liệu đó trong thanh ghi tạm). Sơ đồ khối cấu trúc bên trong của mạch 8237A -5 được thể hiện trên hình 8.5 Mạch DMAC 8237A -5 chứa 4 kênh trao đổi dữ liệu DMA với mức ưu tiên lâp trình được .MAC 8237A -5 có tốc độ truyền 1 MB/s cho mỗi kênh , một kênh co thể truyền môt mảng có độ dài 64KB .  Giới thiệu các chân tín hiệu của 8237A -5 +CLK[I]:tín hiệu đồng hồ của mạch .để mạch có thể làm việc tốt với hệ 8088 thì tín hiệu CLK của hệ thống thường được đảo trước khi đưa vào CLK của 8237A-5 +CS {I}:TÍN HIỆU CHỌN VỎ CỦA 8237a-5 chân này thường được nối với đầu ra của bộ giải mã địa chỉ .bộ giải mã địa chỉ này không cần dùng đến đầu vào IO/M vì bản thân DMAC đã được cung cấp các xung điều khiển mới của hên thống . +RESET{I}:tín hiệu nối với tín hiệu khởi động của hệ thống . khi mạch 8237A -5 ĐƯỢC KHỞI ĐỘNG RIÊNG THANH GHI MẶT LẠ ĐƯỢC LẬP CÒN CÁC BỘ PHẬN SAU ĐAY BỊ XOÁ :  thanhghi lệnh  thanh ghi trạng thái  thanh ghi yêu cầu DMA  thanh ghi tạm thời  mạch lật byte đầu /byte cuối (Firsst/Last) +READY{I}:tín hiệu sẵn sàng , nối với READY của hệ thống để gây ra các chu kỳ đợi đối với các thiết bị ngoại vi và các bộ nhớ chậm . +HLDA {I}:tín hiệu báo chấp nhân yêu cầu treo từ CPU +-DRQ 3 {I}:các tín hiệu yêu cầu treo từ thiết bị ngoại vi . cực tính của các tín hiệu này có thể lâp trình được . sau khi khpởi động các tín hiệunày được định nghĩ a là các tín hiệu kích hoạt mức cao . +DBO-BD7{I,O}:tín hiệu hai chiều nối đến bus địa chỉ và bus dữ lliệu của hệ thống các tín hiệu này được dùng khi lâp trình cho DMAC và khi DMAC hoạt động các chân này chứa 8 bit địa chỉ cao A8-A15 của mảng nhớ dữ liệu lịch cần chuyển . trong chế độ chuyển dữ liệu giữa các vùng của bộ nhớ tại các chân này có các dữ liệu được chuyển . +IOR {I,O}VÀ IOW{I,O}: là các chân tín hiệu hai chiều dùng trong khi lập trình cho DMAC và trong các chu kỳ đọc và ghi . +EOP{I,O}:LÀ TÍN HIỆU HAI CHIỀU .KHI LÀ ĐẦU VÀO NÓ ĐƯỢC DÙNG ĐỂ BẮT BUỘC DMAC kết thúc quá trình DMA .khi là đầu ra nó được dùng để báo cho bên ngoài biết một kênh nào đó đã chuyển xong số byte theo yêu cầu , luc nay nó thường dùng như một yêu cầu ngắt để CPU xử lý việc kết thúc quá trinh DMA +A0-A3{I,O}:là các tín hiệu hai chiều dùng để chọn các thanh ghi trong 8237A 5 khi lập trình và khi đọc(đầu vào), hoặc để chuqá 4 bit địa chỉ thấp nhất của địa chỉ mảng nhớ cần chuyển (đầu ra) A4-A7[0]:các chân để chứa 4 bít địa chỉ phần cao trong byte địa chỉ thấp của địa chỉ mảng nhớ cần chuyển HRQ[0]:tín hiệu yêu cầu treo đến CPU. Tín hiệu này thường được đồng bộ với tín hiệu CLK của hệ thống rồi được đưa đến chân HOLD của 8088. DACK 0 DACK 3 [0]: là các tín hiệu trả lời các yêu cầu DMA cho các kênh. Các tín hiệu này có thể được lập trình để hoạt động theo mức thấp hoặc mức cao.sau khi khởi động, các tí hiệu này được định nghĩa là các xung tích cực thấp. AEN[0]: tín hiệu cho phép mạch nối vào DB0-DB7 chốt lấy địa chỉ của vùng nhớ cần trao đổi theo kiểu DMA. Tín hiệu này cũng cho phép cấm các mạch đệm bú địa chỉ và dữ liệu hoặc mạch tạo tín hiệu điều khiển của CPU nối vào các bú tươn ứng khi DMAC hoạt động. ADSTB[0]: xung cho phép chốt các bit địa chỉ phần cao A8- A15 có mặt trên DB0-DB7. MẺM[0] và MEMƯ[0]: là các chân tín hiệu do DMAC tạo ra và dùng khi đọc/ghi bộ nhớ trong khi hoạt động. Các thanh ghi bên trong của DMAC 8237A-5 Các thanh ghi bên trong DMAC 8237A-5 được CPU 8088 chọn để làm việc nhờ các bit địa chỉ thấp A0-A3. Bảng 8.1 chỉ ra cách thức chọn ra các thanh ghi đó. Các thanh ghi trong bản trên có thể được ghi.đcj hoặc chỉ ghi vào và chúng chứa các thông tin khác nhau liên quan đến cách thức làm việc và các thông số của mỗi kênh DMA. Trong bảng 8.2 và 8.3 liêtị kê các thanh ghi trên theo các quan điểm ứng dụng khác nhau để dễ tra cứu địa chỉ cho chúng khi lập trình với DMAC 8237A-5 Bảng 8.1. Địa chỉ các thanh ghi bên trong của 8237A5 Bảng8.2. Địa chỉ các thanh ghi trong để ghi/ đọc địa chỉ và ssố từ cần chuyển. Bảng 8.3.Địa chỉ các thanh ghi cho điều khiển và trạng thái. Ta sẽ giới thiệu qua các đặc điểm của một số trong các thanh ghi kể trên. Thanh ghi địa chỉ hiện thời: Đây là thanh ghi 16 bít dùng để chứa địa chỉ của vùng nhớ phải chuyển.Mỗi kênh có riêng thanh ghi ày để chứa địa chỉ .Khi 1 byte được truyền đi. Các thanh ghi này tự dộng tăng hay giảm tuỳ theo trước nó được lập trình như thế nào. Thanh ghi số đếm hiện thời: Thanh ghi 16 bít này dùng để chứâ số byte mà kênh phải truyền( nhiều nhất là 16KB). Mỗi kênh có thanh ghi số byte của mình. Các thanh ghi này được ghi bằng số đếm nhỏ nhất hơn 1 so với số byte thực chuyển. Thanh ghi địa chỉ cơ sở và thanh ghi số đếm cơ sở: Các thanh ghi này được dùng để chứa địa chỉ và số đeems cho mỗi kênh khi chế độ tự động khởi đầu được sử dụng. Trong chế độ này một quá trình DMA kết thúc thì các thanh ghi địa chỉ hiện thời và số đếm hiện thời được nạp lại giá trị củ lấy từ thanh ghi địa chỉ cơ sở và thanh ghi số đếm cơ sở Khi các thanh ghi địa chỉ hiện thời và số đếm hiện thời được lập trình thì các thanh ghi địa chỉ cơ sở và thanh ghi số đếm cơ sở cũng được lập trình bất kể chế dộ tự khởi đầu có được sử dụng hay không. Thanh ghi lệnh: Thanh ghi này dùng để lập trình cho DMAC. Nó bị xoá khi khởi động hoặc khi ta sử dụng lệnh xoá toàn bộ các thanh ghi. Dạng thức của thanh ghi lệnh được biểu diển trên hình 8.6. Các bít của thanh ghi này quyết định các phương thức làm việc khác nhau của 8237A-5. Ta sẽ giải thích sau đây ý nghĩa của các bit. Bit D0 cho phép DMAC dùng kênh 0 và kênh 1 để chuyển dữ liệu giữa 2 vùng nhớ.Địa chỉ của byte dữ liệu ở vùng đích được chứa trong thanh ghi địa chỉ của kênh 1. Số byte chuyển được để trong thanh ghi đếm của kênh 1.Byte cần chuyển lúc đầu được đọc từ vùng gốc vào thanh ghi tạm để rồi từ đó nó được gửi đến vùng đích trong bước tiếp theo( hoạt động như lệnh MOVSB nhưng với tốc độ cao). Bit D1=1 dùng để cho phép kênh 0 giữ nguyên địa chỉ trong chế độ truyền giữ liệu giữa 2 vùng nhớ. Điều này khiến cho toàn bộ các ô nhớ vùng đích được nạp cùng một byte dữ liệu. Bit D2 cho phép DMAC hoạt động hay không. Bit D3 quyết định byte cần chuyển được truyền với 4hay 2 chu kì đồng hồ. Bit D4 cho phép chọn chế độ ưu tiên cố định (kênh 0 có mức ưu tiên cao nhất. Kênh 3 có mức ưu tiên thấp nhất) hoặc chế đọ ưu tiên luân phiên( kênh 0 lúc đầu có mức ưu tiên cao nhất. Sau khi kênh này được chọn để chuyển dữ liệu thì nó được nhận mức ưu tiên thấp nhất. Kênh 1 lại trở thành kênh có mức ưu tiên cao nhất ) Bit D5 cho phép chọn thời gian ghibình thường hay kéo dài cho tiết bị ngoại vi chậm. Các bit D6 và D7 cho phép chọn cực tính tích cực của các xung DRQ0-DRQ4 và DACK0- DACK4. + thanh ghi chế độ: dùng đặt chế độ làm việc cho các kênh của DMAC. Mỗi kênh của DMAC có một thanh ghi chế đọ riêng.Dạng thức của thanh ghi chế độ được biểu diển trên hình 8.7. Trong chế độ DMA theo yêu cầu. DMAC tiến hành chuyển dữ liệu cho đến khi có tín hiệu EOP từ bên ngoài hoặc cho đến khi không còn yêu cầu DMA nữa(DRQ trở nên không tích cực) Trong chế độ DMA chuyển từng byte, chừng nào vẫn còn yêu càu DMA(DRQ vẫn là tích cực.) thì DMAC đưa ra HRQ=0 trong thời gian 1 chu kì bus sau mỗi lần chuyển sang 1 byte. Sau đó nó lại đưa ra HRQ=1. Cứ như vậy DMAC và CPU luân phiên nhau xữ dụng bus cho đến khi đếm hết(TC) Trong chế độ DMA chuyển cả mãng, cả một mãng gồm một số byte bằng nội dung bộ đếm được chuyển liền 1 lúc. Chân yêu cầu chuyển dữ liệu DRQ không cần phải giữ được ở mức tích cực suốt trong quá trình chuyển. Chế độ nối tần được dùng khi có nhiều bộ DMAC.được dùng trong hệ thống để mở rộng số kênh có thể yêu cầu DMA. + Thanh ghi yêu cầu: yêu cầu DMA có thể được thiết lập/ xoá theo ý muốn bằng chương trình. Điều này rất có lợi khi ta muốn chuyển dữ liệu giữa các vùng khác nhau của bộ nhớ lúc này các kênh liên quan phải được lập trình ở chế đọ chuyển cả mãng. Dạng thức của thanh ghi yêu cầu được biểu diển trên hình 8.8 7 6 5 4 3 2 1 0 X X X X X 1.Thiết lập yêu cầu 00: chọn kênh 0 0: xóa theo yêu cầu 01: chọn kênh 1 10: chọn kênh 2 11: chọn kênh 3 Hình 8.8 dạng thức của thanh ghi yêu cầu + Thanh ghi mặt nạ riêng cho từng kênh: bằng thanh ghi này ta có thể lập trình để cấm (cho Bit mặt nạ tương ứng = 1) thay cho phép hoạt động (cho Bit mặt nạ tương ứng = 0) đối với từng kênh một . Dạng thức của thanh ghi mặt nạ riêng lẻ cho từng kênh được biểu diễn trên hình 8.9 . + Thanh ghi mặt nạ tổng hợp: với thanh ghi này ta có thể lập trình để cấm (cho Bit mặt nạ tương ứng = 1) thay cho phép hoạt động (cho Bit mặt nạ tương ứng = 0) đối với từng kênh chỉ bằng một lệnh . Dạng thức của thanh ghi mặt nạ tổng hợp được biểu diễn trên hình 8.10 7 6 5 4 3 2 1 0 X X X X X 1.Thiết lập mặt nạ 00: chọn kênh 0 0: xóa theo mặt nạ 01: chọn kênh 1 10: chọn kênh 2 11: chọn kênh 3 (X: không quan tâm) Hình 8.9. Dạng thức của thanh ghi mặt nạ riêng cho mỗi kênh 7 6 5 4 3 2 1 0 X X X X 1.Lập mặt nạ cho kênh 3 1: Lập mặt nạ cho kênh 0 0: xóa mặt nạ cho kênh 3 0 Xóa mặt nạ cho kênh 0 1:Lập mặt nạ cho kênh 2 1: lập mặt nạ cho kênh 1 0: Xóa mặt nạ cho kênh 2 0: xóa mặt nạ cho kênh 1 Hình 8.10. Dạng thức của thanh ghi mặt nạ tổng hợp. - Thanh ghi trạng thái : Thanh ghi này cho phép xác định trạng thái của các kênh trong DMAC. Kênh nào đã trền xong (đạt số đếm. TC) kênh nào đang có yêu cầu DMA để trao đổi dữ liệu. Khi một kênh nào đó đạt TC. Kênh đó sẽ tự đọng bị cấm Dạng thức của thanh ghi trạng thái được biểu diễn trên hình 8.11.  Các lệnh đặc biệt cho DMAC 8237A - 5 Có 3 lệnh đặc biệt để điều khiển hoạt động của DMAC 8237A - 5 . Các lệnh này chỉ thực hiện bằng các lệnh OUT với các địa chỉ cổng xác định thì theo thanh ghi mà không cần đến giá trị cụ thể của thanh ghi AL . 7 6 5 4 3 2 1 0 1. Kênh 0 có yêu cầu 1: Kênh 0 đạt số đếm 1: Kênh 1 có yêu cầu 1: Kênh 1 đạt số đếm 1: Kênh 2 có yêu cầu 1: Kênh 2 đạt số đếm 1: Kênh 3 có yêu cầu 1: Kênh 3 đạt số đếm Hình 8.11. Dạng thức của thanh ghi trạng thái. + Lệnh xóa mạch lật byte đầu/byte cuối (First/Lát, F/L) : F/L là một mạch lật bên trong DMAC để chỉ ra byte nào trong các thanh ghi 16 bit để chỉ ra byte nào trong các thanh ghi 16bit (thanh ghi địa chỉ hoặc thanh ghi số đếm được chọn làm việc .nếu F/L=1 thi số đó là MSB , còn nếu F/L=O ) thì số đó là LSB.mạch lật F/L tự động thay đổi trạng thái khi ta ghi /đọc các thanh ghi đó . khi khởi động xong thì F/L=O lệnh xoá toàn bộ các thanh ghi : lệnh này có tác động như thao tác khởi động . tất cả các thanh ghji đều bị xoá riêng thanh ghi mặt nạ tổng hợp thì được lập để cấm các yêu cầu trao đổi dữ liệu . lệnh xoá thanh ghi mặt nạ tổng hợp :lệnh này cho phép các kênh của DMAC bắt đầu yêu cầu trao đổi dữ liệu .  lập trình cho các thanh ghi địa chỉ và thanh ghi số đếm: việc lập trình cho các thanh ghi địa chỉ và thanh ghi số đếm được thực hiẹn riêng cho mỗi kênh . cần phải định trước giá trị logic của F/L để thao tác chính xác được với LSB và MSB của các thanh ghi trên . ngoài ra còn phải cấm các yêu cầu DMA của các kênh trong khi lập trình cho chúng. Có thể tuân theo các bước sau đây để lập trình cho DMAC 8237A -5: + xoá mặt lật F/L +cấm các yêu cầu của các kênh +ghi LSB rồi MSB của thanh ghi địa chỉ +ghi LSB rồi MSB của thanh ghi số đếm .  Nối DMAC 8237A -5 với CPU 8088 ở chế độ MIN Việc phối ghép mạch 8237A-5 với 8088 được thể hiện trên hình 8.12 Tín hiệu của 8237A AEN-=O khi CPU kiểm soát hoạt động của toàn hệ . các bit địa chỉ A 16 -A 19 và AO-A7 sẽ được chốt bởi U1 và U3 để đưa ra bit địa chỉ . các tín hiệu điều khiển dẩn xuất từ CPU cũng được đưa ra bus điều khiển bởi mạch dồn kênh U5 (74LS257). KHI DMAC nắm quyền chỉ huy hệ thống thì AEN =1 sẽ cấm các chốt U3 vàU4 mở thông từ CPU ra bus . nhưng lại cho phép chốt U2 và mở chốt U4 của DMAC để cung cấp các bit địa chỉ A16-A19 và A8- A15.các bit địa chỉ khác là A0-A7 và các tín hiệu MEMR.MEMR.IOR.IOW sẽ được lấy trực tiếp từ DMAC. Xung ADSSTB sẽ cho phép mở mạch chốt U4 để đưa các bit địa chỉ A8-A15 . được chốt từ bit D của 8237A -5. Vì DMAC 8237A -5 chỉ có khả năng cung cấp các bit địa chỉ A16-A19 được ghi vào chốt U2 (74LS373) nhờ lệnh OUT với địa chỉ cổng được giải mã nhờ mạch giải mã địa chỉ U6 , mạch giải mã địa chỉ này đồng thời cũng cung cấp xung chọn vẻ cho 8237A -5 .trên hình 8.12 để cho việc giải thích trở nên đơn giản mới chỉ biểu diễn các cách tạo ta địa chỉ cao nhất cho một kênh ta có thể dùng vi mạch chuyên dụng 74LS 670 để làm thanh ghi trang DMA cho cả 4 kênh của DMAC . tat nhiên ta phải nối lại các tín hiệu cho đúng .  Một ví dụ truyền dữ liệu giưa hai vùng nhớ Việc dùng chế đọ DMA để chuểyn dữ liệu giữa các vùng klhác nhau của bộ cho phép đạt được tốc độ truyền cao hơn so với việc dùng các lệnh chuyển dữ liệu REP MOV SB của CPU nếu lấy ví dụ với trường hợp DMAC 8237A -5 và CPU 8088 5MH Z thì tốc độ truyền của DMAC cao hơn cỡ 2 lần . Sau đây là một ví dụ sử dụng 8237A -5 để chuyển dữ liệu giưa 2 vùng nhớ . Giả thiết ta phải chuyển số một số byte số liệu từ vùng nhớ có địa chỉ là 10000H sang vùng nhớ khác có chỉ đầu là 14000H trong một hệ thống có sơ đồ phầnDMAC và CPU dựa trên hình 8.12. Ta có thể dùng chương trình Mem Trans.asm để giải quyết công việc này . Trong chương trình này , đầu tiên ta gửi 4 bit địa chỉ cao chốt U1 , sau đó ta xoá mạch lật F/L rồi gửi địa chỉ của vùng gốc và vùng đích ra các thanh ghi tương ứng của kênh o và kênh 1.tiếp theo ta chọn chế độ cho mỗi kênh . ta phải đưa ra từ điều khiển để cho DMAC làm việc oqr chế độ chuyển cả mảng .Kênh 0 sau đó được cho phép hoạt động và kích hoạt động bằng chương trình . trong quá trình chuyển dữ liệu ta kiểm tra thanh ghi trạng thái để dùng chương trình khi đạt số đếm (TC).  CHƯƠNG TRÌNH Mem Trans.asm m . bus và vi c thâm nhập trực tiếp bộ nhớ kiểu này không ảnh hưởng gì tới hoạt động bình thường của CPU. 2.DMAC 82 37A -5 trong hệ vi xử lý 80 88. 2.1.tín hiệu HOLD và HLDA trong CPU 80 88. Hai. Mạch DMAC 82 37A -5 của Inter Trước khi trình bày kỹ về mạch DMAC 82 37A của Inter ta nói qua về các thay đổi cần có trong nhóm tín hiệu điều khiển ghi/đọc của hệ vi xử lý với CPU 80 88 ở chế độ. Vi c phối ghép mạch 82 37A-5 với 80 88 được thể hiện trên hình 8. 12 Tín hiệu của 82 37A AEN-=O khi CPU kiểm soát hoạt động của toàn hệ . các bit địa chỉ A 16 -A 19 và AO-A7 sẽ được chốt bởi

Ngày đăng: 22/07/2014, 22:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan