« Home « Kết quả tìm kiếm

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


Tóm tắt Xem thử

- Thanh ghi tạm.
- Bộ tăng Thanh ghi tạm.
- bộ đếm số từ cho địa chỉ.
- Địa chỉ Số từ Địa chỉ Số từ.
- Thanh ghi tạm T.g.trạng.
- đ−ợ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.
- 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..
- Địa chỉ các thanh ghi bên trong của 8237A-5..
- Bit địa chỉ A3A2A1A0.
- Địa chỉ Hex.
- 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 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.
- Đị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?.
- Đị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 đọc thanh ghi trạng thái ghi thanh ghi lệnh.
- không hợp lệ ghi thanh ghi yêu cầu DMA.
- không hợp lệ ghi thanh ghi mặt nạ cho 1 kênh không hợp lệ ghi thanh ghi chế độ.
- đọc thanh ghi tạm.
- xoá toμn bộ các thanh ghi bên trong không hợp lệ xoá thanh ghi mặt nạ của 4 kênh không hợp lệ 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ó.
- 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..
- Dạng thức của thanh ghi lệnh..
- Các bit 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.
- Địa chỉ của byte dữ liệu ở vùng gốc đ−ợc chứa trong thanh ghi địa chỉ của kênh 0, còn đị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 cần chuyển đ−ợc để trong thanh ghi đếm của kênh 1.
- đầ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)..
- 1: Địa chỉ giảm 01: Chế độ ghi.
- 0: Địa chỉ tăng 10: Chế độ đọc.
- Dạng thức của thanh ghi chế độ..
- 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..
- 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.
- Dạng thức của thanh ghi yêu cầu đ−ợc biểu diễn trên 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 bằng 1) hay cho phép hoạt động (cho bit mặt nạ t−ơng ứng bằng 0) đối với từng kênh một..
- Dạng thức của thanh ghi mặt nạ riêng rẽ 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 bằng 1) hay cho phép hoạt động (cho bit mặt nạ t−ơng ứng bằ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..
- Dạng thức của thanh ghi mặt nạ riêng cho mỗi kênh..
- 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 đã truyền xong (đạt số đếm, TC), kênh nμo đang có yêu cầu DMA để trao đổi dữ liệu.
- 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 nμy thực hiện chỉ bằng các lệnh OUT với các địa chỉ cổng xác định tuỳ theo các thanh ghi mμ không cần đến giá trị cụ thể của thanh ghi AL..
- Dạng thức của thanh ghi trạng thái..
- Lệnh xoá mạch lật byte đầu/byte cuối (First/Last, 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 (thanh ghi địa chỉ hoặc thanh ghi số đếm đ−ợc chọn lμm việc.
- Mạch lật F/L tự động thay đổi trạng thái khi ta ghi/đọc các thanh ghi.
- Lệnh xoá toμn bộ các thanh ghi: lệnh nμy có tác động nh− thao tác khởi.
- Tất cả các thanh ghi đề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 với LSB vμ MSB của các thanh ghi trên.
- Ghi LSB rồi MSB của thanh ghi địa chỉ + Ghi LSB rồi MSB của thanh ghi số đếm.
- Trong thực tế để lμm việc nμy cho tất cả các kênh (nh− trong các máy IBM-PC), ta có thể dùng vi mạch chuyên dụng 74LS670 (4 thanh ghi x 4 bit) để lμm thanh ghi trang DMA cho cả.
- đó 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 0 vμ kênh 1.
- 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)..
- địa chỉ mạch lật F/L.
- địa chỉ tg chế độ TGLENH EQU 78H .
- địa chỉ tg lệnh TGMATNA EQU 7FH .
- địa chỉ tg mặt nạ TGYEUCAU EQU 79H .
- địa chỉ tg yêu cầu TGTTHAI EQU 78H .
- địa chỉ tg trạng thái SOBYTE DW 100H .
- 4 bit địa chỉ cao nhất DCHIGOC DW 0000H .
- 16 bit địa chỉ của gốc DCHIDIC DW 4000H .
- 16 bit địa chỉ của đích.
- ghi địa chỉ cao vμo chốt OUT CHOT_U2,AL.
- địa chỉ cho kênh 0 OUT DCHI_C0,AL.
- địa chỉ cho kênh 1 OUT DCHI_C1,AL.
- đọc thanh ghi trạng thái TEST AL,2

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt