Thiết bị ngoại vi và kỹ thuật ghép nối
Chương I. TỔNG QUAN VỀ NỐI GHÉP NGOẠI VI
Nội dung
− Nhắc lại và bổ xung các kiến thức về kiến trúc máy tính
− Nhiệm vụ của nối ghép ngoại vi
.I Cấu trúc của hệ thống máy tính
Cấu trúc chung của một hệ thống máy tính như sau:
.1 Central Sub System - CS:
.a CPU: Central Processing Unit:
− Khái niệm: Là bộ điều khiển trung tâm, thực hiện công việc được giao đặt trong
bộ nhớ chương trình bằng cách thực hiện các phép xử lý lên các biến nhị phân và
điều khiển thiết bị ngoại vi.
− Công việc bao gồm:
Tìm lệnh, giải mã lệnh, [tìm toán hạng, xử lý và cất kết quả],
In/Out với các port kiểu Interrupt và DMA để điều khiển thiết bị ngoại vi.
− Đặc trưng - Specifications:
Kích thước toán hạng (bit): 4, 8, 12 , 16, 32, 64
1
Thiết bị ngoại vi và kỹ thuật ghép nối
Tốc độ xử lý: Mips, clock multiplier,
Kiến trúc: RISC vs CISC, DSP, Micro Controller
Pinning/Signalling (Data/Address - Mux, Control bus, IRQ, HRQ,
RD/WR ),
Register set,
Instruction set - Addressing Modes,
Power: Slow/ sleep/ power down modes
…
.b Memories
Memories (Semiconductor), ROM
− Khái niệm:
Lưu thông tin (ch/tr và số liệu) dạng nhị phân,
Dùng trong các hệ có dung lượng nhớ lớn: máy tính, máy chủ
Memories (Semiconductor): FLASH & Others
− Flash memory:
EAROM typed, đưọc đợc, xoá từng bank, ghi lại được từng byte. Thông
tin lưu được 20 năm, dùng nhiều hiện nay và tương lai: BIOS, diskchip
Serial EAROM/FLASH: dùng để lưu configuration, dùng bus I2C
(Philips). Ví dụ ứng dụng : thẻ vi mạch, TV,
Memories (Semiconductor): Logically:
Bộ nhớ chứa thông tin gì?
− Program memory:
Chứa ch/tr đang được thực hiện
− Data memory:
Các biến ngẫu nhiên,
Biến có cấu trúc,
Số liệu có kiểu truy nhập đặc biệt FIFO, LIFO (Stack memory).
.c Controllers
Vi mạch, nâng hiệu năng (performance) hệ thống, bao gồm:
− Bộ điều khiển ưu tiên ngắt PIC - Priority Interrupt Controller, Intel 8 259A
− Bộ điều khiển truy nhập trực tiếp bộ nhớ DMAC - Direct memory Access
Controller, Intel 8237A. Timer: mạch tạo các khoảng thời gian, PIT-
Programmable Interval Timer, Intel 8254 .
3
Thiết bị ngoại vi và kỹ thuật ghép nối
− Mạch quản trị nhớ: MMU- Memory Management Unit, sau này, thường đợc built
on chip với CPU.
− Bus controller/Arbitor
− …
.d Bus System
− PCB (Printed Circuit Board)/ Cable (Twisted pairs, flat ), slot, connector • Nối
hơn 1 slave device, time sharing
4
Thiết bị ngoại vi và kỹ thuật ghép nối
− -12 V
±
10%, 1Amp, (nh trên), BlueWire.
− - 5 V
±
5%, 0.5 Amp, analog circuitries, WhiteWire.
− Power good: OrangeWire.
Nguồn thông minh: AXT
.II Thiết bị ngoại vi
Các thiết bị ngoại vi nói chung đều được kết nối với hệ thống thông qua bộ ghép nối
(BGN) hay còn gọ là các Controller.
Ngoài các thiết bị ngoại vi thông dụng, chúng ta còn có thể kết nối với các hệ thống
điều khiển khác như: Hệ thống đo nhiệt độ, áp xuất, điện áp … thông qua các cổng giao
tiếp.
.1 Phân loại thiết bị ngoại vi
.a Các thiết bị giao tiếp (Communication devices)
Các thiết bị nhập dữ liệu (Data Input Devices)
− Key board/ Key pad, Touch SCR: số phím, công nghệ phím, kiểu dò phím, output
code, ghép nối CS
− Mouse, track ball
− Scanner, Camera, Camcoder: Colors, resolution, f, công nghệ CCD - Charge
Couple Device, graphics, file bmp
− Digitizer, nhập graphics file vector - bản đồ
− Light Pen, Joy stick (Games)
− Demodulator (MODEM): Kiểu điều chế, tốc độ bps, kiểu nén
− Microphone,
− Barcode reader: máy đọc mã vạch Laser/ LED,
− Sensor, Transducers, Transmitters: Vật liệu, thiết bị, độ nhậy, độ tuyến tính, dải
.a Tại sao cần giao diện ghép nối:
Vì có sự khác nhau về: Tín hiệu (dòng, áp), tốc độ làm việc/tốc độ trao đổi số liệu,
không đồng bộ giữ hệ thống máy tính và thiết bị ngoại vi
Do đó ta cần có mạch điện tử để thích ứng hoá (Adapting) và cấn có chương trình điều
khiển các thiết bị phần cứng đó (Hardware Circuitries), còn được gọi là Adaptors:
Input/Output Ports: (Parallel/Serial): ghep nối với Computerized devices
(KB, Printer, Mouse, Scanner, Modem )
6
Thiết bị ngoại vi và kỹ thuật ghép nối
Controllers: để ghép nối với những thiết bị chuyên dùng FDC, HDC (IDE,
EIDE), CRTC (EGA, VGA, SVGA )
Converter: để chuyển đổi tín hiệu số thành tương tự và ngược lại: ADC,
DAC
.b Chương trình điều khiển thiết bị - Device Driver:
Để liên kết chương trình chạy trên hệ thống và phần cứng điều khiển vào ra (SPIs và
APIs). Các hàm của thiết bị, BIOS, OS hoặc theo ứng dụng: SLLs, DLLs, DRVs,
.III Ghép nối các thiết bị ngoại vi
Đối với các máy tính thế hệ cũ (thế hệ thứ nhất và thứ hai), CPU phải trực tiếp điều
khiển việc trao đổi dữ liệu của các thiết bị ngoại vi.
Bắt đầu từ máy tính thế hệ thứ 3 thì CPU chỉ phải thực hiện một số công việc còn lại nó
chỉ đóng vai trò tổ chức thực hiện. CPU không còn trực tiếp điều khiển thiết bị ngoại vi
nữa mà thay vào đó nó điều khiển một module gọi là module điều khiển vào ra
(Controll Devices - CD) hay còn gọi là controller còn việc điều khiển các thiết bị ngoại
vi là nhiệm vụ của các module điều khiển vào ra. Một module điều khiển vào ra có thể
điều khiển được nhiều thiết bị ngoại vi. Để hiểu thêm về Controll Devices có thể tìm
hiểu thêm về DMAC - Direct Memory Access Controller.
.1 Nhiệm vụ của bộ ghép nối
.a Phối hợp về mức và công xuất tín hiệu
− Mức tín hiệu của máy vi tính thường là 0v hoặc 5v trong khi mức của thiết bị
ngoại vi có mức điện thoại (
1: CPU gửi các tham số cho module khiển thiết bị.
2: CPU gửi mã lệnh cho module điều khiển thiết bị (read/ write…)
− Giải thuật
i = 0;
do {
write_reg(opcode, read);
while (busy_flag == true) {…};
mm_in_area[i] = data_buffer;
increment i;
compute;
} while (…)
.b Vào ra bằng chương trình có sử dụng ngắt (Programmed I/O Interrupts)
− CPU chịu trách nhiệm các công việc sau:
8
Thiết bị ngoại vi và kỹ thuật ghép nối
moving characters to/from controller buffer, but
Interrupt informs CPU when I/O op completes
− Hình vẽ dưới đây mô tả giao thức để nhập một ký tự:
Programmed I/O Interrupts
1: CPU gửi các tham số cho module khiển thiết bị.
2: CPU gửi mã lệnh cho module điều khiển thiết bị (read/ write…). Sau đó
CPU có thể xử lý các công việc khác.
.
− Giải thuật
Compare Polling with Interrupts:
Polling Interrupts
i = 0;
do { write_reg(opcode, read);
while (busy_flag == true) {…};
.2 Mạch OR
− SN7432
Bảng trạng thái
A B Y
0 0 0
1 0 1
0 1 1
1 1 1
.3 Mạch NOT
− SN7404
− SN7405
− SN7406
Bảng trạng thái
A Y
0 1
1 0
11
Thiết bị ngoại vi và kỹ thuật ghép nối
.4 Mạch NAND
− SN7400
− SN7401
− SN7403
Bảng trạng thái
A B Y
0 0 1
1 0 1
0 1 1
Thiết bị ngoại vi và kỹ thuật ghép nối
Bảng trạng thái
C(G) A Y
0 x
∞
Z
1 0 0
1 1 1
∞
Z
: Trạng thái trở
kháng cao
13
Thiết bị ngoại vi và kỹ thuật ghép nối
GIAO THỨC GHÉP NỐI
.I Giao trức ghép nối (Interface Protocols)
− Khái niệm: Là các qui định về
Tín hiệu (Signals)
Định dạng dữ liệu (Data format )
Tốc độ (Rate)
Phát hiện và sửa lỗi (Error detection & correction)
Lệnh và tập kết quả thực hiện lệnh (Command & Response set)
Kịch bản (Scenario)
.1 Signals:
Khi thiết kế, xây dựng ghép nối máy tính, cần chú ý đặc biệt tới tín hiệu theo các yêu
cầu:
− Có dùng bus hay không?
− Truyền dữ liệu tuần tự hay song song
− Môi trường, đường truyền (cáp đồng, quang, wireless (radio, infrared)…)
− Hiện tượng ngẽn cổ trai (Bottle-neck)
− Khoảng cách, tích số k/c và tốc độ => Song song (Word/ Byte/ nibble)/ nối tiếp
(bit)
− Truyền đồng bộ hay bất đồng bộ (Synchronous/Asynchronous)?
− Điều chế và giải điều chế (Modulation/Demodulation)
Ví dụ:
LPT: SPP mode: 50 100kBps - software, ECP: 2 4 MBps - DMA
LAN Ethernet - IEEE 802.3: 10/100 Mbps dual spee
RS232: 2400/ 4800/ 9600/ 19200 bps
.3 Kiểm tra, sửa lỗi, nâng cao độ tin cậy
Khi trao đổi thông tin thường hay gây ra lỗi, đặc biệt truyền với khoảng cách xa hoặc
phải chuyển đổi loại tín hiệu. Nhiều phương pháp bằng cả phần cứng lẫn phần mềm hỗ
trợ để kiểm tra và sửa lỗi:
− [Block] check sum - BCC, phần mềm,
− CRC, ECC, vi mạch/ software - subroutine
− Parity, 1 hoặc 2 chiều
− Redundancy (RAID), thừa dl, trao đổi nội dung số liệu hơn 1 lần và so sánh.
15
Thiết bị ngoại vi và kỹ thuật ghép nối
.4 Command & Response (Result/Reaction) set
Intelligent Devices (Computerized devices - mouse, KB, Printer, modem, FDC, HDC,
RTU ) có nhiều tham số, chế độ hoạt động => xây dựng bộ lệnh (command set) và
thông tin trả về (response set).
Dùng phần mềm để xử lý => bớt tín hiệu.
o Tập hợp các yêu cầu từ CS - command set,
o Tập hợp các trả lời, trạng thái - result/response/ reaction set.
Các câu lệnh và trả lời có syntax riêng (cấu trúc và ngữ pháp).
Case Studies: lệnh AT và Response Hayes MODEMs:
Lệnh: ATDT 1260 ' Với nhiều Options
Trao đổi dữ liệu nối tiếp là trao đổi từng bít trên một đường dây duy nhất. Do đó ít tốn
kém cho việc chi phí đường truyền nhưng tốc độ trao đổi thường chậm. Khi một bộ vi
xử lý giao tiếp với thiết bị ngoại vi thì nó cấp dữ liệu dưới dạng từng 8,16… bít một.
Trong một số trường hợp chẳng hạn như các máy in thì thông tin đơn giản được lấy từ
đường bus dữ liệu 8 bít và được gửi đi tới bus dữ liệu 8 bít của máy in. Điều này có thể
làm được chỉ khi đường cáp bus không quá dài vì các đường cáp dài làm suy giảm thậm
chí làm sai lệch tín hiệu. Ngoài ra, đường dữ liệu 8 bít giá thường đắt. Vì những lý do
này, việc truyền thông nối tiếp được dùng để truyền dữ liệu giữa hai hệ thống ở cách xa
nhau. Hãy so sánh hai kiểu truyền nối tiếp và song song
Ta dùng phương pháp trao đổi dữ liệu tuần tự này khi:
− Thiết bị phát (nhận) dữ liệu từng bít.
− Khoảng cách truyền lớn (hàng ngàn km) do vậy việ sử dụng nhiều đường dây cho
việc trao đổi dữ liệu song song là rất tốn kém. Người ta có thể truyền dữ liệu kiểu
này thông qua bộ điều chế và giải điều chế (Modem).
Điều khiển nối tiếp này có hai kiểu truyền dữ liệu
− Truyền dữ liệu đồng bộ (Tốc độ truyền nhanh)
− Truyền dữ liệu không đồng bộ (Tốc độ truyền chậm)
.1 Trao đổi dữ liệu đồng bộ
Dữ liệu được truyền 1 lần gồm 1 khối nhiều byte được bắt đầu và kết thúc bằng ký tự
SYNC (Mã ASCII là 16). Mối khối có thể chứa 1 byte cho đến hàng trăm Kbyte.
…. SYNC …… Dữ liệu … SYNC ….
Để truyền được dữ liệu cần có sự đồng bộ về tốc độ của máy phát và máy thu tránh
trường hợp máy thu chưa kịp nhận dữ liệu cũ thì máy phát đã truyền đi dữ liệu mới. Có
hai cách để đồng bộ:
18
Sender Receiver
Serial Transfer
Sender Receiver
Parallel Transfer
Thiết bị ngoại vi và kỹ thuật ghép nối
bit
1
1
Start
bit
Parity
bit
Mark
Space
D0D6
Thiết bị ngoại vi và kỹ thuật ghép nối
bít thì ngay nay do việc mở rộng các ký tự ASCII nên dữ liệu nhìn chung là 8 bít. Trong
các hệ cũ hơn do tốc độ chậm của các thiết bị thu thì phải sử dụng hai bít dừng để đảm
bảo thời gian tổ chức truyền byte kế tiếp. Tuy nhiên, trong các máy tính PC hiện tại chỉ
sử dụng 1 bít stop như là chuẩn.
Giả sử rằng chúng ta đang truyền một tệp văn bản các ký tự ASCII sử dụng 1 bít stop
thì ta có tổng cộng là 10 bít cho mỗi ký tự gồm: 8 bít cho ký tự ASCII chuẩn và 1 bít
start cùng 1 bít stop. Do vậy, đối với mỗi ký tự 8 bít thì cần thêm 2 bí vị chi là mất 25%
tổng phí.
Trong một số hệ thống để nhằm duy trì tính toàn vẹn của dữ liệu thì người ta còn thêm
một bít lẻ (parity bít). Điều này có nghĩa là đối với mỗi ký tự (7 hoặc 8 bít tuỳ từng hệ)
ta có thêm một bít ngoài các bít start và stop. Bít chẵn lẻ là bít chẵn hoặc bít lẻ. Nếu là
bít lẻ có nghĩa là số bít của dữ liệu bao gồm cả bít chẵn lẻ sẽ là một số lẻ các sô 1.
Tương tự như vậy đối với trường hợp bít chẵn thì số bít của dữ liệu bao gồm cả bít chẵn
- lẻ sẽ là một số chẵn của các số 1. Ví dụ, ký tự “A” của mã ASCII ở dạng nhị phân là
0100 0001, có bít 0 là bít chẵn. Các chíp UART đều cho phép việc lập trình bít chẵn - lẻ
về chẵn, lẻ hoặc không phân biệt chẵn lẻ.
.3 Tốc độ truyền dữ liệu nối tiếp
Tốc độ truyền dữ liệu trong truyền thông dữ liệu nối tiếp được tính bằng số bít trong 1
giây (bps - bít per second). Ngoài ra, còn được sử dụng một thuật ngữ rộng rãi nữa là
Phần này ta sẽ tìm hiểu về truyền tin nối tiếp và lập trình phối ghép với các thiết bị
UART 8250A, bàn phím, màn hình và một công cụ hỗ trợ người lập trình hệ thống trên
windowsRadASM.
.I TRUYỀN THÔNG TIN NỐI TIẾP VỚI BỘ ĐIỀU HỢP UART
Việc truyền thông tin giữa các thành phần nằm gần nhau như các bộ phận của một hệ vi
xử lý đĩa cứng, màn hình, CPU…có thể thực hiện thông qua bus song song mở rộng
hoặc qua các mạch phối ghép song song. Trong đó một nhóm bít (8, 16 , 32 hoặc 64)
được truyền từ bộ phận này sang bộ phận khác trên 1 tập các đường truyền tín hiệu cáp.
Ngược lại, trong trường hợp phải truyền tín hiệu giữa các đối tượng ở xa nhau thì không
thể dùng nhiều dây tín hiệu đồng thời vì lý do kinh tế. Phương thức truyền tin nối tiếp
phù hợp với yêu cầu thực tế này. Trong phương thức truyền tin nối tiếp thì ở đầu phát,
dữ liệu dưới dạng song song được chuyển thành dữ liệu dạng nối tiếp, tín hiệu nối tiếp
sau đó được truyền đi liên tiếp theo từng bít trên một đường dây đến đầu thu. Tại đầu
thu, tín hiệu nối tiếp sẽ được biến đổi ngược lại thành dạng song song để truyền cho các
thành phần đứng gần nhau.
.1 Cơ bản về truyền tin nối tiếp
Có hai kiểu truyền thông nối tiếp: đồng bộ và không đồng bộ (dị bộ). Trong phương
thức đồng bộ thì dữ liệu được truyền đi theo từng bản tin (một đoạn văn bản) với một
tốc độ xác định. Tuỳ theo giao thức truyền thông mà mỗi bản tin truyền đi có các cấu
trúc khác nhau. Chẳng hạn, nếu dùng giao thức truyền thông tin hệ 2 đồng bộ
(BISYNC: Binary Synchronous Communication Protocol) thì cấu trúc một bản tin như
sau:
SYN SYN SOH HEADE
R
STX TEXT ETX BCC
Kí tự
đồng
bộ
Kí tự
đồng
(frame) theo phương pháp không đồng bộ.
Start D0 D1 D2 D3 D4 D5 D6 Parit
y
Stop Stop
Mã ký tự cần truyền
Tuỳ theo loại mã ta sử dụng để mã hoá kí tự (baudot, ASCII, EBCDIC) mà độ dài cho
mã kí tự có thể là 5,6,7,8 bit. Tuỳ theo hệ thống truyền tin, bên cạch các bít mã dữ liệu
còn có thể có bit parity dùng để kiểm tra lỗi khi truyền.
Việc truyền tin không đồng bộ được thực hiện nhờ một UART (Universal
Asynchronous Receiver Transmitter) ở đầu phát và một UART ở đầu thu. Khi có kí tự
phát, mạch 8251A sẽ tạo ra khung cho kí tự bằng cách thêm vào các bít start, parity và
stop, rồi gửi liên tiếp từng bít ra đường truyền. Bên phía thu, một mạch 8251A khác sẽ
nhận kí tự, tháo bỏ khung truyền, kiểm tra parity, rồi chuyển sang dạng song song để
CPU đọc.
.2 Các thanh ghi của UART 8250A/16450
Mạch 8250A là một mạch thu phát dị bộ vạn năng (UART) được sử dụng rất phổ biến
để phối ghép với cổng thông tin nối tiếp như cổng COM theo chuẩn RS 232C. Dưới đây
ta tìm hiểu về các thanh ghi bên trong của UART 8250A.
Dưới đây là bảng liệt kê tổ hợp chân tín hiệu có thể chọn ra các thanh ghi bên trong của
UART 8250A.
DLA A2 A1 A0 Chọn ra các thanh ghi
0 0 0 0 Thanh ghi đệm thu (RBR), thanh ghi giữ phát (THR)
0 0 0 1 Thanh ghi cho phép tạo yêu cầu ngắt (IER)
1 0 0 0 Thanh ghi cho số chia phần thấp (LSB)
1 0 0 1 Thanh ghi cho số chia phần cao (MSB)
X 0 1 0 Thanh ghi nhận dạng nguồn gốc yêu cầu ngắt (HR)
X 0 1 1 Thanh ghi điều khiển đường truyền (LCR)
X 1 0 0 Thanh ghi điều khiển modem (MCR)
X 1 0 1 Thanh ghi trạng thái đường dây (LSR)
X 1 1 0 Thanh ghi trạng thái modem (MSR)
Giả sử chúng ta muốn truyền dữ liệu ở tốc độ 2400 bps. Ta nhận thấy rằng
115200/48=2400. 48 ở đây được gọi là hệ số chia. 48 sẽ được lưu trong hai thanh ghi.
Hai thanh ghi này lại được điều khiển bởi DLAB bít (Divisor Latch Access Bit). Hệ số
chia này được lưu trữ bởi 16 bít (có giá trị từ 0 đến 65535). Bus địa chỉ của UART lại
chỉ có độ rộng 8, như vậy sẽ có hai thanh ghi được sử dụng để lưu trữ hệ số chia này
(mỗi thanh ghi 8 bít). Thanh ghi đầu tiên có địa chỉ Base + 0 (khi DLAB = 1) chứa phần
bít thấp của hệ số chia ("Divisor latch low byte"). Thanh ghi thứ hai có địa chỉ Base + 1
( khi DLAB = 1) chứa phần bít cao của hệ số chia ("Divisor latch high byte").
Thanh ghi điều khiển đường truyền (Line Control Register)
Thanh ghi này còn có tên khác là thanh ghi định khuôn dạng dữ liệu vì nó quyết định
khuôn dạng dữ liệu trên đường truyền. Cấu trúc của thanh ghi LCR được biểu diên như
sau:
D7 D6 D5 D4 D3 D2 D1 D0
DLAB SBCB SP EPS PEN STB WLS1 WLS1
− Bít D7 (DLAB): Bit truy nhập số chia
24
Thiết bị ngoại vi và kỹ thuật ghép nối
1: truy nhập số chia
0: truy nhập IER,THR và RBR
− Bít D6 (SBCB): Bit điều khiển gián đoạn
1: buộc Sout =0
0: không hoạt động
− Bít D5 (SP): Đảo parity
1: parity chẵn
0: không hoạt động
− Bít D4 (ESP): chọn tạo/kiểm tra parity chẵn
1: parity chẵn
0: parity lẻ
− Bít D3 (PEN): cho phép tạo/kiểm tra parity
1: cho phép