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

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

山岡は行列の積を行なう VHDL の実際の検証結果を、沼さんは UP ボードにおいてのVGA機能を用いて、実際にディスプレイ上に機能を表示した。

山岡

<行列の積>multi21.vhd (component:multadd2.vhd, memctrl2.vhd)

(前回までの問題点)
前回までの検証結果では、計算結果の行列の要素に抜けてしまう部分が発生したが、 これは積和器内部において、加算器の出力を入力へフィードバックする際に結果をリセットしてしまう記述があったので、これを変更した。
これは、

QQ <= ASQ & AEQ & AMQ when DCNT > "0000" else "00000000000000000000000000000000";

という記述において "DCNT" という信号でフィードバックを制御しているのだが、この信号は最初 "000...00" で、全てのデータを入れてから変化するので、積和器は4ステージにより構成されているので後ろから4個の計算だけしていた。
このフィードバック制御を以下のように変更して正しい動作を得ることができた。

QQ <= "00000000000000000000000000000000" when DCNT > FB_TIME + "0100" else ASQ & AEQ & AMQ;

(動作検証)multi21.cpp,検証結果
前回までの抜けてしまう部分が改善でき、正確な数値を得ることが出来た。
以上 山岡 98/11/04/18:15

<VGAの出力>

(今回の説明)
今回はUP1ボードを使って、実際にVGAモニターへ画面を表示させてみた。表示方法はこちら
結果としては、画面全体に赤く出るソースvga5.vhdでは、垂直方向で半分だけ中央部分に出力された。水平方向は問題はなかった。
次に、水平方向で緑、赤、青という順番で出力されるようにするソースvga6.vhdでは、各色の出力が右斜めに流れるような画面になった。
(今回の結論)
垂直同期信号および水平同期信号のタイミングに問題があるといえる。おそらく、半分の時間で各信号のサイクルがされていると思われる。
(先生のコメント)
サイクルを60倍に分周して、1秒おきに垂直同期信号が出力されているかを確かめるよう言われた。
以上 沼 98/11/06/13:00