2014.1.23

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

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


[第5回]


●データの読み出しはパラレルポートを使う

USB信号をシリアルからパラレルに変換して16MB SIMMに書き込むときは、それが同時にリフレッシュも兼ねることになるので、別にリフレッシュについて考えなくてもよい、と前回書きました。
そのようにしてSIMMに書き込んだ後、今度はそれを読み出してパソコンに送らなくてはいけません。
こちらはそうは都合よくはできません。
リフレッシュはデータの読み出しとは別に独立して行なわなくてはいけません。
その理由は後ほど説明いたします。

リフレッシュを別立てにするのは面倒なことなのですが、それよりもそもそもデータをパソコンに送ること自体が問題なのです。
なんたって16MBもあるデータです。
普通そういう場合に思いつくのは232C通信でしょうけれど…。

仮に19200bpsだとして計算してみてください。
16MBは16777216バイトだから16777216/19200?
いえいえそうじゃありません。
bpsはビット/秒ですから、バイトをビットに直さなくてはなりません。
そこにスタートビットとストップビットが加わりますから、結局10倍の値になります。
167772160/19200≒8738秒
ぬぁんと145分もかかってしまいます。
これじゃあ使い物になりませぬ。
それにせっかくシリアルからパラレルに変換したものをまたシリアルに変換するのも芸がない話です。
並みの方法では転送時間が…です。
ここはパラレルポートを使うほかはありませんでしょう。

あ。
カメレオンUSBはUSBインターフェイス内蔵のチップを乗せていますから、それを利用してUSBで送出する方法もないわけではありません。
しかしそれは速度が遅い、とカメレオンUSBのホームページに書いてあります。
それに受けの側のプログラムも書かなければなりません。
当然その案は却下するしかありません。

さて。
パラレルポートはすなわちプリンタポートです。
通常はパソコンからプリンタにデータを送出するのに使いますが、それとは逆にそのポートを経由してパソコンにデータを送ることもできます。
実に便利な機能です。
が、しかし。
Microsoft様はWindowsXP以降その便利な機能を封印なさってしまわれました。
代わりにUSBを使えとのご託宣であります。
むむ。そのためにこんなに苦労しているのでありますぞ。
ついには大方のパソコンからパラレルポート(ついでにシリアルポートも)消失してしまいました。
なんとも悲しむべきことであります。

ええ。
ですから。
私はいまだにWindows98が手放せないのでありますよ。
なんと古い、と馬鹿にされる向きもありましょうが、こういう場面になりますと、俄然その本領を発揮するのであります。

こんな具合にしてDDK36pinから10pinフラットケーブルコネクタへの変換基板まで作ってしまっているのです。

必要なのはD0〜D7とSTROBEとGNDの10本のみです。
それだけで8ビットのパラレル通信ができてしまいます。

その実力をとくとご覧あれ。

パソコン側からデータ送信要求信号としてSTROBEパルスを出力します。
普通はパソコンにデータを出力するときに、データを確定したことをプリンタに知らせるための信号ですが、今回はパソコンがデータの読み出し準備ができたことを知らせるREADY信号として使います。
STROBEパルスはかなりなまった信号ですのでそのままCPLD(カメレオンUSB内蔵のXC95144XL)につっこみますと、XC95144XLの速度が速いものですから(カタログ値Max178MHz)誤作動してしまいます。
そこでシュミット回路を通して波形を整形しています。
上の写真はSTROBEパルスをシュミット回路に通したあとの波形です。
シュミット回路に通したためにH幅がせまくなっていますがもとは約1μsの幅があります。
パソコンの性能速度に関係なく、1μsに決ってしまいます(「TTLだけでパソコンをつくろう」[第399回]参照)。

上の写真は実際にカメレオンUSBでSIMMから読み出したデータを8ビットデータとしてパソコンに取り込んでいるところです。
1回8ビットの転送時間は4μsほどです。
16MBを転送するのにかかる時間は実測値で64秒です。
これなら、使えます。
もう、Windows98さまさま、です。
いつまでたっても手放せません。

あ。
そうでした。
リフレッシュをどうするのか、についてもお話しなければなりませんでした。
ですが、本日は時間がありません。
この続きは次回にいたします。

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

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