CPU実験室

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

8031

基板完成

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

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

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

液晶表示テスト

CPUボード上にI/Fとして最後にLCD制御を確認しておきます。LCD制御用の関数をいくつか用意しますがこれらは他のCPUボードで実績があるソースをそのまま持ってこれます。ただしi8031のI/Oはメモリマップドなのでinp()、outp()でポートをアクセスする部分はポ…

モード切替

GAL内に用意したモード切替レジスタとSRAMへのアクセス方法を整理すると以下のようになります。 MODE(/DLL)信号を0(赤LEDが点灯)状態ではプログラム空間に置かれたRAM0へCPUの/WR信号が入力されるのでシリアルラインからプログラムのダウンロードができ…

モニタ起動

CPU(80C31),PPI(8255A)をICソケットに挿入。GALは既に設計済のロジックを書き込み。ROMには前Rev基板と同じpaulmonモニタのバイナリをそのまま焼いたものをセットしました。 水晶は手持ちの16MHzを付けています。ボーレートは原振の1/384となるので41,667bau…

部品実装完了

いままで作ったCPUボードの電源コネクタは、ほぼヒロセのDF1Bシリーズの4Pで統一しています。電源供給の規格が同じなので別途作ろうとしているテスト用治具も共通して使うことができます。この8031基板もさっそく動作を確認したいので古い試作基板をゴソゴソ…

部品実装中

8031基板にICソケット、コネクタ等の機構部品も取り付けました 基板の左下部分にUSB-シリアル変換モジュールを直付けしています あとは4Pの電源入力コネクタを残すのみなのですが、ここに来て手持ちが欠品です。まあ急ぐこともないので次の買い物のときにで…

部品取り付け

チップCR、LEDとフラットパッケージのICを取り付けました。今回は手持ち部品だけでいけそうです。 ただ256kbitSRAMを日立HM62256で設計したところに東芝TC55257を付けてしまいましたがこれって完全にコンパチだったか、ちょっと不安になってきました。

Rev01基板実装開始

i8031ボードの改版基板が出来上がってから放置していましたが、いよいよ部品の実装を開始します。基板の表裏はこのような出来上がりです。

基板到着

リファインした8031基板が到着しました。 今回も約3週間かかりましたが、急ぐこともないのでのんびりやります。 2019-10-22 19:33:47 Order received2019-10-22 19:34:48 Your payment information has been confirmed, we will process your order as soon…

さらに手直し

自動配線されたパタンを見ているとやはり細かい点が気になってきます。機械的に最適化しているのだとは思いますが、少し遠回しにしたりビアを打ってラインを表裏スイッチしたりした方がスッキリする場合もありちょっとづつ手を入れてます。 特に影響が大きい…

再度アートワーク

GAL内容変更によってピンアサインも変わったので回路図に書き戻しました。 22V10の全てのピンを使い切ってます。 この状態でオートルータを起動して再度アートワークを行いました。今回も1時間ほどで最適化まで完了しましたが、自動配線された結果に…

デコーダ確定

信号ピンが割り付けられない・・というのは22V10に内蔵されるOLMCの数10個以上の出力を要求しているということなのですが、パッと見るとロジック図の右側に並んでいる出力パッドはちょうど10個でありギリ収まるはずです なのに何故エラーかとい…

デコーダ修正

これの対処方法は、組合せロジックで出来るクロック(アドレスデコードと/WRの論理積)をいったん信号として外部のピンに取出し、外部接続で改めてGALの固定クロックピンに再注入してやれば行けそうです。 赤枠の中が変更点、CLKOUTピンとCLKピンをGALの「外…

ロジック見直し

さてこのロジック図をispLEVERでコンパイルかけると論理式には難なく展開されますがその後デバイスにフィッティングさせるツールの中で必ずエラーに落ちてしまいます。 FIT Generic Device FitterispLEVER Classic 2.0 Copyright(C), 1992-2005, Lattice Sem…

デコーダ設計

最後に気になったところはGAL内のロジック設計です。今回の回路変更でGALへの入出力信号線は次のようになっています。 基本的にメモリやI/Oへのチップセレクト信号の生成なのでAND項だけで合成できる小規模PLDの最も得意とするところで、例に…

パタン完成

MCS-51(i8031)基板のリファインもこっそり進めています。 実装品をレイアウトしてオートルータを走らせると5分余りで結線完了。その後のオプティマイズも1時間ほどでコンプリートになりました 結構きれいに引かれているので手修正は最小限で済みそう。前…

フットプリント修正

前にも一度失敗しているのですがSOPのICは幅がメーカ品種によってバラバラなのでパタンを一度紙に印刷して実物合わせしておきます。 最初、ライブラリに標準で含まれる28ピンSOICのフットプリントは狭すぎ、20ピンは広すぎでした。いくつかバリエーショ…

回路更新

実際に作るか判りませんが変更は容易なので現状のプロジェクトをコピーして回路修正をしてみました。メモリ構成として256kbitSRAMを1個追加しただけです あとは既存の不具合対応としてリセットSWの後にリセットIC(TL7705)を追加。 このICは昔からあります…

メモリ構成

この拡張メモリボードの追加でi8031のアーキテクチャをフルで生かせるのですが、やはり後から下手に増築した感がぬぐえません。 横から見るとこんなふう。ドータボードが片持ちで浮いてます。 また/PSENと/OEを論理和したためバンクは別とはいえメモリの全領…

ラージモデル実行

つまりバンク切り替えはアプリが起動する前のシステムモニタ側に組み込んでおかなければなりません。モニタ自身はスモールモデルで動作しているので影響はありません。 現状はPAULMON2はi8255に対して何の初期化もしてないので手動で設定することにします。…

ラージモデル

このようにデータ空間がプログラム空間と別にアクセスできることがわかりましたが、これは絶対アドレスで強制的に参照しただけであって、変数などが外部SRAMのデータ空間から参照されたわけではありません。(smallモデルでコンパイルされているので) プロ…

バンク切り替え

拡張メモリボードにバンク切り替えの配線追加しました。 128kbyteSRAMは32kbyteづつ4バンクに分割されアドレスラインA15、A16を外部ポートから入力しバンク指定します。 またプログラム空間が選択されているとき(/PSENが0のとき)は強制的にA15、A16を0にし…

パラレルポート確認

確認用治具ができたので他のCPUボードのパラレルポートも確認しておきます。 一応自分の中の設計標準として8ビットパラレルポート×2(16本)とVCC2本、GND2本を2×10のピンヘッダへのアサインは揃えているので共通して使えます。 まずMC…

デバッグ用基板

デバッグ用LED基板にも部品を取付け。 チップ部品32個取り付けて心が折れ、仕上がったのは1枚です。 サイズは1608なのでチップ部品としてはかなり大きめで、このサイズのCR類は早くも製造中止になっているようですがシロウト作業ではこの程度が丁度良…

部品実装

基板への穴あけと切り離しをしたところ。メカ加工作業はついつい億劫なことと切り粉が出るので勢いでまとめてやってしまいます。 ここまで出来ればしめたもので安心して「お蔵入り」になっちゃうことも多々ありますが。ガンバって1枚だけ部品実装してみまし…

完成予定図

拡張メモリボードの完成時の3Dイメージです 28pinスリムソケットは実際には基板裏面に両オスピンの連結ソケットを実装し8031ボードのSRAMソケットに挿さる形になります 基板の余白に入れたものはパラレルポートのデバッグ用治具でポート出力でLEDを直接点…

基板作成

100mm×100mmの基板に4枚面付け。余ったところにおまけパタンを入れておきました つづいてフィルム出力 ここで気を付けなければならいのが、露光するときフィルム印刷面と基板感光面がぴったりと密着することです。そのため基板部品面のフィルム印刷時はミラ…

メモリ拡張ボード

拡張用ドータボードのパタンが設計完了。 この回路を組み込んでマザーボード側をリファインすればいいんですが9枚も手つかずで残っているのでちょっともったいない・・ 見た目は300mil幅→600mil幅変換アダプタのような感じです。1MbitSRAMにTSOPを使えばもう…

データメモリ拡張

プログラム空間とデータ空間はアーキテクチャ的には分離していますが実際にはアドレスバス、データバスは共用していて同時にアクセスされることはないので、何もメモリチップ自体を別に用意することはありません。 かといって32kbyte×2=64kbyte(512kbit)の…