CPU実験室

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

68030

WAIT変更

MC68030ボードが何か遅い問題で、先ずはSRAMのWAIT数の変更をしてみました。 メモリ、周辺I/Oのチップセレクトがアクティブになった時、アドレスストローブ/ASの状態をシステムクロックでカウントすることで引き延ばし/DSACKとしてCPUに返送することでWAITを…

はんだ納め

FPUDSACKのプルアップ処理が雑だったので手直しました。周囲がベタGNDなのでチップ抵抗が使えず危なっかしいですがリード部品を空中配線して年内の工作はこれで終了。 最後にいつもの浮動小数点演算ベンチマークテストをやっておきました ・・・なんか遅い・…

FPU動作確認

MC68030ボードはハード的には完成したのでFPUによる浮動小数点演算を確認しておきます。Cソースコードをコンパイルするバッチを少し修正。FPU命令を生成するようにしました 例題はいつものようにマンデルブロ集合の計算をやってみます。判定関数mandel_chk()…

最後の最後で・・

MC68030ボードもついに最後のデバイスMC68882を挿入して電源ON・・したのですがモニタが起動しません。というかダブルフォルトでHALT状態になっているらしく/STATUSインジケータが100%dutyで点灯しています。 これは最後に挿入したMC68882が悪さをしているに…

ロジック変更

基板リファインの一番の理由だったCPLDのFPU制御ロジックを修正しました まずFPUのチップセレクト/FPUCSの生成は新たに引き込んだアドレスラインA19~A13をCPU空間のデコードFC0..2={1,1,1}にANDして出力しています もう1点はメモリ・周辺デバイスをアクセス…

FPU実装

MC68030ボードにいよいよ最後のデバイスであるFPUを実装する段階まできました これも結構高速版のMC68882RC40です これはMC68030RC50とセットで手に入れたものでしばらく行方不明になってましたが以前ジャンクで手に入れた68020VMEボードに乗っかっているの…

メインルーチン

割込みルーチンisr3()の内容はパラレルLEDの最下桁をトグルするようにして/INT3によって1Hzで起動させます。 そのうえでmain()内で今まで作成した関数、ベクタテーブルのVBRセット、割込みマスク解除、周期タイマのイネーブルを呼んだ後、永久ループで割込み…

割込みC化

GCCをバージョンアップして割込みが記述できるようになったので残りの部分も仕上げていきます。 まずinterrupt修飾した中身が空の関数void isr1(void)は次のようにコンパイルされました たしかにRTEで終端されているのでこれはOKです。 次にROMの0番地から埋…

Cコンパイラ交換

現状では割込みベクタテーブルと割込みハンドラはモニタROM内に固定的に埋め込まれていて正常動作は確認できましたが、このままではユーザプログラムから自由に利用できません。割込み関係の処理もまとめてCで書いて0x80000番地から始まるSRAM領域にロードで…

割込みパルス

割込み信号は8-3プライオリティエンコーダ74HC148で/IPL0-/IPL2の3bitにエンコードされて68030に入力されます。このレベルがどれくらい持続する必要があるかですがマニュアルの 8.1.9 Interrupt Exceptionsの項を見るとデバウンスとシンクロナイズのために2…

オートベクタ割込み(3)

このプログラムは1Hz割込みのINT3をイネーブルにします。実行させてみるとROM内の割込みサービスルーチンが起動されて「INT3」の表示がでました。お、うまく行ったのかのように見えますが・・期待したのは1秒おきに「INT3」が出るはずだったのですが実際には…

オートベクタ割込み(2)

ハード、ファーム側のお膳立てができたのでユーザアプリケーション側のコーディングを始めます。 パルス源のPIC10F222を制御する/EI信号はSSC:Am85C30,chBのDTRピンにつながっているのでこれをON/OFFするinihinh()関数をまず作ります 68030MPU内での割込み制…

オートベクタ割込み

割込み要因の準備ができたのでつぎはCPU側の受け入れ態勢を整えます。 今回の割込みは周辺が割込みベクタを発生しないのでオートベクタ方式にするため/AVEC信号を生成するロジックをCPLDに追加しています。ハードはこれで準備完了。 ファームウェアはモニタR…

周期タイマ

基板裏面の米粒PIC:PIC10F222にパルス発生のファームを書き込みました。1Hz,10Hz,100Hzのパルスを同時発生させてそれぞれINT3,INT2,INT1割込みに接続しています。 PICの出力ピンはそのまま外部割込み入力J1につながっているのでここにPICKIT3をつなげばICSP…

グルーロジック

旧基板と同レベルまで動作しているので変更したCPLD、GALのロジックもOKということになります。GALに入れたバスセレクトロジックは最初に示したこの論理式は実は誤っていて(BYTE0~BYTE3の並びが逆だった)通電前に気付いてこっそりこの論理式に直していま…

周辺実装完了

CPUが安定に動作するようになったので基板上の残りの周辺:パラレルI/O:CS82C55A、シリアルコントローラ:Am85C30も一気に載せてしまいました。 今回PLCCソケットはベージュ色で揃ってます、と言っても微妙に色合いが違う・・ 個別のI/Oをテストするまでも…

ハンダ不良修復

新基板上でループプログラムが動いたかに見えたのですが、電源OFF/ONで再起動すると全くバスがアクセスされない、あるいはちょっとバスをアクセスした後にダブルフォルト状態になってHALTしてしまう(STATUSランプが点灯する)という現象がたびたび発生して…

MPU移植

バグあり旧基板からリファイン済新基板へMC68030を乗せ換えました。PGAソケットから引っこ抜くのは挿入以上に気を使いましたが時間をかけて何とか完了。 ROMに例によってJMP $を焼くとちゃんとループしているようなので第一段階は成功。周辺の部品もソケット…

プログラマブルロジック実装

表面実装品が終わったので背があるスルーホール部品も取り付け始めています。先ずはCPU周りだけ動作を確認するために最小限必要なCPLD、GALをPLCCソケットで実装しています CPLD:U9 EPM7064にはアドレス空間デコーダとDSACK返送ロジックが組込まれていてア…

表面実装完了

68030基板へフラットパッケージのIC、チップCR類の実装が完了しました 前回から設計変更の多い割込み周りですが基板裏面、画面右端にあるU7:6ピンチップが PIC10F222でここで周期パルスを作りその左にあるU14:74HC148に入力、周期割込みを発生させます

PGAソケット完了

MC68030ソケットのコンタクトをスリーブの長いものでやり直し、全て植え付け終わりました。MC68882のソケットは既製品のものを仮置きしてます。 真横から見ると1mmの中敷きを入れたことで既製品のソケットとも高さが揃うのでその意味でも良かったかもしれま…

丸ピンコンタクト(2)

丸ピンソケットのスリーブ深さを稼ぐためもう一枚穴あき基板を挟むことにしました。フランジを少し埋没させた分も含めあと1.0mmもあれば十分でしょう 秋月のDサイズのユニバーサル基板は1.6mm/1.0mm/0.3mmと厚みのバリエーションがあるので1.0mm厚を選択、13…

丸ピンコンタクト

着荷した基板に真っ先にPGAソケットを組込んでみました。面一とまではいきませんが座グリしたのでコンタクトのフランジが基板に収まり良い感じです。「さなえちゃん」の働きで傾きもそろっています(いま話題の「早苗ちゃん」ではない) ぐるり外周を田植え…

ソケットベース

PGAソケットのベースになるユニバーサル基板を切り出しました。左が寄せ集め基板のガラス基板FR-4、右がガラスコンポジットCEM-3の秋月D基板から切り出したものです。加工性は圧倒的にCEM-3の方が楽。孔は全てφ1.5のドリルでさらい2枚重ねて端面研磨しておき…

基板到着

MC68030ボードの改版が出来上がってきました。発注からちょうど1週間目です。見た目にはほとんど変わりないので取り違えに気を付けなければ。 この基板の組立てに当たっての懸案は68030の変則的PGAソケットですがこれは前回と同じく自作になります。ただそ…

基板発注

最終的にビア位置を微調整しています。今回は特に異常に接近しているものを離したり可能な限りX,Yのグリッドに合わせこんでパタンを完成させ発注。これが3日前で、今日、進捗を見たら製造完了して既に発送済になっていました。設計変更が結構入ったので余計…

SCC回路変更

シリアルコントローラAm85C30周りの回路を変更しました。まず動作クロックPCLKをCPLDで分周した10MHzに変更。その近くを見ていたら割込みアクノリッジ/INTACKを使っていなかったことに気付いてCPLDに接続しました 転送クロックRTxC/TRxCはPCLKをSCC内部のボ…

モデム制御線(3)

ポインタレジスタWR0→コントロールレジスタWR5のアクセスの方法、タイミングは間違いないはずなんですが、念のためリカバリタイムを稼ぐiowait()ループをインラインで埋め込んでみました GCCのアセンブラ中間ファイルを確認してみるとソース通りの効率の良い…

モデム信号線(2)

DTR,RTSの制御ビットがあるWR5レジスタにアクセスするにはポインタレジスタWR0に5をセットしてから再度同じレジスタにデータを出力するというZ80SIOやuPD72001と同じ方法ですがレジスタに連続して書くにはリカバリタイムが必要です 待ち時間は実時間ではなく…

モデム信号線

CADへの設計変更がだいたい終わったんで配線引回しの微調整をして基板発注かな・・と思ってたのですがいや待て、まだ確認してないとこがありました シリアルコントローラAm85C30のモデム制御信号DTRとRTSにLEDが直付けしてあるのですがこれをまだチカチカさ…