1. Trang chủ
  2. » Công Nghệ Thông Tin

Vi xử lý máy vi tính - Chương 8 pps

6 278 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 87 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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

Trang 2

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

Trang 3

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 +-DRQ3{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

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í 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 đó

Trang 4

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

Trang 5

7 6 5 4 3 2 1 0

1.Thiết lập yêu cầu 00: chọn kênh 0

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

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

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

Trang 6

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

m

Ngày đăng: 01/08/2014, 16:21

HÌNH ẢNH LIÊN QUAN

Hình 8.9. Dạng thức của thanh ghi mặt nạ riêng cho mỗi kênh - Vi xử lý máy vi tính - Chương 8 pps
Hình 8.9. Dạng thức của thanh ghi mặt nạ riêng cho mỗi kênh (Trang 5)

TỪ KHÓA LIÊN QUAN

w