2014.2.11

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

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


[第13回]


●USB信号について

プロトコル解析の説明の途中ですけれど、ここでUSB信号について一通りの説明をしておきたいと思います。
USBデータは8ビットのデータをパラレルからシリアルに変換して、ビットストリームとして送られます。
そこのところは232Cなどと同じです。
ただ232Cと違ってスタートビットやストップビットは付加されません。
8ビットのデータだけを連続して送ります。
ただし後で説明しますがシリアル変換したものをそのまま送るのではなくて、あるルールで変調してから送ります。

データ伝送クロックはモードによって異なりますが、ND80ZV(ND80Z3.5)ではフルスピード(12MHz)のクロックで伝送を行います。
なおUSB2.0規格では、そのほかにロースピード(1.5MHz)とハイスピート(480MHz)があります。
12MHzというのは232Cなどと比べるとべらぼうな速度で、しかもそれをスタートビットもストップビットもつけないで送るというのですから、昔を知るものにとっては、それで本当に大丈夫なの?と、つい聞きたくなってしまいます。
しかも232Cは±10V程度の電圧で送受信したものでしたがUSBはなんと3Vです。
それだけに当然制約もきびしくてケーブルはツイストペアシールド線で最長5mとされています。
それにしても技術の進歩というのは目覚しいといいますか、すさまじいものがあります。
まさに隔世の感とはこういうことを言うのでありましょう。

●NRZI変調

そのような仕様ですので、当然信号そのものにも誤りを防止する工夫がほどこされています。
8ビットのパラレルデータをシリアルに変換したあとの信号は伝送中の誤りを防ぐためにビットごとにデータ変換を行ないます。
NRZI(Non Return to Zero Inversion)というちょいとややこしい変換です。
インターネットで検索すると説明がでてきますが、かえって分かりにくいものがよくあります。
もとの意味はともかくとして、ことUSB信号に限って解釈するには、「トランジスタ技術」2000年6月号P.185の解説がとても分かりやすいと思います。
そのまま引用しますと、「ビット列で’0’のときはその直前の信号の状態を反転し、’1’のときは前の状態を維持する」方式です。

例として41Hというデータで考えます。
シリアルに変換すると10000010というビットデータ列になります。
D0が先頭でD7が最後に送出されます。
信号の流れは左から右に流れるように描くことが多く、グラフなどでも時刻tは左から右に進むように描きます。
ですので普通の8ビットのデータをビット表現で表記するのとは逆になりますが、ここではD0が左でD7が右であるように表記します。

この変換方式は直前の信号の状態によって、変換後の値が変わります。
仮に直前の信号の状態が’1’であるとして変換をしてみます。
D0は’1’ですから、信号の状態は変わりません。変換後も’1’です。
D1は’0’ですから、変換後の信号の状態は’1’から’0’に変わります。
D2は’0’ですから、変換後の信号の状態は’0’から’1’に変わります。
D3は’0’ですから、変換後の信号の状態は’1’から’0’に変わります。
D4は’0’ですから、変換後の信号の状態は’0’から’1’に変わります。
D5は’0’ですから、変換後の信号の状態は’1’から’0’に変わります。
D6は’1’ですから、信号の状態は変わりません。変換後も’0’です。
D7は’0’ですから、変換後の信号の状態は’0’から’1’に変わります。
以上のことから、NRZI変換後の値は10101001になります。

問題はこのような変換を行なってから送信されてくるデータを受信側では変換前の値に戻さなければならないということです。
これはソフト的に考えると、どうやるんじゃいと戸惑ってしまいますが、実は簡単な回路を実装することでもとのデータに戻すことができます。

●復調回路

これも「トランジスタ技術」2000年6月号P.185からそのままの引用です。


USBラインでホストから送られてくるNRZI変調された信号を上図のINに入力します。
図のように74HC74型のD−FFを2段通します。
ここは2ビットのシフトレジスタと考えることができます。
1クロック前の信号が後段のゲートのAに、次の信号がBに入力されます。
後段のゲートはExclusive Norです。
Exclusive Or(74HC86)の出力を反転したタイプ(74HC266)です。
ゲートの下に示したのがExclusive Norの真理図です。
Exclusive Or(排他的論理和)とは結果が逆になります。
OUTからは復調されたもとのデータが得られます。

ここでの考え方のポイントは、送られてくる信号の1、0に関係なく、先の信号と後の信号が一致(つまり変化なし)ならば、もとの信号は1で、不一致(つまり変化あり)ならばもとの信号は0ということです。
この回路は74HC74と74HC266(または74HC86+74HC04)を使って簡単に作ることができますが、今回はどうせCPLDを使うのですから、CPLD内に作ってしまいました。

前回お見せしたバイナリデータは、上記の回路を通してもとのデータに復調したあとのものです。

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

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