Cấu trúc lƣu trữ các Packet

Một phần của tài liệu thiết kế xây dựng thiết bị usb dongle - bảo vệ phần mềm có bản quyền (Trang 34)

1.3.2.1. Các thành phần trong Packet

USB packet bao gồm các thành phần sau:

SYNC: tất cả các packet đều bắt đầu với một field SYNC. Field này có 8 bít, đƣợc dùng để đồng bộ xung giữa việc nhận và truyền dữ liệu. Hai bít cuối đánh dấu kết thúc field cũng nhƣ cho biết vị trí field PID bắt đầu.

PID: field này theo sau field SYNC, nó đƣợc dùng để nhận biết loại packet nào đã đƣợc gởi. Có 4 bit thể hiện PID, tuy nhiên để đảm bảo packet nhận đúng, 4 bit bổ sung đƣợc lặp lại, tạo 8 bit PID tất cả. Kết quả:

Bảng 1–4 Cấu trúc PID Nhóm Giá trị PID

(bit 3…0)

Loại packet

Token 0001 OUT Token

1001 IN Token

0101 SOF Token

1101 SETUP Token

Data 0011 DATA0

1011 DATA1

Handshake 0010 ACK Handshake

1010 NAK Handshake

1110 STALL Handshake

Special 1100 PRE

35  ADDR: packet sẽ đƣợc gửi đến device có địa chỉ đã đƣợc chỉ định (vì mỗi device có 1 địa chỉ phân biệt). Field này gồm 7 bit để hỗ trợ 127 device. Những device nào chƣa đƣợc chỉ định ADDR thì packet gởi có ADDR = 0.

Bảng 1–6 Cấu trúc ADDR

ENDP: trong mỗi device có nhiều endpoint nên field này chỉ định packet sẽ đƣợc gửi đến endpoint nào. Field này có 4 bit, cho phép phục vụ đến 16 endpoint. Riêng device là LowSpeed thì chỉ có 2 bit và phục vụ tối đa 4 endpoint.

Bảng 1–7 Cấu trúc ENDP

Frame Number: field này bao gồm 11 bít chứa giá trị tối đa là 0x7FF. Vào đầu mỗi frame, field này đƣợc tăng 1 đơn vị cùng với việc phát ra SOF token, khi đã đạt giá trị tối đa, nó sẽ tiếp tục với giá trị 0.

Data: field này chứa dữ liệu gửi đi hay nhận về, nó chứa tối đa là 1023 byte dữ liệu.

CRC: chứa các bít thể hiện tình trạng của packet đƣợc trả về có lỗi hay không. Token packet có 5 bit CRC, còn data packet có 16 bit CRC.

EOP: field này đánh dấu kết thúc packet.

1.3.2.2. Các nhóm packet

Token packet: có thể xem packet này là header, có ba loại sau:

In: đƣợc sử dụng khi Host muốn đọc thông tin từ device.

Out: đƣợc sử dụng khi Host muốn gởi thông tin đến device.

Setup: loại này chỉ đƣợc dùng trong Control transfer, để xác định và nhận dạng device.

SYNC PID ADDR ENDP CRC5 EOP Bảng 1–8 Cấu trúc Token packet (adsbygoogle = window.adsbygoogle || []).push({});

36  Data packet: là những packet chứa dữ liệu, yêu cầu hay là các thông tin liên quan đến host và device. Có 2 loại data: DATA0, DATA1, mỗi loại có khả năng truyền từ 0 đến 1023 byte dữ liệu.

SYNC PID Data CRC16 EOP

Bảng 1–9 Cấu trúc Data packet

Handshake packet: hiển thị tình trạng của packet. Có ba loại:

ACK: packet đã đƣợc gửi thành công.

NAK: cho biết device không thể gởi hay nhận dữ liệu tạm, thƣờng xuất hiện trong tình huống Host không có dữ liệu để gởi.

STALL: có lỗi xảy ra trong quá trình gửi.

SYNC PID EOP

Bảng 1–10 Cấu trúc Handshake packet

SOF packet: packet này gồm có 11 bit frame đƣợc gởi bởi Host mỗi 1mS 500nS.

SYNC PID Frame Number CRC5 EOP Bảng 1–11 Cấu trúc SOF packet

Một phần của tài liệu thiết kế xây dựng thiết bị usb dongle - bảo vệ phần mềm có bản quyền (Trang 34)