CPU実験室

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

PGAソケット自作

56k

特殊なICソケットは自作してしまうことにします。ばらした丸ピンコンタクトを蛇の目基板に圧入してしまえばいけそうです。高さを稼ぐために2枚敷くことにします 寄せ集め基板からφ1.4の孔を並べた蛇の目部を2枚切り出します。 ただし丸ピンの胴体部分のφ1.…

基板着荷

56k

DSP56001基板が出来上がってきました。今回も発注からちょうど1週間、納期が早いのは良いのですがどんどん仕掛かり案件が溜まってます 今回は特に技術的に目新しいところはないのですが、問題なのはDSP56001用の特殊PGAソケットの入手難です。 ここしばらく1…

TMS3631制御(2)

TMS3631に与える制御信号は用意できているので音程はともかく何らかの分周出力が得られるんじゃないかと思ったらこれまたウンともスウともいいません。ネット検索して出てきた制御方法は以下のようなもので、これで明らかのつもりだったのですが。 出典は示…

TMS3631制御

TMS3631ボードはI/Fに8ビットパラレルを2ポート使用します。汎用出力ポートがあれば制御CPUボードは何でもいいのですが規模、性能からいって8031ボードがちょうどピッタリです 本当は同一形状にしてスタックさせるつもりだったのですが、だいたい基板寸法ミ…

レベルシフト

しばらく放置していたTMS3631ボードにやっと全ての部品を実装完了しました。基板面積当たりの部品実装数は今までの最大かもしれません TMS3631自体はいってみればカウンタの塊であって機能的には複雑ではありませんが一番の問題はPMOSプロセス負電圧動作のIC…

高速Lチカ

TLCS-900ボードはモニタもFIX、Cでの開発環境も整っていて応用がいろいろできそうですが世の中には既製の高性能CPUボードが安価で売ってるわけで無謀にも比較してみました。すべてUSBバスパワーで動作するという点では同族です 左から自作TLCS-900ボード(ク…

アドレッシングモード

TLCS-900のJPインストラクションの引数は即値だけでレジスタ直接指定:JP(XHL),JP(XBC),JP(XDE)は無くなった・・・なんて書いてしまいましたがこれは間違いでした。 マニュアルをちゃんと見ればJP [cc],memの項に示されていてmの5bitを使って各種アドレッシ…

TLCS900用モニタ

プログラムのダウンロードとその実行しかできない原始モニタのままだったTLCS-900ボードのモニタを拡張しました。Sコマンド:バイト単位のメモリセット、Dコマンド:メモリダンプ、Xコマンド:レジスタ表示です このモニタはどこからか拾ってきたZ80用モニタ…

さらに手直し

56k

DSP56001ボードの手修正をちまちまやってます オートルータの出力はビア数や総ライン長を減らすような最適化処理が行われますがどういうアルゴリズムなのか、一度決定するとそのあと意地でも動かないところもあります たとえば以下は/RESETビアとのクリアラ…

再ルーティング

56k

せっかくクオンタイズ処理までして整えたラインを全て引き剥がして再ルーティングしてますが何を間違ったかというとDSPの向きが180度回転していたのが発覚したのです。もっとも電気的な接続は問題ないのですが見た目カッコ悪いかなと(このように) というこ…

謎パタン

56k

DSP56001ボードのパタン引き回しがほぼ完了したので、念のためフットプリントを現物で最終確認しています PGAパッケージを裏返してピンの方向を見直した途端、うわわわ・・またまたやらかしてることが発覚・・・・、なんですがそれはまた別の話にしておきま…

引回し見直し

56k

ホストI/Fと汎用パラレルポートを兼用するPORT_Bにパラレル8bitのLEDを置きましたがバッファ用の74HC540が入出力逆につながっているのが発覚。PORT_Bの属性は3ステート双方向にしたためERCではひっかかりません ICをひっくり返せばパタンの修正は簡単ですがI…

部品配置

56k

パスコンやアナログ部の外付けCR類もすべて入力、部品の位置関係も見直しています。オーディオ入出力ジャックは外付けとしデータメモリ空間のSRAM3個は基板裏面に移動しています。 オートルータ実行したところ約1時間で布線完了。直後に390個くらいあったビ…

部品仮配置

56k

アナログ部分も含め主要部品をスケマチック図面に配置、100×100mmボードにざっくり並べてみました。ADSP-2101基板の構成とほとんど同じです。SRAM6個、PLCCのROM3個は何とか載りました。 あ、オーディオ入出力用のジャックがはみ出てる・・・ SRAM3個は基板…

メモリ構成(3)

56k

メモリ配置をいろいろ検討してましたが、結局128kwordのSRAMを6個使うのが最も効率が良くデコードもシンプルにまとまりました プログラムメモリとデータメモリが物理的にも別々になるのでグルーロジックも単純化します。手元に1MbitSRAM:HM678127がまとまっ…

メモリ構成(2)

56k

DSPに外付けするメモリ構成を検討しました。DSP56001はプログラムメモリ空間とデータメモリ空間が分離されたハーバードアーキテクチャですがバスはスイッチングして共用しているので単一のメモリ空間にオーバーレイできます。プログラム空間64kwordとデータ…

メモリ構成

56k

DSP56Kシリーズはオリジナルのモトローラからfreescaleに移管された後、それがNXPに吸収されても脈々と継承され直系のDSP563xxはまだ現行品のようです マニュアルを見ながらシステム構成を考えてみました。まずメモリですがプログラムメモリ空間が64kbyte、…

〇〇K新プロジェクト

56k

486、トランスピュータも動作を確認したところで放置冷却状態ですが、またまた別の石に目移りしてます。 68k→32k→29kと来たのでここでいよいよ56k(DSP56001)に出番が回ってきました。でもよく見るとこれは「XSP56001」ですね。モトローラの品番で先頭をXに…

プログラム配信(2)

リンクの下位に伝達していくたびにヘッダを取り除く方式はTCP/IPのプロトコルスタックと同様ですがいざコーディングしようとするといろいろ問題があります ・階層の数だけローダを付加するので深い階層に送るペイロードほどサイズ大きくなる ・階層によりロ…

プログラム配信

リンクの上位側にあるトランスピュータが下位のトランスピュータにプログラムを送信してブートさせることができましたが、さらに下位のリンクがある場合、最初に送信するプログラムにローダを含めて入れ子構造にしておかなければなりません こうなると上位側…

ブート処理(3)

もうひとつPRGDLLというサブルーチンを作っておきました。これはリンク先のボードへバイナリコードを指定バイト分POKEコマンドを使って転送します。 これらを組み立てたブート処理の流れです。まず別途アセンブルしておいたアプリケーションプログラム:LED…

ブート処理(2)

リンク先のボードをブートするコードはこうなります。 まず制御コード1バイト:BOOT_CMDの内容はジャンプコード(J 0x00000000)の長さ8バイトを示す0x08を送り、その後ジャンプコードの実体が続きます では実際に動作させるユーザアプリケーションの方はとい…

ブート処理

リンク先ボードのメモリに読み書きができたので今度はそのボード上でプログラムの実行を指示する必要があります。 リセット後最初に受け取る制御コードが0x00のときはPOKE、0x01のときはPEEKでしたが1より大きい(2以上)ときは続くコードを制御コードの数だけ…

メモリ読み書き(2)

ボード間でメモリ読み書きの動作テストをしてみます これはTransputer1ボード上で動作するプログラムでPEEK/POKE処理をサブルーチン化してあります。Transputer2のメモリを読むためには対象アドレスをスタックにプッシュした後PEEKルーチンを呼ぶとAレジスタ…

メモリ読み書き

トランスピュータは自身でROMブートせずにリンクからプログラムを注入して起動するブートストラップの機能があります。そのためROMが無い構成(オンチップRAMだけで済めば外付けRAMも無し)も可能でその機能も確認しておきました まずブートストラップを機能…

リンク入出力

ハードウェアの準備ができたのでトランスピュータ最大の特徴であるリンク動作の確認をしてみました。2枚のボードにロードするプログラムは以下のようなものです。 トランスピュータ1(上段)にはbuff領域(0x00001000)から16バイトのデータをLINK0ポートか…

CPU並列化

2枚作ってしばらく放置していたトランスピュータIMST805ボード、やっと再開します。まず2枚をスペーサでスタックし双方のLINK0チャネルをクロスケーブルで接続しました 電源もパラでつなぎますが、それぞれのボードのモニタ制御用のRS232Cポートは最初だけ…

キャッシュ効果

486

ウェイト数を削減した効果をはっきりさせるために単純なループで比べてみます。ここでやったLEDチカチカプログラムと同じものですが先頭でキャッシュを明示的に無効にしました これを実行させるとPAポートの最下位ビットは約127kHzでトグルします これは4wai…

ファン制御変更

486

CPU冷却ファンを元の30mm角に戻し、さらにヒートシンクをCPUに熱伝導両面テープで貼り付け固定。サーミスタの接着もやり直しました。 この状態で念のため温度変動をプロットしてみると・・・あららこちらもハンチングが収まらなくなりました。 ヒートシンク…

ファン交換

486

現状486CPUの冷却ファンは30mm角のものを使っていて、いまいち頼りない気もしていたのですが40mm角のものを見つけました。この手のファンはDC12Vのものが多いですがこれはDC5Vで動作します ヒートシンクにもぴったり乗っかります。またこのファンにはセンサ…