理論グループのミーティングの報告

日時: 98/06/23
場所: 齋藤理一郎助教授教官室 西5-517

山岡は、双方向ハンドシェークを用いたPCとFPGAの間のデータのやりとり、また、浮動小数点数のかけ算を実行するVHDLを作成し、この2つを組み合わせてPCから浮動小数点数を入力し、結果をPCに返すことを行なうVHDLを作成した。

まず、山岡が説明を行なった。

<浮動小数点数かけ算>fpmult.vhd

(ソース説明)ハンドシェークの動作原理
まず、16ビットのレジスタを'array'をもちいて配列型として4つ作り、ここに32ビットの非演算数である浮動小数点数2つをまず取り込むことを行なう。
また、双方向ハンドシェーク信号のACK信号はOBF信号と同期させた。これによりPCからデータが送られ、OBF信号が'L'になればACKも'L'になり、この間にFPGA側にデータを取り込む操作を行なう。最初のprocessではこの取り込む操作を行なっている。次のprocessでは計算結果をPCへ返す操作を行なっている。この次のprocess以下が浮動小数点数のかけ算のアルゴリズムであり、クロックの立ち上がり、立ち下がりに同期させ、結果が得られるまで2クロックを要する。この部分は以前松尾さんの作成したものとほぼ同様である。このアルゴリズムは前年度のミーティング報告第一回で見ることができる。

以上 山岡 98/06/23/14:20
次に、沼さんが説明を行なった。

<双方向ハンドシェークの32ビット入出力>VHDLプログラム(interf2.vhd)C++ builder用ソース(Zip形式)
C++ソースファイルUnit1.cpp 、プログラムのフォーム前回と同じ

(ソース説明)
32ビットでデータを入出力するために、先にVHDLプログラムから作った。インターフェースカードとFPGAを繋いでいるケーブルのAポートを双方向ハンドシェークで通信するために、データは16ビットしか使えない。そこで、入力した32ビットデータをパソコン側で2つの16ビットデータに分割し、それを連続して入力する。VHDL側では、32ビットデータの上位か下位を判別するために、Bポート下位から判別用の信号を受けとれるようにする。そして、データが上位と下位のレジスタに受けとられたら、その信号によりデータを結合し、メモリなどに出力される。
次に、FPGA側のデータをパソコンに出力する場合。入力と同様にFPGAのレジスタ内で2つの16ビットデータに分割し、それをAポートでパソコンに出力する。また、ハンドシェークの出力用にOBFに、データの判別にBポート上位に信号を設定する。そして、そのデータをパソコン側のレジスタで結合して、32ビット表示する。
パソコン側のプログラムのインターフェースには変更はない。

以上 沼 98/06/23/15:45