Bài giảng Truyền thông dữ liệu - Chương 3: Thực hiện đồng bộ qua kết nối số liệu đưa ra một số khái niệm, đồng bộ số liệu, truyền nối tiếp bất đồng bộ, truyền nối tiếp đồng bộ, lập trình truyền số liệu qua các giao tiếp số liệu.
Trang 1§3 THỰC HIỆN ĐỒNG BỘ QUA KẾT
NỐI SỐ LIỆU
Nguyễn Hồng Sơn
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
Trang 23
Một số khái niệm
dùng tín hiệu số để truyền nhận số liệu giữa
DTE và DCE hay DTE và DTE.
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)
Trang 3Truyề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
Truyền ntbđb: nguyên lý đồng bộ bit
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
Trang 47
Truyền ntbđb: nguyên lý đồng bộ bit
8
Trang 5Truyền ntbđb: thực hiện đồng bộ ký tự
máy phát.
theo định dạng ký tự đã được lập trình để
tách ký tự.
Trang 611
Truyền ntbđb: đồng bộ frame
STX
ETX
DLE
ký tự điều khiển giúp máy thu đồng bộ
frame
12
DLE
Trang 7Truyề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
Truyền ntđb: Mã hóa tín hiệu ck
vào Data
Trang 815
Các phương pháp
mã hóa ck vào data
16
Truyền ntđb: Dùng cơ chế DPLL
Trang 1019
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
Trang 11Mã hóa đường dây (line coding)
các mã hóa bit phục vụ cơ chế đồng bộ bit.
trường hợp áp dụng cụ thể
bit số liệu và trạng thái tín hiệu
Trang 1223
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
Trang 13Sơ lược các vi mạch điều khiển
truyền
BoPs
UCCs
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)
Trang 1427
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
Trang 15Các bước thực hiện
data,
Thực hiện như một file
handlePort_ = CreateFile (portName, // Specify port device: default "COM1"
GENERIC_READ | GENERIC_WRITE, // Specify mode that open device
Trang 1631
Thực hiện
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;
}
Trang 17Thực hiện
// 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);
Thực hiện
if (WriteFile(handlePort_, // handle to file to write to
outputData, // pointer to data to write to file
&length,NULL) == 0) // pointer to number of bytes written
{ AfxMessageBox("Khong truyen duoc data.");
return FALSE;
}
Trang 1835
Thực hiện
{ AfxMessageBox("Khong nhan duoc data.");
return FALSE;
}
36
Thực hiện
if (CloseHandle(handlePort_) == 0) // Gọi hàm để đóng port
{ AfxMessageBox("Đong port không thanh.");
return FALSE;
}
1.Tham khảo :http://msdn.microsoft.com/library
2 Janet L Axelson, Serial port complete, second edition, Lakeview Research LLC, Madison WI 53704, 2007
Trang 19Bà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.