Một số khái niệm
Đồng bộ số liệu
Truyền nối tiếp bất đồng bộ
Nguyên lý đồng bộ bit
Thực hiện đồng bộ ký tự
Đồng bộ một frame
Truyền nối tiếp đồng bộ
Cơ sở đạt đồng bộ bit
Cơ sở đạt đồng bộ ký tự/byte và frame
Lập trình truyền số liệu qua các giao tiếp số liệu
Mức thấp
Mức cao
19 trang |
Chia sẻ: thuongdt324 | Lượt xem: 685 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Truyền thông dữ liệu - Bài 3: Thực hiện đồng bộ qua kết nối số liệu - Nguyễn Hồng Sơn, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
11
§3 THỰC HIỆN ĐỒNG BỘ QUA KẾT
NỐI SỐ LIỆU
Nguyễn Hồng Sơn
2
NỘI DUNG
Một số khái niệm
Đồng bộ số liệu
Truyền nối tiếp bất đồng bộ
Nguyên lý đồng bộ bit
Thực hiện đồng bộ ký tự
Đồng bộ một frame
Truyền nối tiếp đồng bộ
Cơ sở đạt đồng bộ bit
Cơ sở đạt đồng bộ ký tự/byte và frame
Lập trình truyền số liệu qua các giao tiếp số liệu
Mức thấp
Mức cao
23
Một số khái niệm
Một kết nối số liệu là một kết nối vật lý
dùng tín hiệu số để truyền nhận số liệu giữa
DTE và DCE hay DTE và DTE.
Đồng bộ
Communication modes
Transmission modes
Bảng mã biểu diễn ký tự
4
Đồng bộ số liệu
Đồng bộ bit
Đồng bộ một nhóm bit (ký tự, byte)
Đồng bộ một khối số liệu chứa nhiều ký tự hay byte
(frame,...)
Hai thiết bị chỉ truyền nhận số liệu thành công trên
liên kết lớp hai khi và chỉ khi chúng đạt đồng bộ số
liệu trên lớp đó.
Đồng bộ số liệu ở lớp hai đạt được nhờ đồng bộ frame
(bao hàm cả đồng bộ bit và ký tự/byte)
35
Truyền nối tiếp bất đồng bộ
Không dựa vào yếu tố đồng bộ thời gian (đồng bộ vật lý).
Tạo cơ chế giúp máy thu nhận thức đúng bit đã truyền.
Nguyên tắc thu thông thường: máy thu lấy mẫu mức tín hiệu
số vào thời điểm thu và dịch thành số liệu, đưa vào thanh ghi
thu
Một bit được truyền trong khoảng thời gian một Tb (thời gian
của một bit). Do sự tác động của các yếu tố môi trường mà
hay bị biến dạng ở hai biên, nên máy thu luôn cố gắng lấy
mẫu ở giữa thời bit.
6
Truyền ntbđb: nguyên lý đồng bộ bit
Một ký tự truyền gồm
Start bit, thường là bit 0, được đặt để truyền
trước.
Data 4,5,6,7 hay 8 bit được truyền kế tiếp.
Một bit kiểm tra, tùy chọn (có hoặc không).
1 hay 1,5 hay 2 stop bit.
Tất cả được đặt trong thanh ghi PISO, chính
là thanh ghi đệm truyền trong UART.
47
Truyền ntbđb: nguyên lý đồng bộ bit
8
59
10
Truyền ntbđb: thực hiện đồng bộ ký tự
Máy thu được lập trình đồng dạng ký tự với
máy phát.
Đạt đồng bộ ký tự bằng cách đếm số bit
theo định dạng ký tự đã được lập trình để
tách ký tự.
Chuyển ký tự vào bộ đệm thu SIPO
611
Truyền ntbđb: đồng bộ frame
Dùng các ký tự điều khiển:
STX
ETX
DLE
Frame chứa nhiều ký tự được gói giữa các
ký tự điều khiển giúp máy thu đồng bộ
frame
12
DLE
713
Truyền nối tiếp đồng bộ: Cơ sở đạt
đồng bộ bit
Dùng đồng hồ (thời gian) để đồng bộ
---->dựa vào đồng bộ vật lý để đạt đồng bộ luận lý.
Tín hiệu đồng hồ được cấp cho cả nguồn và đích
Trong kết nối cự ly ngắn như trong một giao tiếp vật lý giữa
máy tính với thiết bị nối mạng, đường tín hiệu CK cấp tín hiệu
đồng hồ để đồng bộ bit giữa hai thiết bị.
Trong kết nối cự ly xa dùng một trong hai giải pháp chính để
tiết kiệm đường truyền CK:
Mã hóa tín hiệu clock vào Data và truyền đi
Dùng cơ chế DPLL
Cũng có thể kết hợp hai giải pháp chính với nhau
14
Truyền ntđb: Mã hóa tín hiệu ck
vào Data
815
Các phương pháp
mã hóa ck vào data
16
Truyền ntđb: Dùng cơ chế DPLL
917
18
10
19
Các phương pháp mã hóa bit thông thường để
truyền đồng bộ cự ly xa (WAN)
20
Kết hợp cả hai giải pháp
11
21
22
Mã hóa đường dây (line coding)
Bao gồm mã hóa tín hiệu CK vào data và
các mã hóa bit phục vụ cơ chế đồng bộ bit.
Đặc trưng của từng loại mã quyết định
trường hợp áp dụng cụ thể
Phương pháp mã hóa cũng là ánh xạ giữa
bit số liệu và trạng thái tín hiệu
Data digital
12
23
Truyền ntđb: Cơ sở đạt đồng bộ
ký tự và frame_Hướng ký tự
24
Truyền ntđb: Cơ sở đạt đồng bộ
byte và frame_Hướng bit
13
25
Sơ lược các vi mạch điều khiển
truyền
UART, USART
USART
BoPs
UCCs
26
Lập trình truyền số liệu qua các
giao tiếp số liệu: Mức thấp
Phát triển các chương trình điều khiển truyền/nhận data
giữa thiết bị đầu cuối với các thiết bị ngoại vi qua giao tiếp
vật lý.
Các giao tiếp vật lý được thực hiện qua một vi mạch có thể
lập trình, ví dụ 8251, 16550,..., còn gọi là I/O module.
Dùng hợp ngữ (assembly language), khởi động vi mạch,
hiểu và vận dụng các thanh ghi.
Kiến thức liên quan: Vi xử lý, Kiến trúc máy tính
(Programmed I/O)
14
27
Lập trình truyền số liệu qua các
giao tiếp số liệu: Mức cao
Thường phát triển ứng dụng truyền/nhận qua giao tiếp nối
tiếp (serial port).
Phần cứng mức thấp cung cấp các serial port cho lập trình
mức cao.
Trong ứng dụng cần phải lập trình cài đặt serial port để kết
nối với giao tiếp vật lý (I/O module).
Khi đã cài đặt serial port trong chương trình, tiến hành lập
trình truyền data ra hay nhận data vào từ serial port (cổng
luận lý) bằng công cụ truyền/nhận hay đọc/ghi thông thường.
Các IDE đều có thư viện để thực hiện serial port và các công
cụ để thao tác truyền nhận với nó.
28
Lập trình cài đặt serial port trên
Windows
Windows hỗ trợ lập trình qua cổng COM (giao tiếp
EIA-232/V.24), truyền nối tiếp bất đồng bộ.
Hai phương pháp thông thường:
File operation, xem serial port như một file
ActiveX, dùng MSComm
15
29
Các bước thực hiện
1. Mở port
2. Cấu hình port cài đặt baud rate, parity,
data, ...
3. Cài đặt các timeout
4. Truyền data ra port.
5. Nhận data từ port.
6. Đóng port.
30
Thực hiện như một file
1. Mở port: Tạo một port handle
handlePort_ = CreateFile (portName, // Specify port device: default "COM1"
GENERIC_READ | GENERIC_WRITE, // Specify mode that open device.
0, // the devide isn't shared.
NULL, // the object gets a default security.
OPEN_EXISTING, // Specify which action to take on file.
0, // default.
NULL); // default.
16
31
Thực hiện....
2. Cấu hình port
2.1 Lấy cấu hình hiện hành
2.2 Gán thông số
if (GetCommState(handlePort_,&config_) == 0)
{ AfxMessageBox("Port Error");
return FALSE;
}
config_.BaudRate = dcb.BaudRate; // Specify baud rate of communicaiton.
config_.StopBits = dcb.StopBits; // Specify stopbit of communication.
config_.Parity = dcb.Parity; // Specify parity of communication.
config_.ByteSize = dcb.ByteSize; // Specify byte of size of communication.
32
Thực hiện....
2.3 Lưu cấu hình
if (SetCommState(handlePort_,&config_) == 0)
{ AfxMessageBox("Set port error");
return FALSE;
}
17
33
Thực hiện.....
3.Cài đặt các timeout
// instance an object of COMMTIMEOUTS.
COMMTIMEOUTS comTimeOut; // Specify time-out between charactor for receiving.
comTimeOut.ReadIntervalTimeout = 3; // Specify value that is multiplied by the requested number of bytes to be read.
comTimeOut.ReadTotalTimeoutMultiplier = 3; // Specify value is added to the product of the ReadTotalTimeoutMultiplier
//member
comTimeOut.ReadTotalTimeoutConstant = 2; // Specify value that is multiplied by the requested number of bytes to be
//sent.
comTimeOut.WriteTotalTimeoutMultiplier = 3; // Specify value is added to the product of the WriteTotalTimeoutMultiplier
//member
comTimeOut.WriteTotalTimeoutConstant = 2; // set the time-out parameter into device control.
SetCommTimeouts(handlePort_,&comTimeOut);
34
Thực hiện....
Truyền data ra port (ghi file)
if (WriteFile(handlePort_, // handle to file to write to
outputData, // pointer to data to write to file
sizeBuffer, // number of bytes to write
&length,NULL) == 0) // pointer to number of bytes written
{ AfxMessageBox("Khong truyen duoc data.");
return FALSE;
}
18
35
Thực hiện.....
Nhận data từ port (đọc file)
if (ReadFile(handlePort_, // handle of file to read
inputData, // pointer to data to read
sizeBuffer, // number of bytes to read
&length, // pointer to number of bytes read
NULL) == 0) // pointer to structure for data
{ AfxMessageBox("Khong nhan duoc data.");
return FALSE;
}
36
Thực hiện....
Đóng port
if (CloseHandle(handlePort_) == 0) // Gọi hàm để đóng port.
{ AfxMessageBox("Đong port không thanh.");
return FALSE;
}
1.Tham khảo :
2. Janet L. Axelson, Serial port complete, second edition, Lakeview Research LLC, Madison WI 53704, 2007
19
37
Bài tập tự chọn
1.Tìm hiểu MSComm và diễn giải cách thực hiện
truyền/nhận data qua serial port tuân theo các
bước nêu trên.
2. Cài đặt chương trình theo diễn giải ở trên.