2014.2.4

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

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


[第9回]


●パラレルポート(プリンタポート)のコントロール

またまた間が空いてしまいました。
このところちょっと手詰まりで、なかなか抜け出せません。
テーマにありますUSB解析のツールもなんとか役には立っているのですけれど、それでもいまひとつのところがはっきり解析できずに悩んでおります。
こうやって悩んでおりますと、つい心の余裕がなくなってしまって、ホームページの更新にまで気が回りません。
もうあと一歩のところだとは思っているのですが…。

というような次第でなかなか気合が入らなくて申し訳ありません。
説明としましては大体のお膳立ては揃ってきましたので、いよいよCPLDの具体的な料理法といったあたりに踏み込んでいきたいと思っているのですが、その前にもうひとつ、片付けておきたいことが残っています。
もともとのテーマはCPLDでUSB信号を読み取って、それを一旦SIMMに記録したうえで、あらためてそのデータをSIMMから別のCPLDで読み出して、それをパラレルポート経由でパソコンのハードディスクに格納する、というものなのですが、先日からちょっと横道にそれまして、PICのポートからCPLDにチェックデータをパラレル伝送し、それを同期SRAMに蓄えたのち、パラレルポート経由でパソコンに送り込むというツールを作ることについて説明をしております。
この後半の、CPLDでメモリからデータを読み出してパラレルポート経由でパソコンに送る、という部分は本来のテーマとほぼ同じ内容です。
本来のテーマでは、そこにDRAMのリフレッシュが加わっている分だけ複雑になっています。
その意味でも、まずはリフレッシュを必要としないケースについて説明をしたほうが分かりやすいのではないかと思います。

パラレルポートはプリンタを接続するためのものですが、Windows98まではそのポートを利用して外部との間で8ビットデータを入出力することができました。
しかしWindowsXP以後はユーザーレベルのプログラムで直接パラレルポートにアクセスすることが禁止されてしまいました。
いまどきのパソコンにはパラレルポートそのものが有りませんが、かりにまだパラレルポートがついているパソコンがあったとしても、OSがWindowsXPやWindows7では、それをユーザーが直接制御することはできませんから、当テーマにあるような使い方はできません。

インターネットで検索をしますと、なんですかVisual Basicあたりで、Win32APIを利用して、パラレルポートにアクセスすることができる、などという参考例がみつかりますが、なんでしょうかねえ。
私の印象では、まるで自転車を動かすのにベンツの駆動装置一式を取り付けている、といった風の印象なのでありますが…。

古き良き時代のやり方ですと、8086アセンブラなどというこれまた古風なものを使うのでありますけれど、こんなふうにいとも簡単にできてしまうのでありますよ。
たとえばデータを出力するのでしたら、

MOV DX,378
MOV AL,xx (xxは8ビットの値)
OUT DX,AL

で済みますし、入力するのでしたら

MOV DX,378
IN AL,DX

だけで済んでしまいます。
Microsoft様は、こんな簡単なことをどうしてできなくしてしまわれたのでしょうかねえ。

あ。こうやって書いていましたら、だんだんと油がのってきましたのですが、時間がなくなってしまいました。
次回はそのあたりのところをもう少し詳しく書くことにいたします。
(と言いましても、もうパラレルポートのついたWindows98や、ましてWindows95などをお持ちの方はほとんどいらっしゃらないと思いますので、詳しく書きましても何の参考にもならないとは思いますが)

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

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