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

日時: 98/05/12
場所: コンピュータ室 西2-220

今回、山岡は記憶装置、FPGA、PCの一連の協調動作の解析を行ない、沼さんはPCとFPGAのデータ操作のできるCプログラムを説明した。

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

<メモリ操作>ソースはここにあります。

(ソース説明)
このプログラムは、PCからの制御により指定したアドレスに指定したデータを書き込み、指定したアドレスよりデータを読み込み、このデータをPCに出力するためのものである。
ポートはクロック、A、B、Cポート、アドレスバス、データバス、メモリのSCS、SOE、SWEを使用する。動作記述では、まずPCからの制御をB(0)からB(3)に割り当て、この信号の変化に応じて処理動作を変更するようにしている。最初のWRMEMのprocessではB(0)の変化に応じてWRITEサイクルを開始し、Bポート上位8ビットのデータをFPGA上に蓄え、これを書き込むデータとしている。ADDSETのprocessではB(1)の変化に応じてBポート上位8ビットのデータをFPGA上に蓄え、これを書き込むデータのアドレスとしている。また、REMEMのprocessではB(2)の変化に応じてREADサイクルを開始するようにしている。
最後のprocessにおいては、まずリセット、WRITEサイクル、READサイクルのどれを実行するかを前のprocessで規定された変化に応じて決定する。ここではWRITEサイクル、READサイクルなどの一連の動作はクロックに同期させ、状態遷移マシンにより行なっている。まず、リセットがかかるとSTOPのステートに移行し、SCS、SOE、SWE、データバスなどの初期化を行なう。WRITEサイクルに入るとWRITE1のステートに移行し、引続きWRITE2、WRITE3のステートへと順番に移行し、メモリWRITE動作を行なう。READサイクルに入ればREAD1のステートへと移行し、引続きREAD2、READ3へと順番に移行し、メモリREAD動作を行なう。ここで、READされたデータはAポート下位8ビットに出力される。

(動作確認)
シミュレーションでは動いていたが、実際には動作してはいなかった。
次に、沼さんが説明を行なった。

<内積計算>ソースはここにあります。

(ソース説明)
今回のプログラムでは、ベクトルを入力し、メモリからデータを読み込み、内積を出力するプログラムを作成した(ただし2次元の内積のみ)。ソースのbuf[10]までは前回のものと同じ、次の6行では2つのベクトルのスカラー量と角度をパソコンのDOS画面から入力するためのプログラムである。そして、そのデータをBポートに出力する。ここではDOS画面で入力したデータをそのまま出力することになっているが、そのデータを山岡君のVHDLプログラムで宣言してある信号に変換して出力できるようになる予定だった。 その後、キーボードが押されるまでその内積の結果が出るようにした後、キーボードが押されていない時、Aポートからパソコンへデータを入力し、DOS画面で結果を出力できるようにした。ここでは、入力関数inpによってパソコンへ結果を出力できるが、A ポートからの入力信号がまだ決まっていないので、内積の結果そのものが入力されることとする。最後の段落の*binarystrは16進数を2進数に変換する関数である。