理論グループのミーティングの報告
第七回
日時:97/06/24
場所:斉藤理一郎助教授教官室西5-517
以下の内容について発表し、議論した.
松尾のΣ計算器
固有値計算の色々なとことで使われる累積計算を行なう回路である。この回路
の入力に乗算器の出力を接続すれば内積の計算もできる。
加算器が3段のパイプライン構成をしているため、回路規模が小さく、動作が安定
という長所がある反面、Σ計算器に組み込むことが難しい。単純に下図のように
フィードバックを行なうと正しい結果が得られない。つまり、Aにa1,a2,a3,a4,
a5,a6,...を入力した時,Qにa1,a1+a2,a1+a2+a3+...ではなく、a1+a4+a7,a2+a5+a8,
a3+a6+a9,...が出力される。最後にこの三のグループの和を足し合わせる必要がある。
現在、対策を考え中。
以下はAに1,2,3,4,5,6,7,8,9を入力した場合の上図の回路の出力Qである。
このように最後に出て来る3つの値12,15と18を足し合わせれば1+2+3+...+9が得られる。
A 1 2 3 4 5 6 7 8 9 0 0 0 0 0 ....
B 0 0 0 1 2 3 5 7 9 12 15 18 12 15 ....
Q 0 0 0 1 2 3 5 7 9 12 15 18 12 15 ....
グェンの内積計算器
下図に示すような構成をしている。論理レベルでの動作は検証されたが、加算器と
乗算器が組合せ回路で構成されるため遅延時間が長いと思われる。(デバイスの時間遅延
を考慮したシミュレーションは研究室にあるPeakVHDLではできないので、どの程度の
遅延になるか全く把握していない)
クロックパルスの立上りでAとBがラッチされ、クロックパルスの立ち下がりで加算器
の出力がラッチされ入力に戻される。したがって、n番目のクロックの立上り直後、
加算器の左側入力にan×bn、右側にa1×b1+a2×b2+a3×b3+...+a(n-1)×b(n-1)
が入り、クロックの立上り直後にAとBの内積が出力される。
斎藤先生のコメント:まず、VHDLで遅延回路を記述し、遅延時間をジェネリック文な
どで変えられるようにする。加算器などの出力にこの遅延回路をつければ遅延時間を
考慮したシミュレーションができるのでは?(ただし、これは加算器をほかのシステムに
組み込む時、そのシステムの動作が加算器の遅延時間によってどのように影響される
のかを検証する場合にしか使えない。実際のデバイスに実装した時の加算器の動作を
検証するような場合は、加算器のゲートレベル構成と各々のゲートの遅延時間を知る必
要があるから到底実現不可能であろう)
内積計算器のVHDLソース
加算器のVHDLソース
乗算器のVHDLソース
内積計算機のシミュレーション結果
もどる。