2014.1.27

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

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


[第6回]


●カメレオンUSB+ロジアナを改造

ここ数日HPの更新ができませんでした。
ええ。
例によって泥沼にはまってもがいておりました。
本当は前回の続きを書かなければいけないのですが、ちょっと予定変更です。
CPLD+SIMMのお話から突然に違うところに飛んでしまいます。
あ。
CPLDは今回も主役をつとめます。
ですがSIMMではありません。
そこのところがテーマから外れてしまいます。
話が飛んでしまいますが、しばしお付き合いをお願いいたします。

当記事としましてはまだ緒に就いたばかりなのですが、実際にはハードもソフトもほぼ実用レベルにまでできておりまして、このところ実際にUSB動作解析の作業にかかっております。
その成果といいますか、先日ちょっと気になる動作に気が付きまして、そこのあたりを深く掘り下げて追求してみようということになりました。
現在テーマとして進行中のCPLD+SIMMを使った解析ツールは、USB信号を横から読み取って、それを解析しようというものなのですが、その作業をしていましたら、ホストからのUSBコマンドに対するPICの応答手続きにちょっと気になるところがみつかりました。
そういうことになりますと、外部から信号を観察するのではなくて、PIC内部の動作を追跡することが必要になってきます。
しかし12MHzで送られてくるUSBコマンドに応答しながら、同時にその流れを外部からモニタできるようにするのにはちょいと工夫が必要です。
何かうまい方法はないものかとND80ZVの回路図をながめていましたら、なんとかできそうな方法を思いつきました。



PIC18F14K50とZ80がデータやコマンドパラメータをやりとりするために、RB6、RB4、RC4〜RC0の7ビットを使っています。
これをうまく利用して、ここから外にデータを出力するようにできそうです。
USBケーブルを接続すると、すぐにPIC18F14K50はホストとの間で交信を開始しますが、Windows側でZB3.EXEを実行開始するまでは、PIC18F14K50とZ80CPUとの間でのデータ交信は行われません。
ですからこの7ビットはそれまでの間は空いています。
しかしどうせならば、なんとか8ビットにしたいところです。

よくよく見ていましたらRB7を232Cの送信(TX)に使っていることに気が付きました。
このRB7をビット7に割り当てれば8ビットになります。
しかしそれだけではまだ足りません。
パラレルポートからデータを出力するときと同じようにSTROBEパルスの出力も必要です。
DIPスイッチのbQ、bRをOFFにしておけばRA4が使えそうです。
おお。
役者がそろいました。

問題はそれをどうやって受け取るかということです。
PIC18F14K50には12MHzのクロックを与えていますが、PIC18F14K50はそれを内部で4倍にして、48MHzのCPUクロックで動いています。
その動作を外部でモニタするために、こちらが必要と思う情報を必要なポイントで出力しても、それを受け取るためにはそれ相応の回路が必要になります。
残念ながらZ80ではとても間に合いません。

そこでカメレオンUSB+ロジアナを使うことを考えました。
これなら最高100MHzまで対応できますから十分役に立ちますでしょう。
ただ今回は波形の観測などではなくて、PIC18F14K50がSTROBEパルスとともに出力する8ビットのデータを解析するのが目的です。
波形を読むことでそれを解析することもできないわけではありませんが、それはなかなかに面倒な作業ですし、何とももどかしい感があります。
もっと直接的にデータの形で取ることができればよいのですが…。
おお。
できるじゃありませんか。

カメレオンUSB+ロジアナはCPLDボードにデータロガーとしてメモリボードを組み合わせたものです。
それならその組み合わせをそのまま使って、CPLDを書き換えて、PICからのデータをメモリに蓄えてしまえばよいじゃありませんか。

つまり、CPLD+SIMMのバージョン違いのようなものです。
なぜSIMMを使わないかといいますと、今回の目的としてはそんなに大容量のメモリは必要ないからです。
それにカメレオンUSB+ロジアナはその目的で使うために信号入力用のプローブも沢山作って、取り付けてそのまま使えるようになっていますから、CPLDさえ書き換えればすぐに使えそうです。
あっと、もとはデータをUSBで送るようになっていますが、そこのところはCPLD+SIMMと同じように、パラレルポートを使うように回路を付け足します。

ということで作業にとりかかったのですが、これが思いのほかてこずってしまい、おまけにPIC18F14K50のとんでもない落とし穴にはまってしまったために、やっとデータが取れるようになるまで、数日かかってしまいました。
とにかくここのところは肝心のUSBのプロトコル解析に入る前にそのツール作りに没頭してしまっておりました。
でもおかげでなんとか使えそうなツールができたように思います。
ええ。
VHDLもかなり使えるようになりましたですよ。

それでは冒頭に書きましたように、しばらくは予定を変更しまして、カメレオンUSB+ロジアナ改造編ということでいきたいと思います。
ですが、本日はちょっともう時間がなくなってしまいましたので、具体的なあれこれにつきましては次回からということにいたします。

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

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