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

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

山岡は行列の積を行なうVHDLソースを説明し、沼さんはUPボードにおいてのVGA機能を扱うVHDLソースを説明した。

山岡

<行列の積>multi3.vhd (component:mult_add.vhd)

(ソース説明)
今回は、前回のVHDLソースにおける浮動小数点数の乗算器"fpmult.vhd"と加算器"fpadder3.vhd"を組み合わせて積和器"mult_add.vhd"を作成し、これを使用した。また、前回不完全であった積和と計算結果格納のタイミングを考え、この記述を行なった。
タイミングは計算結果QQを取り込む時と、積和器にデータを入力する時を考える必要がある。ここでは以下の積和器の構造により、データを入力してから結果が出力されるまで、乗算器2CLKと加算器2CLKの合計4CLKを要する。このためにデータを入力してから4CLK後に結果を取り込むようにした。また、計算途中での加算器における結果を、乗算器から出力された結果と加算するために2CLK毎に積和器にデータを入力、結果を加算器にフィードバックした。


(齋藤先生のコメント)
以下の事を行なうよう勧められた。
  1. array size が大きいとFPGAに入りきらずに回路を作成出来ないので、小さな規模で動作確認をする。
  2. logic の 遅延に対応する clk 数をソースに直接書き込まずに、プログラムの先頭にパラメータとして表示する。
  3. 積の遅れ 2 クロックを待たずに偶数番と奇数番の内積を別々に行ない、計算の最後に偶数番と奇数番の和を計算する回路を作成する。

(コメントに対する方針)
コメント 3 の方針としては、ここでは 2 CLK 毎にデータを積和器に入力し、加算器へのフィードバックを行なっていたが、これを 1 CLK 毎にし、結果を偶数番と奇数番に分けて独立に計算し、計算の最後にこれの和をとるようにすれば、計算規模が大きくなるに従って、理論的には計算時間を半分にすることが可能であると考える。

以上 山岡 98/10/14/15:40

<VGA出力>vga4.vhd

(ソース説明)
今回のVGA出力プログラムは、スイッチを削除しFPGAにダウンロードした直後にVGA出力できるようにした。
まず、デバイスへダウンロードすると、ステート"VERT_END"に入る。ここで各VGA信号は初期化される。そして、VERT_END分の時間がたつと、"VERT_SYNC"に移り垂直同期モードになる。それからは前回と同じ垂直同期サイクルおよび水平同期サイクルを行なう。それからカウンタの細かいタイミングを調整した。


(齋藤先生のコメント)
以下の事を行なうよう勧められた。
  1. ソースのコメントについて、各状態の意味だけでなく、動作の流れがわかるように書く。
  2. case文の最後にother文をつける。カウンタの記述(VERT,HORIZ 両方)を最初のprocessに記述する。このプログラムには初期化する記述がないので動作しないと思われる。スイッチで初期化する記述を追加する。
  3. 垂直同期サイクルと水平同期サイクルの記述を分離する。垂直同期サイクルの中に水平同期サイクルがあるようにする。
  4. 本当にVGAのコネクタから信号が出力されているかわからないので、コネクタにLEDなどをつけて光るかどうか確かめる。

(コメントに対する方針)
コメント2について、other文を追加して、デバイスにダウンロードしたが、VGAには出力されず、全く変化がなかった。
コメント3は、この2つのサイクルを独立したprocessで記述する。
4については、まずデバイスが記述どうりに動いているかを確かめるため、状態をUP1ボードのLEDディスプレイに表示させる。動作していれば、VGAコネクタからの出力にLEDをつけて検証する。しかし、信号のサイクルが早いので、クロックを分周する必要がある。

以上 沼 98/10/13/15:20