Các loại giao tác khối được đặc trưng bởi khả năng bảo đảm phân phát
dữ liệu không có lỗi giữa host và một chức năng bằng cách bắt lỗi và thử lại.
Các giao tác khối sử dụng một giao tác ba pha gồm gói thông báo, gói dữ liệu,
Lê Ngọc Du - Lớp ĐT7 - K46 - ĐHBKHN 30 Gói dữ liệu bị hỏng Đặc tính dừng phía thu Sự phù hợp của bit tuần tự
Chức năng có thể nhận dữ liêu Loại bắt tay
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0
gói bắt tay như được trình bày trong hình 3.10. Trong những điều kiện dừng và điều khiển luồng nào đó thì pha dữ liệu có thể được thay thế bởi pha bắt tay kết
quả là có một giai tác 2 pha và sẽ không có dữ liệu được truyền. Các gói PING và NYET chỉ được sử dụng với các thiết bị tốc độ cao. Hìn h 3.1 0: Kh uôn g dạn g gia o tác khố i
IN. Điểm cuối chức năng đáp ứng lại bằng một gói dữ liệu hoặc sẽ đáp ứng lại
bằng gói bắt tay NAK hay STALL nếu chức năng chưa có khả năng đáp ứng lại
bằng dữ liệu. Gói NAK chỉ ra rằng chức năng tạm thời chưa có khả năng trả về
dữ liệu (ví dụ: chưa có dữ liệu để truyền tới host), trong khi STALL chỉ ra rằng
điểm cuối thường xuyên bị dừng và yêu cầu có sự can thiệp của phần mềm hệ
thống USB. Nếu host nhận được một gói dữ liệu hợp lệ nó sẽ đáp ứng với một
gói bắt tay ACK. Nếu host phát hiện thấy lỗi khi nhận dữ liệu thì nó không đưa
ra đáp ứng tới chức năng.
Khi host sẵn sàng để phát một khối dữ liệu thì ban đầu nó phát ra một
gói thông báo OUT và theo ngay sau là một gói dữ liệu ( ngoài ra ban đâu nó
còn có thể phát một gói thông báo đặc biệt PING). Nếu chức năng nhận dữ liệu
mà không có lỗi thì nó sẽ trả lời bằng một trong ba (hoặc là 4 bao gồm NYET
đối với thiết bị làm việc ở tốc độ cao) gói bắt tay:
• ACK để cho biết gói dữ liệu nhận được không có lỗi và host có thể gửi
gói tiếp theo.
Đồ án tốt nghiệp Sơ lược về chuẩn USB 2.0
• NAK để chỉ ra rằng gói dữ liệu đã nhận không có lỗi nhưng host nên gửi lại dữ liệu vì chức năng đang tạm thời ở trong tình trạng không cho phép nhận dữ liệu (ví dụ như tràn bộ đệm). • Nếu điểm cuối bị dừng thì STALL được trả về để báo cho host rằng
không nên cố thử lại giao tác bởi vì có tình trạng lỗi tại chức năng. Nếu gói dữ liệu đã nhận có lỗi CRC hoặc lỗi nhồi bít thì sẽ không có đáp ứng nào từ phía chức năng. Hình 3.11 cho thấy chuỗi đọc và ghi dữ liệu truyền khối.
Còn về phía thu thì khi
nhận một gói dữ liệu thành công nó sẽ hiểu là gói dữ liệu tiếp theo sẽ có DATA
PID trái với DATA PID của gói nó vừa nhận.
Hình 3.11: Đọc và ghi truyền khối [1]