Tải bản đầy đủ (.pdf) (12 trang)

Chuong 2 giao thuc ghep noi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (399.47 KB, 12 trang )

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.
21


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ị
22



khuếch đại 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 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ư:

23


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

Making
làm dấu

Start bit

Các bit dữ liệu được lập Bit chăn
Stop bit
lẻ
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, 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.
24


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 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.

25


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.
- 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ẽ
26


-

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ừ 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.
27


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.
A17
:

A0
D7
:

D0
RD
WR
A19
A18

CS

A17

A17

:

A0
D7

:

D0
MEMR
MEMW

8088
Minimum
Mode

256KB
#4

:

A0
D7
:

D0
RD
WR

256KB
#3

CS
A17
:


A0
D7
:

D0
RD
WR

256KB
#2

CS
A17
:

A0
D7
:

D0
RD
WR

256KB
#1

CS

Hình 2.7: Giải mã bộ nhớ trong hệ thống 8088


28


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 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ỉ
29



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
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
30


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ử 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
31


080-083
0A0-0AF
0C0-0CF
0E0-0EF
110-16F

2F0-2F7
2F8-2FF
300-31F
320-32F
340-35F
360-36F
370-377
378-37F
380-38F
390-39F
3A0-3AF
3B0-3BF
3BC-3BF
3C0-3CF
3D0-3DF
3E8-3EF
3F0-3F7
3F8-3FF
220-22F
300-31F

DMA Page Register – các thanh ghi giữ địa chỉ cao của DMA
PIC #2, Bộ điều khiển ưu tiên ngắt số 2, IRQ8 – IRQ15
DMAC #2, Bộ điều khiển DMA số 2 có 3 kênh DRQ 16 bit
Reserved – dự phòng
AVAILABLE – sẵn sàng sử dụng
Reserved – dự phòng
Serial Port COM2 – cổng nối tiếp COM2
Prototype Adapter – vùng địa chỉ cho người sử dụng phát triển
AVAILABLE – sẵn sàng sử dụng

AVAILABLE – sẵn sàng sử dụng
Network, LAN adaptor – card mạng nội bộ
Floppy Disk Controller – đĩa mềm
Parallel Port 1, LPT1 – Cổng máy in số 1
SDLC Adapter
Cluster Adapter
Reserved – dự phòng
Monochrome Adapter – địa chỉ màn hình mono
Parallel Port 3 – Cổng máy in số 3
EGA/VGA – card màn hình màu loại EGA/VGA
Color Graphics Adapter – Các màn hình đồ hoạ màu
Serial Port COM3 – cổng nối tiếp số 3
Floppy Disk Controller – Bộ điều khiển đĩa mềm
Serial Port COM1 – cổng nối tiếp số 1
Soundblaster cards – địa chỉ thường sử dụng cho các card âm thanh
Data acquisition cards – Địa chỉ thường sử dụng cho các card thu thập dữ
liệu

32



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×