CPU実験室

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

8031

データメモリ拡張

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

メモリモデル

SDCCでMCS51をターゲットにコンパイルするときはメモリモデルの選択ができます。通常はsmallモデルで行えば、データ領域は8031内蔵RAM領域に取られコード効率も良いようです 例えば静的変数 char str[16] を含むソースを sdcc -mmcs51 --model-small --code-…

メモリIC

今回のMCS51ボードではSRAMに300mil幅DIPの256kbitSRAMを使っています。実装面積も減らせるし(雰囲気的に敢えて表面実装品は使わない)何よりも手持ちが結構あったような気がして基板設計をしましたが、いざ実装する段になってパーツ箱から出てきたのがこん…

C言語で8031

いままで統合環境CMPLDRV上でMCS51のコードはアセンブラASで処理していましたがCコンパイラSDCCでもうまくいきそうなのでビルド部分のバッチを差し替え、C言語に対応しました。いずれ言語選択(処理系切り替え)もドロップダウンリストで行えるようにしよう…

8031開発環境

MCS-51(8031)ボードも統合環境CMPLDRVから操作できるようにしました 問題なのが通信ボーレートがRS232Cとしては標準的でない値なことですが、 ツールのシリアルポート初期化部分でWIN32APIに直接ボーレート31250を与えたらちゃんと設定されました ボード上…

こちらもモニタ搭載

MCS-85ボードの方にかかり切りでしたがほぼ動作も確認、開発環境も整備できたので、中途になっていたMCS-51(8031)ボードに戻ってきました。 一応メモリ、I/Oアクセスは確認できているのでシリアルが動けばモニタも載せられます。 MC…

デコーダ変更

外部プログラム空間:ROMと外部データ空間:PPIのアクセスが問題ないようなんで一安心です。ここでメモリマップを最終形にしていきます。 ますSRAM32kBは半分潰してPPIを配置していましたが、これではもったいないので全32kBを丸々生かす…

PPIテスト(3)

CR時定数でダラダラ下がるリセット信号をそのまま8031と8255に同時に与えちゃったのが失敗でした 8031(正しくはN80C31BH)も8255(P8255A-5)もデータシート上は入出力TTLコンパチとはなっていますが、CMOSとNMOSでプロ…

PPIテスト(2)

8255のポート出力がどうもうまくいかないとしばらく悩んでいたのですが 測定中のオシロのプローブ先端に何気なく触ったところ、すごいACノイズが観測されてびっくり。 つまりポートはLレベルを出力していたのではなく高インピーダンス状態になってるとい…

PPIテスト

内蔵ポートのアクセスが成功したので今度は外部拡張バスに接続したPPI:8255を確認します プログラムは内蔵ポートと同じでインクリメントデータを連続出力ですが、プログラムの先頭で8255のの全ポートをモード0、出力設定にする初期化を一度行っ…

アセンブラでLチカ

ハードの実装が終わったのでプログラムを投入し動作確認を始めました。 まずプログラムの開発環境は8031/51をサポートするASアセンブラでいけます。 ソース行の先頭でCPUタイプとインクリュードファイルの宣言。インクリュードファイルの中で8031の特殊レジ…

メモリ制御(2)

どこに問題があるかというとメモリの読出し時の/OE(アウトプットイネーブル)信号の処理でしくっていました まず最初、ROMソケットに中身が適当なEPROMを差し込んでアクセスの具合を見てみました。 クロックは発振していてALE(アドレスラッ…

メモリ制御

8031ボードはしばらく放置していましたがこれもいよいよ動作確認に入っていきます。 CPU周りの主要部品を実装したところです。 MCS51のCPUは今まで触ったことがありませんが、インテル80系のシステムですから見慣れた信号名を相互につないでお…

部品実装中

手持ちである部品をどんどん取り付けていってます。 基板が外注から出来上がってから約1年放置していたわけですが、どうもハンダが乗りにくい気がします。半田レベラが空気に触れて酸化してしまったのか、それとも鉛フリーだからなのか、特にチップ部品でき…

やっと着手

基板が外注から上がってからずっと放置していましたが、やっと部品取り付け始めました 先ずは表面実装のCRをざっと付けましたが、いつも悩むのがLEDの電流制限抵抗の値です。いままで1kを付けて眩しすぎ。インジケーターなのに直視できないんじゃ意味ありま…

こちらも基板到着

8031基板の方も出来上がってきました。 4/14注文、5/7到着なんでこちらも約3週間というところです。 100mm×75mmの10枚で最安オプション$4.9ですが 送料が$13.88かかっていますので合計日本円で2098円。1枚当たり210円なら…

3D表示

出来上がった基板データで3D表示をしてみたら・・あれれほとんど部品が表示されない? フットプリントのプロパティで紐づけされている3Dシェイプ名を見てみると確かにローカルに保存されている3Dモデルのパスを指しているのですがかんじんのWRLファイ…

データフォーマット修正

fusionPCBの公式サイトで掲載されているKICADでのドリルデータの設定パラメータはこんな具合。 この指示の通り出力するとビュワーでのドリル表示があんな具合になってしまいます。 ところがネット上でいろいろな人の作例をみると「ゼロの扱い」で小数点…

ドリルデータ

注文しようとガーバーデータをZIP圧縮してfusionPCBのサイトにアップしたのですが、 注文時オンラインで見られるビュワーで念のため見てみると、基板全体図が隅に追いやられ画面左上原点近くに何かモヤモヤしたゴミが・・・ 拡大してみると何ぞコレ? レイヤ…

基板設計完

今回の基板は75×100mmで8086基板のちょうど半分。 部品をレイアウトしてみると結構みっしっり感はあります。 ライン幅を8mil(電源ラインは16mil)、最小ビア径を30milと余裕を持ったデザインルールでオートルータを掛けると2~3…

回路図入力

8031を中心とした回路を入力完了。 MCS51シリーズでも8031は内蔵ROMを持っていません。開発時にはDLLする領域をとしてRAMも必要で結局、外部拡張バスを引き出すことになります。 ここがマイクロコントローラのジレンマで本来は内蔵I/Oを使って…

Intel8031

今回、8086プロジェクトで久々に基板を外注したのですが、ページが日本語化されていたり小さい基板であれば驚くような安さで出来ることがわかり、ついでにもう一丁やってみました 出番待ちのCPUはいろいろあるのですが今回取り上げたのは小規模でサクッと出…