AVR-USB(2)

.07 2010 AVR-USB comment(0) trackback(0)
今日はUSB仕様書Chapter8の前半のまとめです。

まずは階層の確認。

Field Level
一番下の層、0101の世界
Packet Level
Fieldの集まり
Transaction Level
Packetの集まり、この順番にこのパケットを送受するという話
Frame Level
Transactionの集まり、Control / Interrupt / Bulk / Isochronous転送の4種類


1. Field Level

以下のbitはすべて左から送受信される(データは第0bitから第7bitの順に送受信されるので下図は左がLSb)
SYNC
idle-KJKJKJKK
PID
仕様書p196(Table 8-1)、PID-PIDの順に送信。計8bit。以下はこのPIDによって選択的にパケットに含まれる。
Address
Address(7bit)-EndPoint(4bit)計11bit、PID=OUT、IN、SETUPのときにホストが送ってくる。
FrameNumber
FrameNumber(4bit)計11bit、PID=SOPのときのみホストが送ってくる。
Data
nByte(n = 0~8 for LowSpeed)、LSBのLSbからMSBのMSbの順に転送
CRC-5
Token Packetのとき。CRC、5bit。
生成多項式はG(x) = x5 + x2 + 1
CRC-16
Data Packetのとき。CRC、16bit。
生成多項式はG(x) = x16 + x15 + x2 + 1
CRCはデータをGF(2)上の多項式とみなしてそれを生成多項式で割った余り。情報数学で習った。

2. Packet Level

Packetには大きく分けて次の4種類がある。
Token, Data, Handshake, Special
それぞれのパケットのPID(のうちLowSpeedで使われるもの)はそれぞれ次表。
TokenOUT, IN, SOF, SETUP
DataDATA0, DATA1
HandshakeACK, NACK, STALL
SpecialPRE, ERR
以下、それぞれのパケットの詳細。CRCは強調されている部分に対してのCRC。PIDは本来4bitのところを8bitにしている時点でエラーチェックはされている。
  1. SOF Packet
    SYNCSOFFrameNumberCRC-5
    8bit8bit11bit5bit
  2. Tocken Packet (except for SOF)
    SYNCPIDAddr + ENDPCRC-5
    8bit8bit7bit + 4bit5bit
  3. Data Packet
    SYNCPIDDataCRC-16
    8bit8bit0~8Byte16bit
  4. Handshake Packet
    SYNCPID
    8bit8bit


3. Transaction Level

デバイスは強調部分を処理すればいい。
SETUP
SETUP-DATA0-ACK
OUT
OUT-DATA0/1-ACK
IN
SETUP-DATA0/1-ACK
DATA0/1とあるところは、DATA0、DATA1を交互に送れという意味。
Reset時: t = 0
DataPacketに対してACKを返したとき: t = 1 - t
DataPacketを送ってACKが返ってきたとき: t = 1 - t
としてDATAtを送る。送信時だけでなく受信時にもtを反転する必要があるっぽい。 Frame Levelの話はまた明日。
関連記事

  • comment
  • secret
  • 管理者にだけ表示を許可する

trackbackURL:http://yuranos.blog11.fc2.com/tb.php/29-27710133