intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Nguyễn Nhi | Ngày: | Loại File: PDF | Số trang:8

109
lượt xem
8
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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 ,

Chủ đề:
Lưu

Nội dung Text: Kỹ thuật vi xử lý - Chương 8

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

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2