2014.4.2

前へ
次へ
ホームページトップへ戻る

CPLD+SIMMを使ってUSBプロトコルの解析を!
VHDLを速習! XC95144XL+16MB・SIMMを使ってUSBプロトコルアナライザを作ってしまいました!
主目的は差し迫った事情からUSBプロトコルの解析をすることだったのですが、その手段として選んだのがコレ!


[第37回]


●Enumeration はじめから終わりまでの記録(5)SET ADDRESS

前回はホストから最初のGET DEVICE DESCRIPTORリクエスト(デバイスディスクリプタ送信要求)が送られて、PICWRITERがそれに応えてDEVICE DESCRIPTORを送出したところまでを説明しました。
今回はその続きです。
リストが前回と重複しますが、分かりやすくするために前回お見せしたところを含めて続きの部分をお見せします。

0016988 SOF FNO=6DE
0017000 SETUP ADRS=00 ENDP=00 
        DATA0  80 06 00 01 00 00 40 00   GET_DESCRIPTOR DEVICE
        ACK 
0017002 ? [00010111] // 0279146 IN ADRS=00 ENDP=00
        NAK 
0017003 IN ADRS=00 ENDP=00 
        NAK 
0017004 IN ADRS=00 ENDP=00 
        NAK 
0017006 IN ADRS=00 ENDP=00 
        DATA1  12 01 00 02 00 00 00 08   
        ACK 
0017008 OUT ADRS=00 ENDP=00 
        DATA1  
        ACK 
0018114 SOF FNO=6EA
0018115 PRE 
0018208 SOF FNO=6EB
0018301 SOF FNO=6EC
0018302 PRE 
0018395 SOF FNO=6ED
0018489 SOF FNO=6EE
0018583 SOF FNO=6EF
0018677 SOF FNO=6F0
0018677 PRE 
0018771 SOF FNO=6F1
0018864 SOF FNO=6F2
0018865 PRE 
0018958 SOF FNO=6F3
0019052 SOF FNO=6F4
0019052 PRE 
0019146 SOF FNO=6F5
0019240 SOF FNO=6F6
0019333 SOF FNO=6F7
0019427 SOF FNO=6F8
0019428 PRE 
0019521 SOF FNO=6F9
0019615 SOF FNO=6FA
0019615 PRE 
0019709 SOF FNO=6FB
0019802 SOF FNO=6FC
0019803 PRE 
0019896 SOF FNO=6FD
0019930 SETUP ADRS=00 ENDP=00 
        DATA0  00 05 04 00 00 00 00 00   
        ACK 
0019932 IN ADRS=00 ENDP=00 
        DATA1  
        ACK 
0019990 SOF FNO=6FE

PREというパケットが繰り返し出力されています。
PRE(プリアンブル)パケットはロースピードモード(1.5MHz)の指定に使われるようですが、詳しいことはわかりません。
ND80ZV(ND80Z3.5)はフルスピードモード(12MHz)ですから、このパケットは無視しています(秋月のPICWRITERも同じ)。

最初のGET DEVICE DESCRIPTORリクエスト(デバイスディスクリプタ送信要求)に応えて、PICWRITERがDEVICE DESCRIPTORを送ると、その後しばらく通信が途絶えるようです。
FNO(フレームナンバー)が10カウントほど飛んでいます。
この間はラインがアイドルになるようですが、自作したCPLD+SIMM回路ではそれを検出する機能はありませんから、その間は何も記録されません。
1フレームは1msですから約10msほどのアイドルタイムが挿入されるようです。

その後再びSOFパケットが送出されるようになって、ホストからSET ADDRESSリクエストが送出されます。
00 05 04 00 00 00 00 00 です。
00 05 はSET ADDRESSリクエストです。
次の1バイトで、端末に割り当てるアドレスが指定されます。
ここでは04になっています。
普通は02が指定されることが多いのですが、テストに使ったWindowsXPパソコンはすでにアドレス03までを他のUSB装置に割り当て済みだと思われます。
このコマンドでは残りの5バイトは00になります。

SET ADDRESSを受け取ったデバイスは、とりあえずはその直後に送出されるアドレス00、エンドポイント00のINパケットに空のDATA1を返します。
そして以後の通信応答は指定されたアドレス(ここでは04)のエンドポイント00で行ないます。

CPLD+SIMMを使ってUSBプロトコルの解析を![第37回]
2014.4.2upload

前へ
次へ
ホームページトップへ戻る