ハードウェア設計コンテスト

自由課題部門Mandelbrot 集合描画支援ハードウェア [Pyxis]− 最終レポート −1994 年 12 月
中

島

千

明

［概要］
Pyxis は，1 枚の画面描画のために膨大な計算量を必要とする Mandelbrot 集合のコンピュータグラフィックスを高速化するための専用ハードウェアエンジンである．
対象を Mandelbrot 集合のみに絞ったシステム全般にわたる徹底した最適化，アルゴリズ
ムや回路構成の工夫などにより，特殊な部品を用いず，非常に低コストで高い性能を得ることができた．
なお，Pyxis は 1986 年に設計開始され，1988 年に完成した．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

-1-

最終レポート○目次

1．製作の目的3

5．タイミング設計

25

1.1

対象

3

5.1

タイムチャートの表記法

25

1.2

問題点

7

5.2

タイムチャート

26

1.3

解決法

9

1.4

略記号について9

6．使用部品26

2．システム概要

97．実装設計

26

2.1

設計方針

9

7.1

基板

26

2.2

システム的機能

9

7.2

レイアウト

26

2.3

動作の概要

10

3．システム設計

11

3.1

演算フローの検討

11

3.2

数値のデータ表現

12

3.3

式(1‑
5)の判定法

12

8．製作

28

9．ハンドリングソフトウエア

29

10．結果

32

10.1

実行時間

32

10.2

設計目標との対比

33

4.

機能ブロックの解説

13

4.1

システムブロック13

4.2

加算・減算回路

15

4.3

乗算回路

17

4.4

Ｏx:C x 生成回路

21

4.5

Ｏy:C y 生成回路

22

付録 1

制御信号と出力条件一覧

4.6

Ｘx:Z x - Z y +C x 演算回路

2

2

22

付録 2

タイムチャート

4.7

Ｙy:2Z x Z y + C y 演算回路

22

付録 3

部品表

4.8

Ｒr:Z x + Z y 演算回路

2

22

付録 4

部品レイアウト図

4.9

Ｃn:制御回路

23

付録 5

回路階層

4.10

回路図の構成

24

付録 6

全回路図

2

Mandelbrot 集合描画支援ハードウェア

11．終わりに[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

-2-

33

最終レポート1．製作の目的た本が出版されていることからも，その不思議な魅力

まずこの章では，Mandelbrot 集合のコンピュータグにとりつかれた人の多さが想像できます．

ラフィックスについて説明し，従来の方法，すなわち写真 1‑1 から写真 1‑7 は，Pyxis を用いた描画画面

ソフトウエアによる描画法とその問題点について述の例です．写真 1‑1 はＭ集合の全体像，写真 1‑2 以降

べます．そして，ハードウェアによる解決法としてのは全体像の一部を拡大描画したものです．

Pyxis の，内容説明への導入とします．
ここで，Ｍ集合とその描画について簡単に説明して
1.1

対象

おきます．

フラクタル図形の代表として有名なものに，

Ｚを複素変数，Ｃを複素定数として，次式

Z n + 1 =Z n 2 +C

Mandelbrot 集合（以下Ｍ集合）のコンピュータグラフ(n=0,1,2,･･･) ･･･(1-1)

ィックス（CG）があります．この不可思議な形状には，

を Z 0 =0 として反復演算します．この結果，反復回数

文字どおりの "無限" が醸し出す想像を超えた美しさ，ｎを無限大としても￨Ｚ￨が無限に大きくならないＣ

神秘性が潜んでいます．従来より多数の書籍，雑誌のの集合がＭ集合です．基本となるルールは，驚くべき中で紹介されているほか，それらの CG ばかりを集めことにたったこれだけです．

‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑
［写真 1‑1］
Ｍ集合の全体像．
水色で囲まれた，黒い横倒しの
雪だるま形状の部分がＭ集合．
描画対象領域の左下と右上の点の座標がそれぞれ表示されている．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

-3-

最終レポート［写真 1‑2］
Ｍ集合上部を拡大したところ．
細いヒゲの中に，全体と自己相似な図形があることがわかる．
左の小さい枠内には，拡大した範囲が表示されている．

［写真 1‑3］
雪だるまの首部の拡大．
周囲にも，全体とよく似た形状
が無限に付随していると想像できる．

［写真 1‑4］
写真 1‑3 の一部をさらに拡大．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

-4-

最終レポート［写真 1‑5］
写真 1‑4 の一部をさらに拡大．
大きな，無限に続く渦が現れる．

［写真 1‑6］
写真 1‑5 の，渦の一部をさらに拡大．
渦の中は非常に複雑な乱流になっている．

［写真 1‑7］
写真 1‑6 の一部をさらに拡大．
乱流の中から，本体と自己相似な図形が現れた．その周囲には，複雑ながらも整然とした無限の自己相似図形が集まって，デザイン
化された模様のようになっている．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

-5-

最終レポート［図 1‑1］複素平面内の描画対象領域と表示画面Imy(a 2 , b 2 )(X M A X -1, Y M A X - 1)

描画対象領域画面⇒･C x , y･P x , yRex(a 1 , b 1 )(0, 0)（3 頁からの続き）

C x =a 1 + S･x

これを画面に描画します．描画法にも種々あるようですが，ここではもっとも一般的と思われる方法につC y = b 1 + S･y

いて説明します．

(x=0,1,･･･X M A X - 1)･･･(1-4)(y=0,1,･･･Y M A X - 1)となります．

図 1‑1 のように，複素平面内に，ある描画対象領域

ところで，実際の演算では無限大を扱うことはでき( a 1 ,b 1 ) - ( a 2 ,b 2 ) を考え，これを画面に当てはめます．

ませんから，￨Ｚ￨とｎのそれぞれに対して，無限大と画面のサイズ（ピクセル数）を X M A X ×Y M A X ，そのみなすための閾値を設定します．式(1‑1)の反復にお中の画面座標( x , y) のピクセルを P x , y で表すとします．

いて，あるｎの時点でさらに，各 P x , y に対応する描画対象領域内の点をC x , y として，これはC x, y= C x+ C yi

が満たされれば，それ以降の反復により￨Ｚ￨は無限に
2

但 し 虚 数 単 位 i =-1

大きくなりますので，これを判定基準とします１）．まであるとすれば，C x ， C y は，たｎについては，描画結果と描画時間との兼ね合いに

a 2 -a 1
C x =a 1 + x･

より，予め適当な最大反復回数 N M A X を設定しておく

X MA X

ものとします．

･･･(1-2)b 2 -b 1

さて，式(1‑4)の C x , y を式(1‑1)のＣとして反復演

YMA X

算を行います．そして N M A X 回までの反復の中で，毎C y =b 1 + y･ｎにつき式(1‑5)が満たされるか否かを調べていきま

さらに，画像の変形をさけるため，ｘ軸とｙ軸のス

す．

ケールが等しくなるように，

b 2 -b 1

反復は n = N M A X - 1 か式(1‑5)の成立にて終了とし

a 2 -a 1=

YMA X･･･(1-5)|Z|≧ 2= S･･･(1-3)

ます．そして，その時のｎの値を演算結果とします．

X MA X

これを N x , y とすると，すなわちと置き換えれば，式(1‑2)は，Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

-6-

最終レポートn･ ･ ･ N M A X - 1 ≧ n にて式(1-5)が成立した場合.

となりますから，最低 8 回の浮動小数点加減乗算が必要です．例えば，

Nx,y=
NMAX

X M A X =400, Y M A X =320, N M A X =100

･ ･ ･ N M A X - 1 =n にて式(1-5)が不成立の場合.

として，すべてのピクセルがＭ集合に含まれる場合

この結果に基づき，画面上の 1 ピクセル P x , y を描

（N M A X 回反復する）を考えると，仮に判定用比較演

画 し ま す ． N x , y =N M A X - 1 な ら ば 黒 で 描 画 し ，算や，また正規化，加減算時の桁合わせなどを考えな

N x , y <N M A X - 1 ならば N x , y の値を使って適当な色でいとしても，演算量は 1 億回を越えます．これを例え描画します．

ば 1 分以内に描画するには，最低限約 2MFLOPS の性能以上の処理をｘ,ｙすべての組み合わせについて行が必要になります．

えば，1 画面分の描画図形が得られます．そこでは，Ｍ集合の部分は黒で，そしてそれ以外の部分には，Ｚ［リスト 1‑1］Ｍ集合の描画処理例

が無限遠点へ飛び去る速さの違いが色のパターンと

var
x, y, n : word;
Cx, Cy, Zx, Zy, Zx2, Zy2 : double;

なって表現されることになります．

begin
Cy := b1;
for y := 0 to Ymax‑
1 do begin
Cx := a1;
for x := 0 to Xmax‑1 do begin
Zx := 0;Zy := 0;n := 0;repeatZx2 := sqr(Zx);Zy2 := sqr(Zy);
Zy := 2 * Zx * Zy + Cy;
Zx := Zx2 ‑Zy2 + Cx;
n := inc(n)until ((n = Nmax) or (Zx2+Zy2 >= 4.0));draw̲pixel(x,y,n); (*ピクセルの描画*)
Cx := Cx + S
end;
Cy := Cy + S
end
end.

このようにして，様々な対象領域Ｃに対する画像を得ることが，Ｍ集合の CG の目的となります．

（注）筆者が使用しているコンピュータは色数が少ない
ため，Ｍ集合以外の部分にも黒を使用しています．画面
写真参照の際，注意してください．

1.2

問題点

以上の処理をソフトウエアで実現するのは簡単です（リスト 1‑1 参照）．しかし，問題は演算量です．
ＺもＣと同様に

Z=Z x +Z y iで表されるとすると，Ｚの反復 1 回に含まれる演算は，
リスト 1‑1 に注意しつつ，式(1‑1)より

Z 2 +C=(Z x 2 -Z y 2 + C x ) +(2Z x Z y +C y ) i|Z| 2 = Z x 2 +Z y 2･･･反 復 用･･･(1-6a)･･･判 定 用･･･(1-6b)

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

-7-

最終レポート今でこそ 32 ビット MPU やオンチップ FPU，浮動小数1.4

略記号について点演算 DSP などが当たり前になっていますが，当時

本レポートでは説明簡略のため略記号を多用しま（1986 年頃）はまだ 8 ビットマシンを使っている人もす．以下に主なものを挙げておきますので適宜参照し多かった頃で，1 枚の画面を得るのに一晩かかるのがてください．

普通でした．PC98XL２(386+387)でも数時間，筆者の使っていた自作 CP/M マシンでは十数時間も必要でした．
これでは，「この辺を拡大するとどうなっているのだ
ろう」と思っても，結果がでるのは翌日です．これは精神衛生上，非常によくありません．

1.3

解決法

もちろん，高価なハードウェアを用意すればすぐに

a1: 描画対象領域実軸原点

b1: 描画対象領域虚軸原点

C: 式 ( 1 - 1 ) における複素定数

Cx,y: P x , y に対応する CCx: C x , y の実数成分

Cy: C x , y の虚数成分

CK P A: 部分積加算クロックLE: P E 用結果レジスタLD: P D 用結果レジスタn: 式 ( 1 - 1 ) における反復回数でも高速化はできますが，それでは面白くありません．

Nx,y: P x , y についての演算結果

そこで，専用ハードウェア（Pyxis）を自作すること

NMAX: 最大反復回数

Px,y: 画面座標( x , y ) のピクセル

PE: ピクセルペアの内 x が偶数のピクセル

PD: ピクセルペアの内 x が奇数のピクセルS: 1 ピクセルに対応する複素平面上の幅にしました．当時筆者は貧乏学生だったので，予算を労力でカバーすることを基本方針としました．
では，2 章以降で本論に入ります．Pyxis は回路規

XMAX

: 描画画面の x 方向のピクセル数

模が大きく，動作も複雑ですので，本レポートの説明

YMAX: 描画画面の y 方向のピクセル数

は考え方を中心に進めたいと思います．

Z: 式 ( 1 - 1 ) における複素変数

Zx: Z の実数成分

Zy: Z の虚数成分

Znx: n を意識した Z x

Z ny: n を意識した Z yMandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

-8-

最終レポート2．システム概要

この後ホスト側に必要な処理は，Pyxis から順次出力される全ピクセル分の演算結果 N x , y を読み出し，

2.1

設計方針

描画していくだけです．ホストの能力に依存せず高速Pyxis の目的は，"Ｍ集合の CG を高速に作成する" たな描画を実現するため，各ピクセルに対応する C x ，めのハードウェアです．これを第一目標として設計す

C y の計算など，演算にからむ処理は Pyxis 内部です

るわけですが，当時の状況などの制約事項を考慮し，べて処理されます．ですから，機能的にはリスト 1‑1

次のように設計目標を定めました．

の描画部分(draw̲pixel())を除いた，すべての処理を①400×320 ピクセル分を 1 分以内で描画できること．

取り込んだものとなっています．

②IC 代で 2〜3 万円が上限．
③特殊な部品は使わない．

［図 2‑1］ホストとの接続形態
ホスト④拡大描画に耐える十分な演算精度を持つ．
⑤ホストの性能を期待しない．

D[0..7]

Pyxis

全般に最適なトレードオフを得るためには，システ
A[0..7]

ム全体の様々な問題に対し上記の条件のもとで，あた［制御回路部］

/RES
/IOR
/IOW

かも "ニュートン法を使って連立方程式を解く" ような設計をする必要があります．その "連立方程式" の最適解を目標として Pyxis を設計しました．

［演算回路部］

2.2(Cx,y生成回路)(式(1-1)反復演算回路)

システム的機能

図 2‑1 に Pyxis のホストとの接続形態を示します．
Pyxis は 8 ビット CPU バスに直結され，単純な I/O

コントロールバス

として動作します．

アドレスバス
データバス

まず，ホストからは第 1 章で説明した 4 つのパラメ
ータを Pyxis の内部レジスタに設定します．
①描画対象領域実軸原点：a 1 （図 1‑1 参照）②描画対象領域虚軸原点：b 1 （図 1‑1 参照）③ステップ：S （式(1‑3)参照）④最大反復回数：N M A X
そしてリセットレジスタをクリアすると，Pyxis は演算を開始します．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

-9-

最終レポート

2.3

動作の概要

テータスがセットされ，ホストに対して結果レジスタ

前項の通り，Pyxis は機能的にリスト 1‑1 をハード

L E ，L D の読み出しが可能になったことを知らせます．

ウェア化したものとなっています．ここではその動作演算終了ステータスは，L D レジスタの読み出しでクについて概略を説明します．

リアされます．

(1)処理の進み方(3)1 ピクセルペアの処理終了後処理は P 0 , 0 を開始点として，まずｘ方向に 0 から演算終了ステータスがセットされた後，Pyxis は直X M A X - 1 まで，さらにこれをｙ方向に Y M A X - 1 まで

ちに次のピクセルペアの処理を開始します．ホストの順次進行していきます．
この時ピクセル毎の C x , y は，

読み出しを待ちませんので，回路の動作効率を非常にC x 生成回路及び C y 生成回路にて処理の進行にあわ高めることができます．

せて計算されます．

しかし万一，ホストの処理が遅くて読み出しが間にPyxis はパイプラインにより 2 ピクセル分を同時に合わない場合（すなわち，演算終了ステータスがセッ処理します（後述）．ｘ方向への処理進行において，トされた状態で，処理中である次のピクセルペア P E ,まず P 0 , 0 と P 1 , 0 ，次に P 2 , 0 と P 3 , 0 ，･･･と 2 ピクセ

P D のどちらかの演算が終了した場合）には，結果レ

ルずつ順次処理されていきます．この同時に処理されジスタがオーバーライトされる直前の状態で回路全る 2 ピクセルのことを以後ピクセルペアと呼び，ｘが体が停止し，ホストの読み出しの完了を待つようにな

偶数，奇数のピクセルをそれぞれ P E , P D で表すことっています．これにより，ホストが遅くても演算結果にします．

を読み落とす心配はありません．

(2)ピクセルペア毎の処理
演算処理はピクセルペア毎に行われます．n=0 か○ここまでで，Pyxis 全体の構成及び動作の概略を説

ら，式(1‑1)の反復演算を実行していきます．

明しました．次の章では，具体的な回路の説明の前にその処理の中で， P E , P D のそれぞれについて式

必要となる，数値データの表現法などシステム全体に(1‑5)の成立がチェックされます．成立と判定された共通する基本的な重要要素について説明します．

場合にはそのフラグが制御回路へ渡され，その時のｎが結果レジスタ L E もしくは L D へロードされます．
当然，P E と P D が同時に成立するとは限りません．
先に成立した方は，他方の処理が終了するまで待たされます．
このようにして，P E , P D の両方が式(1‑5)成立と判定されるか，またはｎが N M A X - 1 に到達するとそのピクセルペアの処理は終了となります．演算終了ス

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 10 -

最終レポート3．システム設計の反復演算が同時に行われます．
［図 3‑2］パイプラインとピクセルペア

3.1

n

0

0

1

1

2

･･･

乗算部

PE

PD

PE

PD

PE

･･･

PE

PD

PE

PD

･･･

演算フローの検討

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

加減算部［図 3‑1］演算フロー

これにより通常動作中の演算回路の利用効率を 100％

Cx
Znx

×

Znx

2

2

−

Znx -Zny2とすることができます．

＋ Z(n+1)x(2)並列処理Cy× Z nxZ ny

Z ny

×

Z ny

2

乗算部

×2

＋

2

2Z n x Z n y2

Z n x +Z n y2

図 3‑1 のフローには乗算 Z n x ，Z n x Z n y ，Z n y を中＋ Z(n+1)y

心とした，次の 3 つの大きな流れがあることがわかり
ます．

2

加減算部

Z n x 2 -Z n y 2 + C x･･･(3-1a)

2Z n x Z n y +C y･･･(3-1b)

Z n x 2 +Z n y 2･･･(3-1c)

これらはそれぞれ，式(1‑6a)の実部と虚部，式(1‑6b)(1)パイプライン化に対応しています．

この図から，反復 1 回分の演算は前半の乗算部と後主な演算部を，
この乗算を中心とした 3 つに分解し，半の加減算部に分割でき，かつそのそれぞれが，互いその各部が並列に動作するようにしました．乗算器をの演算結果を利用し合う形のループになっているこ

3 つ用意し，そのそれぞれから同時に出力される結果とがわかります．よって，乗算部と加減算部をパイプを，3 分割された各加減算部が並列に利用しています．

ライン化することで，それぞれを休むことなく動作さ

なお式(3‑1b)の 2 倍演算は，Z n x Z n y の乗算結果をスせることができます．そのため，このパイプラインル

テージ間レジスタにロードする部分で 1 ビットずらしープに 2 ピクセル分のデータをいれ，乗算部と加減算ておくことで処理しています．

部を交互に回るように全体を構成しました．
まず P E が乗算部へ入り，その結果が加減算部へ送

以上のように，演算フローの中の並列性を，コストられると同時に乗算部では P D の処理が開始されます

他の制限が許す範囲で最大限に利用しています．それ（図 3‑2）．以後これを反復し，P E が乗算部に戻ってによって，全体の処理速度，演算回路の利用効率をそくる毎にｎが 1 増えることになります．

れぞれ向上させています．

このように，P E , P D のそれぞれについて式(1‑1)

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 11 -

最終レポート3.2

数値のデータ表現

3.3

式(1‑5)の判定法2

演算数値データのフォーマットは，2 の補数固定小2(1) Z n x +Z n y の判定
2

数点 64 ビットにしました．ビット割り当ては，符号 12 1/2￨Z n ￨を得るためには(Z n x +Z n y )を計算する必ビット，整数部 3 ビット，小数部 60 ビットです．

要がありますが，式(1‑5)の判定が目的ならもちろん(1)ビット配分

これは不要で，次式の成立を調べれば十分です．

|Z n | 2 =Z n x 2 +Z n y 2 ≧ 4式(1‑5)の条件により，Ｍ集合の演算は実数部虚数部ともに±2 の範囲で考えれば十分です．これを有効･･･(3-2)(2)判定法の改良利用すれば，無用に大きな数を表現する必要がなくな

しかし，3.2 で説明したように，64 ビットの数値デり，整数部のビット数を最小限に押さえられます．実ータを有効に使うためには，できるだけ小数部のビッ

2

2

際には，式(1‑5)の判定を Z x + Z y だけでなく，それト数が多い方が有利です．

ぞれ 2 乗する前の Z x ，Z y においても判定するように

仮に，あるｎ‑1 回目における式(3‑2)の判定がして，整数部を 3 ビットに抑えています．これについZ ( n - 1 ) x 2 + Z ( n - 1 ) y 2 =3.999･･･ては次項で説明します．

にて不成立となったとすると，次回(n)の判定の時に(2)2 の補数表現は，例えば，

Pyxis の乗算回路には，2 の補数をそのまま乗算できる 2 次 Booth アルゴリズムを用いています．これにより，演算回路のすべてでデータ表現を 2 の補数に統Z ( n - 1 ) x =±1.999･･･,

C x =+1.999･･･,

Z ( n - 1 ) y = 0.0,

C y =+1.999･･･の時に，

Z n x 2 + Z n y 2 =39.9999･･･

一することができます．符号反転や絶対値などの余分な回路を省略し，かつ加減算と相性の良い最適な表現となってしまいます．この数を表せるようにするには，

法といえます．

整数部に 6 ビットが必要です．

(3)ビット数と固定小数点表現

このビット数を削減するため,2 乗の前の Z n x , Z n y

データ長に 64 ビット用意したのは，非常に大きなをそれぞれチェックする回路を追加しました．もちろ

拡大率の図形に対して十分な反復回数の演算ができんこのためのハードウェア量が大きければ本末転倒るようにするためです．この固定小数点表現なら有効ですが，論理的にはわずかゲート 3 個で実現可能です．

桁は十進数で 18 桁以上ありますので，対象の複素平式(3‑1)において，面に対して一様（これが重要）に十分な精度が得られ|Z n x |≧ 2･･･(3-3)

ます．浮動小数点方式では，表現できる数値が対数的|Z n y |≧ 2･･･(3-4)であることに加え，1.0 付近の数値を表現すると指数のいずれかが成り立つならば，式(3‑2)も成立します．

部が無意味になることから，ハードウェアが複雑にな

この式(3‑3),式(3‑4)の判定を，Z n x , Z n y が乗算部

る以上にそのメリットはありません．

Mandelbrot 集合描画支援ハードウェアに入る直前に行います．このことは，式(3‑2)の評価[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 12 -

最終レポートの一部を 1 反復サイクル前に先取りして行うことと同4.

機能ブロックの解説

4.1

システムブロック

じです．従って，式(3‑3),式(3‑4)の判定結果は制御回路にて 1 サイクル分遅延した後，式(3‑2)と併せて評価するようにします．

Pyxis の全回路は 4 つの階層に分けられた機能ブロ

これによるワーストケースは，式(3‑3)，式(3‑4)のックの集合体として構成されています．この階層構造

どちらもを満たさない最大値，については後述しますが，まず第 1 階層は次の 6 つのZ n x =±1.999･･･,

機能ブロックで構成されています．

Z n y =±1. 999･･･の場合で，①C x 生成回路･･････････････････ Ｏx②C y 生成回路･･････････････････ Ｏy

Z n x 2 +Z n y 2 =7.9999･･･.

③Z x - Z y +C x 演算回路･････････ Ｘx

以上より，式(3‑3),式(3‑4)の判定を加えることで，④2Z x Z y + C y 演算回路･･････････ Ｙy

2

2

2

整数部のビット数を 3 ビットに抑えながら，式(1‑5)⑤Z x + Z y 演算回路

2････････････ Ｒrの正確な判定が可能になります．

⑥制御回路････････････････････ Ｃn(3)実際の判定法

以後これらの部分を適宜右の 2 文字の略語で表します．
Ｏx,Ｏy は各ピクセルに対応する C x ，C y を生成しここでは，数値データをビット展開して，次のように表現します．

ます．Ｘx,Ｙy,Ｒr は各ピクセルについて式(1‑1)の反D 0 D 1 D 2 D 3 .D 4 D 5 ･ ･ ･ ･ ･ D 6 2 D 6 3

復演算を行う部分です．それぞれ，式(3‑1a),式(3‑1b),↑式(3‑1c)を演算します．Ｃn はホストインターフェー

小数点スを含む全体制御回路です．

①式(3‑2)の判定

図 4‑1 に Pyxis のブロックダイヤグラムを示します．

判定基準は正数で 4 以上ですから簡単です．
式(3‑2)=D 0 + D 1 .

この図には，第 2 階層までが表現されています．制御②式(3‑3),(3‑4)の判定

回路部を除けば，図 3‑1 の演算フローに忠実な構成になっています．

式(3‑3)=( D 0 + D 1 + D 2 ) ･ ( D 0 +D 1 +D 2 ) ．
式(3‑4)も同様．
このように，簡単な論理回路にて判定が可能です．

以降で，このシステムブロックを構成している各機○ここまでで，構成，機能，動作，方法を，それぞれ

能ブロックを説明していきますが，個別の説明に入る

抽象的な表現を中心に概説しました．次の章からは，前に，まず演算回路部①〜⑤に共通の基本要素である

これらがどのように具体化されているかの解説に移"加算・減算回路"と"乗算回路"について説明します．

ります．まず全体のブロックダイヤグラムを示し，その中の構成要素を順に説明していきます．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 13 -

最終レポート［図 4‑1］全体ブロック図
ホストへ

Cpu

Cnt

Gen

Org

Tmp

[Cn]

各部制御信号

Stp

[Ox]

Add

And

Add

Chk

Pcr

[Oy]

Org

Add

Tmp

Asc

Add

[Yy]
Mpr

Mul

Mpr

Chk

[Xx]
Sub

Sqr

Sqr

Add

Cpr

Asc

Pcr

Pcr

Asc

[Rr]

○Cn‑
Cpu：CPU インターフェース回路○Oy‑
Org：描画対象領域虚軸原点 b 1 保持レジスタ○Cn‑
Cnt：全体制御用同期カウンタ○Oy‑
Tmp：C y 生成用テンポラリレジスタ○Cn‑
Gen：制御信号生成回路○Oy‑
Add：C y 生成用加算回路○Oy‑
Stp：C x , C y 生成用 S 保持レジスタ○Ox‑
Org：描画対象領域実軸原点 a1 保持レジスタ○Ox‑
Tmp：C x 生成用テンポラリレジスタ○Yy‑
Mpr：Z y 用乗数,被乗数レジスタ○Ox‑
Add：C x 生成用加算回路○Yy‑
Mul：Z x Z y 用乗算回路○Ox‑
And：C x 生成用データゲート○Yy‑
Pcr：2 Z x Z y 用乗算結果,残留桁上げレジスタ○Yy‑
Asc：2 Z x Z y 残留桁上げ加算回路○Yy‑
Add：2 Z x Z y + C y 用加算回路○Xx‑
Mpr：Z x 用乗数,被乗数レジスタ2○Yy‑
Chk：式(3‑4)判定回路○Xx‑
Sqr：Z x 用乗算回路
2○Xx‑
Pcr：Z x 用乗算結果,残留桁上げレジスタ
2

2

○Rr‑
Sqr：Z y 用乗算回路○Xx‑
Asc：Z x 残留桁上げ加算回路
2

2

2

○Rr‑
Pcr：Z y 用乗算結果,残留桁上げレジスタ2○Rr‑
Asc：Z y 残留桁上げ加算回路○Xx‑
Sub：Z x −Z y 用減算回路
2

2

○Xx‑
Add：(Z x - Z y )+ C x 用加算回路

2

2

○Rr‑
Add：Z x + Z y 用加算回路○Xx‑
Chk：式(3‑3)判定回路○Rr‑
Cpr：式(3‑2)判定回路Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 14 -

最終レポート4.2

加算・減算回路
ルチプレクスして出力し結果をロードする回路がこ(1)状況の有効利用のほかに必要となります．が Pyxis ではパイプライン
パイプライン化により，加減算部でも乗算部と同じ化のためのステージ間レジスタがいずれにしても必演算時間を使うことができます．視点を変えて，これ要ですので，それにこの機能をあわせ持たせてありまを有効に使えば，ハードウェアの規模を小さく押さえす．
ることができます．乗算より加減算の方が所要時間は(3)減算回路
短く，処理も少ないですから，許される時間内に演算また，この回路構成は簡単に減算回路にも対応できが終わる程度のハードウェアを用意すれば十分です．
ます．第 2 オペランド側の入力をビット反転し，CSR(2)アルゴリズム：加算回路の初期値を 1 にします．これで 2 の補数となりますの
図 4‑2 に Pyxis の加算回路を示します．64 ビットデで，後は加算器と同様です（図 4‑3）．
ータを 8 ビット毎 8 回に分けて，LSB 側よりこの回路に通します．毎回の桁上げは，桁上げ保存レジスタ CSR
このように，加減算回路においては許容された時間に保存され，次回にキャリー入力として加算されるよを有効に利用することと，桁上げ保存を応用することうにします．これにより，64 ビット分の加算器を 8で，ハードウェアの規模を大幅に縮小しています．
ビット分のハードウェアで実現できます．もちろんこの回路のためには，64 ビットデータを 8 ビット毎にマ［図 4‑2］加算回路○CSR はクロック 0 にて 0 にクリアされる．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 15 -

最終レポート［図 4‑3］減算回路○CSR はクロック 0 にて 1 にセットされる．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 16 -

最終レポート4.3

乗算回路(2)構成と動作(1)アルゴリズム①被乗数，乗数レジスタ

乗算には種々の方法がありますが，Pyxis では 2 次乗算回路の基本ブロック図を図 4‑5 に示します．

の Booth アルゴリズムを利用しました．

被乗数レジスタは 64 ビットパラレル出力です．

このアルゴリズムを用いると，64 ビットの固定小数乗数はシフトレジスタにロードされますが，これは点数を，ビット数の 1/2 の 32 クロックで，しかも 2

2 次 Booth のため 2 ビットずつシフトする必要がありの補数表現のまま演算できることが大きな特長です．

ます．そこで半分のサイズのシフトレジスタを 2 系列

他の方法，例えば単純なシフト加算方式では処理に 64

用意し，偶数番ビットと奇数番ビットを分けてそれぞ

クロックを必要とすることに加え，乗算器の入力を予れロード／シフトしています．そしてそのシフト出力

め正数にしておく必要があります．またその際，符号（LSB 側）の 3 ビットを乗数側データとして 2 次 Boothは別に処理しなければなりません．加減算を含む各演乗算器に送っています．

算回路のデータ表現を統一することはシステム的に非常に有効です．そのためにも，乗算に Booth のアル
ゴリズムを使うことはこの場合最適といえます．

［図 4‑4］2 次の Booth アルゴリズム
評価中の3ビット

まず乗数の LSB 側に 0 を補う．つ

R2i+1
0
0
0
0
1
1
1
1

ぎに LSB 側より，1 ビット重複しながら 3 ビットずつ評価する．この 3
ビットのパターンにより右の表の部
分積を生成し，加算する．

R2i
0
0
1
1
0
0
1
1

R2i-1
0
1
0
1
0
1
0
1

部分積

0
2i
＋1×M×22i＋1×M×22i＋2×M×22i−2×M×22i−1×M×22i−1×M×20

例として，乗数 R=2210=0101102，被乗数 M=2510=0110012 の場合を考える．
0を補う
R=010110
i=0 :
i=1 :
i=2 :

100
011
010

部分積

(符号拡張)
011111001110

2000110010−2×M×2＋2×M×24＋1×M×2＋ ） 0011001
01000100110 = 55010

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 17 -

最終レポート［図 4‑5］乗算回路のブロック図
8643

被乗数レジスタ(64ビット)

2次Booth乗算器(64×2ビット)

64

部分積加算器(68ビット)56

8乗数偶数番ビット用
シフトレジスタ(34ビット)
乗数偶数番ビット用
シフトレジスタ(34ビット)

3

2の補数用
1生成回路

16

桁上げ保存
シフトレジスタ16(32ビット)

1

68

64

16
16

16
16

乗算結果
レジスタ
(64ビット)
残留桁上げ
レジスタ(32ビット)8866 部分積レジスタ 66(66ビット)

この両レジスタは，パイプラインのステージ間レジます．図 4‑5 の中に "2 の補数用 1 生成回路" がありスタとしても機能しています．レジスタの入力側は加ますが，ここで 2 の補数にするための 1 を生成してい減算部（具体的には前項の加算・減算回路）と接続さます．

れており，そこからの出力は 64 ビットの LSB 側より 8③高速部分積加算

ビットずつ 8 回に分けて送られてきます．乗数シフト

次にこの部分積を加算します．部分積レジスタはク

レジスタは乗算処理の進行により MSB 側から空いてきロック 0 でクリアされ，以後クロック 31 まで部分積ます．この空きが 8 ビットになる瞬間に，加算・減算

加算器の出力をクロック毎に一時的に保存します．以

回路からの 8 ビット出力がそこへロードされるタイミ

後，この部分積加算クロックを C K P A と表記します．

ング構成になっています．結果，例えば P E の乗算処

部分積加算器は LS283 を 17 個使った 68 ビット加算

理が終了した時点では，この乗数シフトレジスタには回路ですが，このキャリーを 1 クロック中ですべて伝P D のデータがすでに 64 ビット分ロードされているこ搬させると非常に時間を消費してしまいます．そこで，とになります．そして同時に，この最後の 8 ビットロ

ここでも桁上げ保存を応用しています．これにより 64

ードのタイミングで，乗数シフトレジスタにロード済

ビット加算でありながら，キャリー伝搬のための無駄

みの 56 ビットとこの最後の 8 ビットを合わせて被乗な時間を完全に排除しています．
図 4‑6 に，乗算回路の動作を示します．この図を用

数レジスタへロードし，被乗数を更新しています．

いて，部分積加算における桁上げの高速処理を説明し②2 次 Booth 乗算器

ます．

2 次 Booth 乗算器の実現には，LS261 を用いています．これにより，図 4‑4 にある被乗数 64 ビット×乗
数 2 ビット（±2,±1,0）の部分積が得られます．
ただし，生成される部分積がＭ×(‑2,‑1)の場合のLS261 からの出力は 1 の補数でしかないことに注意しMandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 18 -

最終レポート［図 4‑6］乗算回路の動作−高速部分積加算
小数点
↓
被乗数 →

M00 M01 M02 M03.M04 M05 ･･････ M53 M54 M55 M56 M57 M58 M59 M60 M61 M62 M63

乗数 →R00 R01 R02 R03.R04 R05 ･･････ R53 R54 R55 R56 R57 R58 R59 R60 R61 R62 R63*2↓ CKＰＡ= 31

部分積加算器への入力
CKＰＡ=030

29･･････

5

4

3

2

1

0

0

部分積(LS261の出力) → (P‑‑)P00 P01 P02 P03 P04 P05 ･･････ P53 P54 P55 P56 P57 P58 P59 P60 P61 P62 P63

0

0

0

0

部分積レジスタの出力 →

0

0

0

0

0

0

0

桁上げ保存シフトレジスタの出力 →000 ･･････

0

部分積レジスタへの入力 →0･･････

0

0

0

0

0

0

0

0

0

0

0

0
0

0

Q00 Q01 Q02 Q03 Q04 Q05 ･･････ Q53 Q54 Q55 Q56 Q57 Q58 Q59 Q60 Q61 Q62 Q63 Q64 Q65

部分積加算器の出力 桁上げ保存シフトレジスタへの入力 →C00(0)･･････

(0)

C26

(0)

(カッコ内はシフトされた桁上げ)

C28

(0)

C30

↓*1

(0)

↓*3

(P‑
‑)P00 P01 P02 P03 P04 P05 ･･････ P53 P54 P55 P56 P57 P58 P59 P60 P61 P62 P63

0 RND

0

0

Q00 Q00 Q00 Q01 Q02 Q03 ･･････ Q51 Q52 Q53 Q54 Q55 Q56 Q57 Q58 Q59 Q60 Q61 Q62 Q63 Q64 Q65
CKＰＡ=10･･････

00

00Q00 Q01 Q02 Q03 Q04 Q05 ･･････ Q53 Q54 Q55 Q56 Q57 Q58 Q59 Q60 Q61 Q62 Q63 Q64 Q65
C00(C01)･･････(C25)

C26

(C27)

C28

(C29)

C30

(P‑‑)P00 P01 P02 P03 P04 P05 ･･････ P53 P54 P55 P56 P57 P58 P59 P60 P61 P62 P63

0 RND

(C31)

0

0

Q00 Q00 Q00 Q01 Q02 Q03 ･･････ Q51 Q52 Q53 Q54 Q55 Q56 Q57 Q58 Q59 Q60 Q61 Q62 Q63 Q64 Q65
CKＰＡ=20･･････

C25

C27

C29

C31

Q00 Q01 Q02 Q03 Q04 Q05 ･･････ Q53 Q54 Q55 Q56 Q57 Q58 Q59 Q60 Q61 Q62 Q63 Q64 Q65
C00(C01)･･････(C25)

C26

(C27)

C28

(C29)

C30

(P‑‑)P00 P01 P02 P03 P04 P05 ･･････ P53 P54 P55 P56 P57 P58 P59 P60 P61 P62 P63

0 RND

(C31)

0

0

Q00 Q00 Q00 Q01 Q02 Q03 ･･････ Q51 Q52 Q53 Q54 Q55 Q56 Q57 Q58 Q59 Q60 Q61 Q62 Q63 Q64 Q65
CKＰＡ=30･･････

C25

C27

C29

C31

Q00 Q01 Q02 Q03 Q04 Q05 ･･････ Q53 Q54 Q55 Q56 Q57 Q58 Q59 Q60 Q61 Q62 Q63 Q64 Q65
C00(C01)･･････(C25)

･

･

･

･

･

･

(P‑‑)P00 P01 P02 P03 P04 P05 P06 P07 ･･････ P55 P56 P57 P58 P59 P60 P61 P62 P63

C26

0 RND

(C27)

0

C28

(C29)

C30

(C31)

0

Q00 Q00 Q00 Q01 Q02 Q03 Q04 Q05 ･･････ Q53 Q54 Q55 Q56 Q57 Q58 Q59 Q60 Q61 Q62 Q63 Q64 Q65
CKＰＡ=310

C01 ･･････ C25

C27

C29

C31

Q00 Q01 Q02 Q03 Q04 Q05.Q06 Q07 ･･････ Q55 Q56 Q57 Q58 Q59 Q60 Q61 Q62 Q63 Q64 Q65
C00

(C01)

C02 ･･････ C26

(C27)

C28

(C29)

C30

→ 乗算結果レジスタへ転送(C31) → 残留桁上げレジスタへ転送↑
小数点*1:本文参照．
*2:原理上では，被乗数を±2 倍したとき，ここのビットの処理が必要である．しかし，3.3 の式(1‑5)
判定法により，意味のある乗数，被乗数の絶対値は 2.0 未満であるので， M00 と M01 は常に同一である．
よって，このビットの処理は不要である．
*3:RND は 2 の補数補正用ビットで，本文②の説明における 2 の補数用 1 生成回路の出力がここで加算される．このビットは本来 P63 と同じ位置へ同時に加算されるべきものであるが，加算器にとって 4 つめのオペランドとなるため加算できない．そのため，桁上げ保存に似た処理で 1 加算サイクル遅らせた後，本来の位取り位置に合わせるため 2 ビットずらして加算している．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 19 -

最終レポート例として，部分積の中の LS283 1 個分（P56〜P59：の両者を加算し，最終的な乗算結果を得ています．

図中*1）の，CK P A ＝1 での動きで説明します．

この両レジスタは，乗数・被乗数レジスタ同様パイ

4 ビット全加算器 LS283 の入力には，それぞれプラインのステージ間レジスタとしても機能してい・A4〜A1：部分積レジスタの出力 Q54〜Q57

ます．両レジスタの出力側がそれぞれ 8 ビットのバス

・B4〜B1：LS261 から出力された部分積 P56〜P59

接続になっており，64 ビットを 8 ビットずつ 8 回に分・C0(桁上げ入力)：C27 の出力(現在初期化により 0）

けて，時分割で加減算部へ送っています．

が入力され，その出力として Q56〜Q59 が得られています．この出力は次の C K P A ＝2 の開始タイミングで，乗算回路の速度は，Pyxis の性能を左右する重要な部分積レジスタの Q58〜Q61 として 2 ビットずらして要素です．以上説明したように，2 次 Booth アルゴリ

ロードされます．

ズムを用いることで，2 の補数 64 ビット同士の乗算をこれと同時に，LS283 の桁上げ先見出力 C4 は，桁上32 回の部分積加算で実行します．また桁上げ保存の応

げ保存シフトレジスタの C26 にロードされます．そし用により，64 ビットの部分積加算を行いながらも高速てこの C26 の内容は，次の次の加算クロック CK P A ＝な動作が可能です．

3 の開始タイミングで C27 にシフトされ，その出力が実際の動作は，LSTTL ベースの設計ながら，部分積桁上げとして加算されます．

加算クロックは 12.5MHz です．基本的にはシフト加算

LS283 が 4 ビットの加算器であることと，乗数のシ方式ですが，64×64 ビットを 2.56μsec で演算していフトが 2 ビットずつであることから，保存された桁上ます．

げは本来の位取り位置に合わせるため 2 つ後の加算ク

このほか，パイプラインステージ間レジスタと，乗ロックにて処理しています．

数･被乗数･乗算結果･残留桁上げの各レジスタを共用

少しややこしい処理ですが，桁上げを伝搬させないしています．さらにそれらへのロード／ストアを部分ので高速な部分積加算が実現できます．このほかの動積加算クロックと同一タイミングで実行しています．

作は，図中の説明を参照してください．

データ転送のための無駄なクロックタイミングがな④乗算結果レジスタ・残留桁上げレジスタ

いので，すべてのクロックに対して演算回路は 100％

乗算結果レジスタは 64 ビットパラレル入力のレジの効率で動作します．

スタです．これには C K P A ＝31 の部分積加算器の出力が，次の C K P A ＝0 の開始タイミングでロードされま○次の項から，各機能ブロックの説明に入ります．そす．これが乗算結果ですが，一部の桁上げが桁上げ保の中で出てくる演算回路は，基本的に前述の加算・減存シフトレジスタに残っていますので，これも同時に算・乗算回路です．その組み合わせにより，大きな機残留桁上げレジスタ（32 ビットパラレル入力）にロー

能ブロックが構成されています．

ドします．そしてパイプラインの加減算部の先頭でこMandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 20 -

最終レポート4.4

Ｏx:C x 生成回路

そしてピクセルペアの処理終了時に，Tmp にＳを 2

ここは，式(1‑4)の０から X M A X - 1 までの各ｘに対回加算します．反復終了時のＰＤに対応する出力 C x +応する C x を，処理の進行に合わせて生成する部分でＳを Tmp に保存し，さらに続いて開始される次のピク

す．

セルペアの処理の第 1 サイクルで And を 1 にすると同

Ｏx のブロック図を図 4‑7 に示します．

時に出力を Tmp にロードします．これで，次のピクセ

Org,Tmp,Stp はトライステート出力の 64 ビットレ

ルペアに対する Tmp が準備されます．

ジスタで，出力は 8 ビット幅のバス構造になっています．これは 4.2 の加算回路構成である Ox‑Add 及びＸx

［図 4‑7］Ｏx のブロック図の加減算部への対応のため，8 ビットずつ，8 回に分

Org

8

Stp
8

けた時分割出力としています．
さて式(1‑4)の乗算項は，もちろん乗算する必要はTmpありません．x=0 に対応する Org を初期値として，こ

8

8

8

8

Add

And

Oyへ

8
XxへC x を出力

れに Stp を加算し，結果をＸx の加減算部へ送ると同8(注)数字はビット数○Ox‑
Org：描画対象領域実軸原点a1保持レジスタ

時に Tmp へ保存します．この Tmp と Stp の加算と保存○Ox‑
Tmp：C x 生成用テンポラリレジスタ

をｘの 1 増加毎に行うことで C x を生成します．

○Oy‑
Stp：C x , C y 生成用S レジスタ(Oyと共用)

これが C x 生成法の基本ですが，パイプラインへの○Ox‑
Add：C x 生成用加算回路○Ox‑
And：C x 生成用データゲート

対応のためもう一工夫します．
And は 8 個の And ゲートで構成されており，8 ビッ
トデータ(Ｓ)をそのまま通過させるか(×1)，または［図 4‑8］Ｏy のブロック図

出力を 0 とするか(×0)を制御するためのゲートです．

8

Stp

Ｘx の加減算部には，反復演算により P E と P D の

Org

8

データが交互に回ってきますので，C x の値もそれに8

OxへSを出力同期して交互に生成する必要があります．このため，

Add

8

8

8
(注)数字はビット数

まず Tmp には P E に対応する C x だけが保存されるよ
うにします．そして Stp は常時出力しておき，And のTmp
8

YyへC y を出力○Oy‑
Org：描画対象領域虚軸原点b 1 保持レジスタ○Oy‑
Tmp：C y 生成用テンポラリレジスタ

制御により 0 を加算するかＳを加算するかを切り替え○Oy‑
Add：C y 生成用加算回路

ます．

○Oy‑
Stp：C x , C y 生成用S レジスタ(Oxと共用)

P E の時：And を 0 にして P E の C x + 0 を出力．
P D の時：And を 1 にして P E の C x + Ｓを出力．
この間，Tmp は変更されません．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 21 -

最終レポート4.5

Ｏy:C y 生成回路

［図 4‑9］Ｘx のブロック図
OxよりC x を入力

ここは，式(1‑4)の 0 から Y M A X - 1 までの各ｙに対Cnへ式(3‑3)の結果を出力8応する C y を，処理の進行に合わせて生成する部分で

1
8

Add

Chk

す．

8

ここの動作はＯx と同様ですが，パイプラインに関

3

Mpr

Yyへ乗数Z x を出力64する処理が不要なのでその機能はありません．単純に

3

8ｙの 1 増加毎に Stp と Tmp の加算と保存を行って，C y

Sub

Sqr

8

64

を更新しています．

2

RrへZ x を出力

8
Asc

2

2

RrよりZ y を入力

8 8

Ｏy のブロック図を図 4‑8 に示します．

4.6

32

2

Ｘx:Z x - Z y +C x 演算回路

8

Pcr(注)数字はビット数○Xx‑
Mpr：Z x 用乗数,被乗数レジスタ
2○Xx‑
Sqr：Z x 用乗算回路

ここには，Zx の 2 乗のための乗算回路と，
2

2

○Xx‑
Pcr：Z x 用乗算結果,残留桁上げレジスタ2

Z x - Z y + C x のための加減算回路があります．また，○Xx‑
Asc：Z x 残留桁上げ加算回路

2 乗の前の式(3‑3)のチェックがあります．

○Xx‑
Sub：Z x −Z y 用減算回路

2
2

2

2

2

○Xx‑
Add：(Z x - Z y )+ C x 用加算回路

ブロック図を図 4‑9 に示します．

4.7

○Xx‑
Chk：式(3‑3)判定回路Ｙy:2Z x Z y + C y 演算回路
［図 4‑10］Ｙy のブロック図

ここには，Z x Z y のための乗算回路と，2Z x Z y + C y(注)数字はビット数

OyよりC y を入力のための加減算回路があります．またＸx 同様，2 乗

8
8
Pcr

の前の式(3‑4)のチェックがあります．
ブロック図を図 4‑10 に示します．

4.8

2

Xxより
乗数Z x
を入力

3

32
64
Mul

2

ここには，Z y の 2 乗のための乗算回路と，Z x +Z y

8
64
64

Rrへ被乗数Z y を出力

2

Add

64

2

Ｒr:Z x + Z y 演算回路

Asc

8

8

Mpr

8

Chk

3

1

Cnへ
式(3‑
4)の
結果を出力

Rrへ乗数
Z y を出力のための加減算回路があります．また，式(3‑2)のチ○Yy‑
Mpr：Z y 用乗数,被乗数レジスタ

ェックがあります．

○Yy‑
Mul：Z x Z y 用乗算回路○Yy‑
Pcr：2 Z x Z y 用乗算結果,残留桁上げレジスタ

ブロック図を図 4‑11 に示します．

○Yy‑
Asc：2 Z x Z y 残留桁上げ加算回路○Yy‑
Add：2 Z x Z y + C y 用加算回路

ここには乗数，被乗数レジスタはありません．

○Yy‑
Chk：式(3‑4)判定回路Ｘx,Ｙy 内のレジスタ出力を同時に利用する事で，無駄な回路を省いています．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 22 -

最終レポート［図 4‑11］Ｒr のブロック図［表 4‑1］内部レジスタ

Yyから乗数Z y を入力
Yyから被乗数3Z y を入力

64
Sqr
64

Rrより
2
Z x を入力<入力>

Cnへ式(3‑2)の結果を出力リセットレジスタ(ビット 0 のみ有効:1 でリセット)

1
8

Add

8

描画対象領域実軸原点

Cpr

描画対象領域虚軸原点

8
Pcr

8

0A0H〜0A7H

b 1 レジスタ(8 バイト)(注)数字は
ビット数

Asc

080H
0B0H〜0B7H

a1 レジスタ(8 バイト)

32
8 8

Rrへ
2
Z y を出力

I/O アドレスC x , C y 生成用ステップ
Ｓレジスタ(8 バイト)

0A8H〜0AFH

2○Rr‑
Sqr：Z y 用乗算回路

最大反復回数

2○Rr‑
Pcr：Z y 用乗算結果,残留桁上げレジスタ

NMAX レジスタ(2 バイト)2

○Rr‑
Asc：Z y 残留桁上げ加算回路
2

<出力>

2

○Rr‑
Add：Z x + Z y 用加算回路○Rr‑
Cpr：式(3‑2)判定回路I/O アドレス

結果レジスタ LE(2 バイト)

09AH〜09BH

結果レジスタ LD(2 バイト)

09DH〜09EH

演算終了ステータスレジスタ(ビット 0 のみ有効:1 で終了)

4.9

088H,090H

098H

Ｃn:制御回路Ｃn は Pyxis 各部の制御信号すべてを生成している(2)Cn‑
Cnt：制御信号生成用同期カウンタ

部分で，次の 3 部分より構成されています．

ここは，制御信号を生成するために必要となる，内・Cn‑Cpu：ホストインターフェース

部状態をカウントする同期カウンタ部です．

・Cn‑Cnt：制御信号生成用同期カウンタ

機能上これは 4 つに分けられており，分周比の小さ・Cn‑Gen：制御信号生成回路

い方から，①パイプライン 1 段の中の処理クロックである，(1)Cn‑
Cpu：ホストインターフェース

部分積加算クロックカウンタ（5 ビット）と，2.2 での説明の通り，Pyxis は 8 ビット CPU バスに

ピクセルペア区別用カウンタ（1 ビット）接続され，単純な I/O として動作します．表 4‑1 に，②式(1‑1)の反復回数カウンタ（20 ビット）

内部レジスタの一覧を示します．これら内部レジスタ③ｘカウンタ（12 ビット）へのインターフェース回路，アドレスデコーダなどが④ｙカウンタ（12 ビット）

主な内容です．

です．

なお，X M A X , Y M A X は特に変更する必要性を感じな

しかし回路構成上では，この 4 つはシーケンシャル

かったので内部で固定されており，それぞれ 400,320に接続された 52 ビットの完全同期カウンタになってです．

おり，12.5MHz の共通クロックで動作します．
通常の回路構成ではこのビット数を 12.5MHz でカウ
ントすることはできませんので，ちょっと凝った回路

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 23 -

最終レポートにしてみました．カウンタ IC に非同期キャリー出力

果がストアされるレジスタです．ホストの処理を軽減の LS161 を 13 個使用し，それ 1 個に AND ゲートを 2するため，反復が N M A X 回行われたかどうかを示す 1個ずつ付加して桁上げ先見しています．これにより飛ビットのフラグ MAXCNT が，結果の MSB にアサインさ

躍的にクロックレートを上げることができます．

れています．

原理は簡単ですので説明は省略します．回路図を参照してください．

4.10

回路図の構成Pyxis の回路図は OrCAD の階層構造を使ってかかれ(3)Cn‑
Gen：制御信号生成回路ており，4 階層全 67 枚で構成されています．1 枚 1 枚

ここは，次の 3 つの部分で構成されています．

がそれぞれ機能ブロックになっており，図面番号がそ①Cn‑Gen‑Gn1〜4：制御信号生成回路の機能ブロックの内容を表現しています．

②Cn‑Gen‑Syn：パイプライン制御回路③Cn‑Gen‑Cnr：演算結果レジスタ○図面番号の付け方
・図面番号はファイル名と共通で，最大 8 文字．

①Cn‑Gen‑Gn1〜4：制御信号生成回路

・第 1 階層は 1 枚のみで，図面番号は［Pyxis］．

前項の Cn‑Cnt の出力を受けて，Pyxis 各部の状態を

・第 2 階層以下は，機能ブロックの名称を次のように制御する信号を生成，出力する部分です．設計当時の付ける．

資料ですが，この制御信号と出力条件の一覧を付録 1

図面番号＝［2233344］．

に示します．

第 2 階層は 2 文字で，Ｏx,Ｏy,Ｘx,Ｙy,Ｒr,Ｃn の②Cn‑Gen‑Syn：パイプライン制御回路

いずれか．

主に，2.3 で説明した反復演算の終了処理に関する

第 3 階層は 3 文字で，所属する第 2 階層名称の後に部分です．正直言って，ここの動作は複雑すぎて簡単付加する．第 4 階層も同様．

に説明できません．この反復演算の終了シーケンスには 10 通りの場合があり（CPU の読み出しが遅い場合のここまでの説明の中で出てきた各機能ブロックの一時停止の有無や，式(1‑5)判定回路 3 つからの信号
名称はこのような形で図面番号と対応しており，それのパターン，P E が先に終了，P D が先に終了･･･の組
ぞれ階層と機能がわかるようになっています．
み合わせ），そのそれぞれについての動作があります．
付録 5 に回路図の階層情報を示します．
設計時にも，動作，タイミングの検証にずいぶん時間
付録 6 に Pyxis の全回路図を示します．
がかかりました．
③Cn‑Gen‑Cnr：演算結果レジスタ
ピクセルペア P E , P D のそれぞれに対する演算結

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 24 -

最終レポート例1．インバータ

5．タイミング設計

I

タイミング設計として本章を設けましたが，具体的

O

の場合．

な回路の動作タイミングの説明については非常に繁I雑となるため省略します．それに関してはタイムチャOートを示すことにとどめ，ここではそのタイムチャー
不確定

確定

不確定

確定

トの表記法について説明します．そしてそれが，デバ
例2．多段接続イスの実力値をあてにせず最大遅延時間に基づいたIものであることにより，動作タイミングがきちんと確

O

の場合．

認されていることを示します．
I

5.1

O

タイムチャートの表記法

不確定

この表記法は筆者の自己流で，従来より長く使って

確定

不確定

この場合の不確定時間は，各t p d ( M A X ) の合計．

いるものです．簡単ですが正確で便利な書き方ですの
例3．トライステート出力のレジスタ

で紹介します．

D

Q

CK
/OE

［図 5‑1］中島流表記法①基本的に方眼紙に書く．
②回路要素の最小遅延時間t p d ( M I N ) を，どんな要素でDも一律方眼の最小目盛りの1/2とする．

CK

以上を基本に，次のように表記する．

/OE○単信号の場合

Q

少し開ける
L→H

不確定

確定

H→L

不確定

確定

不確定

確定

不確定

確定

このように，最小遅延時間を最小時間単位に設定しtpd(MIN)
tpd(MAX)て導入し，その表記法と併せてそれを明示しています．
わずかな工夫ですが，これにより信号の遷移状態とと○バスの場合もに信号がいつ確定し，いつまで有効なのかがひと目
不確定

確定でわかるようになっています．また，最小遅延時間を

tpd(MIN)
tpd(MAX)

0 でなく 1/2 最小目盛りとすることによって，連動している複数の信号遷移の従属関係も表現できます．

このように，左側が開いていて上下に線があるときは，その期間の信号は不確定であることを表す．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 25 -

最終レポート5.2

タイムチャート

7．実装設計設計当時に作成したタイムチャートをそのまま示

回路設計の結果，IC 数 361 個の巨大な回路となってします．

しまいました．部品点数が多くなると，レイアウトな（付録 2‑1）

どにも十分配慮する必要があります．

リセット状態から，リセット解除後反復 1 回分の全体の動作を検証するためのもの．

7.1（付録 2‑2〜2‑5）

基板

基板は 330mm×245mm の，市販のユニバーサル両面

ピクセルペアの処理終了時の動作を検証したもの．

基板を使用しました．デジタル回路用のパターンで，（付録 2‑6）

片面がグランドプレーンになっているものです．この乗算回路のタイミングを検証したもの．

グランドプレーンは IC の下やピン間にもパターンが（付録 2‑7）

通っており，グランドがまさにメッシュ上になっていＸx の加減算部のタイミングを検証したもの．

るすぐれものです．
この基板 4 枚に回路を分割して実装しました．分割

以上の表記法とタイムチャートにより，最大遅延時の仕方は，Ｏx とＯy，Ｃn をあわせて 1 枚，他Ｘx，間に基づいたワーストケースの動作タイミングを確

Ｙy，Ｒr に各 1 枚ずつです．

認しています．
7.2
6．使用部品

レイアウト

IC のレイアウトも難しくなってきます．特にＣn が付録 3 に，Pyxis の部品表（半導体のみ）を示しま

問題で，ここからすべての回路へ制御信号が分配されす．全 IC 数は 361 個，このうち 1 個はオシレータモ

ます．そこで，レイアウト図面を作成して全配線を書ジュールです．種類別の構成は，き込み，妥当性を確認することを何度か行って決めま・LS ･･････････ 317 個・ALS ･････････
7個
・F ･･･････････
36 個
・オシレータ････
1個
合計
361 個．

した．決定基準は，○同一タイミングの信号（特にクロック）の配線長をできるだけそろえる．
○長い経路の配線が生じないようにする．

F シリーズは，制御回路(Ｃn)内でタイミングの厳し○グランドのリターンも考慮する．

い部分や重いファンアウトの部分に使用されていまと，改めて書くまでもないような基本的なことです．

す．

ですが，シンクロもロジアナも無い環境でしたので，

このように，すべて標準的な TTL シリーズの IC の不具合が生じてからの "デバッグ" はまず不可能です．

みで構成されています．

「後の祭り」を未然に防ぐためにも，非常に慎重に作Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 26 -

最終レポート

業しました．このことは，回路設計，配線など Pyxis

示します．（なお，残念ながらレイアウト検証用の配の製作すべてに通じています．

線を書き込んだ図面は紛失した）

これも当時の資料ですが，レイアウト図を付録 4 に
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑
［写真 8‑1］
Pyxis の全体像．
4 枚の各基板は，上部の 4 カ所と下部の 2 カ所の MIL コネクタを介して接続されている．右側の 2
カ所のコネクタは，2 枚目と 3 枚目の基板を接続している．
左上の小さなコネクタは電源供給用，左下はホストとの接続用．

［写真 8‑2］
Pyxis の裏面．
配線材であるブルーのラッピン
グワイヤーが見える．すべて手ハンダによる．
基板上で横に走っている銀のものは，グランド補強用のスズメッ
キ線．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 27 -

最終レポート8.製作

すから文句も言えませんが．

配線にはラッピングワイヤーを使用し，すべて手ハ写真 8‑1 から 8‑4 に Pyxis 本体を示します．

ンダ，手配線で行いました．後になってネットリストから数えてみたところ，5000 本以上あったようです．
配線だけで半年かかりました．趣味でやっているので
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑
［写真 8‑3］
Ｏx,Ｏy,Ｃn 基板の裏面．
レイアウトは紙上シミュレーショ
ンして決めてあるので，繁雑になりやすい制御回路にもかかわらず配線はすっきりしている．

［写真 8‑4］
システム全景．
下の黒いシャーシがホスト（自作 8 ビット機）．本レポートの描
画画面の写真は，このコンピュータによるもの．現在も健在です．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 28 -

最終レポート9．ハンドリングソフトウエア

り，同様に親領域が対応する部分を示す枠と矢印が表

Pyxis のハンドリングのためにサポートソフトウエ

示されます．いま全体の中のどの辺を拡大しているのア（名称 MP）を作成しました．主な処理は 2.2 で説明かがわかるようにしています．

したようなハンドリング処理と画面描画です．しかし拡大する部分の指定は，ズームインコマンドで行い折角ですので，Ｍ集合の探検に便利な機能（コマンド）ます．写真 9‑2 のように子領域内で枠を指定し，最大を用意しました．

反復回数を入力します．すると子領域内の図形が親領

写真９‑１は MP による描画画面です．

域にコピーされ（写真 9‑3），指定した枠の部分が子画面には 3 つの矩形描画領域があり，左下を全体領領域に拡大描画されます（写真 9‑4）．この結果が写域，左上を親領域，右の大きな箱を子領域と呼びます．

真 9‑1 です．

子領域は拡大描画の結果などが表示されるメインの

写真 9‑2 のように枠で指定した座標と最大反復回数

領域で，これの左下と右上に座標( a 1 ,b 1 ) - ( a 2 ,b 2 ) がのデータは，拡大指定情報としてメモリにツリー状にそれぞれ表示されています．

蓄えられます．次回からは同じ枠を指定しなくても，親領域には，子領域に描画されている拡大を行う前

写真 9‑5 のように番号で指定できます．また，このツの図形が表示されます．あわせて親領域内には，そのリー情報はファイルとしてセーブ／ロードできます．

中で子領域が対応する部分を示す枠と矢印が表示さ拡大の過程できれいな図形を見つけても，別の機会にれ，親の中のどこを拡大しているのかがわかるように改めて同じところへたどり着くことは非常に困難でなっています．

す．

全体領域にはＭ集合の全体像が常に表示されてお
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑‑
‑‑‑
‑‑
‑‑
‑‑‑
‑‑
‑‑‑
‑‑
‑
［写真 9‑1］

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 29 -

最終レポート［写真 9‑2］［写真 9‑3］［写真 9‑4］

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 30 -

最終レポート［写真 9‑5］［図 9‑1］MP のコマンド体系[MAIN][Zoom In ][Cursor]：枠指定による拡大描画[Select]：番号選択による拡大描画[Input ]：座標の数値入力による拡大描画[Delete]：過去の拡大指定情報の削除[Quit ]：Mainに戻る[Zoom Out]
[Edit

]

：ひとつ親の拡大描画に戻る[Move ]：子領域の描画領域を移動し，再描画する[Loop ]：最大反復回数を変更し，再描画する[Quit ]：Mainに戻る

[File

]

[Save ]：拡大指定情報をファイルに保存する[Load ]：ファイルから拡大指定情報を読み込む[Quit ]：Mainに戻る[Batch

]

：(＊)

[Quit

]

：MPを終了する(＊)ツリー状の拡大指定情報を，深さ優先で自動的にたどって描画するコマンド．
ズームイン／アウトを自動的に実行し描画していくので，放っておくと環境ビデオのように楽しめる．

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 31 -

最終レポート10．結果この表に示されるように，期待通りの結果が得られました．②と比較しても十分に高速です．先に設計目

10.1

実行時間

標として掲げた "1 分" の根拠は，描画の際に CRT の

表 10‑
1 に，3 種類の環境における描画時間の測定結前で待っていられる時間として考えた値です．描画を果を示します．この時間には，すべて画面への描画時

開始してから数分なら待てますが，85 時間では待って間も含まれています．描画条件は，いられません．

X M A X ＝ 4 00 ， Y M A X ＝ 32 0

因みに，Ｍ集合の全体像（写真 1‑1）

( a 1 ,b 1 ) ＝ ( 0, 0)( a 1 ,b 1 ) ＝ ( - 2. 2, - 1 .2 )Ｓ ＝ 0. 1 ／ X M A X

Ｓ ＝ 3. 0 ／ X M A X

NMAX＝ 256

NMAX＝ 100

これは，全ピクセルにおいて N M A X 回反復する（全の描画時間は 29 秒でした．このように，描画時間とピクセルがＭ集合に含まれる）場合になります．

して十分に満足できる結果が得られました．

［表 10‑
1］結果：描画時間の比較（描画条件は本文中を参照）
環境

ハードウェアソフトウエア

描画時間

③との比較

①

自作 CP/M システム
CPU:Z80A (4MHz)

Turbo Pascal Ver3307200 秒(85 時間 20 分)

3662 倍②

PC98XL２ (16MHz)
CPU:80386
NDP:80387 付き

Turbo Pascal Ver4

12800 秒
(3 時間 33 分 20 秒)

153 倍

③

①＋PyxisTurbo Pascal Ver3

83.9 秒

1倍(ストップウォッチによる測定 10 回の平均)

ここで，回路の効率を検証してみます．

N x , y のバッファリングが効果的に作用して，ホスト側

パイプライン 1 段あたりの所要時間は，乗算回路のによる結果の読み出しまでの待ち時間が発生していところで説明したように 2.56μsec です．

ないことがわかります．同時に，演算回路が設計通り

従って，

効率 100％で動作していることが確認できました．

表 10‑
1③における理想的な演算所要時間は，-6

X M A X ×Y M A X ×N M A X ×2.56×10 ×2 注

1)

×0.5 注2)

注 1)：パイプライン 2 段構成のため．
注 2)：2 ピクセル同時処理のため．

＝ 8 3. 9[ 秒 ]です．これは正確に③の結果と一致しています．③は描画を含んだ時間ですから，2.3 で説明した演算結果

Mandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 32 -

最終レポート10.2

設計目標との対比

らぬ点が多々あると思います．ご容赦ください．

第 2 章のはじめに掲げた設計目標各項に対する結果

今となっては Pyxis の性能も昔ほどではなくなってをまとめてみます．

しまいましたが，当時のアマチュアレベルのコンピュ①描画時間について．

ータ環境においてはダントツに最速だったのではな

Ｍ集合全体を 29 秒で描画．

いかと自負しています．以前なら時間がかかりすぎて②IC 代について．

見当すらつけられなかったような彼方にある拡大図

安い購入先を探すのに苦労しましたが，結局合計で形を，心ゆくまで探し歩くことができるようになりま¥30,780．

した．

③構成部品について．

第 2 次レポートに添付しました描画例を参照され，オシレータモジュールを除き，すべて標準 TTL シリ

この感覚を少しでも感じていただければ幸いです．

ーズ(LS,ALS,F)で構成．

"Pyxis" の名前は，英語の "羅針盤座" という星座④演算精度について．

名からとりました．想像をはるかに超えた複雑さと広完全 64 ビット表現により，十進有効桁 18 桁以上．

がりを持つＭ集合の CG において，文字通りの水先案⑤ホストへの依存度について．

内役を果たしてくれていることを製作者としてうれ10.1 にて説明の通り，8 ビット機でもハンドリング

しく思っています．

が十分可能な低依存度．
［参考文献］
以上をまとめると，予算を若干オーバーしましたが

1)A.K.デュードニー，山崎秀記監訳，「コンピューターの顕微鏡で，総合的には十分目標を達成できたと考えます．

数学でもっとも複雑な図形を拡大観察する」，『別冊サイエンス 82
コンピューター レクリエーションⅠ』，日経サイエンス社

11．終わりに

2)西橋敬一，「ジュリア集合とマンデルブロート集合」，『ThePyxis の製作にあたっては，慎重に，かつ時間をかBASIC』，1987 年 3 月号，技術評論社

けて，非常に複雑なパズルを解くような感覚で設計を

3)H.‑O.パイトゲン・P.H.リヒター，宇敷重広訳，『フラクタルの美楽しみました．思えば，本当に寝食を忘れてやってい複素力学系のイメージ』，シュプリンガー･フェアラーク東京

たような気がします．回路は，すべてオリジナルです．

4)K.Hwang,堀越監訳『コンピュータの高速演算方式』，近代科学社

このレポートの中では，回路の詳細について残念な

5)『The Bipolar Digital Integrated Circuits Data Book PART1

がらあまり説明できませんでした．自分で言うのも変‑1982‑』，日本テキサスインスツルメンツ

ですが，全般に凝った設計なので，書きたいことが複

6)『1985 年版 最新 TTL IC 規格表』，ＣＱ出版社

雑かつたくさんあってとても書き切れません．説明が深みにはまらないように注意したつもりですが，いたMandelbrot 集合描画支援ハードウェア[Pyxis]ハードウェア設計コンテスト

Copyright 1994 Chiaki Nakajima. All rights reserved.

- 33 -

最終レポート