CPU実験室

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

NS320xx

Lチカ成功

パタン修正しやれることはやりましたし、なんとかこれで動いてくれとADDQによるインクリメント、PC相対ジャンプも使ったプログラムをROMに焼きました。 祈る気持ちで電源ON・・・ 動きました! 静止画像ではわかりませんがLEDはちゃんと目で追える速さでバイ…

パタン修正

接続修正のためにパタンカット、ジャンパ位置を入念に検討しました。+5V系は基板裏面(ハンダ面)のライン(緑)のカットでいけます。ただし、つなぎたくないランドを経由して本来の接続先に至るところもあるのでそこは切り離した後ジャンパで接続を再建しな…

電源配線見直し

NS32C032では複数の電源ピンを+5VとGNDにつなぐだけでしたが(左図)、NS32032は内部で使うために生成している負電圧がBBGピンに出力されているのでフィルタのためにここにコンデンサをつなげと書いてありました(右図) しかもコンデンサの容量、種類までし…

しくじり初め

年も改まったことだし原点に立ち戻ってマニュアルを読み返してました PDF版を見つけたのですが、以前にリアルの本も見たことがあります。1000ページ以上もある電話帳みたいです。(今時そのたとえは通用しませんが)このころメーカによってマニュアルのシン…

もやもやしたまま今年も終わり

インクリメントはちょっと置いといて別の方法でLチカを試みてみます。 これも単純なんですがローテーション命令です 初期値0xFEをロード・・・パラレルLEDは'0'になっているビットが点灯するため・・・しておきそれを左ローテーションさせるだけですがこれは…

Lチカ苦戦中

単純に1づつ増加するデータをパラレル出力するというだけなのですがここのところずっと嵌ってます。同じ動作をするはずのプログラムをいくつか書いてみました。 1は現状の書き方。+1のクイック加算でインクリメントしています。 2は通常の加算命令でソース…

バスデータ解析

ここのところ動作が不調でプロジェクトが停滞していますが、やはりどうも動きが変です。 まず、今実行しているテストコードをあらためて示すとこうなります 期待する動きはパラレルLEDに0x55からはじまって0x56,0x57・・・0xFF,0x00・・とインクリメントする…

バスライン観察

ROM読出し信号の接続間違いを修正しプログラムが安定して実行されるようになったのですがまだ変なところがあります。 LEDにはインクリメントデータをラッチしているので上位ビットに行くほど1/2,1/4・・とトグル周波数が下がっていくはずなのに全ビット同じ…

パタン修正

これはもうパタンカット、ジャンパで修正するしかありません。パタン修正は半田面だけでいけそうですが、ROM3の/OEピンはそこを経由してラインの引き回しがあるため、パタンカットは3か所、ジャンパは3本となります。 ROMの/WEピンは当面はVCCへ固定しても…

パタンミス発見

バスの動きから見て書込み信号/WRがアクティブの時、データバス最上位ROM3の出力がイネーブルになってしまっているのは明らかです。ROM周りの回路図を確認しました。整然とバス・信号線が引かれているように見えます ですがROM3のあたりを見てみると・・ あ…

データバスの異常

アドレス0x800200と/WRのANDをとったパルス状の/LEDCS信号を8ビットラッチ74HC574のクロックに接続しパラレルLEDをドライブしていますが、先ずこの/LEDCSが全くアクティブになりません。それではこのアドレスの元となるMOV命令のオペランド0x800200がROMから…

コーディング開始

パラレルLEDへのハード的なアクセスは用意できたので、意味のあるプログラムで動作確認していきます。まずはいつものようにLEDチカチカですが最小のコードはこのようになりました。 レジスタの内容をLEDがあるポートに出力したあと、レジスタ内容を…

I/Oデコーダ

ジャンプ先のディスプレースメント表記に疑問が残るのですが、もうすこし大きいプログラムで様子見することにします。プログラムの動きを外から見るため8ビットパラのLEDをアクセス出来るようにI/Oデコーダが含まれる2個目のGALにロジックを書き込みました 1…

コード見直し

それではためしにディスプレースメントを-1にしたらどうなるかやってみました。 JUMP *-1 この場合、バイナリコードは[7F/DA/7F/00]となります。 -1がどうして「FF」でなく「7F」かというとNS32000ではディスプレースメントの上位1ビットか…

コード解析

まずハード的な接続:アドレスバスとデータバスのROM~バッファは導通OKでしたが、バッファ~CPU間はCPUの生足が触れないのでつながってるとこれはもう信じるしかありません。 次はインストラクションコードのバスへのアサインです。 これは前にM…

プログラム実行

出来上がったコード「7F」「DA」「00」と32ビットアクセスされることを考えてもう一つダミーで「00」、計4個のコードをそれぞれ先頭番地に1バイトづつ焼いたROMを用意し基板に挿しこみました。この状態で実行させればアドレスバスはダブルワード…

最小プログラム

初めて使うCPUで最初に実行させる、いつもの最小ループをやってみます。単純にして明快。これだけで基本的なハードウェアは確認できてしまいます。 LOOP: JUMP LOOP 「JUMP $」でもいいのですが文法的にロケーションカウンタ$が使えるかわからなかったの…

NS32Kアセンブラ

ハード環境がほぼ準備でき、いよいよプログラムを書くにあたってまず必要なインストラクションセットのマニュアルとアセンブラですが、これは先に紹介したサイトで見つけてきました。・・・というかここ以外にはNS32000シリーズに関する情報はほとんど皆無と…

デコーダ設計

GALのピン配置はあらかじめ特定してパタンができていて、今回メモリマップが決まったのでこれはもう機械的にPLD設計ツールに入力するだけです。いつものようにロジック図を書いていきます 基本的にCPUから出力されるバスイネーブル/BE0~/BE3をROM…

メモリマップ

いままでNS32000シリーズのアーキテクチャもプログラミングモデルも良く理解しないままハード作成をしてきてしまいましたが、いよいよソフト的な検討を始めなければなりません。ただメモリ構成についてはほとんどの制御線をGALで生成しているのでまだ柔軟な…

部品実装中(3)

とりあえずTCU:NS32C201が動作していること、CPUがアドレスバスをドライブしていそうなことはわかりました。アドレスバスはCPUしかドライブしない訳でしかも24本とも何かしらパタパタしています。DIP,PLCC,QFPならCPUの生足を触れられるのでまだいいですがP…

リセット解除

クロックはCPUへちゃんと供給されているのですがバスがうんともすんとも動かない!とおもったらRESET信号がアクティブになっていました。今までのボードも大体そうなのですが、ホスト側から遠隔でハードリセット出来るようにシリアルポートのDSR信号をリセッ…

ハードデバッグ開始

既に実装してしまっているSRAMがへんにアクティブにならないようにチップセレクトをHに固定しておきます。チップセレクトを生成するGALに仮のロジックを書き込みました。 /ADS(アドレスストローブ)入力もまだ不要ですが1本も入力がないロジックはコンパイ…

CPU実装

ちょっとはやまった感はありますがCPU:NS32032とTCU(Timing Control Units):NS32C201を実装しました。 本来はブロックごとにハードデバッグをするべきなんですが8086基板でもそうだったようにCPUとシステムコントローラ、バスバッファは相互に接続されてい…

CPUソケット

このNS32032ボードはCPUチップセット以外は一般的な部品ばかりなのでどんどん実装を進めていますが機構部品でネックになるのがCPU用のソケットです。CPU形状がLCC(Leadless Chip Carrier)のため専用のICソケットが必要ですがLCCな…

部品実装中(2)

SOPパッケージのIC類も半田付けしました 手持ちがない値のCR類を除いて表面実装のものは完了したので、この後はスルーホール部品、背の高い部品を付けていきます 裏面です

部品実装中

手持ちの表面実装CR、LED類は実装完了しました 見た目にはまだ何もついてないようにみえますが・・・

実装開始

また寄り道してましたがいよいよ部品実装を開始。 部品表でいうと先ずチップコンデンサ0.1μF×30個を一気に付けました 30個のうち4個はRS232Cドライバのチャージポンプ用で残り全ては電源パスコン用です。ちなみにコンデンサ実装前基板の電源ライン間の静電容…

基板開封

8085、8031プロジェクトが間に入ってしまいましたがそれぞれ一応動いたので、放置していたNS32032プロジェクトを再開します 5ヵ月我慢していた真空パックを開封しました。

基板到着

fusionPCBに発注していた基板が到着しました 出来上がりみたいのは山々ですが着手する準備が整うまで開封しないで我慢。 今回の経過はこんな感じ 注文から出荷まで1週間、出荷から到着まで2週間で、いつも通りのスケジュールでした 2019-05-07 08:32:00 Se…