USB là một bus hỏi vòng (polled bus), Host Controller sẽ khởi tạo tất cả các dữ liệu giao dịch (transaction). Phần lớn các giao dịch liên quan đến 3 gói tin:
Token packet (gói đánh dấu): Mô tả loại và hướng của giao dịch (host
muốn gửi hay nhận dữ liệu), địa chỉ thiết bị và số endpoint.
Data packet: gói dữ liệu hoặc gói no data (dữ liệu trống).
Status packet: thông báo về tình trạng của giao dịch (thành công, bị gián đoạn hoặc từ chối nhận dữ liệu).
2.3.5.1 Các trường của gói tin USB.
Các bit trọng số thấp (LSB) của dữ liệu được truyền trước. Một gói tin USB gồm các trường sau:
Sync (8 bit):Tất cả các gói tin phải bắt đầu bằng trường sync. Nó có độ dài là 8 bit, được sử dụng để đồng bộ giữa bên nhận và bên truyền, 2 bit cuối xác định nơi mà trường PID bắt đầu.
PID (8 bit): Packet ID (nhận dạng gói tin) dùng để xác định kiểu gói tin được truyền. Bảng sau liệt kê các kiểu gói tin giao dịch:
Bảng trên, trường PID có 4 bit.Tuy nhiên để chắc chắn nó được nhận đúng, 4 bit nữa được bổ sung và giá trị lặp lại của 4 bit đầu. Minh hoạ:
ADDR (8 bit): Trường địa chỉ xác định thiết bị mà gói tin được gửi đến.
Trường này có 7 bit (Addr 1 - 7) cho phép hỗ trợ 127 thiết bị. Addr 0 không sử dụng, bất cứ thiết bị nào mà chưa được gán địa chỉ thì gói tin gửi tới thiết bị đó
CRC (5 bit hay 16 bit): Cyclic Redundancy Checks mã vòng kiểm tra dư
vòng dùng để phát hiện và sửa lỗi. Với các gói tin token thì nó có 5 bits CRC còn với các gói tin data thì trường này là 16 bits.
EOP: Trường kết thúc của gói tin.
2.3.5.2 Các loại gói tin USB.
USB có bốn loại gói tin khác nhau (phân biệt chúng dựa vào trường PID): Gói tin token chỉ ra kiểu trao đổi dữ liệu.Gói tin data chứa dữ liệu cần trao đổi.Gói tin bắt tay(handshake) dùng để xác nhận đã nhận thành công dữ liệu hay báo lỗi trong quá trình truyền. Cuối cùng là gói tin SOF (Start Of Frame) xác định điểm bắt đầu của khung truyền mới.
Token packets:Có ba loại gói tin kiểu này:
In token: Thông báo cho Thiết bị USB rằng host muốn đọc dữ liệu. Out token: thông báo cho Thiết bị USB rằng host muốn gửi dữ liệu. Setup token: Sử dụng để bắt đầu quá trình truyền CONTROL.
Định dạng của token packets như sau:
Data packets: Có hai loại gói tin data, mỗi gói tin có khả năng truyền từ 0
đến 1023 bytes dữ liệu. + Data0
+ Data1
Thiết bị high-speed được định nghĩa thêm hai gói tin dữ liệu data2 và
MDATA.
Kích cỡ tối đa dữ liệu truyền đi của chế độ low speed là 8 bytes. Kích cỡ tối đa dữ liệu truyền đi của chế độ full speed là 1023 bytes.
Kích cỡ tối đa dữ liệu truyền đi của chế độ high speed là 1024 bytes. Định dạng của Data packets như sau:
Handshake packets: Có ba loại gói tin kiểu này:
ACK - Đã nhận gói tin thành công
NAK - Thông báo cho thiết bị biết tạm thời không thể gửi hay nhận dữ liệu. STALL - Thiết bị phát hiện dữ liệu bị lỗi và yêu cầu host truyền lại.
Start of Frame packets (SOF): Gói tin có 11 bits và được host gửi tới thiết
bị cứ sau 1ms ± 500ns. Gói này được gửi dự báo trên bus để duy trì hoạt động của Bus nhằm ngăn chặn việc Bus chuyển sang chế độ chờ khi dữ liệu bị mất trong quá trình truyền: