2014.2.12

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

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


[第14回]


●Legacy8080のユーザー向けアナウンスが開始されました

葛Z術少年出版の吉崎様からメールをいただきました。
Legacy8080の発売をひかえて、ホームページ上でユーザーに向けて情報の発信を開始しました、とのご連絡です。
すでに以下の2本のニュースが掲載されています。
Legacy8080の発売に向けての進行状況や、Legacy8080体験モデムルームオープンについてのアナウンスです。
皆様にはぜひ一度ご訪問いただきますようお勧めいたします。

NEWS No.1 2014年2月6日公開 Legacy8080の発売に向けての進行状況

NEWS No.2 2014年2月10日公開 Legacy8080体験デモルーム オープン

葛Z術少年出版のホームページはこちらです。

当記事のテーマにも有りますとおり、ND80ZV(ND80Z3.5)が一部のPCでUSBの接続ができないという問題を解明するために、昨年暮れからずっとそのための作業にかかりっきりになっていました。
Legacy8080もUSB接続に関する部分は同じ仕組みになっていますので、Legacy8080についてもこの問題を解決することが急務となっていました。
このところ当記事にて書いておりますように、このたびやっとなんとか解決のめどが立ちましたので、Legacy8080の発売に向けてこれから吉崎様と緊密に連絡をとりながら、いよいよ最終的な詰めの作業をしていかなければなりません。
多忙な年明けに続いて、またまた多忙な日々が続きそうです。

●USB信号について(2)

USB信号について少し書き残したことがあります。
USB信号は+−が逆になったD+とD−の2つの信号(差動信号)として送られます。
ということになりますと本来は差動入力回路で受けなければならないところなのですが、D+もD−も+3Vのデジタル信号ですから、どちらか片方を入力するだけでも十分読み取れます。
実際に解析してみますと、ところどころまともに読み取れないところが出てきていますが、差動入力回路を通していないことが原因というよりも、何か別の要因のような気がします。

3Vの入力信号ですから、74HCなどで受けた場合にはスレッショルド電圧が2.5Vということから、ノイズマージンが+側では0.5Vしかありません。
しかし色々試行錯誤を重ねる過程では、74HCでも受けてみたのですが、スレッショルドが2.5Vであることの影響は特には無いように感じました。
その点XC95144XLはもともと+3V動作ですから、ここは74HC回路などを前に置くよりもXC95144XLに直接入力してしまったほうがより確実であると思います。

USB信号についてはいては、もうひとつスタッフビットというものについても説明が必要ですが、それについてはもう少し先で説明することにいたします。

●USB信号の解読

[第12回]で実際にCPLD+SIMMを使ってキャッチしたUSBデータの例をお見せしました。
下に再掲いたします。


さながら暗号のごとき8ビットのデータ列です。
[第12回]では、「ノートと鉛筆を使って解読することもできないことはありません」と書きました。
そう書きました以上は、実際にやってみなければなりませんでしょう。

ただ、これは余り適切な例ではありませんでした。
そのときは時間がありませんでしたので、余り深くは考えずにファイルを開いて適当なところを画面キャッチしてお見せしたのでしたが、実際に解読してみますと余り適切な例ではないことに後で気が付きました。
ですので、後ほどあらためて別の例もお見せすることにしますが、とりあえずはこの例で実際に解読してみることにします。
するとこのようになります。



元のデータの3F 60 69…というところと、7F C0 B4…というところを解読してみました。
どのように読み解くのかということは後ほど説明することにしまして、この例がなぜ不適切かと言いますと、上図中ほどにあります、IN ADRS=1 EP=1 に気が付いたからです。
INというのはホスト(PC)からのデータ送信要求なのですが、その後に続いてADRS(アドレス)=1、EP(エンドポイント)=1が指定されています。

アドレス=1はUSB接続時に行なわれるEnumerationという手続きによってホストから割り当てられるアドレスで、1から127のうちの1つが割り当てられます(USBではこれをパイプと呼びます)。
エンドポイントというのは、そのアドレスでデータをやりとりする、サブアドレスのようなものです。
ND80ZV(ND80Z3.5)ではEP=0とEP=1を使っています。
EP=0はEnumerationのときにホストとの間でコマンドやデータを送受信するのに使います(コントロール転送)。
EP=1はホストとUSB接続が確立したあと、ユーザーデータの送受信に使います。
ということは、上の例はEP=1ですから、もう接続が確立してしまったあとでユーザーデータを送信しているところですから、このデータを解読してみてもプロトコルの解析には余り参考になりません。

そうは言いましても、それでも上の解読例だけでも、SYNC、SOFをはじめとしてUSB信号の基本的な構造が見えています。
説明の途中ですが、本日は時間がなくなってしまいましたので、それらについては次回に説明をすることにいたします。

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

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