sdsafdf
Trang 1§¹i häc kü thuËt c«ng nghiÖp Th¸i Nguyªn
§¹i häc kü thuËt c«ng nghiÖp Th¸i Nguyªn
Trang 3Bài giảng môn học: Kỹ thuật ghép nối máy tính
CHƯƠNG 1 ĐẠI CƯƠNG VỀ KỸ THUẬT GHÉP NỐI MÁY TÍNH 6
1.1 Cấu trúc chung của hệ thống 7
1.2 Yêu cầu trao đổi tin của máy vi tính đối với môi trường bên ngoài 8
1.2.1 Yêu cầu trao đổi tin với người điều hành 8
1.2.2 Yêu cầu trao đổi tin với thiết bị ngoài trong hệ đo lường – điều khiển 8
1.2.3 Yêu cầu trao đổi tin trong mạng máy tính 8
1.3 Dạng và các loại tin trao đổi giữa máy vi tính và thiết bị ngoài (TBN) 8
1.3.1 Dạng tin (số) 8
1.3.2 Các loại tin 9
1.4 Vai trò và nhiệm vụ của khối ghép nối (KGN) 9
1.4.1 Vai trò 9
1.4.2 Nhiệm vụ 9
1.5 Cấu trúc chung của một hệ ghép nối máy tính 11
1.5.1 Cấu trúc đường tín hiệu của KGN với Máy tính 11
1.5.2 Cấu trúc chung của một khối ghép nối 11
1.6 Chương trình phục vụ trao đổi tin cho khối ghép nối 12
1.6.1 Lập trình hợp ngữ (assembly) 12
1.6.2 Lập trình Pascal 13
1.6.3 Lập trình C/C++ 13
CHƯƠNG 2 GIAO TIẾP VỚI TÍN HIỆU TƯƠNG TỰ 15
2.1 Khái niệm tín hiệu analog và hệ đo lường điều khiển số 16
2.2 Chuyển đổi tín hiệu số sang tương tự DACs 16
2.2.1 Các tham số chính của một DAC 17
2.2.2 DAC chia điện trở (Resistive Divider DACs) 18
2.2.3 DAC trọng số nhị phân (Binary Weighted DACs) 18
2.2.4 DAC điều biến độ rộng xung (PWM DACs) 19
2.3 Chuyển đổi tín hiệu tương tự - số ADC: 20
2.3.1 Các tham số chính của một ADC 20
2.3.2 Bộ biến đổi AD theo hàm dốc 21
2.3.3 A/D xấp xỉ tiệm cận 22
2.3.4 Tích phân sườn dốc 23
2.3.5 Flash ADC 24
2.3.6 Một số vi mạch ADC thông dụng 25
Mô tả chức năng của các chân: 27
CHƯƠNG 3 THỦ TỤC TRAO ĐỔI DỮ LIỆU CỦA MÁY TÍNH 30
3.1 Các chế độ trao đổi dữ liệu của máy vi tính 31
3.2 Trao đổi tin ngắt vi xử lý 32
3.2.1 Các loại ngắt của máy PC 32
3.2.2 Xử lý ngắt cứng trong IBM - PC: 35
3.2.3 Lập trình xử lý ngắt cứng: 37
3.3 Trao đổi tin trực tiếp khối nhớ 39
3.3.1 Cơ chế hoạt động: 39
3.3.2 Hoạt động của DMAC: 39
3.3.3 Chip điều khiển truy nhập bộ nhớ trực tiếp DMAC 8237 40
CHƯƠNG 4 GHÉP NỐI QUA RÃNH CẮM MỞ RỘNG 45
4.1 Đặt vấn đề 45
4.2 Bus PC 47
Trang 44.3 Bus ISA (16 bit) 47
4.4 Bus PCI 50
4.5 Ghép nối qua khe cắm mở rộng 50
4.5.1 Một số đặc điểm của Card ISA 50
4.5.2 Giải mã địa chỉ và kết nối Bus dữ liệu 50
CHƯƠNG 5 GHÉP NỐI TRAO ĐỔI TIN SONG SONG 53
5.1 Khối ghép nối song song đơn giản 53
5.2 Các vi mạch đệm, chốt (74LS245, 74LS373) 55
5.2.1 Vi mạch đệm 74LS245: 55
5.2.2 Vi mạch chốt 74LS373: 55
5.3 Vi mạch PPI 8255A 56
5.3.1 Giới thiệu chung 56
5.3.2 Các lệnh ghi và đọc các cổng và các thanh ghi điều khiển 57
5.3.3 Các từ điều khiển 57
5.3.4 Ghép nối 8255A với Máy tính và TBN 62
5.4 Ghép nối song song qua cổng máy in 65
5.4.1 Ghới thiệu chung 65
5.4.2 Cấu trúc cổng máy in 66
5.4.3 Các thanh ghi của cổng máy in: 67
5.4.4 EPP - Enhanced Parallel Port 69
CHƯƠNG 6 GHÉP NỐI TRAO ĐỔI TIN NỐI TIẾP 75
6.1 Đặt vấn đề 75
6.2 Yêu cầu và thủ tục trao đổi tin nối tiếp: 76
6.2.1 Yêu cầu: 76
6.2.2 Trao đổi tin đồng bộ: Synchronous 77
6.2.3 Trao đổi tin không đồng bộ - Asynchronous: 77
6.3 Truyền thông nối tiếp sử dụng giao diện RS-232: 78
6.3.1 Quá trình truyền một byte dữ liệu: 79
6.3.2 Cổng nối tiếp RS 232 79
6.4 Giao tiếp USB của máy PC: 96
6.4.1 Giới thiệu chung 96
6.4.2 Mô tả hệ thống USB 97
6.4.3 Giao diện vật lý 99
6.4.4 Sự điểm danh 104
6.4.5 Các kiểu truyền USB 104
6.4.6 Giao thức USB 105
6.4.7 Khuôn dạng các gói tin 108
CHƯƠNG 7 GIAO TIẾP VỚI CÁC THIẾT BỊ NGOẠI VI CƠ BẢN 111
7.1 Giao tiếp với bàn phím và chuột 112
7.1.1 Bàn phím 112
7.1.2 Chuột 117
7.2 Giao tiếp PC Game 118
7.3 Monitor và card giao diện đồ hoạ 120
7.3.1 Nguyên lý hiện ảnh trên monitor 120
7.3.2 Card giao tiếp đồ họa 121
Trang 5Giới thiệu môn học
• Tên môn học:
Giao tiếp máy tính
Kỹ thuật ghép nối máy tính
- Thiết kế và xây dựng các hệ thống ghép nối máy tính đáp ứng các yêu cầu cụ thể đặt ra trong thực tế
• Tài liệu tham khảo
[1] Ngô Diên Tập, Kỹ thuật ghép nối máy tính, NXB KHKT,
[2] Ngô Diên Tập, Đo lường và điều khiển bằng máy tính, NXB KHKT
[3] Nguyễn Mạnh Giang, Kỹ thuật ghép nối máy vi tính, NXB Giáo dục, 2
tập
[4] Đỗ Xuân Tiến, Kỹ thuật lập trình điều khiển hệ thống, NXB KHKT
[5] Ngô Diên Tập, Lập trình ghép nối máy tính trong Windows, NXB
KHKT
Trang 6CHƯƠNG 1 ĐẠI CƯƠNG VỀ KỸ THUẬT GHÉP NỐI MÁY TÍNH Mục tiêu:
Hiểu được cấu trúc tổng quan của hệ vi xử lý; Vị trí, chức năng và cấu trúc chung của khối ghép nối trong trong một hệ thống máy tính trong đo lường điều khiển Xác định được yêu cầu, các thành phần và lập trình điều khiển cho khối ghép nối
Tóm tắt chương:
- Cấu trúc chung của hệ thống
- Yêu cầu trao đổi tin của máy vi tính đối với môi trường bên ngoài
- Dạng và các loại tin trao đổi giữa máy vi tính và thiết bị ngoài (TBN)
- Vai trò và nhiệm vụ của khối ghép nối (KGN)
- Cấu trúc chung của một hệ ghép nối máy tính
- Chương trình phục vụ trao đổi tin cho khối ghép nối
Trang 71.1 Cấu trúc chung của hệ thống
Máy vi tính hay hệ vi xử lý đều có cấu trúc chung do Von Newman đề xuất gồm khối xử lý trung tâm (CPU), bộ nhớ (Memory) và các cổng vào/ra (I/O), như hình 1.1 Ngoài ra, Máy tính còn cần phải trao đổi dữ liệu với môi trường bên ngoài, ví dụ như giao tiếp với người sử dụng qua bàn phím, màn hình, trao đổi dữ liệu với các thiết bị ngoại vi thông dụng, các thiết bị ngoài trong hệ đo – điều khiển, và các Máy tính khác trong mạng Do đó các khối ghép nối (KGN) thiết bị ngoại vi được xây dựng, gồm:
• KGN các thiết bị vào chuẩn như bàn phím, chuột, …
• KGN các thiết bị ra chuẩn như màn hình, máy in, …
• KGN các bộ nhớ ngoài chuẩn như ổ cứng, ổ CD, …
• KGN với các máy tính khác trong mạng nhiều máy tính
• KGN với hệ vi điều khiển, vi xử lý
• KGN với hệ đo – điều khiển
Hình 1.1 Cấu trúc của hệ ghép nối máy tính với thiết bị ngoại vi
Trong đó:
VXL: Vi xử lý
RAM: Random Access Memory – Bộ nhớ trong RAM
ROM: Read-only Memory – Bộ nhớ trong ROM
BGN: Bộ ghép nối, khối ghép nối
Trang 8Máy tính còn nhận thông tin về trạng thái sẵn sàng hay bận của thiết bị đo
Máy tính sau đó đưa tín hiệu chấp nhận trao đổi dữ liệu với TBNV, thu thập và
xử lý dữ liệu, tính toán các tín hiệu điều khiển đưa ra các cơ cấu chấp hành (các van đóng mở, các rơle trong mạch điện, các mạch động lực điều tốc động cơ điện…), hay đưa ra các thông số kỹ thuật cho thiết bị
Ngoài ra, Máy tính còn cần lưu trữ dữ liệu trên ổ cứng, đĩa compact (CD-ROM)
để tra cứu lúc cần, hiển thị kết quả đo dưới dạng bảng số liệu, dạng đồ thị hay hình
vẽ đồ hoạ trên màn hình
1.2 Yêu cầu trao đổi tin của máy vi tính đối với môi trường bên ngoài 1.2.1 Yêu cầu trao đổi tin với người điều hành
Người điều hành trao đổi thông tin với máy tính thông qua các thiết bị nhập/xuất
cơ bản như chuột, bàn phím, màn hình Việc trao đổi được thực hiện thông qua một giao diện trên màn hình máy tính Trạng thái hoạt động của hệ thống được thể hiện trên giao diện, người sử dụng tác động vào hệ thống qua giao diện này sử dụng các thiết bị nhập như chuột, bàn phím,…
Việc trao đổi thông tin với người sử dụng cần đảm bảo nhanh, chính xác đồng thời phải thuận tiện, an toàn cho người sử dụng
1.2.2 Yêu cầu trao đổi tin với thiết bị ngoài trong hệ đo lường – điều khiển
Trong hệ đo lường – điều khiển, máy tính nhận dữ liệu trạng thái vật lý của hệ thống (nhiệt độ, áp suất, điện áp, dòng điện, ) dưới dạng tín hiệu điện, từ các bộ cảm biến (sensor), bộ chuyển đổi (transducer), bộ phát hiện (detector), và máy tính còn nhận thông tin về trạng thái sẵn sàng hay bận của thiết bị
Máy tính sau đó trao đổi dữ liệu với thiết bị ngoại vi, thu thập và xử lý dữ liệu, tính toán các tín hiệu điều khiển đưa ra các cơ cấu chấp hành (các van đóng mở, các
rơ le trong mạch điện, các mạch động lực điều tốc động cơ điện, ) hay đưa ra các thông số thiết lập chế độ hoạt động cho thiết bị
Ngoài ra máy tính còn làm nhiệm vụ lưu trữ dữ liệu để tra cứu, thống kê hoặc hiển thị kết quả trạng thái hoạt động của thiết bị dưới dạng đồ thị hay các hình vẽ trực quan
1.2.3 Yêu cầu trao đổi tin trong mạng máy tính
Một máy tính trong mạng cần trao đổi tin với nhiều người sử dụng mạng, với nhiều máy vi tính khác, với nhiều thiết bị ngoài như: các thiết bị đầu cuối, các thiết bị nhớ ngoài, các thiết bị lưu trữ và biểu diễn tin
1.3 Dạng và các loại tin trao đổi giữa máy vi tính và thiết bị ngoài (TBN) 1.3.1 Dạng tin
Máy tính chỉ trao đổi tin dưới dạng số với các mức logic 0 và 1
Trang 9Thiết bị ngoài lại trao đổi tin với nhiều dạng khác nhau như dạng số, dạng ký tự, dạng tương tự, dạng âm tần hình sin tuần hoàn
1.3.2 Các loại tin
• Máy tính đưa ra thiết bị ngoài một trong 3 loại tin:
Tin về địa chỉ: Đó là các tin của địa chỉ TBN hay chính xác hơn, là địa chỉ các thanh ghi (register) của khối ghép nối đại diện cho TBN
Tin về lệnh điều khiển: Đó là các tín hiệu để điều khiển khối ghép nối hay TBN như đóng mở thiết bị, đọc hoặc ghi một thanh ghi, cho phép hay trả lời yêu cầu hành động, v.v
Tin về số liệu: Đó là các số liệu cần đưa ra cho thiết bị ngoài
• Máy tính nhận tin vào từ TBN về một trong hai loại tin:
Tin về trạng thái của TBN: Đó là tin về sự sẵn sàng hay yêu cầu trao đổi tin, về trạng thái sai lỗi của TBN
Tin về số liệu: Đó là các số liệu cần đưa vào Máy tính
1.4 Vai trò và nhiệm vụ của khối ghép nối
1.4.1 Vai trò
Khối ghép nối nằm giữa Máy tính và TBN đóng vai trò biến đổi và trung chuyển tin giữa chúng
1.4.2 Nhiệm vụ
• Phối hợp về mức và công suất tín hiệu
- Mức tín hiệu của Máy tính thường là mức TTL (0V – 5V) trong khi TBN có nhiều mức khác nhau, thông thường cao hơn (± 15V, ± 48V) hay mức điện công nghiệp (220V/380V hoặc lớn hơn)
- Công suất đường tín hiệu Máy tính nhỏ (cỡ chục mA), trong khi công suất cần cho TBN thường rất lớn, đặc biệt trong công nghiệp
Nguồn
MVT
Nguồn nhận
Nguồn nhận
TBN
Nguồn phát
Nguồn phát
Nguồn nhận
Nguồn nhận
Nguồn phát
Ghép nối đường dây MVT
Ghép nối đường dây TBN
Vị trí và vai trò của khối ghép nối
Trang 10- Do đó KGN phải biến đổi điện áp và khuếch đại công suất cho phù hợp giữa máy tính và thiết bị
- Phía máy tính thường dùng các vi mạch 3 trạng thái để ghép nối tín hiệu
vào/ra Đầu vào/ra sẽ ở mức trở kháng cao khi không có trao đổi dữ liệu, để cô lập thiết bị với máy tính, hạn chế tiêu thụ công suất đường tín hiệu và bảo vệ máy tính
• Phối hợp về dạng dữ liệu:
Trao đổi tin của Máy tính thường là song song ở dạng số, có thể truyền theo 8, 16 hoặc 32 bit, của TBN đôi khi là nối tiếp hoặc chủ yếu là tín hiệu tương tự
• Phối hợp về tốc độ trao đổi tin
Máy tính thường hoạt động với tốc độ cao (tần số lên tới hàng GHz) trong khi thiết
bị thường hoạt động chậm hơn nhiều Do đó cần phải thực hiện đồng bộ về mặt tốc
độ Việc này thường có sự kết hợp giữa phần cứng và phần mềm Trên KGN phải có
bộ nhớ đệm để đệm dữ liệu giữa máy tính và thiết bị KGN nhận từ máy tính và lưu
dữ liệu bộ nhớ đệm rồi truyền cho thiết bị theo nhịp chậm của thiết bị, giải phóng cho máy tính làm nhiệm vụ khác (phục vụ thiết bị khác, xử lý dữ liệu hoặc điều khiển hiển thị, ) Tương tự, KGN nhận dữ liệu từ thiết bị và chờ máy tính đọc dữ liệu vào
• Phối hợp về phương thức trao đổi tin
Để đảm bảo trao đổi tin một cách tin cậy giữa Máy tính và TBN, cần có KGN và cách trao đổi tin diễn ra theo trình tự nhất định
Việc trao đổi tin do máy tính khởi xướng
(1) Máy tính đưa lệnh dể khởi động TBN hay khởi động KGN
(2) Máy tính đọc trả lời sẵn sàng trao đổi hay trạng thái sẵn sàng của TBN Nếu
có trạng thái sẵn sàng mới trao đổi tin, nếu không, chờ và đọc lại trạng thái (3) Máy tính trao đổi khi đọc thấy trạng thái sẵn sàng
Việc trao đổi tin do TBN khởi xướng:
(1)Để giảm thời gian chờ đợi trạng thái sẵn sàng của TBN, Máy tính có thể khởi
động TBN rồi thực hiện nhiệm vụ khác Việc trao đổi tin diễn ra khi:
(2)TBN đưa yêu cầu trao đổi tin vào bộ phận xử lý ngắt của KGN, để đưa yêu cầu ngắt chương trình cho Máy tính
(3)Nếu có nhiều TBN đưa yêu cầu đồng thời, KGN sắp xếp theo ưu tiên định sẵn, rồi đưa yêu cầu trao đổi tin cho Máy tính
(4)Máy tính nhận yêu cầu , sửa soạn trao đổi và đưa tín hiệu xác nhận sẵn sàng trao đổi
(5)KGN nhận và truyền tín hiệu xác nhận cho TBN
(6)TBN trao đổi tin với KGN và KGN trao đổi tin với Máy tính (nếu đưa tin vào) (7)Máy tính trao đổi tin với TBN qua KGN (nếu đưa tin ra)
Trang 111.5 Cấu trúc chung của một hệ ghép nối máy tính
1.5.1 Cấu trúc đường tín hiệu của KGN với Máy tính
Bất cứ KGN nào cũng nối với Máy tính và TBN có các nhóm sau
Nhóm đường tín hiệu địa chỉ A0 - An
- Các tín hiệu này được giải mã trong các KGN để chọn các TBN cần liên lạc
với Máy tính
- Tập hợp các tín hiệu này tạo thành bus địa chỉ (Address bus)
Nhóm đường tín hiệu điều khiển
- Đường tín hiệu đọc, Đường tín hiệu viết để truyền lệnh đọc (RD) hay viết cho
KGN
- Đường tín hiệu hội thoại tổ chức phối hợp hành động giữa Máy tính và KGN,
đảm bảo sự hoạt động nhịp nhàng, tin cậy giữa chúng như:
Hỏi - trả lời
Yêu cầu (từ KGN vào Máy tính) và chấp nhận (từ Máy tính ra KGN) : yêu
cầu ngắt INTR và chấp nhận ngắt INTA
- Đường tín hiệu lệnh điều khiển KGN hay TBN
Nhóm đường tín hiệu nhịp thời gian
Nhóm đường tín hiệu điện áp nguồn
1.5.2 Cấu trúc chung của một khối ghép nối
Khối phối hợp đường tín hiệu Máy tính
- Phối hợp mức và công suất tín hiệu với bus Máy tính Thường dùng vi mạch
chuyển mức, vi mạch công suất
- Cô lập đường tín hiệu khi không có trao đổi tin
Xử lý ngắt
Thanh ghi trạng thái
Yêu cầu A Yêu cầu B
Trang 12Khối giải mã địa chỉ - lệnh: Nhận các tín hiệu từ bus địa chỉ, các tín hiệu đọc, ghi, chốt địa chỉ (ALE), … để tổ hợp thành các tín hiệu đọc, ghi và chọn chip cho từng thiết bị của KGN và TBN
Các thanh ghi đệm
- Thanh ghi điều khiển chế độ
- Thanh ghi trạng thái hay yêu cầu trao đổi của TBN
- Thanh ghi đệm số liệu ghi
- Thanh ghi đệm số liệu đọc
Khối xử lý ngắt
- Ghi nhận, che chắn yêu cầu trao đổi tin của TBN Xử lý ưu tiên và đưa yêu cầu vào Máy tính
Khối phát nhịp thời gian
- Phát nhịp thời gian cho hành động ở bên trong KGN hay cho TBN Đôi khi để đồng bộ, khối còn nhận tín hiệu nhịp đồng hồ (clock) từ bus máy tính
Khối đệm thiết bị ngoài
- Biến đổi mức tín hiệu, công suất và biến đổi dạng tin
Khối điều khiển : Điều khiển hoạt động của khối như phát nhịp thời gian, chế
độ hoạt động
1.6 Chương trình phục vụ trao đổi tin cho khối ghép nối
Mỗi khối ghép nối cần có một chương trình phục vụ trao đổi tin, các chương trình này thường viết dưới dạng các chương trình con, tập hợp các chương trình con điều khiển thiết bị thường được cung cấp kèm với thiết bị thông qua các thư viện Các thư viện này có thể được đóng gói với nhiều dạng khác nhau như thư viện lập trình (.h, lib), thư viện liên kết động (.dll), các điều khiển ActiveX (.ocx), các device driver Với chương trình phục vụ trao đổi tin, cần có các thao tác sau:
Trang 13data, address là số nhị phân 16 bit
Đọc/ghi thanh ghi:
1.6.2 Lập trình Pascal
Đọc thanh ghi:
<bi ế n> := port[ ñị a ch ỉ thanh ghi];
Ghi vào thanh ghi
Port[ ñị a ch ỉ thanh ghi] := <Giá tr ị >;
Lập xóa bit:
Lập bit:
Port[$301]:=port[$301] OR $02; {L ậ p C1}
Xóa bit:
Port[$301 ]:=port[$301] AND $EF; {Xóa C4}
Kiểm tra bit:
kt:=port[$300] AND $04; {ki ể m tra bit S2}
<bi ế n> = inp ( ñị a ch ỉ thanh ghi);
Ghi vào thanh ghi
outp (< ñị a ch ỉ thanh ghi>,<Giá tr ị >)
Lập xóa bit:
Trang 14Lập bit:
Outp (0x301,inp (0x301)||0x02);{L ậ p C1}
Xóa bit:
Outp (0x301,inp (0x301) && 0xEF); {Xóa C4}
Kiểm tra bit:
kt:=inp (0x300) && $04; {ki ể m tra bit S2}
kt = 0 → S2 = “0”
kt ≠ 0 → S2 = “1”
Trang 15CHƯƠNG 2 GIAO TIẾP VỚI TÍN HIỆU TƯƠNG TỰ
Mục tiêu:
Cung cấp các kiến thức cơ bản về giao tiếp giữa máy tính với tín hiệu tương tự trong các hệ thống đo lường và điều khiển Tìm hiểu cấu trúc, nguyên lý hoạt động của các loại vi mạch biến đổi tín hiệu tương tự -số (ADC/DAC) và ứng dụng của chúng
Tóm tắt chương:
- Khái niệm tín hiệu analog và hệ đo lường điều khiển số
- Chuyển đổi tín hiệu số sang tương tự DACs
- Chuyển đổi tín hiệu tương tự - số ADC:
Trang 16Khái niệm tín hiệu tương tự và hệ đo lường điều khiển số
Việc sử dụng phương pháp số trong xử lý thông tin và điều khiển đang ngày càng hiệu quả và thuận lợi Tuy nhiên hầu hết các tín hiệu trong thế giới thực lại là tín hiệu
ở dạng tương tự (analog) Do đó bất kỳ hệ thống nào muốn xử lý các tín hiệu thực tế bằng phương pháp số thì nó phải có khả năng chuyển đổi các thông tin tương tự thành dạng số và ngược lại Thao tác đó thường được thực hiện bằng các thiết bị ADC (Analog to Digital Converter) và DAC (Digital to Analog Converter)
Hình 2.1: Mô hình hệ thống xử lý tín hiệu tương tự bằng phương pháp số
Hệ thống xử lý tín hiệu tương tự bằng phương pháp số nói chung là một hệ lai, trong đó số liệu tương tự sẽ được truyền, lưu trữ , hay xử lý bằng phương pháp số nhờ các bộ vi xử lý số Trước khi sử lý, tín hiệu tương tự phải được chuyển thành tín hiệu
số nhờ bộ chuyển đổi tín hiệu tương tự sang số (ADC) Kết quả của phép xử lý sẽ được chuyển ngược lại thành dạng tương tự nhờ bộ
chuyển đổi tín hiệu số thành tương tự (DAC)
2.1 Chuyển đổi tín hiệu số sang tương tự
DACs
Một bộ chuyển đổi tín hiệu số thành tương tự DAC
là một dạng đặc biệt của một bộ giải mã Nó giải mã
tín hiệu số đầu vào và chuyển thành tín hiệu tương tự ở
đầu ra
Bảng chân lý của nó có thể có dạng như sau:
Hình 2.2: Bảng giá trị chân lý của một DAC
Trang 172.1.1 Các tham số chính của một DAC
Độ phân giải
(revolution) Bit
Đây là số bit mà DAC xử lý Nếu DAC có n bit thì giá trị điện
áp đầu ra có thể phân thành n trạng thái có giá trị cách đều nhau Mỗi giá trị tương ứng với một mã số đầu vào Số bit n càng cao thì DAC có độ phân giải càng lớn
Giải điện áp tham
chiếu (Vref) FSR V
Chỉ ra mức điện áp lớn nhất và nhỏ nhất có thể được sử dụng như điện áp tham chiếu từ bên ngoài
%Vref
Là độ chênh lệch giữa độ thay đổi giá trị điệp áp ra thực tế với
độ thay đổi điện áp ra lý tưởng trong trường hợp đầu vào số thay đổi một bit LSB , hay dự thay đổi giữa hai giá trị số kề nhau
Là sai số lớn nhất giữa đầu ra với đường thẳng nối giữa điểm 0
và điểm toàn thang (giá trị lớn nhất của thang đo) ngoại trừ sai
số điểm không và sai số toàn thang VD: +/-1 LSB typ.; +/- 4 LSB's max
Giải đầu ra tương
tự hay giải toàn
cao đầu vào, Vih
Là dải điện áp có thể dùng để làm nguồn cung cấp dương cho DAC
VD: +4.75V min.; +5.0V typ.; +13.2V max
Điện áp nguồn âm
Trang 182.1.2 DAC chia điện trở
DAC theo phương pháp chia điện trở (Resistive Divider DAC) có lẽ là kiểu DAC đơn giản nhất DAC kiểu này sử dụng một chuỗi điện trở mắc nối tiếp với nhau để tạo
ra một tập các giá trị điện áp cách đều nhau giữa +Vref và –Vref Tín hiệu số đầu vào xác định tín hiệu điện áp nào được nối với bộ khuếch đại thông qua các các bộ chuyển mạch
Mặc dù phương pháp chia điện trở có thể dễ hiểu, nhưng nó trở nên kém hiệu quả với các bộ DAC có độ phân giải cao Mỗi bit thêm vào cho độ phân giải của DAC đòi hỏi tăng gấp đôi số điện trở và công tắc Ví dụ như với DAC 12 bit thì phải cần tới
Trang 192.1.4 DAC điều biến độ rộng xung
Phương pháp DAC điều biến độ rộng xung (Pulse width modulation – PWM) là phương pháp rất đơn giản và hầu như hoàn toàn sử dụng phương pháp số, sử dụng rất
ít mạch tương tự
PWM điều chỉnh điện áp đầu ra sử dụng chuỗi xung tần số cao với độ rộng xung
có thể thay đổi được để thay đổi công suất đầu ra
Độ dài xung càng lớn thì điện áp đầu ra càng gần với điện áp tối đa (VOH) của DAC, và ngược lại độ dài xung ngắn nhất tương ứng với điện áp tối thiểu (VOL) Tín hiệu đầu ra sẽ được đưa qua một bộ loc thông thấp để tạo tín hiệu analog
Hình 2.2: DAC điều biến độ rộng xung
DAC dạng PWM cũng khó thu được DAC với độ phân giải cao, bởi vì để có độ phân giải cao, DAC phải điều chỉnh chuỗi xung theo các khoảng thời gian rất nhỏ Điều đó yêu cầu phải có một xung clock (master clock) với tần số rất cao để điều khiển độ rộng xung
Ví dụ với DAC 16 bit, cần có độ phân giải theo thời gian bằng 1/65536 lần chu kỳ chuỗi xung Vì xung tín hiệu còn phải đưa qua bộ lọc thông thấp để tạo ra tín hiệu tương tự, tần số xung đòi hỏi phải gấp nhiều lần ( thông thường là gấp 100 lần) tần số cao nhất của tín hiệu tương tự đầu ra Do đó một bộ DAC 16 bit cho các ứng dụng xử
lý âm thanh có băng thông 20kHz cần có một bộ tạo xung clock có tần số là 65536 x
100 x 20000 = 131 GHz Rõ ràng rằng tần số này là không thể đạt được với công nghệ hiện nay
Trang 202.2 Chuyển đổi tín hiệu tương tự - số ADC:
Tín hiệu trong thế giới thực thường ở dạng tương tự (analog), nên mạch điều khiển thu thập dữ liệu từ đối tượng điều khiển về (thông qua các cảm biến) cũng ở dạng tương tự Trong khi đó, bộ điều khiển ngày nay thường là các µP, µC xử lý dữ liệu ở dạng số (digital) Vì vậy, cần phải chuyển đổi tín hiệu ở dạng tương tự thành tín hiệu
ở dạng số thông qua bộ biến đổi AD
Giải pháp thường dùng để đưa tín hiệu tương tự vào để xử lý bằng các bộ xử lý số
là dùng bộ chuyển đổi tín hiệu tương tự sang số (analog-to-digital converter - ADC) Hình dưới là một ví dụ cho một bộ ADC đơn giản Đầu vào cho bộ này là hai tín hiệu: một tín hiệu tham chiếu (reference) và tín hiệu cần chuyển đổi Nó có một đầu ra biểu diễn một từ mã dạng số 8 bit Từ mã này vi xử lý có thể đọc và hiểu được
Có nhiều phương pháp biến đổi AD khác nhau, ở đây chỉ giới thiệu một số phương pháp điển hình
2.2.1 Các tham số chính của một ADC
Độ phân giải
Nếu một ADC có n bit, thì độ phân giải của nó là 2n , có nghĩa là số trạng thái hay số mã có thể sử dụng để chia đầu vào analog Số bit càng cao thì độ phân giải càng lớn và càng phân biệt được nhiều trạng thái
no missing codes)
Với mỗi ADC, tín hiệu số biến đổi theo từng bit LSB
Độ chênh lệch giữa các giá trị lý tưởng được gọi là độ phi tuyến vi phân
Example of an Actual Spec: 10 Bits min
Trang 21Thời gian chuyển đổi
(Conversion Time) µsec
Thời gian cần thiết để ADC hoàn thành một lần chuyển đổi
VD: 15 µsec min.; 25 µsec typ.; 40 µsec max
Nguồn nuôi dương
VD: +4.5V min.; +5.0V typ.; +7.0V max
Nguồn nuôi âm
- Power Supply (V-) V
Dải điện áp có thể sử dụng làm nguồn nuôi âm cho ADC
VD: -12.0V min.; -15V typ.; -16.5V max
2.2.2 Bộ biến đổi AD theo hàm dốc
Hình 2.3: Biến đổi ADC theo hàm dốc
Đây là bộ biến đổi đơn giản nhất theo mô hình bộ biến đổi tổng quát trên Nó dùng một counter làm thanh ghi và cứ mỗi xung clock thì gia tăng giá trị nhị phân cho đến khi vAX≥ vA Bộ biến đổi này được gọi là biến đổi theo hàm dốc vì dạng sóng vAX
có dạng của hàm dốc, hay nối đúng hơn là dạng bậc thang Đôi khi nó còn được gọi là
bộ biến đổi AD loại counter
Hình trên cho thấy sơ đồ mạch của bộ biến đổi AD theo hàm dốc, bao gồm một counter, một bộ biến đổi DA, một OPAMP so sánh, và một cổng AND cho điều khiển Đầu ra của OPAMP được dùng như tín hiệu tích cực mức thấp của tín hiệu EOC Giả sử vA dương, quá trình biến đổi xảy ra theo các bước :
- Xung Start được đưa vào để reset counter về 0 Mức cao của xung Start cũng ngăn không cho xung clock đến counter
- Đầu vào của bộ biến đổi DA đều là các bit 0 nên áp ra vAX = 0v
- Khi vA > vAX thì đầu ra của OPAMP (EOC) ở mức cao
Trang 22- Khi Start xuống mức thấp, cổng AND được kích hoạt và xung clock được đưa vào counter
- Counter đếm theo xung clock và vì vậy đầu ra của bộ biến đổi DA, vAX, gia tăng một nấc trong một xung clock
- Quá trình đếm của counter cứ tiếp tục cho đến khi vAX bằng hoặc vượt qua vAmột lượng vT (khoảng từ 10 đến 100µv) Khi đó, EOC xuống thấp và ngăn không cho xung clock đến counter Từ đó kết thúc quá trình biến đổi
- Counter vẫn giữ giá trị vừa biến đổi xong cho đến khi có một xung Start cho quá trình biến đổi mới
Từ đó ta thấy rằng bộ biến đổi loại này có tốc độ rất chậm (độ phân giải càng cao thì càng chậm) và có thời gian biến đổi phụ thuộc vào độ lớn của điện áp cần biến đổi
2.2.3 A/D xấp xỉ tiệm cận
Đây là bộ biến được dùng rộng rãi nhất trong các bộ biến đổi AD Nó có cấu tạo phức tạp hơn bộ biến đổi AD theo hàm dốc nhưng tốc độ biến đổi nhanh hơn rất nhiều Hơn nữa, thời gian biến đổi là một số cố định không phụ thuộc giá trị điện áp đầu vào
Sơ đồ mạch và giải thuật như sau :
Sơ đồ mạch tương tự như bộ biến đổi AD theo hàm dốc nhưng không dùng counter cung cấp giá trị cho bộ biến đổi DA mà dùng một thanh ghi Đơn vị điều khiển sửa đổi từng bit của thanh ghi này cho đến khi có giá trị analog xấp xỉ áp vào theo một độ phân giải cho trước
- Chuyển đổi n bit cần n bước
- Cần có tín hiệu Start và End
.
Start
START Xóa tất cả các bit Bắt đầu ở MSB
Trang 23- Thời gian chuyển đổi thông thường: 1 to 50 ms
- Độ phân giải thông thường 8 to 12 bits
2.2.4 Tích phân sườn dốc
Bộ biến đổi loại này là một trong những bộ có thời gian biến đổi chậm nhất (thường là từ 10 đến 100ms) nhưng có lợi điểm là giá cả tương đối rẻ không dùng các thành phần chính xác như bộ biến đổi AD hoặc bộ biến đổi áp sang tần số
Nguyên tắc chính là dựa vào
quá trình nạp và xả tuyến tính của
tụ với dòng hằng Đầu tiên, tụ
được nạp trong một khoảng thời
gian xác định từ dòng điện không
đổi ứng với điện áp vào vA Vì
vậy, ở cuối thời điểm nạp, tụ sẽ có
một điện áp tỷ lệ với điện áp vào
Cũng vào lúc này, tụ được xả
tuyến tính với một dòng hằng rút
ra từ điện áp tham chiếu chính xác vref Khi điện áp trên tụ giảm về 0 thì quá trình xả kết thúc Trong suốt khoảng thời gian xả này, một tần số tham chiếu được dẫn đến một counter và bắt đầu đếm Do khoảng thời gian xả tỷ lệ với điện áp trên tụ lúc trước khi xả nên ở cuối thời điểm xả, counter sẽ chứa một giá trị tỷ lệ với điện áp trên tụ trước khi xả, tức là tỷ lệ với điện áp vào vA
Hình 2.4: ADC tích phân theo sườn dốc
Ngoài giá thành rẻ thì bộ biến đổi loại này còn có ưu điểm chống nhiễu và sự trôi nhiệt Tuy nhiên thời gian biến đổi chậm nên ít dùng trong các ứng dụng thu thập dữ liệu đòi hỏi thời gian đáp ứng nhanh Nhưng đối với các quá trình biến đổi chậm (có quán tính lớn) như lò nhiệt thì rất đáng để xem xét đến
Start Conversion
Start
Conversion
0 2 4 6 8 10 12 14 16 18 20
Trang 242.2.5 Flash ADC
- Biên độ tín hiệu được so sánh
với một tập 2n giá trị tham
Bộ biến đổi loại này có tốc độ nhanh nhất và cũng cần nhiều linh kiện cấu thành nhất
Có thể làm một phép so sánh: flash AD 6-bit cần 63 OPAMP, 8-bit cần 255 OPAMP,
và 10-bit cần 1023 OPAMP Vì lẽ đó mà bộ biến đổi AD loại này bị giới hạn bởi số bit, thường là 2 đến 8-bit
Ví dụ một flash AD 3-bit :
Mạch trên có độ phân giải là 1V, cầu chia điện áp thiết lập nên các điện áp so sánh (7 mức tương ứng 1V, 2V, …) với điện áp cần biến đổi Đầu ra của các OPAMP được nối đến một priority encoder và đầu ra của nó chính là giá trị digital xấp xỉ của điện
áp đầu vào
Các bộ biến đổi có nhiều bit hơn dễ dàng suy ra theo mạch trên
Trang 252.2.6 Một số vi mạch ADC thông dụng
Hiện nay, trên thị trường có rất nhiều loại IC chuyên dụng cho bộ biến đổi ADC Dưới đây là loại IC rất hữu dụng và được sử dụng nhiều trong thực tế
• 3.1 Bộ biến đổi ADC 0809
Đây là loại bi mạch ADC chế tạo dựa trên kỹ thuật ADC xấp xỉ liên tiếp
Sơ đồ chân:
Đặ c điểm cấu tạo:
Thang điện trở 256 R với ngõ chuyển mạch
Tất cả những vi mạch trên được tích trên
một chip CMOS đơn khối và không đòi hỏi
các linh kiện phụ khác mắc thêm bên ngoài
Tại mỗi thời điểm chỉ có thể mẫu
1 trong 8 kênh analog vào qua mạch phân kênh 3 sang 8
Sơ đồ khối:
Address Latch enable
•
Tri-state output Latch buffer
256 Register Ladder
•
8 chanel multiplexing analog switch
17 14 15 8 18 19 20 21 25 24 23 6 22
IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 REF+
CLK OE EOC
REF-D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 START ALE
Trang 26 Đặ c điểm kỹ thuật của ADC 0809:
ADC0809 có tốc độ biến đổi nhanh, sai số lượng hóa thấp và công tiêu tán thấp Nguồn cung cấp 5v DC, điện áp chuẩn 5v DC
Thời gian chuyển đổi là 100µs
Có 8 kênh analog ngõ vào
dữ liệu ở trạng tổng trở cao
Sau khoảng thời gian 100µs, quá trình chuyển đổi kết thúc, tín hiệu analog được chuyển thành 8 bit dữ liệu số ở ngõ ra Lúc này xung EOC bật lên 1 và dữ liệu được đưa vào vùng đệm Để đưa dữ liệu từ vùng đệm lên bus, phải đặt xung OE lên 1
Nhờ bộ đệm 3 trạng thái nên dễ dàng kết nối với data bus của CPU
Giản đồ thời gian:
Trang 27 Các số liệu kỹ thuật:
Độ phân giải : K = 5/256 = 0.196V
Dãy động điện trở vào :
Trong điều kiện :
Vcc = Vref (+) = 5V
CLK = 640 KHz thì tổng trở vào từ 1 ÷ 2.5 KΩ
Mức logic của tín hiệu ra :Trong điều kiện 4.75V ≤ Vcc ≤ 5.5V thì mức điện áp logic 1 là V ≥ Vcc – 0.4 và mức điện áp logic 0 là V ≤0.45v
- Ghép trực tiếp vào bus : thông qua chân chọn
chip, hai chân cho phép xuất byte cao, byte
thấp
- Ghép theo chuẩn công nghiệp UART : được
ứng dụng trong truyền nhận dữ liệu từ xa, ngõ
ra được biến đổi và đưa đến một UART trong
chế độ bắt tay, trao đổi dữ liệu nối tiếp
ICL7109CPL có độ chính xác cao, độ trôi nhiệt
nhỏ hơn 1µV/0C Được ứng dụng trong nhiều trong
những hệ thống thu thập dữ liệu do giá thành thấp, công
suất tiêu tán và dòng phân cực nhỏ Các đặc điểm chủ
yếu như sau :
- Pha zero-integrator giúp khôi phục quá tải
nhanh
- Loại bỏ vòng trễ và nhiễu
- Cải tiến khả năng lái bus
- Ngõ ra 3 trạng thái
- UART ở chế độ bắt tay để giao tiếp nối tiếp
- Có sẳn nguồn tham chiếu chuẩn
- 30 lần biến đổi trong 1 giây
- Khối đơn, công nghệ CMOS có công suất thấp
Mô tả chức năng của các chân:
GND : Nối đất
STATUS : ngõ ra Khi ở mức cao, bộ biến đổi đang ở trong pha integrate hoặc
pha de-integrate cho đến khi dữ liệu được chốt Khi ở mức thấp, bộ biến đổi đang
ở pha auto-zero hoặc de-integrate sau khi dữ liệu được chốt
POL : bit chỉ cực tính (polarity), nếu ở mức cao, chỉ ra rằng tín hiệu vào là áp
dương
Trang 28OR : bit chỉ quá thang (over-range), nếu ở mức cao, chỉ ra rằng ngõ vào đã vượt
quá giới hạn cho phép
B1÷÷÷÷B12 : ngõ ra ba trạng thái, là các bit dữ liệu tương ứng
TEST : ngõ vào, khi TEST = 1 thì ADC hoạt động bình thường, TEST = 0 thì tất
cả bit dữ liệu ra đều ở mức cao, còn khi không kết nối thì các chốt ngõ ra bộ đệm được cho phép Trong hoạt động bình thường : nối TEST lên +5v
LBEN : ở chế độ trực tiếp (MODE = 0 và CE/LOAD = 0) thì LBEN là ngõ vào,
khi ở mức tích cực sẽ cho phép xuất byte thấp; ở chế độ bắt tay (MODE = 1) thì LBEN là ngõ ra, có chức năng là cờ byte thấp
HBEN : ở chế độ trực tiếp (MODE = 0
và CE/LOAD = 0) thì HBEN là ngõ
vào, khi ở mức tích cực sẽ cho phép
xuất byte cao; ở chế độ bắt tay
(MODE = 1) thì HBEN là ngõ ra, có
chức năng là cờ byte cao
CE/LOAD : ở chế độ trực tiếp, là ngõ
vào, khi tích cực sẽ cho phép xuất ra 12
bit dữ liệu B1÷B12, POL, OR nếu
LBEN, HBEN tích cực Ơ chế độ bắt
tay, là ngõ ra strobe
MODE : ngõ vào, khi ở mức thấp :
ADC hoạt động ở chế độ trực tiếp, còn
khi ở mức cao : ADC hoạt động ở chế độ bắt tay
OSC IN : ngõ vào của bộ dao động
OSC OUT : ngõ ra của bộ dao động
OSC SEL : ngõ vào, dùng để chọn bộ dao động ICL 7109 có một bộ dao động
với 3 ngõ, nó có thể hoạt động với bộ dao động RC hay dao động thạch anh, cũng
có thể hoạt động với nguồn xung clock bên ngoài
Nếu chân OSC SEL để hở (có pullup kéo lên) hay nối với mức cao thì xung clock sẽ lấy từ bộ dao động RC bên ngoài Khi đó, xung clock sẽ cùng pha, cùng tần
số với tín hiệu trên chân BUF OSC OUT và tần số xung clock tính theo công thức :
RC
f =0.45Điện trở nên chọn là 100K, tụ chọn sao cho khoảng thời gian của 2048 chu kỳ xung clock gần với một bội số tích phân của 50Hz để loại trừ nhiễu 50Hz, nhưng không nên nhỏ hơn 50pF
Nếu chân OSC SEL được kéo xuống mức thấp thì xung clock lấy từ dao động thạch anh bên ngoài có tần số từ 1MHz đến 5MHz Tần số xung clock bên trong khi
đó sẽ bằng tần số của tín hiệu trên chân BUF OSC OUT chia cho 58
BUF OSC OUT : ngõ ra của bộ dao động được đệm, tiện dụng làm nguồn xung
clock cho các IC khác
Trang 29RUN/HOLD : sau khi pha autozero hoàn tất trong khoản thời gian nhỏ nhất, cần
có một xung lên cao ít nhất 200ns tác động vào chân RUN/HOLD để bắt đầu một quá trình biến đổi Tuy nhiên cần chú ý rằng nếu có bất kỳ xung nào xuất hiện trong quá trình biến đổi hay trong vòng 2048 chu kỳ xung clock sau khi chân STATUS xuống thấp sẽ bị bỏ qua Nếu ICL 7109 đang ở vào thời điểm kết thúc pha autozero, một quá trình biến đổi sẽ được bắt đầu và chân STATUS sẽ lên cao trong vòng 7 chu kỳ xung clock sau khi RUN/HOLD lên cao
Thêm vào đó, để bắt đầu và kết thúc một quá trình biến đổi, chân này cũng có thể được sử dụng để cực tiểu thời gian biến đổi Bởi vì một quá trình biến đổi bình thường sẽ tốn mất 8192 chu kỳ xung clock, trong đó riêng pha de-integrate đã lấy mất
4096 chu kỳ xung clock và độc lập với điện áp vào Nhưng nếu sau khi STATUS xuống thấp, RUN/HOLD xuống thấp theo thì ICL 7109 sẽ nhảy tức thời đến pha autozero hơn là phải mất toàn bộ 4096 chu kỳ xung clock cho pha de-integrate
SEND : ngõ vào, báo hiệu rằng thiết bị bên ngoài đã chấp nhận dữ liệu khi ADC
hoạt động ở chế độ bắt tay Nối lên +5v nếu không sử dụng
V- : nguồn âm cho ICL 7109, thường nối đến -5v
REF OUT : ngõ ra điện áp tham chiếu, thường nhỏ hơn V+ là 2,8v
BUF : ngõ ra bộ khuếch đại đệm
AZ : được nối đến tụ CAZ
INT : được nối đến tụ CINT
COMMON : chân chung của tín hiệu tương tự
IN LO : cực âm của điện áp vào vi sai
IN HI : cực dương của điện áp vào vi sai
REF IN+ : ngõ vào dương của điện áp tham chiếu
REF CAP+ : cực dương của tụ tham chiếu
REF CAP- : cực âm của tụ tham chiếu
REF IN- : ngõ vào âm của điện áp tham chiếu
V+ : Vcc (5v)
Trang 30CHƯƠNG 3 THỦ TỤC TRAO ĐỔI DỮ LIỆU CỦA MÁY TÍNH
Mục tiêu:
Trình bày các kiến thức cơ bản về các thủ tục trao đổi dữ liệu sử dụng giữa máy tính và các thiết bị ngoại vi Nguyên lý, ưu nhược điểm và ứng dụng của mỗi loại thủ tục trao đổi dữ liệu Lập trình khởi tạo và điều khiển cho mỗi thủ tục
Tóm tắt chương:
- Các chế độ trao đổi dữ liệu của máy vi tính
- Trao đổi tin ngắt vi xử lý
- Trao đổi tin trực tiếp khối nhớ
Trang 313.1 Các chế độ trao đổi dữ liệu của máy tính
Chế độ trao đổi tin của Máy tính với thiết bị ngoài
• Trao đổi tin theo chế độ chương trình
Sự trao đổi tin được VXL điều khiển theo một trong hai loại lệnh sau
Các lệnh vào (IN) hay ra (OUT)
Các lệnh chuyển (MOV) giữa thanh ghi A và thanh ghi đệm số liệu của KGN
có địa chỉ nhớ xác định
• Trao đổi tin trực tiếp bộ nhớ
Sau khi VXL được khởi động, sự trao đổi tin hoàn toàn do KGN điều khiển thay cho VXL và các cổng vào ra của VXL ở trạng thái điện trở cao (VXL bị cô lập) Lúc này, KGN điều khiển mọi hoạt động của bộ nhớ M và KGN, cụ thể là:
Phát địa chỉ cho khối nhớ hoặc TBN
Phát lệnh đọc (/RD) hay ghi (/WR) số liệu
Các số liệu đọc, ghi được trao đổi giữa khối nhớ M va TBN thông qua các
thanh ghi đệm của KGN
Thủ tục trao đổi tin trong chế độ chương trình
Ở chế độ trao đổi tin theo chương trình, có thể trao đổi tin
theo một trong ba phương pháp sau:
- Trao đổi đồng bộ
- Trao đổi không đồng bộ hay hỏi trạng thái (Polling)
- Trao đổi theo ngắt chương trình
1 Trao đổi đồng bộ
Sau khi khởi động TBN, Máy tính không cần quan tâm
tới TBN có sẵn sàng trao đổi tin hay
không mà đưa luôn các lệnh trao đổi tin (
đọc vào, ghi ra hay truyền số liệu )
Phương pháp trao đổi tin này chỉ được
thực hiện khi:
- TBN luôn sẵn sàng trao đổi tin
- Tốc độ trao đổi tin của Máy tính và
TBN luôn phù hợp nhau hoặc TBN
trao đổi tin nhanh
Trình tự trao đổi diễn ra như sau:
- Máy tính đưa tin điều khiển TBN
Trao đổi tin Chương trình
Trang 32- Máy tính chờ và kiểm tra trạng thái sẵn sàng trao đổi tin của TBN bằng cách:
o Đọc tin về trạng thái sẵn sàng của TBN
o Kiểm tra trạng thái sẵn sàng Nếu chưa, Máy tính lại đọc và kiểm tra trạng thái sẵn sàng
- Máy tính trao đổi tin với TBN
Phương pháp trao đổi này thực hiện khi tốc độ trao đổi tin của TBN chậm so với Máy tính
3.2 Trao đổi tin ngắt vi xử lý
Phương pháp trao đổi tin này khắc phục nhược điểm của các
phương pháp trên Trình tự như sau:
(1)Máy tính đang thực hiện chuỗi lệnh của một chương
trình nào đó
(2)TBN có yêu cầu trao đổi tin, sẽ gửi tín hiệu yêu cầu
trao đổi tin ( yêu cầu ngắt INTR)
(3)Máy tính (cụ thể là VXL ) đưa tín hiệu chấp nhận (xác
nhận ngắt INTA)
(4)Chương trình chính bị ngắt, Máy tính chuyển sang
chương trình con phục vụ ngắt tức là chương trình con
trao đổi tin cho TBN đã yêu cầu
(5)Chương trình chính lại tiếp tục thực hiện ở chỗ bị ngắt
3.2.1 Các loại ngắt của máy PC
• Các loại ngắt
Người ta chia ngắt thành hai loại: ngắt cứng và ngắt mềm
Ngắt cứng: còn gọi là ngắt ngoài vì do nguyên nhân bên ngoài VXL có các lối
vào dành cho ngắt ngoài Khi có tín hiệu vào lối vào này, chương trình VXL đang thực hiện sẽ bị dừng
Ngắt NMI ( Non maskable Interrupt) - Ngắt không che được : Khi có ngắt này,
VXL dừng chương trình sau lệnh đang thực hiện, thanh ghi địa chỉ lệnh (IP) và thanh ghi chỉ thị flag được lưu giữ, 2 bit IF (Interrupt Flag) va TF (Trap Flag)
bị xoá về 0 để cấm ngắt ngoài tiếp theo và không có bẫy Muốn cho phép hay không cho phép ngắt này xảy ra, chúng ta dùng một triger (flip – flop) để mắc lối vào ngắt trước khi đưa vào lối vào ngắt NMI
Ngắt INTR:
o Ngắt này được cho phép hay cấm ngắt bằng cách lập hay xoá bit IF của thanh ghi flag Lập bởi lệnh STI (Set Interrupt), xoá bởi lệnh CLI (Clear interupt)
o Thường được nối với lối ra yêu cầu ngắt của vi mạch xử lý ưu tiên ngắt (8214, 8259)
Trang 33Ngắt mềm: (hay ngắt bên trong do lệnh của chương trình) do VXL gặp các lệnh
gây ra ngắt hoặc tình huống đặc biệt khi thực hiện lệnh (ngắt logic) và ngắt của hệ điều hành
- Ngắt do lệnh: đó là ngắt khi thực hiện các lệnh CALL, HLT, INT
- Ngắt logic hay các ngoại trừ: xảy ra khi gặp các tình huống đặc biệt sau:
o Chia một số cho 0
o Tràn nội dung thanh ghi hay bộ nhớ
o Thực hiện từng bước (vector 1)
o Điểm dừng ( Break point) chương trình do người dung chương trình sử dụng định trước (Vectơ 3)
- Ngắt của hệ điều hành: đó là các ngắt do hệ điều hành quy định để phục vụ trao đổi tin của các TBN (bàn phím, máy in, vv) như INT 10, INT 16, INT 21, v.v )
Ví dụ như vector ngắt đầu tiên giữ địa chỉ của ngoại lệ Divide by Zero (lỗi chia cho 0) Khi xuất hiện lỗi này VXL nhảy sang địa chỉ 0000:0000 và thực hiện chương trình
có địa chỉ lưu ở đây
0B Hardware IRQ3 Serial Comms COM2/COM4 0C Hardware IRQ4 Serial Comms COM1/COM3 0D Hardware IRQ5 Reserved/Sound Card
0E Hardware IRQ6 Floppy Disk Controller 0F Hardware IRQ7 Parallel Comms
70 Hardware IRQ8 Real Time Clock
Trang 3471 Hardware IRQ9 Redirected IRQ2
75 Hardware IRQ13 Math's Co-Processor
76 Hardware IRQ14 Hard Disk Drive
77 Hardware IRQ15 Reserved
VXL gửi tín hiệu xác nhận hay cho phép ngắt – INTA và đọc vector ngắt
Chuyển sang chương trình phục vụ ngắt
Trở về chỗ chương trình chính bị ngắt và tiếp tục thực hiện chương trình đó
• Lưu giữ tin về chỗ bị ngắt chương trình:
Ở cuối mỗi chu trình lệnh, VXL 8086 ( cũng như 80286) kiểm tra xem có yêu cầu ngắt nào gửi tới không Nếu có yêu cầu, VXL tiến hành lưu trữ tin về nơi bị ngắt chương trình ( dùng lệnh PUSH vào vùng nhớ ngăn xếp mà địa chỉ chỉ thị bởi thanh ghi SP)
Các tin đó là:
- Thanh ghi cờ Flag FR (Flag Register)
- Con trỏ lệnh IP (Instruction Pointer)
- Thanh ghi đoạn lệnh CS (Code Segment register)
• Gửi tín hiệu cho phép (xác nhận ) ngắt và đọc vector ngắt:
Sau khi đã lưu trữ tin về vị trí bị ngắt của chương trình chính, VXL gửi tín hiệu xác nhận ngắt INTA (Interrupt Acknowledge) cho KGN của TBN Tuỳ cách tổ chức ngắt và tạo vector ngắt, VXL sử dụng tín hiệu này để đọc vector ngắt tương ứng của KGN vào thanh ghi chứa A VXL đọc nội dung của ô nhớ có địa chỉ là vector ngắt để biết được địa chỉ đầu tiên của chương trình con phục vụ ngắt ( chương trình trao đổi tin)
• Thực hiện chương trình con phục vụ ngắt
Đó là chương trình mà địa chỉ lệnh đầu tiên nằm trong ô nhớ có địa chỉ là vector ngắt Kết thúc chương trình con này, có lệnh trở về (RET - return) để VXL tiếp tục thực hiện chương trình chính
• Tiếp tục thực hiện chương trình chính:
Trang 35Sau khi gặp lệnh trở về (RET), VXL tiến hành đọc và hồi phục các tin của VXL lúc bị ngắt chương trình đã ghi nhớ ở chỗ ngắt chương trình (bằng lệnh POP các ô nhớ ngăn xếp) Qua trình đọc ra này xảy ra ngược lại với quá trình ghi vào (o quy luật LIFO – Last In First Out) và nội dung của:
Thanh ghi con trỏ lệnh (IP) trỏ về độ lệch (offset) của địa chỉ lệnh tiếp theo của chương trình chính bị ngắt trong mảng nhớ lệnh (CS)
Thanh ghi mảng lệnh (CS) về địa chỉ đoạn đầu tiên của vùng nhớ dành cho
chương trình chính bị ngắt
Thanh ghi flag lúc bị ngắt chương trình
3.2.2 Xử lý ngắt cứng trong IBM - PC:
VXL 80x86 có 3 chân dùng cho ngắt cứng đó là:
INTR: Interrupt Request
NMI: NonMaskable Interrupt
/INTA: Interupt Acknowledge
INTR là tín hiệu đầu vào yêu cầu ngắt của VXL và nó có thể che hay cho phép thông qua lệnh CLI (Clear Interrupt) và STI (Set Interrupt)
NMI tương tự INTR nhưng không che được bằng lệnh
INTR và NMI có thể được kích hoạt từ bên ngoài bằng cách nối vào điện áp 5V vào chân tương ứng của VXL
Như vậy VXL chỉ có khả năng phục vụ một yêu cầu ngắt cứng từ TBN Để mở rộng khả năng phục vụ ngắt ngoài IBM - PC sử dụng thêm vi mạch xử lý ngắt cứng lập trình được PIC (Programmable Interrupt Controller) 8259 Sử dụng PIC 8259 nối vào chân INTR có thể mở rộng số lượng ngắt cứng lên đến 64
ROM
/INTA
NMI Reset
C ơ ch ế th ự c hi ệ n ng ắ t c ứ ng
System bus
Trang 36
• Vi mạch xử lý ngắt 8259
Sơ đồ khối:
Các chân:
IR0 – IR7 (Chân 18 – 25) : Các lối vào yêu cầu ngắt
D0 – D7 (Chân 11 – 4) : Các bit số liệu (2 chiều)
A0 (chân 27) : Địa chỉ chọn thanh ghi lệnh
CS (Chân 11) : Chọn vi mạch (chip select)
CAS0 – 2 (Chân 12,13,15) : Lối vào mắc nối tầng
SP (chân 16) : Trong chế độ không đệm, nếu SP = 1 thì 8259
là chủ (Master)
SP = 0 thì là tớ (Slave)
INTA (chân 26) : Lối vào xác nhận ngắt
INT (chân 17) : Lối ra yêu cầu ngắt chương trình
Thanh ghi mặt nạ ngắt IMR (Interrupt Mask Register)
Mạch logic giải quyết ưu tiên PR (Priority Resolver)
Bộ so sánh
và nối tầng
Logic điều khiển
Thanh ghi phục vụ (ISR)
Giải quyết
ưu tiên (PR)
Thanh ghi yêu cầu ngắt
Thanh ghi che ngắt (IMR)
Trang 37Khối logic điều khiển: xử lý ngắt, đưa yêu cầu (INT) và xác nhận ngắt (INTA)
Bộ đệm đường tín hiệu số liệu: để đệm ghi vào các thanh ghi và đệm đọc các
số liệu từ các thanh ghi
Logic điều khiển đọc/ghi: tạo các tín hiệu ghi và đọc các thanh ghi đệm
Bộ đệm nối tầng/so sánh: để chọn các vi mạch 8259 tớ trong một vi mạch 8259 chủ
Đối với IBM - PC, 2 PIC được sử dụng để mở rộng ra 15 ngắt cứng PIC1 để quản
lý đầu vào ngắt IRQ0 - 7, PIC2 dành cho IRQ8 - 15 PIC2 được nối tầng ?lên PIC1 qua đường IRQ2 (Do đó nếu ta chặn ngắt IRQ2 thì toàn bộ IRQ 8 - 15 cũng bị che
3.2.3 Lập trình xử lý ngắt cứng:
Trong máy IBM - PC có 2 PIC được định vị tại các địa chỉ là PIC1 - 20H, PIC2 - A0H Các PIC được khởi tạo bởi BIOS, do đó ta chỉ cần quan tâm tới 2 lệnh khi làm việc với chúng
Lệnh thứ nhất tác động vào từ điều khiển OCW1 để thiết lập việc che ngắt
Nếu muốn che ngắt nào thì ta xoá bit tương ứng với ngắt đó về 0 Từ điều
khiển OCW1 được gửi tới địa chỉ base + 1
Lệnh thứ 2 là lệnh End of Interrupt (EOI) Lệnh này được gửi tới PIC khi kết thúc chương trình con xử lý ngắt để reset PIC Lệnh EOI được gửi tới PIC
bằng cách ghi giá trị 20H vào thanh ghi có địa chỉ base
Cấu trúc chung của một chương trình có sử dụng phương pháp vào ra bằng ngắt viết bằng Pascal như sau:
program <Tên chương trình>;
MPU
IR0 IR1 IR2 IR3
IR7
INT
/INT
IR0 IR1 IR2
IR7
INT
/INT CAS0-2
INT
/INT
CAS0-2 Pri PIC
Sec PIC
IRQ0 IRQ1
IRQ3
IRQ7
IRQ8 IRQ9 IRQ1
Trang 38GetIntVec ($0C,@OldVector); {Lưu vector ngắt cũ}
SetIntVec ($0C,Addr (MyISR)); {Thay vector ngắt}
Port[MasterOCW1] := Port[MasterOCW1] and $EF;{cho phép ngắt IRQ3}
END
Trang 393.3 Trao đổi tin trực tiếp bộ nhớ
Phương pháp trao đổi dữ liệu theo chương trình sẽ chậm do:
- VXL phải giải mã và thực hiện lệnh
- Trao đổi dữ liệu thực hiện từng byte thông qua thanh ghi AX của VXL
Kỹ thuật vào/ra DMA (Direct Memory Access) là phương pháp truy nhập trực tiếp tới bộ nhớ
3.3.1 Cơ chế hoạt động:
VXL khởi tạo TBN
TBN khởi xướng việc truyền số liệu bằng cách sử dụng các thông tin cung cấp bởi VXL thông qua quá trình khởi tạo
Khối dữ liệu được truyền trực tiếp giữa TBN và bộ nhớ thông qua sự điều
khiển của bộ điều khiển DMA (DMAC)
3.3.2 Hoạt động của DMAC:
Khởi tạo: Trước khi đưa DMAC vào hoạt động, Phải có chương trình khởi tạo
cho nó Quá trình khởi tạo sẽ cung cấp cho DMAC thông tin cần thiết để hoạt động
Đó là các thông tin như: địa chỉ bắt đầu của khối dữ liệu, kích thước khối dữ liệu, chiều đọc/ghi dữ liệu, số hiệu cổng của TBN
Hoạt động:
Xét trường hợp truyền một khối dữ liệu từ bộ nhớ ra TBN
(1)Bước 1: TBN yêu cầu DMA bằng cách đặt tín hiệu DREQ lên mức cao
(2)Bước 2: DMAC đặt tín hiệu mức cao vào chân HRQ (Hold Request) gửi tín hiệu yêu cầu treo bus cho VXL, báo cho VXL biết DMAC cần sử dụng bus
Data Bus
Address Bus Control Bus (IOR, IOW, MEMR, MEMW) Hoạt động của DMAC
Trang 40(3)Bước 3: VXL kết thúc chu kỳ bus hiện tại, chuyển các cổng ghép nối với bus sang mức trở kháng cao và trả lời yêu cầu DMA bằng tín hiệu mức cao ở chân HDLA ( Hold Acknoledge) báo cho DMAC được quyền sử dụng bus (4)Bước 4: DMAC kích hoạt tín hiệu DACK báo cho TBN biết nó sẽ bắt đầu điều khiển việc truyền dữ liệu
(5)Bước 5: DMAC bắt đầu truyền dữ liệu từ bộ nhớ tới TBN như sau:
- DMAC đặt địa chỉ của byte đầu tiên của khối dữ liệu lên bus địa chỉ
- Kích hoạt tín hiệu /MEMR để đọc byte dữ liệu từ bộ nhớ lên bus dữ liệu
- Đặt địa chỉ của cổng TBN lên bus địa chỉ
- Kích hoạt tín hiệu IOW để ghi byte dữ liệu đang có trên bus dữ liệu ra TBN
- Giảm giá trị đếm và tăng giá trị địa chỉ
- Lặp lại quá trình trên cho tới khi giá trị đếm bằng 0
(6)Sau khi quá trình DMA kết thúc, DMAC xoá giá trị HRQ xuống mức thấp, trả quyền điều khiển bus cho VXL
3.3.3 Chip điều khiển truy nhập bộ nhớ trực tiếp DMAC 8237
DMAC 8237 có thể thực hiện truyền dữ liệu theo 3 kiểu: kiểu dọc (từ bộ nhớ ra thiết bị ngoại vi), kiểu ghi (từ thiết bị ngoại vi đến bộ nhớ) và kiểu kiểm tra
Khối Timing and Control (định thời và điều khiển):
Tạo các tín hiệu định thời và điều khiển cho bus ngoài
(external bus) Các tín hiệu này được đồng bộ với xung
clock đưa vào DMAC (tần số xung clock tối đa là 5 MHz)
Khối Priority encoder and rotating priority logic (mã
hoá ưu tiên và quay mức ưu tiên):
DMAC 8237A có 2 mô hình ưu tiên: mô hình ưu tiên
cố định (fixed priority) và mô hình ưu tiên quay (rotating
priority) Trong mô hình ưu tiên cố định, kênh 0 sẽ có mức
ưu tiên cao nhất còn kênh 3 có mức ưu tiên thấp nhất Còn
đối với mô hình ưu tiên quay thì mức ưu tiên khi khởi
dộng giống như mô hình ưu tiên cố định nhưng khi yêu
cầu DMA tại một kênh nào dó được phục vụ thì sẽ được
đặt xuống mức ưu tiên thấp nhất
Khối Command Control (điều khiển lệnh):
Giải mã các thanh ghi lệnh (xác định thanh ghi sẽ được
truy xuất và loại hoạt động cần thực hiện)