CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

#工学

処理時間

NMAXを減らしたので処理時間が短くなったというのは正確ではなく、この領域に大きなマンデルブロ集合がない(解像度以下の無数の集合はあるでしょうが)ということです。 N=1000~8000の残り10%の領域での分布をみると頻度は激減しているのでNMAXを大きくし…

原子ジャガイモ

プログラムの修正ができたので早速、超微細領域での計算をやってみます。PC上のシミュレーションで10^-11領域で見えてきたジャガイモ的な何かにスコープを合わせます 中心座標:実軸 -1.26740983598069 虚軸: 0.35552711382890 まずシミュレーションの結果…

倍精度化処理

NS32Kアセンブラでのマンデルブロ集合計算を倍精度化しました。 やることは命令セットを倍精度用のものに差し替えることと使用する浮動小数点レジスタをF0,F2,F4,F6の4本に絞ることです。計算対象の複素座標c=a+biの実部aをF0,虚部bをF2、ループさせる漸化式…

ランド追加

発注済の基板は確かに出荷されてるのですがシンガポールの交換局から全く動かないので次発注予定のCPLD基板の設計をブラッシュアップしてます 基板上で同じ機能だけど異なるパッケージのものでも付けられるように予備パタンを置くにはどうすればいいか悩んで…

クロック源

CPLDデバッグボードにはカウンタなどの動作確認をするときのために555をつかった発振器をおいていますが、そういえばGALチェッカを作った時に米粒PICでテストクロック源を用意したのを思い出し、いまになって追加で載せることにしました PIC10F222で1,10,100…

倍精度演算(2)

NS32Kシリーズのチップをさがしていた時、コプロセッサNS32081といっしょにその上位チップのNS32381も入手していました パッケージ上にパスコン?がついています。チャージポンプかも。 ソフトウェア上位互換でレジスタセットを見ると64bitレジスタが8本フル…

倍精度演算

NS32kは遅い、精度悪いではあんまりなので精度のほうは改善してみます。以下はNS32081の四則演算命令セットですがニーモニックが~Fの32bit単精度版と~Lの64bit倍精度版が用意されているので今のソースコード上で~Fをそっくり~Lに書き換えればいいは…

演算精度

これまでは計算速度ばかり気にしていたのですが、いまさら重大な問題に気付きました。Cで書いたベンチマークは変数をdouble型(倍精度)としていましたがNS32Kアセンブラによるプログラムはaddf、mulfといった単精度グループの命令で書いてしまっていました…

打切り回数

NS32032の演算速度が遅いことは露呈してしまったのですが、単にマンデルブロ集合を描画するだけであれば計算打ち切りまでのループを減らしてもう少し早く結果を出すことはできます。 今回の256×256メッシュ=65536点でのmandel_chkの返り値のヒストグラムです…

浮動小数点演算(3)

NS32032ボードが他のCPUに比べてどれくらいの演算性能なのかいつものベンチマーク条件で実行してみました。 マンデルブロ集合の飛び地の一つ約5×10^-5の領域を拡大して計算させますが集合近傍では急速に発散速度が遅くなるので打切り回数NMAXを8192まで大き…

浮動小数点演算(2)

低解像度でのmandel_chkルーチンの動作が問題ないのでメッシュを256×256にしてみました。 結果はメモリ上に256*256*8bit=64kbyteのバッファを用意して蓄えておき計算完了後にシリアルを通してホストPCに返すようにしてあります。PC上でヘッダ、適当なパレッ…

浮動小数点演算

NS32032ボードでマンデルブロ集合の計算をやってみました。NS32k用のCコンパイラはGCCがあるようですがコンパイラ自体をビルドする準備か大変そうなのでまずアセンブラで書いてみます。 前にi386ボードでも動かしたプログラムですが複素数c=a+biがマンデルブ…

PLCCアダプタ

以前つくって放置していたPLCC-DIP変換基板に部品を載せて完成させました。 GAL22V10焼きのために28ピンのものは先行して作っていましたがやっと今回残りも仕上げました。左から20ピン、28ピン、32ピン、44ピン用です。 1枚の基板に裏面からピンヘッダ、表…

パタン設計完了

ステイホームでパタン微調整をチマチマやってました。 スナップ点のクオンタイズのほか基板のエッジに近いところを通るラインは内側を通るように引き直したりしています。デザインルールは満たしているのでしょうが酷いのになると四隅のネジ孔の外側をライン…

パタン見直し

パタンの微調整も大体終わり、頃合い見て発注してみるかなんて思ってましたが今までもポカミスありがちなので再度見直ししていました。 すると案の定というか、NS32kボードでもやった同じミスをやらかしてました。32ピンのSRAMの幅が足りていません。デフォ…

パタン微調整

オートルータが出力したパタンデータは分解能1umの分解能で引かれるためKiCADに書き戻すと設定したグリッドの上に乗っていません。もちろんそのままでいいのですが、例えばICのピン間に1本ラインを通している場合もちょうどセンターを通さずにどちらかに寄っ…

オートルータ

回路図の入力はほぼ終わり、まだ見直さないといけない部分もありますがまず、パタンが引ききれるかどうか確認してみました。 部品配置完了したボード図面にネットリストを読み込んだ直後の状態ですがこのラッツネストの絡まり具合・・これは絶対に無理だろう…

周辺I/O

ひきつづき周辺I/Oも回路図入力しています。ここら辺はホストCPUと関係なく汎用的な構成です。 パラレル入出力は8255を置いてPAとPBは規格化されたピンアサインでコネクタへ。PCポートは慣例通りボード上の8個のLEDを接続しました。 一方、シリアル入出力は…

回路図入力中

つづいてRAM/ROM周り。ここは単純で4MbitSRAM×4個と4MbitフラッシュROMのアドレス線とデータ線をバス接続してあります。それぞれのメモリチップの制御線は全てGALで生成することにして、ロジックは後で考えます。 それらの信号を発生させるGAL周りです。入出…

CPU周り結線

CPU周りの回路図入力をしました。といってもほとんどCPUそのものだけで外部に出ていくバスを接続したり、未使用信号のピン処理をしているだけです。右下から出ていく制御信号はPLD任せでいま何も考えてません。左下の方に出ているCPU内のステータス信号には…

部品配置中

ポーランドに発注したPGAソケットは業者から「発送したよ」とは連絡来ましたが未だにトラッキングできず。fusionPCBに発注したプリント基板はもう1週間以上”Information Received – Item En Route to Postal Facility”のまま膠着状態。ほんとうに海外の郵便…

部品配置

新たに作ったシンボルとフットプリントがリンクするか確かめるため、回路図にシンボルを置き、先ず電源ラインだけ結線してみました。 これも新規に作った15×15PGAのフットプリントを置いたボード図面ではラッツネストがちゃんとつながりました。見た感じ電源…

シンボル作成

新しいデバイスを使うとき、まず大変なのがCADのライブラリにないシンボルは新たに作成しなければならないことです。当然Am29kなどあるわけないのでデータシートとにらめっこしてコツコツ作っています。 データシート上のピン定義表を見ながら KiCADのシンボ…

COVID-19禍

世間の動向などには一切与らない本稿ですがいよいよ来たか・・という感じです。 今回のプロジェクトではキーパーツとなるCPUはある前提で、それ以外の部品は汎用品ばかりでリスクは無いと考えていたのですが(RISCはある・・なんちって)ちょっと問題なのはC…

回路検討

29Kボードの概略設計を始めました。データシートに載っているAm29030の入出力をシンボル化したものはこんな具合です。 ピン数は多いですが整理すればそれほど複雑でもありません。インストラクションとデータの兼用バスIDnが32本、アドレスバスAnが32本…

PGA実装例(2)

PGAの実装例をついでにもう一つ。 TMS320C30-DSPボードの例ですが、このデバイスは15×15グリッドとAm29030と同じサイズでi486DXや68040に比べて1周りも2周りも小さいパッケージです。ところがピン数は最多の181ピンになっています。これは各辺のピンの列が…

PGA実装例

以前に作成した486,68040ボードは手作りの片面感光基板でやったのですが今思うとずいぶん無茶なことしたもんだ、って感じです。でも今もちゃんと完動するわけで、当時のノウハウを思い出し今回29kボードに生かせるように禁断の基板裏面を見返してみました。 …

新規プロジェクト

AMDの32ビットCPU、Am29030を入手しました。29kというのは主に機器組込みに使われる高性能マイクロコントローラでRISC的な命令構成、大量の汎用レジスタが内蔵されているくらいは知ってはいましたが触るのは全く初めてです。68k→32kときたのでいつかは通る道…

基板完成

ということでi8031基板Rev01は各機能問題無し完成です。メモリ構造に手を入れ、プログラムメモリを書込み可としたりプログラム/データ領域の分離をしましたが、その環境でもプログラムが正常に動作し、領域間を跨いだメモリアクセスができることも確認できま…

プログラムメモリアクセス

i8031のプログラム領域とデータ領域はアーキテクチャ的に分離していて、さらに今回の基板では物理的にRAMも別にしたので普通であればプログラムコードはデータとして扱えません。それを唯一可能にするのがmovc命令なんですが、コンパイラが吐いたアセンブラ…