2013年11月10日日曜日

Communication Box 7 GPIB IPの作成

GPIB IPの作成に取りかかっている。
作成にあたり、IEEEのサイトでIEEE 488.1の規格書を購入しようと思ったのだが、IEEE-488.1 1987の価格が$111.00、最新のIEEE-488.1 2003に至っては$309.0もするので断念した。仕方がないので、以下の書籍を参考にして作成を進めている。

現状の全体的なモジュール構成は以下のとおりである。

外部仕様(レジスタ仕様)はまだ完全に固まってはいないが、以下のように考えている。UART同様、今回は割り込み機能は不要なのだが、これも検討しておくことにした。また、今回はコンピュータ側(コントローラ側)の機能があれば十分だが、将来装置側でも使いたくなるかもしれないので、そういう使い方もできるように仕様を考えた。



コーディングは下位層のgpib_tlkとgpib_lsnは一応終わって、現在は上位側のgpib_ctlに取りかかっているところだ。(60%位かな。) が、思いのほかややこしいバス規格のため、考え違いをしている可能性も排除できない。まぁ、実装してシミュレーションして実機で動かしてみれば判るんだろうけど。
gpib_tlk  (トーカモジュール)

gpib_lsn (リスナーモジュール)

 トーカモジュールはバスコントローラとしてのメッセージ送信もこのモジュールを介するので、上位からの送信要求があれば送信処理を行う。バスコントローラからTAでトーカ指定を受けていない状態で通常データの送信は出来ないが、その判断は上位モジュール及びソフトウェアが行う。
 リスナーモジュールはバスコントローラからLAでリスナ指定を受けていない場合は、通常データの受信は行わない(無視する)が、メッセージは常に受信する。また、上位モジュールは通常データとメッセージ用に別々のFIFOを持つので、受信データ(リスナーモジュールから上位モジュールへ渡すデータ)と同時にその属性情報もrx_typで渡している。

SRQに対するpollingはserial pollingとparallel pollingの両方を実装しようかなと考えているが、参考資料によるとparallel pollingはあまり使われないようなのでserial pollingだけにするかも知れない。


0 件のコメント:

コメントを投稿

自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...