Các phương pháp điều khiển vào ra dữ liệu

Mục lục

1. GIỚI THIỆU CÁC PHƯƠNG PHÁP ĐIỀU KHIỂN VÀO/RA DỮ LIỆU.

2. VÀO RA DỮ LIỆU BẰNG PHƯƠNG PHÁP QUÉT VÒNG.

3. VÀO RA DỮ LIỆU BẰNG PHƯƠNG PHÁP NGẮT.

Nội dung

CÁC PHƯƠNG PHÁP ĐIỀU KHIỂN VÀO RA DỮ LIỆU

1. GIỚI THIỆU CÁC PHƯƠNG PHÁP ĐIỀU KHIỂN VÀO/RA DỮ LIỆU.

 Như đã biết hệ thống CPU bao gồm 3 phần chính : CPU, bộ nhớ và vào ra. Trong đó CPU đóng vai trò là nơi chỉ đạo tất cả các hoạt động của các nơi còn lại. Đối với bộ nhớ chúng có tốc độ hoạt động khá nhanh, có thể đáp ứng gần như tức thời khi CPU truy cập, mặt khác bộ nhớ sử dụng lưu trữ các hằng và biến nên khi cần chúng sẽ được truy xuất bằng một lệnh truyền dữ liệu, khi đó dữ liệu đã có sẵn trong bộ nhớ mà không phải chờ đáp ứng từ bên ngoài. Còn đối với vào ra thông thường có tốc độ đáp ứng chậm, mặt khác đôi khi chúng còn phải chờ tác động từ bên ngoài (ví dụ như khi đọc bàn phím CPU phải chờ cho người sử dụng nhấn phím ). Khi hệ thống CPU có nhiều thiết bị vào ra có thể thực hiện ba giải pháp quản lý thiết bị bao gồm:

 

doc30 trang | Chia sẻ: phuongt97 | Lượt xem: 361 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Các phương pháp điều khiển vào ra dữ liệu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
p tín hiệu chấp nhận yêu cầu treo BUS HLDA, tín hiệu này của CPU sẽ cho phép 8237 bắt đầu chu kỳ truyền dữ liệu của nó. S1, S2, S3 và S4 là các chu kỳ làm việc trong chu kỳ phục vụ DMA. Khi giao tiếp với các bộ nhớ có tốc độ đáp ứng chậm một trạng thái chờ có thể thêm vào giữa S2 và S3 cho đến khi tín hiệu ngõ vào READY của 8237 hết tích cực. Chú ý là dữ liệu được truyền trực tiếp giữa bộ nhớ và vào/ra với, các tín hiệu MEMR và IOW hoặc MEMW và IOR tác động một cách đồng thời tại một thời điểm. Dữ liệu sẽ không đọc vào hoặc ghi ra 8237 trong các chu kỳ truyền dữ liệu giữa vào ra và bộ nhớ. Việc truyền dữ liệu giữa các ô nhớ một chu kỳ đọc từ ô nhớ truyền và 1 chu kỳ ghi vào ô nhớ nhận cho mỗi byte. Như vậy trong chu kỳ này sẽ yêu cầu 8 trạng thái cho việc truyền một byte. Các trạng thái S11, S12, S13, S14 cho việc đọc dữ liệu từ bộ nhớ, và các trạng thái S21, S22, S23, S24 cho việc ghi dữ liệu vào bộ nhớ. Chu kỳ rỗi. Khi không có kênh DMA nào yêu cầu được phục vụ, 8237 sẽ chuyển qua chu kỳ rỗi và thực hiện trạng thái SI. Trong chu kỳ này 8237 sẽ kiểm tra các ngõ vào DREQ tại mỗi chu kỳ xung CLK xem có yêu cầu DMA nào cần phục vụ hay không. Trong chu kỳ này 8237 cũng kiểm tra ngõ vào CS xem CPU có thực hiện các chu kỳ đọc ghi các thanh ghi của nó hay không. Khi CS và HLDA đều ở mức thấp 8237 sẽ ở trạng thái lập trình các điều kiện hoạt động. CPU lúc này có thể thực hiện các công việc như tạo lập, thay đổi kiểm tra các tình trạng hiện thời của 8237 bằng cách đọc ghi các thanh ghi bên trong 8237. Các đường địa chỉ vào A0 - A3 sử dụng để CPU xác định tới các thanh ghi mà nó muốn đọc hoặc ghi. Các tín hiệu IOR và IOW lúc này sẽ là các ngõ vào cung cấp từ CPU để định nghĩa chu kỳ là đọc hay ghi. Khi đó đối với các thanh ghi đếm địa chỉ, hoặc các thanh ghi đếm số từ 6 bit sẽ có thêm 1 bit để xác định phần cao hay phần thấp của chúng được phép truyền dữ liệu với CPU. Các bit này có thể lập trình trước bằng phần mềm, và sẽ xóa khi có tín hiệu RESET. Đặc biệt trong chế độ này CPU có thể lập trình các chế độ hoạt động cho 8237 với sự tác động CS, IOW và các bit địa chỉ tương ứng. Các lệnh sẽ bao gồm cả việc lập xóa các Flip/Flop chọn phần cao hay thấp của các thanh ghi, và lệnh RESET toàn bộ các thanh ghi của 8237. Chu kỳ tích cực. Khi đang trong chu kỳ rỗi, nếu có tín hiệu yêu cầu cung cấp tới ngõ vào DREQ không bị lập trình che của 8237, nó sẽ gửi tín hiệu HRQ tới vi xử lý và chuyển qua chu kỳ tích cực. Trong chu kỳ này 8237 sẽ làm việc ở 1 trong 4 chế độ. Chế độ truyền byte. Trong chế độ này 8237 được lập trình chỉ thực hiện 1 chu kỳ truyền, các bộ đếm số từ và địa chỉ sẽ được tăng hoặc giảm sau mỗi lần truyền. Khi bộ đếm số từ quay lại từ 0 tới FFFFH thì kết thúc đếm TC (Terminal Count) sẽ được tự động thiết lập nếu kênh đã được lập trình TC. DREQ phải giữ nguyên mức tích cực cho đến khi DACK tích cực. Khi DREQ không còn giữ mức tích cực, HRQ sẽ hết tác động giải phóng bus hệ thống. Nếu nó tác động trở lại và nhận được tín hiệu HLDA, một chu kỳ truyền byte khác sẽ được thực hiện. Điều này cho phép việc truyền dữ liệu xem vào các chu kỳ hoạt động của CPU. Việc định thời hoạt động của 8237 sẽ tùy thuộc vào đặc tính của vi xử lý. Chế độ truyền khối. Trong chế độ truyền khối 8237 sẽ thực hiện việc truyền dữ liệu cho đến khi bộ đếm số từ chuyển từ 0000H tới FFFFH, hoặc khi ngõ vào EOP tác động mức 0. DREQ chỉ cần giữ mức tác động cho đến khi DACK tác động. Nếu được lập trình thì quá trình tự động khởi động sẽ thực hiện khi kết thúc phục vụ DMA. Chế độ truyền theo yêu cầu. Trong chế độ này 8237 sẽ truyền dữ liệu liên tục cho tới khi kết thúc đếm TC (bộ đếm từ chuyển từ 0000H tới FFFFH), hoặc khi gặp tín hiệu EOP, hoặc khi DREQ hết tích cực. Như vậy thiết bị có thể duy trì việc truyền dữ liệu cho đến khi hết dung lượng của nó. Khi dữ liệu chưa truyền hết mà gặp TC, hoặc có tín hiệu EOP thì phục vụ DMA sẽ được thiết lập lại vì DREQ vẫn còn tích cực.. Chế độ xếp tầng.(Cascade Mode). Trong chế độ này có thể xếp tầng nhiều bộ điều khiển DMA để tăng số yêu cầu ngõ vào. Các tín hiệu HRQ và HLDA của 8237 thêm sẽ được nối vào DREQ và DACK của 8237 trước nó. Điều này cho phép 8237 phía sau truyền yêu cầu qua 8237 trước nó, trình tự ưu tiên vẫn được duy trì, và ngõ vào mới yêu cầu sẽ phải chờ cho đến khi có tín hiệu chấp nhận yêu cầu DACK. Vì thế kênh xếp tầng của 8237 chủ chỉ sử dụng cho 8237 cộng thêm, và nó sẽ quyết định mức ưu tiên cho các kênh cộng thêm đó. Nó không được đưa ra địa chỉ của mình vì như vậy sẽ gây ra xung đột với các kênh cộng thêm của nó. 8237 sẽ đáp ứng các tín hiệu DREQ và DACK còn tất cả các tín hiệu khác ngoại trừ HRQ đều không được phép tác động. Hình 6.13̃ mô tả việc xếp tầng thêm hai 8237 tớ vào hai kênh của 8237 chủ, tạo thành hệ thống DMA hai mức. Có thể tăng thêm nhiều 8237 vào các kênh khác của 8237 tầng thứ nhất. Cũng có thể tăng thêm số kênh yêu cầu bằng cách, xếp tầng vào các kênh của các 8237 tầng thứ hai tạo thành hệ thống 3 tầng. CPU 8237 tầng thứ hai 8237 tầng thứ nhất HRQ HLDA HOLD HRQ HLDA HRQ HLDA HLDA DREQ DACK DREQ DACK Hình 6.13: Hệ thống xếp tầng 8237. Các kiểu truyền dữ liệu. Trong mỗi chế độ truyền nêu trên 8237 có thể ở một trong 3 kiểu truyền là: đọc ghi và kiểm tra. Trong kiểu ghi dữ liệu sẽ được chuyển từ thiết bị vào ra tới bộ nhớ bằng cách tác động đồng thời các tín hiệu IOR và MEMW. Trong kiểu đọc dữ liệu sẽ được chuyển từ bộ nhớ tới thiết bị vào ra bằng cách tác động đồng thời các tín hiệu MEMR và IOW. Kiểu kiểm tra sẽ thực hiện các việc truyền giả. Trong kiểu này 8237 tạo ra địa chỉ và đáp ứng EOP giống như trong kiểu đọc và ghi, nhưng các tín hiệu điều khiển bộ nhớ và vào ra sẽ không được tác động. Chế độ kiểm tra không được cho phép hoạt động trong chu kỳ truyền dữ liệu giữa bộ nhớ và bộ nhớ. Truyền dữ liệu giữa bộ nhớ - bộ nhớ. Chu kỳ này cho phép việc truyền một khối dữ liệu từ vùng nhớ này qua vùng nhớ khác với thời gian ngắn nhất. Một bit trong thanh ghi lệnh có thể lập trình cho các kênh 0 và 1 có thể hoạt động ở chế độ truyền giữa bộ nhớ và bộ nhớ. Quá trình sẽ được bắt đầu bằng cách thiết lập yêu cầu DMA bằng phần mềm (không phải bằng tín hiệu đưa tới ngõ vào DREQ). Khi đó 8237 sẽ thực hiện việc yêu cầu DMA như bình thường. Sau khi nhận được tín hiệu trả lời HLDA từ CPU, 8237 sẽ thực hiện 8 trạng thái truyền trong chế độ truyền khối. Đầu tiên nó sẽ đọc dữ liệu từ bộ nhớ, thanh ghi địa chỉ hiện hành của kênh 0 được sử dụng giữ địa chỉ nguồn dữ liệu có thể tăng hoặc giảm như thông thường. Dữ liệu đọc được từ bộ nhớ sẽ được chứa vào thanh ghi tạm thời bên trong 8237. Kênh 1 sẽ ghi dữ liệu trong thanh ghi tạm thời tới địa chỉ chứa trong thanh ghi địa chỉ hiện hành của nó, thanh ghi này cũng có thể tăng hoặc giảm như thông thường. Bộ đếm số từ của kênh 1 sẽ được giảm, và khi nó chuyển từ 0000H sang FFFFH thì TC sẽ xảy ra, TC và ngõ ra EOP sẽ tác động chỉ thị kết thúc phục vụ DMA. Kênh 0 có thể lập trình để duy trì 1 địa chỉ cho tất cả các lần truyền, điều này cho phép lấp đầy 1 vùng nhớ chỉ bằng một từ duy nhất (chỉ thay đổi địa chỉ đích, không thay đổi địa chỉ nguồn). 8037 sẽ đáp ứng tín hiệu EOP trong suốt quá trình truyền dữ liệu giữa bộ nhớ và bộ nhớ. Điều này cho phép thực hiện việc so sánh tìm kiếm trong một chuỗi dữ liệu có sắp xếp, bằng cách cung cấp tín hiệu tới ngõ vào EOP khi tìm được dữ liệu mong muốn. Tự động khởi động. Bằng cách lập một bit trong thanh ghi chế độ , có thể lập trình cho một kênh tự động khởi động. Trong chế độ này giá trị của các thanh ghi địa chỉ hiện hành, và thanh ghi đếm số từ hiện hành sẽ được phục hồi lại bằng giá trị của các thanh ghi cơ sở tương ứng khi EOP. Giá trị của các thanh ghi cơ sở được CPU nạp đồng thời với các thanh ghi hiện hành, nhưng chúng không bị thay đổi trong suốt quá trình phục vụ DMA. Bit che (mask) sẽ không được xoá trong chế độ tự động khởi động. Ngay sau quá trình khởi động lại kênh sẽ sẵn sàng thực hiện một yêu cầu DMA khác mà không cần sự can thiệp nào thêm từ CPU. Nếu không lập trình chế độ khởi động lại, các thông số của kênh phải được CPU lập trình lại sau khi EOP, mới có thể sẵn sàng cho một phục vụ DMA mới. Trình tự ưu tiên. 8237 có hai kiểu mã hóa ưu tiên có thể chọn bằng phần mềm đó là chế độ ưu tiên cố định và chế độ ưu tiên quay vòng. Trong chế độ ưu tiên cố định, ưu tiên sẽ giảm dần theo số thứ tự của các kênh, kênh 0 có độ ưu tiên cao nhất cho tới kênh 3 sẽ có độ ưu tiên thấp nhất. Khi một kênh được phục vụ, yêu cầu của các kênh khác sẽ bị ngăn chặn cho đến khi phục vụ được thực hiện xong. 2 3 0 1 3 0 1 2 0 1 2 3 Ưu tiên cao nhất Ưu tiên thấp nhất Phục vụ Phục vụ Yêu cầu Phục vụ Hình 6.14: Chế độ ưu tiên phục vụ DMA quay vòng Trong chế độ ưu tiên quay vòng, kênh vừa được phục vụ xong sẽ có mức ưu tiên thấp nhất, kênh kế tiếp của nó sẽ có mức ưu tiên cao nhất, các kênh còn lại sẽ có độ ưu tiên theo vòng. Một chu trình ví dụ có thể biểu diễn như hình 6.14. Định thời rút gọn. 8237 có thể thực hiện chu kỳ truyền dữ liệu với chu kỳ rút gọn chỉ với 2 chu kỳ clock. Chu kỳ S1 sử dụng cho việc tạo địa chỉ, việc đọc ghi dữ liệu sẽ được thực hiện trong S2. Tạo địa chỉ. Để giảm bớt số chân, 8237 kết hợp 8 bit địa chỉ cao vào bus dữ liệu tạo thành bus đa hợp DB0 -DB7. Trong S1 các bit địa chỉ cao sẽ cung cấp ra các ngõ này cùng với tín hiệu cài địa chỉ ADSTB. Cạnh lên của ADSTB sẽ cài các bit địa chỉ này ra bộ cài địa chỉ bên ngoài. Tín hiệu cho phép địa chỉ AEN sẽ cho phép đặt các đường địa chỉ này lên bus hệ thống trong các trạng thái còn lại. Byte địa chỉ thấp sẽ được cung cấp trực tiếp ra các đường A0-A7, đưa lên bus địa chỉ hệ thống. Khi phục vụ trong chế độ truyền khối và truyền theo yêu cầu bao gồm nhiều chu kỳ truyền, các địa chỉ sẽ được tạo ra một cách tuần tự. Với các chu kỳ truyền bằng các địa chỉ kế tiếp nhau, các bit địa chỉ cao chỉ phải thay đổi một lần trong 256 lần truyền. Do đó các đường địa chỉ cao và tín hiệu ADSTB chỉ tác động 1 lần sau 256 lần truyền, 255 lần truyền còn lại các đường này chỉ dành cho dữ liệu. 5. Mô tả các thanh ghi. Thanh ghi địa chỉ hiện hành. Mỗi kênh DMA có 1 thanh ghi địa chỉ hiện hành 16 bit. Thanh ghi này sẽ giữ địa chỉ trong suốt quá trình phục vụ DMA. Giá trị địa chỉ sẽ tự động tăng hoặc giảm sau mỗi lần truyền. Giá trị của thanh ghi này có thể CPU đọc được mỗi lần 8 bit, và nó có thể phục hồi lại giá trị ban đầu từ thanh ghi cơ sở nếu kênh được lập trình tự động khởi động lại. Quá trình tự động khởi động lại chỉ xảy ra sau khi EOP. Thanh ghi đếm số từ hiện hành. 0 1 2 3 4 5 6 7 0: Không cho phép truyền bộ nhớ - bộ nhớ 1: Cho phép truyền bộ nhớ - bộ nhớ 0: Không cho phép kênh 0 giữ nguyên địa chỉ 1: Cho phép kênh 0 giữ nguyên địa chỉ x: khi bit D 0 = 0 0: DMAC bị cấm hoạt động 1: DMAC được phép hoạt động 0: Chê độ định thời bình thường 1: Chế độ định thời rút gọn (chỉ truyền 2 CLK) x: khi bit D0 = 0 0: Chế độ ưu tiên cố định 1: Chế độ ưu tiên quay vòng 0: Ghi kéo dài (cho bộ nhớ chậm) 1: Ghi thông thường x: Khi bit D3 = 0 0: DREQ tác động mức cao 1: DREQ tác động mức thấp 0: DACK tác động mức thấp 1: DREQ tác động mức cao Hình 6.15: Thanh ghi lệnh của 8237. Mỗi kênh DMA có 1 thanh ghi đếm số từ hiện hành 16 bit. Giá trị của thanh ghi này sẽ xác định số chu kỳ truyền cần phải thực hiện, số chu kỳ truyền thực sự sẽ nhiều hơn giá trị lập trình trong thanh ghi đếm số từ hiện hành 1 (nghĩa là nếu lập trình thanh ghi hiện hành là 100, thì số chu kỳ truyền sẽ là 101). Thanh ghi này sẽ tự động giảm sau mỗi chu kỳ truyền, khi giá trị của nó chuyển từ 0000H sang FFFFH thì TC sẽ được tạo ra. Giá trị của thanh ghi này có thể đọc hoặc ghi mỗi lần 8 bit trong khi lập trình cho 8237. Việc tự động khởi động sẽ phục hồi lại giá trị của thanh ghi đếm số từ hiện hành bằng giá trị của thanh ghi đếm số từ cơ sở sau khi EOP, nếu kênh được lập trình tự động khởi động. Nếu không được lập trình tự động khởi động lại, thì giá trị của thanh ghi bộ đếm số từ hiện hành sẽ là FFFFH sau khi TC. Các thanh ghi địa chỉ và đếm số từ cơ sở. Mỗi kênh có 1 thanh ghi có một cặp thanh ghi địa chỉ và đếm số từ cơ sở. Mỗi thanh ghi có độ dài 16 bit, chúng giữ giá trị thiết lập ban đầu của các thanh ghi địa chỉ và đếm số từ hiện hành tương ứng với chúng. Trong chế độ tự động khởi động giá trị của các thanh ghi này sẽ ghi trở lại cho các thanh ghi hiện hành. Giá trị của các thanh ghi này được ghi đồng thời với các thanh ghi hiện hành của chúng khi lập trình. Giá trị của các thanh ghi này sẽ không thể đọc được. Thanh ghi lệnh. 8 bit lập trình bởi CPU trong thanh ghi lệnh sẽ điều khiển hoạt động của 8237, giá trị của thanh ghi này sẽ bị xóa khi RESET cứng hoặc mềm. Các bit của thanh ghi điều khiển có các chức năng được định nghĩa trong hình 6.15. 00: Truyền theo yêu cầu 01: Truyền từng byte 10: Truyền khối 11: Chế độ xếp tầng. 00: Truyền kiểm tra 01: Truyền ghi 10: Truyền đọc 11: chọn lập trình thanh ghi chế độ kênh 3 xx: khi bit 6 và 7 = 11 0: không khởi động tự động 1: khởi động tự động 0: Địa chỉ hiện hành tăng sau mỗi lần truyền 1: Địa chỉ hiện hành giảm sau mỗi lần truyền 0 1 2 3 4 5 6 7 00: chọn lập trình thanh ghi chế độ kênh 0 01: chọn lập trình thanh ghi chế độ kênh 1 10: chọn lập trình thanh ghi chế độ kênh2 11: chọn lập trình thanh ghi chế độ kênh 3 Hình 6.16: Thanh ghi chế độ của 8237. Thanh ghi chế độ. Mỗi kênh có một thanh ghi chế độ 6 bit, khi lập trình bit 0 và 1 trong byte ghi tới địa chỉ của thanh ghi chế độ sẽ xác định thanh ghi chế độ của kênh nào được ghi. Các bit của thanh ghi chế độ được lập trình như hình 6.16. Thanh ghi yêu cầu. 8237 có thể đáp ứng các yêu cầu phục vụ DMA được tác động bằng phần mềm cũng như bằng yêu cầu ở ngõ vào DREQ. Mỗi kênh có 1 bit yêu cầu trong 1 thanh ghi yêu cầu 4 bit. Yêu cầu lập trình tại đây sẽ không bị che hoặc xem xét theo trình tự ưu tiên của mảng mã hóa ưu tiên. Mỗi bit này có thể lập hoặc xóa từ CPU, nó sẽ xóa khi TC hoặc khi có tín hiệu EOP cung cấp từ bên ngoài. Tất nhiên nó sẽ bị xóa khi RESET. Khi yêu cầu cung cấp từ đây thì kênh luôn hoạt động trong chế độ truyền khối. 00: chọn lập trình bit y/cầu kênh 0 01: chọn lập trình bit y/cầu kênh 1 10: chọn lập trình bit y/cầu kênh2 11: chọn lập trình bit y/cầu kênh 3 0 1 2 3 4 5 6 7 Thanh ghi yêu cầu 0: Xóa bit yêu câu 1: Lập bit yêu cầu Các bit tùy định Hình 6.17: Thanh ghi yêu cầu của 8237. Thanh ghi mặt nạ. (che phục vụ DMA) Mỗi kênh có một bit mặt nạ khi được thiết lập nó sẽ không cho phép yêu cầu cung cấp từ ngõ vào DREQ của kênh đó. Các bit này sẽ được thiết lập khi kênh tương ứng với nó có EOP, nếu không lập trình chế độ khởi động tự động. Mỗi bit này cũng có thể lập hoặc xóa bằng phần mềm, toàn bộ thanh ghi sẽ bị xóa khi RESET. Tất cả 4 bit của thanh ghi mặt nạ cũng có thể ghi đồng thời bằng một lệnh. 00: chọn lập trình bit mặt nạ kênh 0 01: chọn lập trình bit mặt nạ kênh 1 10: chọn lập trình bit mặt nạ kênh2 11: chọn lập trình bit mặt nạ kênh 3 0 1 2 3 4 5 6 7 Thanh ghi mặt nạ 0: Xóa bit mặt nạ 1: Lập bit mặt nạ Các bit tùy định 0 1 2 3 4 5 6 7 Thanh ghi mặt nạ lập trình 4 bit 0: Xóa bit mặt nạ kênh 0 1: Lập bit mặt nạ kênh 0 0: Xóa bit mặt nạ kênh 1 1: Lập bit mặt nạ kênh 1 0: Xóa bit mặt nạ kênh 2 1: Lập bit mặt nạ kênh 2 0: Xóa bit mặt nạ kênh 3 1: Lập bit mặt nạ kênh 3 Các bit tùy định Thanh ghi trạng thái. Thanh ghi trạng thái của 8237 có thể được CPU đọc vào để biết được trạng thái hiện tại của 8237. Các bit của thanh ghi này sẽ cho CPU biết trạng thái ngưng phục vụ của các kênh, và các yêu cầu chưa được phục vụ của các kênh. Các bit 0 - 3 sẽ được thiết lập khi kênh tương ứng với nó có tín hiệu EOP cung cấp từ bên ngoài. Các bit 4 - 7 sẽ được lập khi kênh tương ứng với nó có yêu cầu phục vụ. Các bit sẽ bị xóa khi RESET. 0 1 2 3 4 5 6 7 Thanh ghi trạng thái 1: Kết thúc đếm kênh 0 1: Kết thúc đếm kênh 1 1: Kết thúc đếm kênh 2 1: Kết thúc đếm kênh 3 1: Có yêu cầu tại kênh 0 1: Có yêu cầu tại kênh 1 1: Có yêu cầu tại kênh 2 1: Có yêu cầu tại kênh 3 Thanh ghi tạm thời. Thanh ghi tạm thời sử dụng cho việc chứa tạm dữ liệu trong chu kỳ truyền dữ liệu giữa bộ nhớ với bộ nhớ. Khi kết thúc truyền từ cuối cùng có thể đọc được, thanh ghi tạm thời luôn chứa từ cuối cùng của chu kỳ truyền bộ nhớ - bộ nhớ trước trừ khi bị xóa bởi RESET cứng hoặc mềm. Các lệnh lập trình bằng phần mềm. Xóa/lập flip flop cao thấp: Flip flop cao thấp sử dụng cho việc truy cập byte cao hoặc byte thấp của các thanh ghi địa chỉ và đếm số từ hiện hành. Reset mềm: Lệnh này sẽ có tác dụng tương đương với việc cung cấp tín hiệu reset cứng tới ngõ vào RESET của 8237. Nó sẽ xóa toàn bộ các thanh ghi bên trong của 8237, và làm 8237 chuyển về chu kỳ rỗi. Xóa thanh ghi mặt nạ: lệnh này sẽ xóa đồng thời cả 4 bit của thanh ghi mặt nạ, cho phép các kênh của 8237 nhận các yêu cầu DMA. Bảng sau sẽ trình bày các tín hiệu cần tác động tương ứng với các lệnh phần mềm: A3 A2 A1 A0 IOR IOW Hoạt động 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 Đọc thanh ghi trạng thái ghi thanh ghi lệnh cấm ghi thanh ghi yêu cầu cấm ghi từng bit thanh ghi mặt nạ cấm ghi thanh ghi chế độ cấm xóa byte con trỏ Flip fop đọc thanh ghi tạm thời Reset mềm Cấm xóa thanh ghi mặt nạ cấm ghi tất cả các bit thanh ghi mặt nạ Lập trình cho 8237. 8237 có thể lập trình từ vi xử lý tại bất kỳ thời điểm nào khi tín hiệu HLDA không tác động, ngay cả khi tín hiệu HRQ tác động. Điều này có thể gây ra tình trạng hoạt động sai nếu có một yêu cầu DMA xảy ra trong khi CPU đang lập trình cho 8237. Ví dụ khi CPU đang lập trình lại thanh ghi địa chỉ của kênh 1, trong khi kênh 1 nhận được một yêu cầu DMA. Nếu 8237 cho phép phục vụ (bit 2 của thanh ghi lệnh = 0), và nếu kênh 1 không bị lập trình che (bit 1 của thanh ghi mặt nạ = 0), khi đó chu kỳ phục vụ DMA sẽ xảy ra ngay sau khi 1 byte của thanh ghi địa chỉ được lập trình lại. Điều này có thể tránh được bằng cách không cho phép 8237 hoạt động (lập bit 2 của thanh ghi lệnh), hoặc che kênh khi lập trình lại các thanh ghi của nó. Sau khi lập trình cần phải cho phép trở lại. Khi bắt đầu hoạt động chú ý phải thiết lập thanh ghi lệnh các bit với các dữ kiện hợp lệ, ngay cả khi kênh không sử dụng. Kênh thanh ghi c/kỳ Flip flop DB0-DB7 0 Đ/c cơ bản và hiện hành Đ/c hiện hành Đếm từ cơ bản và hiện hành Đếm từ hiện hành Ghi Đọc Ghi Đọc 0 0 0 0 0 0 0 0 11001100 0011001 1 00000000 00000000 00000000 00001111 0 1 0 1 0 1 0 1 A0-A7 A8-A15 A0-A7 A8-A15 W0-W7 W8-W15 W0-W7 W8-W15 1 Đ/c cơ bản và hiện hành Đ/c hiện hành Đếm từ cơ bản và hiện hành Đếm từ hiện hành Ghi Đọc Ghi Đọc 0 0 0 0 0 0 0 0 11001100 0011001 1 00000000 00000000 11111111 00001111 0 1 0 1 0 1 0 1 A0-A7 A8-A15 A0-A7 A8-A15 W0-W7 W8-W15 W0-W7 W8-W15 2 Đ/c cơ bản và hiện hành Đ/c hiện hành Đếm từ cơ bản và hiện hành Đếm từ hiện hành Ghi Đọc Ghi Đọc 0 0 0 0 0 0 0 0 11001100 0011001 1 00000000 1 1111111 00000000 00001111 0 1 0 1 0 1 0 1 A0-A7 A8-A15 A0-A7 A8-A15 W0-W7 W8-W15 W0-W7 W8-W15 3 Đ/c cơ bản và hiện hành Đ/c hiện hành Đếm từ cơ bản và hiện hành Đếm từ hiện hành Ghi Đọc Ghi Đọc 0 0 0 0 0 0 0 0 11001100 0011001 1 00000000 11111111 11111111 00001111 0 1 0 1 0 1 0 1 A0-A7 A8-A15 A0-A7 A8-A15 W0-W7 W8-W15 W0-W7 W8-W15

Các file đính kèm theo tài liệu này:

  • doccac_phuong_phap_dieu_khien_vao_ra_du_lieu.doc
Tài liệu liên quan