CPU実験室

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

MC14500

クロック見直し

MC14500に与えられるクロックは外部設定だとPICのCCP出力から得られる10s(0.1Hz)~1ms(1kHz)、内部CR発振設定では外付け抵抗Rcに1MΩが接続され約28kHzで発振します。ところがあらためてデータシートを見てみるとRcの設定範囲は意外に広く10kΩでは発振周…

処理時間

このボードは高速処理が目的ではありません、と云ってはみましたが実際、いろいろプログラムを動かしてみると、ここは瞬時に処理してくれないと困る、という場面が出てきます。例えば以下のように出力ポートにモニタ基板を付けて数字表示をしてるのですが (…

プロジェクトまとめ

ワイヤまみれになっていたバラックセットを解体しました。 ベースになった初号機に元通りカウンタICを差し込み原状復旧しました。コーディング上の制約はありますがこれも動作は問題ないので動態保存しておきます。 ということで改めて親子で記念写真。 今回…

統合環境組込み

アセンブルがコマンドプロンプトでできるようになりモニタにもロード、実行コマンドが備わっていて、統合環境CMPLDRVへの必要条件がそろったので早速組み込んでみました。ターゲットデバイス1bitで検索しますがこのカテゴリでは後にも先にもMC14500だけでし…

IC交換

MC14500ボードでテストプログラムを長時間ランニングさせていたらプラグラムカウンタが変なところに飛びフリーズする事象が1~2回ありました。プログラムカウンタを組み込んだCPLDへのクロック供給はブレッドボードで確認したように波形整形とCR遅延は設計に…

マクロ変更

アセンブラのリスティングで上位下位が逆なのがどうも気になってマクロ内でswapを定義し内部でひっくり返しておきました。これで表示上はビッグエンディアンのように見えます。 この変更に伴い制御FWもHI/LO読み込む順番を変え、ついでにタイムアウトでファ…

ICUアセンブラ

いまのところ、MC14500のコーディングはExcelを使ったなんちゃってアセンブラでやっていてそれで十分用は足りていたのですが、先日uPD7810のコーディングで汎用アセンブラPROASMⅡのライブラリを見ていたらターゲットを追加するのは何でもないことに気付きま…

DILパッケージ

部品配置の時、ソケットがぶつかってないから大丈夫だろうと高をくくっていたのですが、今回はそこに載せる部品がはみ出ててたわけで気を付けなければなりません。 14ピンはやけにはみ出るなぁと思いあらためてDILパッケージのサイズを調べてみました。以下…

部品干渉

4066を差し込もうとしたらPLCCソケットにわずかですがぶつかってます。ちょっとなので無理に押し込んじゃっても大丈夫かもしれませんが。 ここはもう万能メカニカルデバッグツール「やすり」でパッケージをガシガシ削ってしまいます(以前にも同じことやらか…

GAL実装

周辺デバイスのセレクトを行うGALのロジックをコーディングしました。現状動いているボードのゲートロジックを引き写しただけなので大丈夫かと思いますが、修正は容易です。 これを16V8に焼いて基板へ実装。この程度の規模ならCPLDの余りロジックと空きピン…

メモリ搭載

プログラムメモリとして64kbitSRAMを2個実装しました。命令長は16ビット幅固定、メモリ空間は12ビット:4096ワードなので半分の容量しか使っていません。もっともMC14500はメモリ空間の制限はなく、外付け回路次第で32ビット:4Gワードなんてのも構成できま…

CPLD実装

コントローラが動きそうなのでPICに本来のコントロールFWをダウンロード。さらに一気にICUとプログラムカウンタが入ったCPLDも実装してしまいました。あとCPLDにクロックを与えるシュミットトリガも必要です。ブレッドボードでは74HC14で実験して基板もそれ…

SMDはんだ付け

コントローラPIC18LF4550の取付け状態ですが、アライメント失敗してちょっと右回転してます。さらに半田ブリッジを取り除こうと吸い取り線で吸ったら余計に取りすぎたような気がして後から追いハンダとかしてるので拡大すると結構汚い。0.8mmピッチQFPはかな…

ようやく着手

MC14500ボードが着荷してから放置していましたが、やっと部品実装を始めました。まずチップCR、LEDが付いたところです 裏面にはコントローラになるPIC18LF4550を先行して付けています。このボードのハードデバッグはご本尊のMC14500よりこのPIC周りからとな…

基板到着

荷物の追跡ができないな~などと云ってるそばから先にブツが届いてしまいました。左がMC14500ボード、右がNSC800ボードです。 今回の工程です。発注5/15から製造完了5/22までが1週間でこれはだいたいいつも通りです。 発送方法は送料が一番安かったjapan di…

基板設計完了

MC14500ボードの設計も最後の仕上げをしていました。 CPLDへの書き込みはテスト基板でやってしまえばよいのでオンボードのJTAGコネクタは削除しました。その空き地にアドレスバスとインストラクションバスのインジケータを置いています。バラックセットでテ…

部品配置

100×100mmの基板に部品配置してみました スルーホール部品が多いので乗っかりきるかと心配しましたが、 結構みっしりですが何とか部品配置できたので、一気にオートルータで引き回しもやってしまいました。 部品配置の3Dイメージを見るとやはり目立つのは84…

周辺回路

I/Oまわりは現状と全く同じ16ビット入力と16ビット出力を配置しました。 システムコントローラPIC18F4550周りもほぼ同じです。ただRS232C用のDsub9ピンは場所をとるしさすがに今どき感があるのでUSB-シリアル変換基板を載せることにします。PIC18F4550はUSBI…

ICUまわり

基板を起こすときに元の回路設計でミスがあると台無しなので、今バラックで動作している回路をそのまま落とし込もうとしていますが、影響がない範囲で改善をしています。I/O、データメモリのチップセレクトはデコーダと数個のゲートで構成していましたが(し…

回路図入力

プログラムカウンタMC14516×3をEPM7128に置き換えたICU基板の回路図入力を始めました。 CPLDとプログラムメモリ、データメモリ周辺 間接アドレッシングを実現するのが難しいため、アドレスバスとデータバスを結ぶブリッジを置けばいいのではと考えてもみまし…

間接アドレッシング

バイト演算も1ビットごとにばらしてビット演算を繰り返せば実現可能であることは容易にわかります。8ビットCPUに比べ同クロックで単純に8倍時間がかかるかもしれませんが。レジスタ間であればAND,OR,XOR,NOTといった論理演算、SHR,SHL,ROTなどのシフト演算…

CPLD差し替え

スタック段数を増やすためにCPLDをEPM7128に交換してロジックをインプリメントしました。ピンアサインは指定せずコンパイラに任せた結果、並びはぐちゃぐちゃになりましたがロジックサイズが抑えられ、スタック段数DEPTH=7まで入りました。きりが悪いですが…

VHDL修正

プログラムは正常動作しているのでMC14500周囲のハードはだいたいOKと見てよいでしょう。あとはスタックを深く取ってサブルーチンを自由に使いたいところです。 現状のカウンタ記述はスタックポインタがうまく動作してなかったのですがもう一度見直すことに…

多ビット演算

サブルーチンが使えるようになりメモリアクセスの問題も解決したので少し長いプログラムを書いてみました。 MC14500はもともとリレー制御の代替なので数点のセンサ入力と数点の接点出力が制御できればいいわけですが、あえて「数値」を扱う方法を考えてみま…

クロック遅延

CR積分回路を組み込んでみました。ここはプログラムカウンタのクロックを整形してから入力したのと同じ部分なのでブレッドボード上で部品追加できます。シミュットトリガ2段直結していた所にCRを挟むだけなので簡単です。なんか初めから仕込まれていたよう…

タイミング修正

このような不具合はカウンタが最初のMC14516の時には起きていませんでした。CPLDに置き換えてからだと思うのですが、ここでMC14500のユーザーズマニュアルに立ち返ってLIFO付の回路例を改めて見てみると、クロックラインに何やらCR積分が入っています。 図面…

データメモリアクセス

このMC14500ボードにはデータメモリとして1bit×2048word積んでいますが、これを使ったテストプログラムを書いていたら動作がおかしいことに気付きました。 例えば以下のプログラムはREGA_0~REGA_7(800~807番地)にセットされたビットパタンをDOUT0~DOUT7…

スタック処理

スタックポインタで指し示されたスタックをアクセスする、ということでわりにさらっと書けたのですが、これがサブルーチン1層のプログラムですら動きません。サブルーチンから戻るときにスタックに入っている値がおかしく(0?)で0番地に飛びリセットされ…

サブルーチンテスト(2)

プログラムを実行させるとLED0が点滅するのでサブルーチンは正常にコールされているだろうことはわかります。 CPLDボード上のインジケータでアドレスバスの遷移を見てみると、 アドレス004でサブルーチンコール、アドレス008でサブルーチンからのリタン、ア…

サブルーチンテスト

機能としてはまだ不完全だし、あとどれくらい拡張できるかわかりませんが先ずこれでテストしてみます。 VHDLの合成はピンアサインを指定しないでやっていたのですが実ボードに適用するために今つながっている結線通りにピンプランナーで設定、再コンパイルし…