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
Trang 1Chươ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ó đượ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 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ớ (direct memory access controller, DMAC)
Có thể lấy 1 thí dụ cụ thể để minh hoạ điều nμy 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ừ
Trang 2bộ 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ỡ 40 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 bus 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 bus 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 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 nμy, 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 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 đ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
Trang 3lμ 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)
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 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 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 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 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 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=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)
Trang 47 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 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 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 nμo đó 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 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μ 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
Trang 5Tí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 nμy cho DMAC 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μ NMI 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
yêu cầu treo +5V
từ thiết bị ngoại vi
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 bμy 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 lμm 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 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 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 vμo của mạch 74LS257 lμ B=1 thì ta lμm 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 lμm 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
Trang 6+5V
IOR IOW
RD
MEMR
WR
MEMW
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 để lμm 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
EOP
RESET
CLK
AEN
ADSTB
MEMW
MENR
IOR
IOW
A8-A15
HRQ
DRQ0-
DRQ3
DACK0-
DACK3
Hình 8.5 Sơ đồ khối cấu trúc của DMAC 8237A-5
A0
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
Chế độ
Thanh ghi tạm
T.g.trạng thái
Tg yêucầu
I/O
Trang 7Trong 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 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ế độ lμm việc nμy, dữ liệu cần trao đổi mới
phải đi qua DMAC 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 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ó độ dμi 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ể 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ệ 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 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 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
+ DRQ0-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 khởi động các tín hiệu nμy đượ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 nμy đượ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 nμy chứa 8 bit địa chỉ cao A8-A15 của mảng nhớ dữ
Trang 8liệ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 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 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 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 (Terminal count, TC), lúc nμy 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 vμo), 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 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 [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 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ín hiệu nμy đượ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 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 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 vμo 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 để 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ảng trên có thể được ghi, đọc 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
Trang 9Bả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 1 0 0 xC Xoá mạch lật First/Last W
1 1 0 1 xD Xoá toμn 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
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
Trang 10Bả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á toμn 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 nμy để chứa địa chỉ Khi 1 byte được truyền đi, các thanh ghi nμy tự độ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 bit nμy 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 nμy đượ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 nμy đượ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ế độ nμy 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 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