放課後の電子工作 HOME > Mandelbrot集合描画支援ハードウェア [ Pyxis ] > ハードウェア設計コンテスト 最終レポート [HTML版] > 3.システム設計

[ Pyxis ]
ハードウェア設計コンテスト
最終レポート

3.システム設計


表紙
目次

1. 製作の目的
1.1 対象
1.2 問題点
1.3 解決法
1.4 略記号について

2. システム概要
2.1 設計方針
2.2 システム的機能
2.3 動作の概要

3. システム設計
3.1 演算フローの検討
3.2 数値のデータ表現
3.3 式(1-5)の判定法

4. 機能ブロックの解説
4.1 システムブロック
4.2 加算・減算回路
4.3 乗算回路
4.4 Ox:Cx生成回路
4.5 Oy:Cy生成回路
4.6 Xx:Zx2−Zy2+Cx演算回路
4.7 Yy:2ZxZy+C演算回路
4.8 Rr:Zx2+Zy2演算回路
4.9 Cn:制御回路
4.10 回路図の構成

5. タイミング設計
5.1 タイムチャートの表記法
5.2 タイムチャート

6. 使用部品

7. 実装設計
7.1 基板
7.2 レイアウト

8. 製作

9. ハンドリングソフトウェア

10. 結果
10.1 実行時間
10.2 設計目標との対比

11. 終わりに

付録1 制御信号と出力条件
付録2 タイムチャート
付録3 部品表
付録4 部品レイアウト図 (約240KB)
付録5 回路階層と機能説明
付録6 全回路図 (約1.7MB)


HOME

Copyright 2003-2006
Chiaki Nakajima.
All rights reserved.

 

fig3-1

[図3-1]演算フロー

fig3-2

[図3-2]パイプラインとピクセルペア

3.1 演算フローの検討

 式(1-6)及びリスト1-1をデータフローを中心に考えると,図3-1のように表すことができます.

(1)パイプライン化
 この図から,反復1回分の演算は前半の乗算部と後半の加減算部に分割でき,かつそのそれぞれが,互いの演算結果を利用し合う形のループになっていることがわかります.よって,乗算部と加減算部をパイプライン化することで,それぞれを休むことなく動作させることができます.そのため,このパイプラインループに2ピクセル分のデータをいれ,乗算部と加減算部を交互に回るように全体を構成しました.
 まずPが乗算部へ入り,その結果が加減算部へ送られると同時に乗算部ではPの処理が開始されます(図3-2).以後これを反復し,Pが乗算部に戻ってくる毎にnが1増えることになります.
 このように,P,Pのそれぞれについて式(1-1)の反復演算が同時に行われます.これにより通常動作中の演算回路の利用効率を100%とすることができます.

(2)並列処理
 図3-1のフローには乗算Znx,Znxny,Znyを中心とした,次の3つの大きな流れがあることがわかります.

exp3-1

これらはそれぞれ,式(1-6a)の実部と虚部,式(1-6b)に対応しています.
 主な演算部を,この乗算を中心とした3つに分解し,その各部が並列に動作するようにしました.乗算器を3つ用意し,そのそれぞれから同時に出力される結果を,3分割された各加減算部が並列に利用しています. なお式(3-1b)の2倍演算は,Znxnyの乗算結果をステージ間レジスタにロードする部分で1ビットずらしておくことで処理しています.
 以上のように,演算フローの中の並列性を,コスト他の制限が許す範囲で最大限に利用しています.それによって,全体の処理速度,演算回路の利用効率をそれぞれ向上させています.

3.2 数値のデータ表現

 演算数値データのフォーマットは,2の補数固定小数点64ビットにしました.ビット割り当ては,符号1ビット,整数部3ビット,小数部60ビットです.

(1)ビット配分
 式(1-5)の条件により,M集合の演算は実数部虚数部ともに±2の範囲で考えれば十分です.これを有効利用すれば,無用に大きな数を表現する必要がなくなり,整数部のビット数を最小限に押さえられます.実際には,式(1-5)の判定をZ+Zだけでなく,それぞれ2乗する前のZ,Zにおいても判定するようにして,整数部を3ビットに押さえています.これについては次項で説明します.

(2)2の補数表現
 Pyxisの乗算回路には,2の補数をそのまま乗算できる2次Boothアルゴリズムを用いています.これにより,演算回路のすべてでデータ表現を2の補数に統一することができます.符号反転や絶対値などの余分な回路を省略し,かつ加減算と相性の良い最適な表現法といえます.

(3)ビット数と固定小数点表現
 データ長に64ビット用意したのは,非常に大きな拡大率の図形に対して十分な反復回数の演算ができるようにするためです.この固定小数点表現なら有効桁は十進数で18桁以上ありますので,対象の複素平面に対して一様(これが重要)に十分な精度が得られます.浮動小数点方式では,表現できる数値が対数的であることに加え,1.0付近の数値を表現すると指数部が無意味になることから,ハードウエアが複雑になる以上にそのメリットはありません.

3.3 式(1-5)の判定法

(1)Znx+Znyの判定
 |Zn|を得るためには(Znx+Zny)1/2を計算する必要がありますが,式(1-5)の判定が目的ならもちろんこれは不要で,次式の成立を調べれば十分です.

exp3-2

(2)判定法の改良
 しかし,3.2で説明したように,64ビットの数値データを有効に使うためには,できるだけ小数部のビット数が多い方が有利です.
 仮に,あるn-1回目における式(3-2)の判定が

exp3-2a

にて不成立となったとすると,次回(n)の判定の時には,例えば,

exp3-2b

の時に,

exp3-2c

となってしまいます.この数を表せるようにするには,整数部に6ビットが必要です.
 このビット数を削減するため,2乗の前のZnx,Znyをそれぞれチェックする回路を追加しました.もちろんこのためのハードウエア量が大きければ本末転倒ですが,論理的にはわずかゲート3個で実現可能です.
 式(3-1)において,

exp3-34

のいずれかが成り立つならば,式(3-2)も成立します.
 この式(3-3),式(3-4)の判定を,Znx,Znyが乗算部に入る直前に行います.このことは,式(3-2)の評価の一部を1反復サイクル前に先取りして行うことと同じです.従って,式(3-3),式(3-4)の判定結果は制御回路にて1サイクル分遅延した後,式(3-2)と併せて評価するようにします.
 これによるワーストケースは,式(3-3),式(3-4)のどちらもを満たさない最大値,

exp3-34a

の場合で,

exp3-34b

 以上より,式(3-3),式(3-4)の判定を加えることで,整数部のビット数を3ビットに押さえながら,式(1-5)の正確な判定が可能になります.

(3)実際の判定法
 ここでは,数値データをビット展開して,次のように表現します.

exp3-a

(a)式(3-2)の判定
 判定基準は正数で4以上ですから簡単です.

exp3-b

(b)式(3-3),(3-4)の判定

exp3-c

このように,簡単な論理回路にて判定が可能です.

○ここまでで,構成,機能,動作,方法を,それぞれ抽象的な表現を中心に概説しました.次の章からは,これらがどのように具体化されているかの解説に移ります.まず全体のブロックダイヤグラムを示し,その中の構成要素を順に説明していきます.

△ページの先頭へ戻る