CPLD+SIMMを使ってUSBプロトコルの解析を!
VHDLを速習! XC95144XL+16MB・SIMMを使ってUSBプロトコルアナライザを作ってしまいました!
主目的は差し迫った事情からUSBプロトコルの解析をすることだったのですが、その手段として選んだのがコレ!
[第12回]
●USBプロトコルアナライザ+PIC動作モニタ
前回少しお話をしましたCPLD+SIMMを使ったUSBプロトコルアナライザ+PIC動作モニタの概要を下に図で示します。
この図は[第4回]でお見せした図にND80ZV(ND80Z3.5)のPIC18F14K50からの信号を取り込む部分を追加したものです。
もともとCPLDを使ってUSBデータをどうやって収集するのかということ自体がおそらく多くの方にとりましては未知の事柄であろうかと思います。
それに加えてそれをSIMMにSAVEしたり、そこからLOADしてパラレルポートでパソコンに送るということもそれなりに工夫を要することであります。
今回はそこにさらにPICからのモニタ出力データも加えてしまおうというのですから、ハンパなことではありませぬ。
ハードにつきましては前回写真でお見せしましたように、配線のお化けですからその手間につきましては推察いただけることと思います。
ま、しかし、配線のほとんどはSIMMのデータ線とアドレス線ですので、配線量は多いというものの、順番に配線していくだけですから、こつこつやっていけばよいので、頭を使う作業ではありません。
その一方で、ソフトウェアについてはと言いますと、これはもうとてもとてもハンパなことでは済まされません。
ここはソフトウェアの腕の見せ所でありましょう。
そういったあたりのことにつきましても、少しずつ説明をしていくつもりでおります。
●記録されるUSBデータ
そう、SIMMに蓄えるデータそのものがハンパな量じゃありません。
当初は16MBのSIMM全体にデータを保存するつもりでしたが、やってみるといろいろ問題が出てきたことと、実際にはそれほどのデータ量は記録する必要がないことがわかってきましたので、最終的には4MBの記録に落ち着きました。
ここで使ったSIMMは4M×32bitで、そのうちの4M×8bitを使うことにしたのです。
12MHzで送受信されるUSBのデータは12Mビット/秒ですから、それを4M×8=32Mビットのメモリに記録することにしますと、たった2.7秒間しか記録できません。
しかし実際にやってみますと、それだけの時間の記録ができれば十分ということがわかってきました。
のちほど実際に記録データもお見せしますが、たった2.7秒間といいましても、それで4MBものデータ量ですから、これはもうすごいものです。
今回は残りの4M×24ビットのうちの4M×8ビットを使って、そこにPICからのモニタデータを記録することにしました。
ですので上の図のD0〜D31となっているところは、実際にはD0〜D7とD16〜D23のみを使っています。
PICからのデータは6ビットですけれど、データを記録してからあとの処理は8ビット(1バイト)単位で行ないますので、結局8ビット+8ビットのデータになります。
合わせて8MBのデータです。
それだけのデータがバイナリファイルとして保存されることになります。
バイナリデータはどのようにして中身を見ることができますでしょうか?
MSDOSプロンプトにはDEBUGコマンドがあって、これでバイナリファイルを開いて、Dコマンドで16進ダンプ表示をさせることができます。
ところが8MBもあるバイナリファイルはDEBUGコマンドでは開くことができません。
メモリオーバーでエラーになってしまいます。
そこでバイナリファイルを読み込んで、それを16進ダンプしてテキストファイルとして保存するプログラムを作りました。
テキストファイルですからテキストエディタで開けるはずなのですが、そのようにして作成したテキストファイルはさらに巨大(約33MB)なので、メモ帳などでは、やはり開くことができません。
やっとTeraPadで開くことができました。
しかし、そのようにして開くことができても、それだけじゃあなんともなりませんのです。
実物でお見せしましょう。
CPLD+SIMMを使って実際に記録した4MBのUSBデータを16進ダンプしてテキストファイルにしたものをTeraPadで開いたところです。
ええ。
ホンモノです。
しかし。
これじゃあ何が何だかさっぱりわかりませんでしょう。
いえ。
ルールさえわかればノートと鉛筆を使ってこれを解読することもできないことはありませんけれど。
それを4MBやるということになりましたら。
ううう。
寿命が尽きてしまいまする。
CPLD+SIMMを使ってUSBプロトコルの解析を![第12回]
2014.2.10upload
前へ
次へ
ホームページトップへ戻る