Để 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.. Phần mềm trong
Trang 1CHƯƠ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ị
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
Hình 2.1: Quá trình biến đổi tín hiệu vào hệ thống vi xử lý
Trang 2Khi 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
Đố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ị
Hình 2.2: Quá trình biến đổi tín hiệu ra hệ thống vi xử lý
Trang 3khuế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
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ư:
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
Trang 4thiế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 …
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
TxD
Stop bit Start bit Các bit dữ liệu được lập
trình trước
Bit chăn lẻ
Making làm dấu
Hình 2.4: Khung truyền dữ liệu theo chuẩn RS232
Trang 5Khi 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)
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
Hình 2.5: Gói dữ liệu theo chuẩn USB
Trang 6- 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ẽ
Trang 7thự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
Trang 8
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
Hình 2.6: Một kịch bản đối thoại giữa Master và Slaver
8088 Minimum Mode
A17 A0
:
D7 D0
:
MEMR MEMW
A18
256KB
#3
A17 A0
:
D7 D0
:
RD WR CS A19
256KB
#2
A17 A0
:
D7 D0
:
RD WR CS
256KB
#1
A17 A0
:
D7 D0
:
RD WR CS
256KB
#4
A17 A0
:
D7 D0
:
RD WR CS
Hình 2.7: Giải mã bộ nhớ trong hệ thống 8088
Trang 9Phầ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
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ỉ
Hình 2.8: Giải mã cổng ra cơ bản trong hệ thống 8088
Trang 10A19 – 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
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
Hình 2.9: Bản đồ bộ nhớ và vào ra trong hệ thống vi xử lý