CHƯƠNG 5: GHĨP NỐI VĂO RA đ IỀU KHIỂN BẰNG DMA 5.1 Khâi niệm DMA cơ bản
5.2.2 Ghĩp nối với 8237A-5 trong hệ vi xử lý
Vi mạch 8237 ựược sử dụng trong mây vi tắnh IBM PC ựể thực hiện câc quâ trình DMA trao ựổi dữ liệu trực tiếp giữa thiết bị ngoăi vă mây vi tắnh .
Tắn hiệu AEN vă ADSTB ra của 8237A-5 ựiều khiển ựầu ra của chốt 82C82. Trong suốt quâ trình hoạt ựộng bình thường của 8088 (AEN=0 ) câc vi mạch chốt ựịa chỉ cung cấp câc bit ựịa chỉ A15- A8 .Địa chỉ bus A7- A0 ựược cung cấp trực tiếp bởi 8237A-5 vă chứa một phần ựịa chỉ truyền DMA. Tắn hiệu ựiều khiển MEMR ,MEMW ,IOR ,IOW cũng ựược tạo bởi bộ ựiều khiển DMA. Giả thiết ựịa chỉ ựầu cho DMAC lă 0070h.
Hình 5.3: Sơựồ ghĩp nối 8237 với 8088
1. Câc trạng thâi hoạt ựộng
Vi mạch 8237A có câc trạng thâi sau:
- Trạng thâi nghỉ SI: trạng thâi trở khâng cao, không ựược chọn mạch (CS=1). - Trạng thâi chờ SO: Trạng thâi ựầu của quâ trình trao ựổi DMA. 8257 nhận tắn
Tăi liệu môn học: Ghĩp nối vă ựiều khiển thiết bị ngoại vi - Trạng thâi phât ựịa chỉ của ựắch số liệu S3:
DMAC phât ựịa chỉ của nơi gởi số liệu (Memory hoặc cửa I/O) - Trạng thâi phât lệnh ghi số liệu văo ựắch S4:
DMAC phât lệnh ghi số liệu từ thanh ghi ựệm ra cửa văo-ra
2. Câc chếựộ
Tuỳ nội dung thanh ghi chế ựộ lúc khởi phât, DMAC có câc chế ựộ sau: - Chế ựộ chuyển từng từ ựơn (Single Transfer Mode)
- Chế ựộ chuyển nhiều từ (Block Transfer Mode)
- Chế ựộ chuyển theo nhu cầu (Demand Transfer Mode) với số lượng từ tuỳ theo người sử dụng ựiều khiển.
- Chế ựộ ghĩp tầng (Cascade Mode) lă chế ựộ chuyển liắn tiếp câc từ, ựiều khiển bởi câc DMAC mắc nối tầng.
3. Câc chếựộưu tiắn của yắu cầu DMAC
Cũng giống như xử lý ngắt, DAMC có hai chế ựộ ưu tiắ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.
- Chế ựộ ưu tiắn vòng: kắnh vừa ựược phục vụ sẽ có mức ưu tiắn thấp nhất. Khi mới lập chế ựộ, kắnh 0 có mức ưu tiắn cao nhất.
4. Khởi phât vă ựảm bảo chương trình phục vụ
Trước khi ựưa DMAC văo hoạt ựộng, chương trình phải khởi phât nó. Quâ trình khởi phât gồm 2 giai ựoạn:
- Xoâ cứng bằng tắn hiệu Reset, lăm câc thanh ghi về 0.
- Ghi câc lệnh của chương trình khởi phât: VXL ghi văo câc thanh ghi chức năng như ựịa chỉ ban ựầu, số từ trao ựổi, số kắnh, che chắn yắu cầu của kắnh không cần hoạt ựộng, chế ựộ trao ựổi, chiều tăng hay giảm ựịa chỉẦ Khi ghi dữ liệu văo thanh ghi 16 bit, phải ghi lần lựơt 2 byte theo thứ tự byte thấp trước, byte cao sau.
- Sau khi ựược khởi phât, DMAC sẽ hoăn toăn tự ựộng lăm việc. Kết thúc chương trình khởi phât năy, luôn phải có lệnh ghi bit D4=1 văo thanh ghi chế ựộ ựể cho phĩp tự khởi ựộng.
5. Kết thúc trao ựổi DMA
Có hai câch kết thúc trao ựổi dữ liệu:
- Kết thúc tự ựộng: Kết thúc khi bộ ựếm số tin trao ựổi ựếm về 0, hay số ựếm kết thúc TC (Terminal Count). Với DMAC 8237, việc kết thúc thể hiện ở tắn hiệu Hold kết thúc, tức trở về mức logic 0.
- Kết thúc cữơng bức: ựđy lă tắn hiệu từ ngoăi văo (do mạch TBNV hoặc do người ựiều hănh can thiếp bằng câch ấn nút lệnh) ựể kết thúc quâ trình trao ựổi DMA.
6. Kiểm tra sự kết thúc ở kắnh mong muốn
Trong khi DMAC hoạt ựộng, thanh ghi trạng thâi luôn ựược cập nhật, tức luôn ghi trạng thâi hiện thời của DMAC. Khi kết thúc, VXL có thể ựọc nội dung năy của thanh ghi trạng thâi ựể biết rằng kắnh năo của DMA ựê ựạt ựến số ựếm kết thúc TC, số lời ựê trao ựổi lă bao nhiắu ( trường hợp kết thúc cưỡng bức do EOP từ ngoăi văo) vă kắnh văo ựang chờ phục vụ.
7. đặc ựiểm về hoạt ựộng của 8237
8237 có những ựặc ựiểm chắnh sau:
- Cho phĩp hoặc cấm riắng biệt từng kắnh DMA trong số 4 kắnh. - Trao ựổi dữ liệu DMA trực tiếp giữa hai vùng bộ nhớ.
- Cho phĩp nối tầng câc DMAC ựể tăng số kắnh DMA. - Có thể tạo yắu cầu DMA bằng chương trình
- Với 8237-2, tốc ựộ trao ựổi DMA có thể ựạt tới 1,6Mbps. Do ựó ngoăi phục vụ trao ựổi dữ liệu giữa MVT vă măn hình, ựĩa, DMA còn ựược dùng trong mạng MVT.