Chương 8 - Vào/ra Dữ liệu bằng DMA pptx

18 1.7K 15
Chương 8 - Vào/ra Dữ liệu bằng DMA pptx

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chơng 8 Vo/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 vo 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 sng 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 vo thiết bị ngoại vi hoặc ngợc lại, từ thiết bị ngoại vi nó đợc đọc vo 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 vo 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 hnh 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 mn 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ó đợc khả năng ghi/đọc dữ liệu trực tiếp với bộ nhớ (direct memory access, DMA - thâm nhập vo 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. Để lm đợc điều ny 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 vo bộ nhớ (direct memory access controller, DMAC). Có thể lấy 1 thí dụ cụ thể để minh hoạ điều ny. Trong khi một mạch DMAC nh 8237A-5 của Intel có thể điều khiển việc chuyển 1 byte trong 1 mảng dữ liệu từ 232 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 lm hết cỡ 40 chu kỳ: ; Số chu kỳ đồng hồ Lap: MOV AL,[SI] ; 10 OUT PORT,AL ; 10 inc SI ; 2 Looop 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 vo 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 bus cho việc trao đổi dữ liệu với bộ nhớ thì thông qua chân ny 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 bus vo trạng thái trở kháng cao) v đa xung HLDA ra ngoi để thông báo CPU cho phép sử dụng bus. 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. Bus A Bus D Bus C (các tín hiệu quan trọng: IOR, IOW, MEMR, MEMW) CPU HOLD HLDA Hình 8.1. Hệ vi xử lý với DMAC. Ta nhận thấy trong hệ thống ny, khi CPU tự tách ra khỏi hệ thống bằng việc 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 thì DMAC phải chịu trách nhiệm điều khiển ton bộ hoạt động trao đổi dữ liệu của hệ thống. Để lm đợc điều đó DMAC phải có khả năng tạo ra đợc các tín hiệu điều 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 DMAC HRQ D RQ HACK DACK MEM. I/O DRQ DACK 233 l một thiết bị lập trình đợc (để CPU "dặn dò" nó bằng cách đa vo các từ điều khiển trớc khi nó có thể hoạt động độc lập). Quá trình 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 vo 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 của CPU để trao đổi dữ liệu. Ta sẽ lần lợt giới thiệu qua các kiểu trao đổi dữ liệu ny. Trao đổi cả một mảng dữ liệu Trong chế độ ny CPU bị treo trong suốt quá trình trao đổi mảng dữ liệu. Chế độ ny đợ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ế độ lm việc vo DMAC để quy định cách thức lm việc, địa chỉ đầu của mảng nhớ, độ di của mảng nhớ 2. Khi thiết bị ngoại vi có 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 đó nó treo các bus của mình v đa ra tín hiệu HLDA báo cho DMAC đợc ton 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=0 để đọc 1 byte từ bộ nhớ ra bus dữ liệu. Tiếp đó DMAC đa ra tín hiệu IOW=0 để ghi 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). 234 7. Khi quá trình DMA kết thúc, DMAC cho ra tín hiệu HRQ=0 để báo cho CPU biết để CPU dnh 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 ny CPU không bị treo lâu di trong một lần nhng thỉnh thoảng lại bị treo trong một 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 nên tốc độ thực hiện một công việc no đó của CPU chỉ bị suy giảm chứ không bị 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 thì chỉ có 1 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 ny, ta phải có các logic phụ bên ngoi 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 ngoi) v tận dụng các chu kỳ đó vo việc trao đổi dữ liệu giữa thiết bị ngoại vi với bộ nhớ. Trong cách lm ny 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 ny 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 HOLD v HLDA. Quan hệ giữa 2 tín hiệu đó đợc thể hiện trên hình 8.2. T4 hoặc T1 CLK HOLD HLDA Hình 8.2. Quan hệ giữa HOLD v HLDA. 235 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 A, bus D v bus C (trừ tín hiệu ALE=0) để nhờng quyền sử dụng các bus ny cho DMAC. Cần lu ý rằng đầu vo HOLD có mức u tiên cao hơn các đầu vo yêu cầu ngắt INTR v NMI nhng lại thấp hơn so với đầu vo 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 vo chân HOLD của 8088 ngời ta thờng dùng mạch trên hình 8.3. yêu cầu treo +5V từ thiết bị ngoại vi đến HOLD của 8088 CLK RESET Hình 8.3. Đồng bộ tín hiệu yêu cầu treo để đa đến CPU 8088 2.2 Mạch DMAC 8237A-5 của Intel Trớc khi trình by kỹ về mạch DMAC 8237A-5 của Intel 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-5 lm DMAC. Nh trên hình 8.1 đã thể hiện tơng đối rõ, để thực hiện đợc chức năng DMA trong hệ, bus điều của hệ vi xử lý với CPU 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 khác hoạt động. Đó chính l việc các tín hiệu RD, WR v IO/M đợc sử dụng để tạo 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 by 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 74LS257 gồm 4 mạch đồn kênh 2 đờng. Các tín hiệu RD, WR v IO/M đợc bố trí sao cho khi đầu vo của mạch 74LS257 l B=1 thì ta lm việc (ghi/đọc) với thiết bị ngoại vi với các xung IOR v IOW, ngợc lại khi B=0 thì ta lm việc với bộ nhớ với các xung MEMR v MEMW. pr D Q clk clr 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. 236 +5V IOR IOW RD MEMR WR MEMW IO/M từ AEN của 8237A-5 Hình 8.4. Một cách tạo các tín hiệu điều khiển mới cho hệ thống 8088 để lm việc với DMAC 8237A-5 DMAC 8237A-5 thờng đợc dùng để điều khiển việc truyền dữ liệu giữa bộ nhớ v thiết bị ngoại vi. Mạch 8237A-5 có thể điều khiển truyền dữ liệu theo 3 kiểu. A 0 -A 3 EOP RESET CS READY A 4 -A 7 CLK AEN ADSTB MEMW MENR IOR IOW A 8 -A 15 HLDA DB B 0 -DB 7 HRQ DRQ 0 - DRQ 3 DACK 0 - DACK 3 Hình 8.5. Sơ đồ khối cấu trúc của DMAC 8237A-5. A0 B0 Y0 A1 B1 Y1 A2 '257 B2 Y2 A3 B3 Y3 B OE Bộ giảm Thanh ghi tạm Bộ tăng Thanh ghi tạm Đệm I/O Khối tạo nhịp v điều khiển bộ đếm số từ cho địa chỉ Đệm ra Đệm đọc cơ sở cơ sở Đệm ghi/đọc hiện tại hiện tại Địa chỉ Số từ Địa chỉ Số từ Đệm đọc Đệm ghi Bộ mã hoá Đệm T.g. lệnh mức u tiên v logic tạo u tiên luân phiên Tg mặt nạ Th.ghi Chế độ Thanh ghi tạm T. g .trạn g thái Tg yêucầu I/O 237 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 vo bộ nhớ. Khi 8237A-5 lm việc ở chế độ kiểm tra thì tuy địa chỉ đợc đa đến bộ nhớ nhng DMAC không tạo ra các xung điều khiển để tiến hnh các thao tác ghi/đọc bộ nhớ hay thiết bị ngoại vi. Ngoi ra mạch 8237A-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ế độ lm việc ny, dữ liệu cần trao đổi mới phải đi qua DMAC nhng với tốc độ cao hơn khi đi qua CPU (trong trờng hợp ny 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. DMAC 8237A-5 có tốc độ truyền 1 MB/s cho mỗi kênh, một kênh có thể truyền 1 mảng có độ di 64 KB. 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ể lm 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 vo CLK của 8237A-5. + CS [I]: tín hiệu chọn vỏ của 8237A-5. Chân ny thờng đợc nối với đầu ra của bộ giải mã địa chỉ. Bộ giải mã địa chỉ ny không cần dùng đến đầu vo IO/M vì bản thân DMAC đã đợc cung cấp các xung điều khiển mới của hệ thống. + RESET[I]: tín hiệu nối với tín hiệu khởi động hệ thống. Khi mạch 8237A-5 đợc khởi động riêng thanh ghi mặt nạ đợc lập còn các bộ phận sau đây bị xoá: - thanh ghi 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 (First/Last) . + READY [I]: tín hiệu sẵn sng, 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 hoặ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 0 -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 ny có thể lập trình đợc. Sau khi khởi động các tín hiệu ny đợc định nghĩa l các tín hiệu kích hoạt mức cao (tích cực cao). + DB0-DB7 [I,O]: tín hiệu 2 chiều nối đến bus địa chỉ v bus dữ liệu của hệ thống, các tín hiệu ny đợc dùng khi lập trình cho DMAC v khi DMAC hoạt động. Khi DMAC hoạt động các chân ny chứa 8 bit địa chỉ cao A8-A15 của mảng nhớ dữ 238 liệu 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 ny 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 2 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 2 chiều. Khi l đầu vo 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 ngoi biết một kênh no đó đã chuyển xong số byte theo yêu cầu (Terminal count, TC), lúc ny nó thờng đợc dùng nh một yêu cầu ngắt để CPU xử lý việc kết thúc quá trình DMA. +A0-A3 [I,O]: l các tín hiệu 2 chiều dùng để chọn các thanh ghi trong 8237A- 5 khi lập trình v khi đọc (đầu vo), hoặc để chứa 4 bit địa chỉ thấp nhất của địa chỉ mảng nhớ cần chuyển (đầu ra). +A4-A7 [O]: các chân để chứa 4 bit địa chỉ phần cao trong byte địa chỉ thấp của địa chỉ mảng nhớ cần chuyển. + HRQ [O]: tín hiệu yêu cầu treo đến CPU. Tín hiệu ny 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 [O]: 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 ny 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ín hiệu ny đợc định nghĩa l các xung tích cực thấp. + AEN [O]: tín hiệu cho phép mạch chốt nối vo 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 ny cũng cho phép cấm các mạch đệm bus đị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 vo các bus tơng ứng khi DMAC hoạt động. + ADSTB [O]: xung cho phép chốt các bit địa chỉ phần cao A8-A15 có mặt trên DB0-DB7. + MEMR [O] v MEMW [O]: 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 để lm 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ảng trên có thể đợc ghi, đọc hoặc chỉ ghi vo v chúng chứa các thông tin khác nhau liên quan đến cách thức lm 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. 239 Bảng 8.1. Địa chỉ các thanh ghi bên trong của 8237A-5. Bit địa chỉ A3A2A1A0 Địa chỉ Hex Chọn chức năng R/W? 0 0 0 0 x0 Thanh ghi địa chỉ bộ nhớ kênh C0 R/W 0 0 0 1 x1 Thanh ghi đếm số từ kênh C0 R/W 0 0 1 0 x2 Thanh ghi địa chỉ bộ nhớ kênh C1 R/W 0 0 1 1 x3 Thanh ghi đếm số từ kênh C1 R/W 0 1 0 0 x4 Thanh ghi địa chỉ bộ nhớ kênh C2 R/W 0 1 0 1 x5 Thanh ghi đếm số từ kênh C2 R/W 0 1 1 0 x6 Thanh ghi địa chỉ bộ nhớ kênh C3 R/W 0 1 1 1 x7 Thanh ghi đếm số từ kênh C3 R/W 1 0 0 0 x8 Thanh ghi trạng thái/lệnh R/W 1 0 0 1 x9 Thanh ghi yêu cầu DMA W 1 0 1 0 xA Thanh ghi mặt nạ cho 1 kênh W 1 0 1 1 xB Thanh ghi chế độ W 1 1 0 0 xC Xoá mạch lật First/Last W 1 1 0 1 xD Xoá ton bộ các thanh ghi /đọc thanh ghi tạm W/R 1 1 1 0 xE Xoá thanh ghi mặt nạ cho 4 kênh W 1 1 1 1 xF Thanh ghi mặt nạ cho 4 kênh W Ghi chú: x do cs quyết định Bảng 8.2. Địa chỉ các thanh ghi trong để ghi/đọc địa chỉ v số từ cần chuyển. Kênh CS IOR IOW A3 A2 A1 A0 Thanh ghi R /W? C0 0 1 0 0 0 0 0 địa chỉ cơ sở v địa chỉ hiện tại W 0 0 1 0 0 0 0 địa chỉ hiện tại R 0 1 0 0 0 0 1 bộ đếm cơ sở v bộ đếm hiện tại W 0 0 1 0 0 0 1 bộ đếm hiện tại R C1 0 1 0 0 0 1 0 địa chỉ cơ sở v địa chỉ hiện tại W 0 0 1 0 0 1 0 địa chỉ hiện tại R 0 1 0 0 0 1 1 bộ đếm cơ sở v bộ đếm hiện tại W 0 0 1 0 0 1 1 bộ đếm hiện tại R C2 0 1 0 0 1 0 0 địa chỉ cơ sở v địa chỉ hiện tại W 0 0 1 0 1 0 0 địa chỉ hiện tại R 0 1 0 0 1 0 1 bộ đếm cơ sở v bộ đếm hiện tại W 0 0 1 0 1 0 1 bộ đếm hiện tại R C3 0 1 0 0 1 1 0 địa chỉ cơ sở v địa chỉ hiện tại W 0 0 1 0 1 1 0 địa chỉ hiện tại R 0 1 0 0 1 1 1 bộ đếm cơ sở v bộ đếm hiện tại W 0 0 1 0 1 1 1 bộ đếm hiện tại R 240 Bảng 8.3. Địa chỉ các thanh ghi cho điều khiển v trạng thái. A3 A2 A1 A0 IOR IOW Thao tác 1 0 0 0 0 1 đọc thanh ghi trạng thái 1 0 0 0 1 0 ghi thanh ghi lệnh 1 0 0 1 0 1 không hợp lệ 1 0 0 1 1 0 ghi thanh ghi yêu cầu DMA 1 0 1 0 0 1 không hợp lệ 1 0 1 0 1 0 ghi thanh ghi mặt nạ cho 1 kênh 1 0 1 1 0 1 không hợp lệ 1 0 1 1 1 0 ghi thanh ghi chế độ 1 1 0 0 0 1 không hợp lệ 1 1 0 0 1 0 xoá mạch lật First/Last 1 1 0 1 0 1 đọc thanh ghi tạm 1 1 0 1 1 0 xoá ton bộ các thanh ghi bên trong 1 1 1 0 0 1 không hợp lệ 1 1 1 0 1 0 xoá thanh ghi mặt nạ của 4 kênh 1 1 1 1 0 1 không hợp lệ 1 1 1 1 1 0 ghi thanh ghi mặt nạ cho 4 kênh 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 bit dùng để chứa địa chỉ của vùng nhớ phải chuyển. Mỗi kênh có riêng thanh ghi ny để chứa địa chỉ. Khi 1 byte đợc truyền đi, các thanh ghi ny tự động tăng hay giảm tuỳ theo trớc đó nó đợc lập trình nh thế no. + Thanh ghi số đếm hiện thời: Thanh ghi 16 bit ny dùng để chứa số byte m kênh phải truyền (nhiều nhất l 64KB). Mỗi kênh có thanh ghi số byte của mình. Các thanh ghi ny đợc ghi bằng số đếm nhỏ 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 ny đợc dùng để chứa địa chỉ v số đếm cho mỗi kênh khi chế độ tự khởi đầu đợc sử dụng. Trong chế độ ny khi 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ế độ tự khởi đầu có đợc sử dụng hay không. + Thanh ghi lệnh: Thanh ghi ny 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á ton 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. 241 [...]... bớc sau đây để lập trình cho DMAC 82 37A-5: + Xoá mạch 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 82 37A-5 với CPU 80 88 ở chế độ MIN 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-5 AEN=0 khi CPU kiểm soát hoạt động của ton hệ Các bit địa chỉ A16-A19 v A0-A7 sẽ đợc chốt bởi U1 v U3... dụng 82 37A-5 để chuyển dữ liệu giữa 2 vùng nhớ Giả thiết ta phải chuyển một số byte dữ liệu từ vùng nhớ có địa chỉ đầu l 10000H sang vùng nhớ khác có chỉ đầu l 14000H trong một hệ thống có sơ đồ phần DMAC v CPU dựa trên hình 8. 12 Ta có thể dùng chơng trình MemTrans.asm để giải quyết công việc ny 246 U1 '373 A16/So - A16-A19 G OC A19/S3 80 88 U2 '373 OC G IOW A8-A15 A8-A15 U3 '373 Ao-A7 G OC ALE Do-D7... thanh ghi trang DMA cho cả 4 kênh của DMAC Tất 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 2 vùng nhớ Việc dùng chế độ DMA để chuyển dữ liệu giữa các vùng khác nhau của bộ nhớ cho phép đạt đợc tốc độ truyền cao hơn so với với việc dùng các lệnh chuyển dữ liệu Rep MOVSB của CPU Nếu lấy ví dụ với trờng hợp DMAC 82 37A-5 v CPU 80 88 5MHz thì tốc độ truyền của DMAC cao hơn cỡ... 80 88 U2 '373 OC G IOW A8-A15 A8-A15 U3 '373 Ao-A7 G OC ALE Do-D7 ADo-AD7 U4 '373 G OC A4-A7 HLDA HOLD Q D clk clr D0-D7 AEN ADSTB HLDA HRQ Dmac 82 37A-5 CLK RESET AEN U6 A0-A7 Giải mã '1 38 CS MEMR,IOR MEMW,IOW clk v reset CLK WR từ 82 84 U5 OE '257 RD MN/MX IO/M IOR,IOW B MEMR, MEMW +5V Hình 8. 12 Sơ đồ phối ghép 80 88 ở chế độ min với 82 37A-5 247 Trong chơng trình ny, đầu tiên ta gửi 4 bit địa chỉ cao nhất... (74LS257) Khi DMAC nắm quyền chỉ huy hệ thống thì AEN=1 sẽ cấm các chốt U1 v U3 mở thông từ CPU ra bus, nhng 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 ADSTB sẽ cho phép mở mạch chốt U4 để đa ra các bit địa chỉ A8-A15 đợc chốt từ bus D của 82 37A-5 Vì DMAC 82 37A-5 chỉ... Hình 8. 7 Dạng thức của thanh ghi chế độ + Thanh ghi chế độ: Dùng đặt chế độ lm 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 hế độ DMA theo yêu cầu, DMAC tiến hnh chuyển dữ liệu cho đến khi có tín hiệu EOP từ bên ngoi 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... kênh 1 Hình 8. 10 Dạng thức của thanh ghi mặt nạ tổng hợp 244 + Thanh ghi trạng thái: Thanh ghi ny cho phép xác định trạng thái của các kênh trong DMAC: kênh no đã truyền xong (đạt số đếm, TC), kênh no đang có yêu cầu DMA để trao đổi dữ liệu Khi một kênh no đó đạ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 82 37A-5 Có 3 lệnh... kéo di 1: DMAC đợc phép hoạt động 0: DMAC bị cấm hoạt động x: Nếu bit3 =1 1: Nhịp rút ngắn 1: Mức u tiên đặt sẵn 0: Nhịp bình thờng 0: Mức u tiên luân phiên x: Nếu bit0 =1 Hình 8. 6 Dạng thức của thanh ghi lệnh Các bit của thanh ghi ny quyết định các phơng thức lm việc khác nhau của 82 37A-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... 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 ny 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 ny 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 243 7 6 5 4 3 x x... byte, chừng no 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 xong một byte, sau đó nó lại đa ra HRQ=1 Cứ nh vậy DMAC v CPU luân phiên nhau sử 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 một lúc Chân yêu cầu chuyển dữ liệu DRQ không cần phải đợc giữ . AEN của 82 37A-5 Hình 8. 4. Một cách tạo các tín hiệu điều khiển mới cho hệ thống 80 88 để lm việc với DMAC 82 37A-5 DMAC 82 37A-5 thờng đợc dùng để điều khiển việc truyền dữ liệu giữa. MSB của thanh ghi số đếm Nối DMAC 82 37A-5 với CPU 80 88 ở chế độ MIN 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-5 AEN=0 khi CPU kiểm soát hoạt. DMAC 82 37A-5 v CPU 80 88 5MHz 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 82 37A-5 để chuyển dữ liệu giữa 2 vùng nhớ. Giả thiết ta phải chuyển một số byte dữ liệu

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

Từ khóa liên quan

Mục lục

  • 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)

  • 2. DMAC 8237A-5 trong hÖ vi xö lý 8088

    • 2.1. TÝn hiÖu HOLD vµ HLDA trong CPU 8088

    • 2.2 M¹ch DMAC 8237A-5 cña Intel

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

Tài liệu liên quan