Nội dung bài giảng môn Thiết bị ngoại vi và ghép nối nội dung chương 2: Giao thức ghép nối
Nội dung bài giảng môn Thiết bị ngoại vi và ghép nối nội dung chương 2: Giao thức ghép nối của Học viện Công nghệ Bưu chính Viễn thông với những kiến thức và thông tin bổ ích giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học vào thực tiễn cuộc sống. Mời bạn đọc đón xem!
Môn: Thiết bị ngoại vi và ghép nổi
Trường: Học viện Công Nghệ Bưu Chính Viễn Thông
Thông tin:
Tác giả:
Preview text:
lOMoARcPSD| 10435767
CHƯƠNG 2 – GIAO THỨC GHÉP NỐI LT3
2.1 GIAO THỨC GHÉP NỐI
2.1.1 Tín hiệu và các mô hình kết nối thiết bị với máy tính
Tín hiệu là các biểu hiện vật lý của thông tin. Trong kỹ thuật, tín hiệu ở hai dạng là
tín hiệu iện và tín hiệu phi iện. Các tín hiệu iện thường dưới dạng như: dòng iện, iện áp,
mức iện áp ặc trưng cho các logic số 0,1, xung dòng iện iện áp. Các tín hiệu phi iện khá
phong phú tuỳ thuộc vào ứng dụng, thiết bị và môi trường hoạt ộng. Một số tín hiệu phi
iện có thể kể ến như: nhiệt ộ, áp suất, ộ ẩm, ộ cao, tốc ộ quay, khoảng cách, âm thanh,
hành trình …. Để thu nhận và xử lý trong các hệ thống iều khiển, các tín hiệu phi iện
thông thường cần phải ược biến ổi thành tín hiệu iện, bằng các bộ biến ổi hoặc các cảm
biến. Để cung cấp cho các hệ thống máy tính – vi xử lý hay các hệ thống iều khiển số
khác, các tín hiệu iện cần ược số hoá bằng các vi mạch biến ổi tương tự sang số. Các tín
hiệu số từ các hệ thống vi xử lý cung cấp ra bên ngoài có thể ược cung cấp trực tiếp, có
thể ược biến ổi sang dạng tương tự và có thể phải khuếch ại cho phù hợp với các thiết bị.
Hình 2.1: Quá trình biến ổi tín hiệu vào hệ thống vi xử lý
Trong các hệ thống vi xử lý và máy tính, các thiết bị sẽ giao tiếp qua các cổng giao
tiếp chuẩn như: COM, LPT, USB, IEEE1394, LAN, MODEM, …, hoặc thông qua hệ
thống bus giao tiếp thực hiện trên các cổng hoặc hệ thống khe cắm. Các cổng giao tiếp
chuẩn thường là các cổng giao tiếp tín hiệu số, khi thực hiện các thiết bị giao tiếp qua
các cổng này cần phải quan tâm tới các thông số của cổng như: Mức tín hiệu vật lý,
khuôn dạng dữ liệu truyền, tốc ộ truyền dữ liệu và cơ chế hỏi áp khi truyền nhận dữ liệu. lOMoARcPSD| 10435767
Khi giao tiếp với các bus hệ thống (PCI, ISA …), cần phải thực hiện các bo mạch iện
tử. Các bo mạch này có thể thực hiện chức năng của một cổng chuẩn, có thể là hệ thống
mạch iện tử truyền nhận trực tiếp các tín hiệu ON/OFF dưới dạng số, số hoá các tín hiệu
tương tự, hoặc thậm chí nhận trực tiếp các tín từ cảm biến, hoặc các tín hiệu phi iện.
Hình 2.1 mô tả quá trình biến ổi các tín hiệu ở các dạng khác nhau ể cung cấp vào hệ
thống vi xử lý. Các tín hiệu phi iện ược biến ổi qua các cảm biến thành tín hiệu iện thông
thường ở ngưỡng rất nhỏ. Các tín hiệu này, hoặc các tín hiệu dòng iện iện áp ngưỡng
nhỏ cung cấp trực tiếp từ thiết bị, sẽ ược khuếch ại ể cho ra mức dòng iện hoặc iện áp ở
mức tiêu chuẩn. Các mạch khuếch ại này cần trở kháng vào rất lớn và ộ chống nhiễu
cao, thường sử dụng các mạch khuếch ại o lường (Instrumentation Amplifier). Hiện nay
trong công nghiệp thường sử dụng các bộ khuếch ại chuẩn, ược các hãng chế tạo cung
cấp sẵn, ược gọi là các bộ biến ổi (transducer). Các bộ biến ổi này có thể nhận tín hiệu
nhỏ ngõ vào, hoặc có ầu vào chuẩn có các cảm biến, và cho ra tín hiệu chuẩn 4- 20 mA
hoặc 0 – 10V. Có nhiều loại bộ biến ổi tích hợp sẵn nhiều ngõ vào cho nhiều loại tín
hiệu, nhiều loại cảm biến, hoặc có ầu vào thông minh có thể lập trình ể chọn loại tín hiệu
hoặc cảm biến ngõ vào.
Tín hiệu ngõ ra bộ biến ổi, hoặc các tín hiệu mức lớn cung cấp từ thiết bị sẽ ược biến
ổi tương tự sang số, ệm mức số và cung cấp vào hệ thống vi xử lý. Các tín hiệu số
ON/OFF cung cấp từ thiết bị thì không cần biến ổi mà cung cấp trực tiếp vào hệ thống
vi xử lý. Phần mềm trong hệ thống vi xử lý sẽ thực hiện việc tạo khuôn dạng dữ liệu, cơ
chế hỏi áp truyền nhận và cung cấp tín hiệu tới các vi mạch tạo mức tín hiệu lớp vật lý
ể có thể giao tiếp với các cổng tiêu chuẩn của máy tính.
Hình 2.2: Quá trình biến ổi tín hiệu ra hệ thống vi xử lý
Đối với các tín hiệu ra, sẽ bao gồm các tín hiệu óng mở thiết bị, các mức tín hiệu
tương tự, các tín hiệu hiển thị, các tín hiệu cảnh báo. Tuỳ theo công suất yêu cầu từ thiết
bị, các ngõ ra số óng mở, hoặc tương tự sẽ sử dụng các mạch hoặc các thiết bị khuếch ại lOMoARcPSD| 10435767
khác nhau. Với các mạch giao tiếp qua bus hệ thống bằng các khe cắm, tín hiệu iều khiển
óng mở thường cung cấp thông qua các bộ ệm số và ưa ra các bộ khuếch ại công suất
bên ngoài. Để cung cấp tín hiệu iều khiển tương tự ngõ ra, cần sử dụng các bộ biến ổi
số sang tương tự. Ngày nay các mạch khuếch ại iện tử công suất thường nằm trong các
thiết bị iều khiển chuyên dụng, Ngoài việc khuếch ại tín hiệu cung cấp từ hệ thống vi xử
lý, các thiết bị iều khiển này còn có thêm các tính năng chọn chế ộ hoạt ộng, chọn các
tính năng bảo vệ, hiển thị trạng thái hoạt ộng …, chúng thường ược gọi là các bộ lái
(driver) hay các bộ kích (actuator). Và ể có thêm các tính năng thông minh trong các bộ
iều khiển này thường tích hợp các hệ thống vi xử lý với các phần mềm chuyên dụng cho
việc iều khiển một thiết bị cụ thể như: iều khiển tốc ộ ộng cơ DC, ộng AC, nhiệt ộ, áp
suất, …. Hình 2.2 mô tả việc biến ổi các tín hiệu ể cung cấp các tín hiệu iều khiển ngõ
ra trên bo mạch giao tiếp qua khe cắm máy tính.
Đối với các thiết bị nhận tín hiệu trực tiếp từ các cổng ra chuẩn máy tính, thì cần phải
tích hợp một hệ thống vi xử lý với cổng giao tiếp phần cứng và phần mềm giao tiếp
tương thích. Chúng sẽ nhận thông tin iều khiển số từ máy tính, sử dụng các vi mạch biến
ổi và khuếch ại tín hiệu ể iều khiển cơ cấu chấp hành. Tất cả các tính năng kể trên cũng
có thể ược tích hợp trong một thiết bị iều khiển chuyên dụng.
Hình 2.3 mô tả việc xử lý tín hiệu ra từ các cổng chuẩn máy tính.
Hình 2.3: Quá trình biến ổi tín hiệu ra giao tiếp với cổng chuẩn máy tính
Như vậy, có thể thực hiện các hệ thống mạch iện tử với các chứng năng vào ra thích
hợp, giao tiếp với bus hệ thống ể trực tiếp iều khiển các thiết bị từ máy tính. Khi ó toàn
bộ chương trình iều khiển ều hoạt ộng trên máy tính. Từng phần hoặc toàn bộ các chức
năng iều khiển cũng có thể thực hiện trong các thiết bị chuyên dụng ược iều khiển bằng
một hệ thống vi xử lý. Các thiết bị iều khiển như vậy sẽ giao tiếp với máy tính thông qua
các cổng vào ra chuẩn, hoặc các bo mạch tạo ra các bus chuẩn. Khi ó chương trình iều lOMoARcPSD| 10435767
khiển sẽ nằm ngay trong thiết bị iều khiển, máy tính óng vai trò là thiết bị giao tiếp với
người sử dụng, nó sẽ thực hiện các chức năng như: thiết lập tham số hoạt ộng, theo dõi
trạng thái hoạt ộng, lưu trữ các thông số hoạt ộng …. Ở các nhà máy công nghiệp, các
công oạn sản xuất sẽ ược iều khiển bằng các hệ thống iều khiển lập trình chuyên dụng,
chúng ược gọi là các hệ thống iều khiển con (Sub Control). Nhiều hệ thống iều khiển
con như thế ược nối mạng với nhau ể ưa về hệ thống máy tính tại phòng iều khiển trung
tâm (CCR – Central Control Room). Các chương trình giao tiếp với người sử dụng, trên
các máy tính tại phòng iều khiển trung tâm, sẽ thực hiện việc truyền nhận dữ liệu với
các hệ thống iều khiển con, ể giám sát và iều khiển tất cả hoạt ộng của toàn nhà máy.
2.1.2 Khuôn dạng dữ liệu Tại các cổng vào ra máy tính, ể thuận tiện cho việc truyền
nhận dữ liệu, dữ liệu số vào ra thường ược óng gói thành các khung truyền theo tiêu
chuẩn của các tổ chức chuẩn hoá quốc tế, hoặc theo thiết kế của người sử dụng. Các
khung truyền ơn giản có thể thực hiện tự ộng bằng các vi mạch phần cứng, các khung
truyền phức tạp ược thực hiện bằng phần mềm. Khi khung truyền ược thực hiện bằng
phần cứng, phần mềm người sử dụng có thể sử dụng các lệnh truyền dữ liệu trực tiếp tới
cổng, các thông tin khác của khung truyền sẽ ược tự ộng thêm vào theo thiết lập phần
cứng từ trước. Khi khung truyền ược chuẩn hoá theo phần mềm, các chương trình người
sử dụng cần lập trình ể tạo ra khung truyền tương ứng, hoặc sử dụng các hỗ trợ của phần
mềm trong hệ thống, nếu muốn kết nối với các thiết bị cùng chuẩn. Một gói tin thông
thường bao gồm các thành phần như: -
Tiêu ề (Header): mang các thông tin tên bản tin, tên gói, số thứ tự, ký tự bắt
tay, ký tự ồng bộ, số ký tự số byte trong gói tin …. Tiêu ề không mang thông
tin cần truyền, mà chỉ bao gồm các thông tin sử dụng cho việc kết nối và các
thông tin cần thiết khác cho việc truyền dữ liệu. -
Nội dung (Content): là thông tin cần truyền. -
Mã kết thúc (Trailer): chứa các thông tin về mã kiểm tra lỗi, mã thông báo kết thúc gói tin …. TxD Bit chăn
Making Start bit Cá c bit d ữ li ệ u ượ c l ậ p lẻ Stop bit làm d ấ u trình tr ướ c
Hình 2.4: Khung truyền dữ liệu theo chuẩn RS232
Hình 2.4 mô tả khung truyền dữ liệu ược tạo ra bằng vi mạch phần cứng truyền i trên
cổng truyền theo chuẩn RS232. Bình thường, ường truyền dữ liệu nối tiếp của cổng ở
trạng thái logic cao. Khi chương trình ghi một dữ liệu tới cổng ể truyền i, trước hết vi
mạch phần cứng kéo ường truyền xuống mức thấp trong khoảng thời gian của một bit, lOMoARcPSD| 10435767
giá trị này ược gọi là bit bắt ầu (start bit). Tiếp theo là các bit dữ liệu lần lượt ược dịch
ra trên ường truyền theo tốc ộ ịnh trước.
Khi dữ liệu ã truyền hết, vi mạch phần cứng tự ộng tính toán và thêm vào bit kiểm
tra chẵn lẻ (parity bit). Và cuối cùng nó duy trì ường truyền ở mức cao sau một khoảng
thời gian nữa gọi là bit dừng (stop bit). Nếu không có dữ liệu truyền tiếp, ường truyền
sẽ tiếp tục ược duy trì ở mức cao, nếu có một dữ liệu mới ược ghi tới thì một khung
truyền mới lại tiếp tục truyền ra. Để thực hiện các thiết bị có cổng giao tiếp theo khung
truyền phần cứng như trên, cần phải sử dụng các vi mạch cùng chuẩn, và thực hiện việc
thiết lập các tham số hoạt ộng cho hai vi mạch ở hai bên truyền nhận giống nhau.
Hình 2.5 mô tả gói dữ liệu ược thực hiện bằng phần mềm trên cổng truyền USB, gói
dữ liệu sẽ ược bắt ầu bằng mã nhận dạng gói 8 bit (PID – Packet Identification), sau ó
là nội dung dữ liệu truyền từ 0 ến 1023 byte, và cuối cùng là mã kiểm tra lỗi dư vòng 16
bit (CRC16 – Cyclic Redundancy Code 16).
Hình 2.5: Gói dữ liệu theo chuẩn USB
Trên máy tính các cổng vào ra chuẩn như: RS232, USB, LAN, IEEE1394 … ều có các
khung truyền dữ liệu chuẩn. Người sử dụng cũng có thể sử dụng các cổng này và phần
mềm của mình ể tạo nên các khung truyền riêng. Ví dụ, phần dữ liệu trong khung truyền
RS232 có thể sử dụng làm ký tự ồng bộ, ịa chỉ, loại dữ liệu …, hay chỉnh là dữ liệu cần
truyền, và khung truyền lớn sẽ bao gồm nhiều khung truuyền RS232 như trên.
2.1.3 Tốc ộ trao ổi thông tin
Tốc ộ truyền dữ liệu thường ược tính bằng số lượng bit truyền nhận trong một ơn vị
thời gian, hoặc số lượng bit thông tin cần truyền trong một ơn vị thời gian (bỏ qua các
trường khác trong khung truyền). Đơn vị tốc ộ truyền thường là kilo bit trên giây (Kbps
– Kilo Bit Per Second), hoặc KB trên giây (Kilo Byte Per Second). Thông thường tốc ộ
truyền nhận trên các cổng có thể thiết lập bằng phần mềm, và ể truyền nhận dữ liệu thì
tốc ộ truyền của hai bên truyền nhận phải ược thiết lập giống nhau.
Ngoài ra, cần chú ý tới các yếu tố làm ảnh hưởng tới tốc ộ truyền dữ liệu như: -
Khoảng các truyền càng xa tốc ộ truyền nhận càng giảm do nhiễu và suy hao
trên ường truyền lớn hơn. Các chuẩn truyền vật lý khác nhau cũng cho khoảng
cách truyền cực ại khác nhau. Ví dụ RS232C với logic ± 12V truyền cực ại ược lOMoARcPSD| 10435767
100 mét, RS485 với mức 1 là vi sai lớn hơn 0.35V có thể truyền cực ại ược 1000 mét. -
Môi trường truyền dữ liệu như vô tuyến, cáp quang, cáp ồng trục, cáp xoắn cặp
… cũng ảnh hưởng tới tốc ộ truyền dữ liệu do ặc tính suy hao và khả năng
chống nhiễu của chúng khác nhau. -
Phương pháp iều chế tín hiệu truyền cũng ảnh hưởng tới tốc ộ truyền dữ liệu.
Ví dụ, tốc ộ truyền trên các cổng máy tính như: Cổng RS232 có tốc ộ truyền có thể
thay ổi là: 1200, 2400, 4800, 9600 hoặc 19200 Baud. Cổng LPTở chế ộ SPP có tốc ộ 50
– 100 Kbps, ở chế ộ ECP có tốc ộ 2 – 4 Mbps. Cổng LAN có tốc ộ 10, 100 hoặc 1000 Mbps ….
2.1.4 Kiểm tra, sửa lỗi, nâng cao ộ tin cậy
Khi truyền dữ liệu, trên một kênh truyền nào ó, rất thường hay xảy ra lỗi do các
nguyên nhân như: môi truyền truyền thay ổi như truyền vô tuyến khi có mây mưa, nhiễu
ở các hệ thống bên ngoài tác ộng vào, nhiễu tự gây ra trong hệ thống truyền nhận. Các
lỗi xảy ra sẽ làm sai i một hoặc nhiều bit của dữ liệu truyền, làm dữ liệu tới bên nhận sẽ
không sử dụng ược nữa, và dữ liệu này cần ược sửa lại hoặc truyền lại. Để dữ liệu truyền
nhận tốt giữa hai bên thông thường các hệ thống sử dụng cơ chế sửa lỗi như sau: -
Trước tiên ể bên nhận phát hiện ra lỗi, bên truyền sẽ thêm vào mã sữa sai truyền tới
bên nhận cùng với dữ liệu cần truyền. Có nhiều loại mã sửa sai khác nhau, có mã
chỉ ể xác ịnh có lỗi, có mã có thể sử dụng ể bên nhận tự sửa sai các lỗi một bit, có
mã có thể sửa sai ược lỗi nhiều bit. -
Bên nhận dựa vào mã sửa sai ể xác ịnh dữ liệu nhận ược có lỗi hay không. Thông
thường mã sửa sai ược tạo ra từ chính dữ liệu cần truyền theo một quy luật nhất ịnh,
và bên nhận sẽ sử dụng úng quy luật ó ể xác ịnh lỗi. -
Tiếp theo nếu có lỗi, bên nhận sẽ dựa vào mã sửa sai ể sửa lại dữ liệu ã nhận ược. -
Nếu việc sửa lỗi không thành công hoặc hệ thống không có cơ chế sửa lỗi, ể hệ thống
có thể hoạt ộng úng, chương trình phần mềm cần xây dựng cơ chế hỏi áp, ể bên nhận
có thể yêu cầu bên truyền thực hiện việc truyền lại dữ liệu bị lỗi.
Một số mã sửa sai thường ược sử dụng trong các hệ thống vi xử lý như: -
Mã chẵn lẻ: bên truyển sẽ dựa vào số bit 1 của dữ liệu truyền, ể xác ịnh giá trị của
bit chẵn lẻ, ể ảm bảo sao cho số bit 1 trong gói dữ liệu truyền i luôn là một số chẵn,
hoặc luôn là một số lẻ. -
Mã dư vòng (CRC): bên truyền sẽ tạo ra mã sửa sai bằng a thức sinh theo bậc quy
ịnh giữa bên truyền và bên nhận (tham khảo thêm về quy tắc tao mã CRC). Mã này
có thể sửa ược các lỗi bit ơn. lOMoARcPSD| 10435767 -
Mã kiểm tra tổng (BCC – Block Check Sum): sau khi truyền xong một khối dữ liệu,
bên truyền sẽ thực hiện một phép tính (ví dụ XOR) tất cả các dữ liệu ã truyền, ể tạo
thành mã kiển tra tổng (BCC) truyền tới bên nhận. Bên nhận cũng sẽ thực hiện phép
tính tương tự với các dữ liệu ã nhận ược, và so sánh với BCC của bên truyền ể xác
ịnh có lỗi trong khối dữ liệu ã truyền hay không. -
Phương pháp ghi dự phòng (RAID - Redundant Arrays of Inexpensive Disks): trong
phương pháp này dữ liệu ược ghi ồng thời lên nhiều ĩa, và thông tin chẵn lẻ phát
sinh ược ghi lên một ĩa riêng biệt hoặc ồng thời nhiều ĩa, ể sửa sai khi cần thiết.
2.1.5 Bộ lệnh hỏi áp
Bộ lệnh hỏi áp, ược xây dựng bằng các chương trình phần mềm chạy trên máy tính
và thiết bị, ể kết nối thông minh các thiết bị với máy tính, chúng xác ịnh các tham số và
chế ộ hoạt ộng khác nhau của thiết bị. Một bộ lệnh hỏi áp ược xây xựng riêng cho từng
thiết bị, có thể ược tích hợp trong hệ iều hành, hoặc cần cài ặt riêng. Nó bao gồm tập các
lệnh hỏi (command set), là các yêu cầu từ hệ thống trung tâm, và tập các trả lời (response)
là các thông báo trạng thái từ thiết bị. Các câu lệnh và câu trả lời ược xây dựng có cấu
trúc và cú pháp riêng. Thông thường một câu lệnh hoặc trả lời thường bao gồm các thành phần như: -
Mã bắt ầu bằng một ký tự riêng như: @, $, AT, #, … -
Mã lệnh: từ 1 ến 3 byte xác ịnh loại lệnh. -
Tham số của lệnh từ 1- n byte là nội dung của lệnh. -
Mã sửa lỗi cho lệnh, thường sử dụng mã CRC -
Mã kết thúc lệnh, thường sử dụng các ký tự riêng.
Ngoài ra các câu lệnh và trả lời còn dùng thêm các ký tự ối thoại, sử dụng các ký tự
iều khiển ASCII như: ENQ (End Question), ACK (Acknowledge), NACK (Non
ACK), BELL, OK, ERROR, BUSY ….
2.1.6 Kịch bản ối thoại Kịch bản ối thoại là tập hợp các câu hỏi áp giữa máy tính và
thiết bị ược sắp xếp theo một kịch bản ịnh trước. Thông thường, kịch bản ối thoại ược
xây dựng cho các hệ thống mạng với máy tính là chủ (Master) và thiết bị là tớ (Slaver).
Kịch bản ối thoại xây dựng các bộ câu hỏi và câu trả lời cho các trường hợp cụ thể khác
nhau, ể hệ thống thực hiện các phép xử lý tương ứng, ả, bảo việc kết nối giữa Master và
các Slaver sao cho không xảy ra các trường hợp: mất tin, thừa tin, treo hệ thống, hỏi áp
quẩn …, hay xác ịnh hư hỏng tại các slaver.
Hình 2.6 mô tả một kịch bản ối thoại giữa Master và một Slaver. Master ưa ra câu
lệnh hỏi kết thúc câu hỏi chưa (ENQ), Slaver có thể trả lời khác nhau như: ACK – chấp
nhận kết thúc câu hỏi theo yêu cầu từ Master. NAK – không chấp nhận yêu cầu từ lOMoARcPSD| 10435767
Master, khi ó có thể Master tiếp tục chờ câu hỏi từ Slaver. Hoặc Slaver không trả lời
(nothing), khi ó có thể slaver ang bận hoặc bị hư hỏng, Master có thể ịnh thời gian chờ
(time out) ể chuyển qua thực hiện công việc khác hoặc thông báo hư hỏng slaver cho người sử dụng. Hình 2.6: M
ột kịch bản ối thoại giữa Master và Slaver
2.2 LỆNH ĐIỀU KHIỂN VÀO RA
2.2.1 Bản ồ vào ra - I/O Mapping
Trong hệ thống vi xử lý, CPU sử dụng bus ịa chỉ ể xác ịnh vị trí bộ nhớ hay vào ra
sẽ mà nó muốn truy cập. Một trạng thái mà CPU cung cấp ra bus ịa chỉ sẽ xác ịnh tới
một vi trí duy nhất trong hệ thống. Bus ịa chỉ ược sử dụng chung cho cả bộ nhớ và vào
ra của hệ thống, nên thông thường CPU có thêm một tín hiệu iều khiển ngõ ra ể chọn bộ
nhớ hoặc vào ra. Ví dụ trong hệ thống CPU 8088 có 20 ường ịa chỉ, nếu
CPU cấp 20 bit 0 ra trên các ường dây này và tín hiệu IO/M ở mức 0, CPU sẽ truy cập
ô nhớ 0, còn nếu tín hiệu IO/M ở mức 1, CPU sẽ truy cập vào ra có ịa chỉ 0. lOMoARcPSD| 10435767
Hình 2.7: Giải mã bộ nhớ trong hệ thống 8088
Phần cứng giải mã ịa chỉ phải ảm bảo sao cho ô nhớ hoặc cổng vào ra ược cho phép
hoạt ộng ể truyền dữ liệu với CPU. Do ó, trong các hệ thống không sử dụng hết không
gian ịa chỉ bộ nhớ, ể không phải thực hiện mạch giải mã vào ra, người sử dụng có thể sử
dụng tín hiệu cho phép bộ nhớ ể cho phép cổng vào ra, và khi ó vào ra có thể truy cập
bình thường bằng các lệnh ọc ghi bộ nhớ.
Hình 2.7 mô tả việc giải mã kết nối với bộ nhớ trong hệ thống 8088. Trong hệ thống
này, các ường dữ liệu ược nối từ CPU tới tất cả các vi mạch nhớ. Các ường A17 – A0 của
bus ịa chỉ cũng nối từ CPU tới tất cả các vhi mạch nhớ. Các ịa chỉ A19 và A18 nối tới
bốn cổng NAND, ể tương ứng với một trạng thái của hai ường này sẽ có một trong bốn
ngõ vào CS của bốn vi mạch nhớ ở mức thấp, vi mạch ó sẽ hoạt ộng, còn ba bộ nhớ còn
lại sẽ ở trạng thái không ược chọn. Khi vi mạch nhớ nào có CS = 0, nó sẽ hoạt ộng, các
ịa chỉ A17 – A0 sẽ xác ịnh một ô nhớ duy nhất trong nó.
Hình 2.8 mô tả việc giải mã chọn một cổng ra cơ bản iều khiển các LED ơn. Bus dữ
liệu của CPU sẽ ược nối tới bộ ệm số 74LS245, và dữ liệu sẽ ược chuyển từ bus ra LED
khi ngõ vào cho phép (E – Enable) của bộ ệm tác ộng mức thấp. Các tín hiệu A15 – A0
và IOW ược nối tới cổng NAND ể cho phép cổng ệm. Khi A15 – A12 = 1111, A11 – A0 =
0 …0 và IOW = 0 cổng ệm sẽ ược mở, có nghĩa là ây sẽ là một cổng ra có ịa chỉ bằng lOMoARcPSD| 10435767
F000H. Như vậy, bằng cách giải mã ịa chỉ tương tự có thể thực hiện ược nhiều cổng vào
ra với ịa chỉ khác nhau.
Hình 2.8: Giải mã cổng ra cơ bản trong hệ thống 8088
Do các vào ra có nhu cầu với số lượng giới hạn hơn so với bộ nhớ, nên khi truy cập
vào ra một số ịa chỉ sẽ không sử dụng mà luôn có giá trị bằng 0. Như trong hệ thống
8088, khi sử dụng các lệnh vào ra, CPU chỉ cung cấp các ịa chỉ A15 – A0, các ịa chỉ A19
– A16 luôn có giá trị bằng 0. Tuy nhiên, ịa chỉ F000H của cổng vào ra trên hình
2.8 sẽ không trùng với ô nhớ 0F000H, vì ể mở cổng ra này IOW phải có giá trị bằng 0,
trong khi ó MEMRD, và MEMWR bằng 1. Còn khi truy cập ô nhớ 0F000H thì MEMRD
hoặc MEMWR sẽ bằng 0, trong khi IOW bằng 1.
Ngoài ra nếu trên sơ ồ hình 2.7, nếu bộ nhớ số 4 không sử dụng, tín hiệu cho phép
bộ nhớ này cũng có thể sử dụng cho phép cổng vào ra trong sơ ồ 2.7. Khi ó, bất cứ ịa
chỉ nào có hai bit A19A18 = 11 ều cho phép cổng vào ra này, tuy nhiên muốn truy cập
vào ra này cần phải sử dụng các lệnh truy cập bộ nhớ.
Hình 2.9 mô tả bản ồ bộ nhớ và vào ra trong một hệ thống vi xử lý, không gian ịa
chỉ bộ nhớ và vào ra có thể chung nhau (hình 2.9a), và có thể sử dụng riêng (hình 2.9b).
2.2.2 Lệnh truy cập vào ra
Các họ vi xử lý khác nhau sẽ có tập lệnh khác nhau, vì thế chúng cũng có các lệnh
truy cập bộ nhớ và vào ra khác nhau. Các máy tính cá nhân thương mại phổ biến trên lOMoARcPSD| 10435767
thế giới, sử dụng các bộ vi xử lý họ Intel, do tính tương thích giữa các thế hệ máy tính,
nên chúng sử dụng các lệnh ọc lệnh ọc ghi bộ nhớ và vào ra giống nhau.
Các bộ vi xử lý Intel sử dụng lệnh MOV (move) ể di chuyển dữ liệu giữa các thanh
ghi bên trong CPU và các ô nhớ bên ngoài. Lệnh khi ọc dữ liệu từ bộ nhớ lênh MOV
ược việt với cú pháp như sau: MOV REG,MEM_ADDRESS
Trong ó REG là tên thanh ghi bên trong CPU, còn MEM_ADDRESS là ịa chỉ của ô
nhớ. Địa chỉ ô nhớ có thể cung cấp theo nhiều cách khác nhau tuỳ theo chế ộ ịa chỉ cụ
thể. Nó có thể là một giá trị trực tiếp, có thể chứa trong một thanh ghi ịa chỉ, hay ược tính toán theo một quy ịnh trước. ( a) (b)
Hình 2.9: Bản ồ bộ nhớ và vào ra trong hệ thống vi xử lý
Khi thực hiện lệnh, ịa chỉ trong lệnh ược CPU cung cấp ra bus ịa chỉ kèm theo tín
hiệu ọc bộ nhớ MEMR, dữ liệu sẽ ược ược bộ nhớ cung cấp ra bus dữ liệu và lấy vào
thanh ghi của CPU. Nếu có cổng vào ược mở khi CPU cung cấp ịa chỉ bộ nhớ, cổng sẽ
cấp dữ liệu vào bus và lấy vào thanh ghi nên trong CPU. Như vậy CPU không phân
biết việc lấy dữ liệu là từ bộ nhớ hay vào ra, việc xử lý dữ liệu lấy vào như thế nào là
do chương trình người sử dụng quyết ịnh.
Tương tự, lệnh ghi bộ nhớ sẽ viết: MOV MEM_ADDRESS,REG
Địa chỉ trong lệnh cũng ược cung cấp ra bus ịa chỉ xác ịnh tới ô nhớ cần ghi kèm theo
tín hiệu iều khiển ghi bộ nhớ MEMW, dữ liệu trong thanh ghi ược cung cấp ra bus dữ
liệu và sẽ ược ghi vào trong ô nhớ ã ược chỉ ịnh. Và nếu các ịa chỉ do CPU cung cấp ược
giải mã ể mở cổng vào ra, thì dữ liệu sẽ ược truyền qua cổng vào ra ể cung cấp cho thiết bị.
Như vậy, các cổng vào ra có thể truy cập bằng cách lệnh ọc ghi bộ nhớ trong vùng ịa
chỉ bộ nhớ kết hợp với việc giải mã ịa chỉ phần cứng. Để truy cập tốt hơn các CPU sẽ sử lOMoARcPSD| 10435767
dụng các lệnh vào ra riêng. Đối với các CPU họ Intel, khi ọc dữ liệu từ vào ra có thể sử
dụng lệnh IN (Input) với cú pháp: IN REG,IO_ADDRESS
Theo quy ịnh, ịa chỉ vào ra có thể xác ịnh trực tiếp bằng một giá trị trong lệnh, hoặc
chứa trong thanh ghi DX. Khi sử dụng ịa chỉ trực tiếp, thah ghi chứa dữ liệu phải là
thanh ghi chứa (Acc – Accumulator), còn nếu ịa chỉ cung cấp từ thanh ghi DX thì có thể
sử dụng thanh ghi bất kỳ khác.
Khi thực hiện lệnh IN, ịa chỉ trong lệnh ược cấp ra bus ịa chỉ cùng tín hiệu iều khiển
ọc bộ nhớ IOR. Giải mã phần cứng sẽ cho phép mở cổng vào ể dữ liệu từ thiết bị ngoại
vi cung cấp vào bus dữ liệu và ược lấy vào thanh ghi bên trong CPU. Tương tự như dối
với vào ra, nếu giải mã phần cứng ược thực hiện thích hợp, thì cũng có thể sử dụng lệnh
IN ể ọc dữ liệu từ một ô nhớ.
Muốn ghi dữ liệu tới cổng vào ra CPU thực hiện lệnh OUT (output) với cú pháp: OUT IO_ADRESS,REG
Khi thực hiện lệnh, ịa chỉ trong lệnh cũng ược cung cấp tới bus ịa chỉ kèm theo tín
hiệu ghi vào ra IOW. Giải mã phần cứng sẽ làm cho cổng ra mở ể dữ liệu do CPU cung
cấp từ bus dữ liệu ưa ra ngoài thiết bị ngoại vi.
Bảng 2.1 cung cấp vùng ịa chỉ cụ thể cho các thiết bị vào ra của hệ thống máy tính
cá nhân tương thích IBM PC.
Bảng 2.1: Phần vùng ịa chỉ vào ra trong máy tính cá nhân tương thích IBM - PC Vùng ịa
Thiết bị trong hệ thống chỉ (Hex) 000-00F
Master DMA Controller, iều khiển truy nhập trực tiếp bộ nhớ kếnh 1 – 4, 4 kênh (8 bit) 020-02F
Master PIC 8259A – bộ iều khiển ưu tiên ngắt chính (IRQ0 – IRQ7) 040-05F
PIT, (Programmable Interval Timer)- bộ ịnh thời 060-06F
Keyboard Port – Cổng bàn phím 070-071
Real Time Clock and 64 byte CMOS-RAM: Đồng hồ thời gian thực và RAM CMOS 080-083
DMA Page Register – các thanh ghi giữ ịa chỉ cao của DMA
0A0-0AF PIC #2, Bộ iều khiển ưu tiên ngắt số 2, IRQ8 – IRQ15 0C0-0CF
DMAC #2, Bộ iều khiển DMA số 2 có 3 kênh DRQ 16 bit 0E0-0EF Reserved – dự phòng 110-16F
AVAILABLE – sẵn sàng sử dụng 2F0-2F7 Reserved – dự phòng 2F8-2FF
Serial Port COM2 – cổng nối tiếp COM2 lOMoARcPSD| 10435767 300-31F
Prototype Adapter – vùng ịa chỉ cho người sử dụng phát triển 320-32F
AVAILABLE – sẵn sàng sử dụng 340-35F
AVAILABLE – sẵn sàng sử dụng 360-36F
Network, LAN adaptor – card mạng nội bộ 370-377
Floppy Disk Controller – ĩa mềm 378-37F
Parallel Port 1, LPT1 – Cổng máy in số 1 380-38F SDLC Adapter 390-39F Cluster Adapter
3A0-3AF Reserved – dự phòng 3B0-3BF
Monochrome Adapter – ịa chỉ màn hình mono
3BC-3BF Parallel Port 3 – Cổng máy in số 3 3C0-3CF
EGA/VGA – card màn hình màu loại EGA/VGA
3D0-3DF Color Graphics Adapter – Các màn hình ồ hoạ màu 3E8-3EF
Serial Port COM3 – cổng nối tiếp số 3 3F0-3F7
Floppy Disk Controller – Bộ iều khiển ĩa mềm 3F8-3FF
Serial Port COM1 – cổng nối tiếp số 1 220-22F
Soundblaster cards – ịa chỉ thường sử dụng cho các card âm thanh 300-31F
Data acquisition cards – Địa chỉ thường sử dụng cho các card thu thập dữ liệu