CPU実験室

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

386

モニタ移植

パタン修正した箇所を元に戻したところ、メモリテストは正常に続行するようになりました。 メモリ範囲の拡大やパタンをさらに変えて試験する必要がありますが、 今の開発環境ではプログラムの実装が非常にめんどくさいです。 というのはプログラム作成後ROM…

修正ミス発覚

机上でSRAM周りのパタン接続を追っているうちにミスに気づきました。 ライトイネーブルWE#はフラッシュROM(Am29F010)にもあるので同じピン番同士をパラ接続 しているのですがSRAM(M68AF127)と微妙にピンアサインが異なっていました。 SRAMにWE#が来ないの…

SRAMテスト

ボード上のSRAMテストを開始。 まずインクリメントデータを書き込んで、 後からそのデータを読み出して正しいことを確認する処理をROMに書込みました 簡易的なチェックで先頭の64kByteしか見てません 0000 org 0000h 0000 B1 FF MOV CL,0ffh 0002 B8 0000 MO…

ボーレート設定

見つけてきたサンプルプログラムでは 原振Fclock=7.3728MHzでクロックレートR=×16のときボーレートジェネレータの設定値BRGは 9600baud:BRG=22 19200baud:BRG=10 と指定されていますが、単純な反比例ではありません。 ところが関係式を baud = Fclock /(…

MPSC送信チェック

コードを焼いたROM4個を挿し込んで実行 シリアルデータ送出もうまくいっています。 レベルコンバータによって±10Vの振幅になっているのでこのままホストとRS232Cで接続できます。 9ピンDsubコネクタを取り付けておきました。 ただボーレートが想定外。やはり…

MPSCテストプログラム

uPD72001のシリアル送信部分をチェックします まず大量にあるレジスタの設定。ここではキャラクタベースの調歩同期通信という MPSCの機能のほんの一部しか使わないわけです。 ソースを入力してMASMでアセンブル。 .386 = 000C COM_B equ 0ch = 0008 PORT_B e…

MPSCアクセス成功

uPD72001のマニュアルを探しているうち 産業用マイコンボードの資料に行き着きました。 http://www.aone.co.jp/cat-s/cat.html uPD72001を使用した拡張用シリアルボードの仕様書が公開されていて 周辺回路やサンプルプログラムまで記載がありとても好感が持…

MPSCテスト

MPSC:マルチプロトコルシリアルコントローラ uPD72001のテストを始めようと ネットからダウンロードしておいたデータシートを改めて見ているのですが、 ピン配置、ピン機能、タイミング特性などハード関係の記述があるだけで レジスタ設定といったプログラ…

パラレル出力テスト

データバス最下位8ビットに接続された74HC574に対してインクリメントデータを 出力してみました。 まずリセットベクタに8000:0000(ROMの先頭)にJMPするコードを書いておき 8000:0000から動かしたいコードを書き込みます。 8000:0000 E6 20 loop0:out 0x20,…

20MHz動作

クロック入力部にあった分周器を取払って原振40MHzを直接CPUに注入し 内部20MHzのフルスピードで動作させました ループに必要なクロック数は START: NOP 3クロック NOP 3クロック JMP START 8クロック(7クロック+jmp先の構成要素数1) で合計14クロック。 …

ロジックミス修正

こうなると怪しいのはメモリのリード信号を生成している部分なのでCPLDの確認です。 以下の部分はCPUから出力されるバスサイクル:M/IO#,D/C#,W/R#をデコードして バス制御信号を生成している部分ですが、 外部に出力されるMEMRD,MEMWRを負論理にするのを忘…

シングルステップ確認

CPLDの空き端子にスイッチをつなぎ、これをパチパチとやると 1マシンステートづつ進んで停止するのでバス状態がわかります。 本当は押しボタンSWを使いたいのですが手持ちが無かったのでスライドSWです 386CPUはハードリセット後、アドレスバスの状態は0xFFF…

ループテスト

最も簡単なループテスト: リセットベクタから永久ループのコードをFlashROMに書込みました FFFF:0000 90 START:NOP FFFF:0001 90 NOP FFFF:0002 EB FC JMP START これをボードにセットして電源ONし各信号線の状態をオシロで確認しています。 下の図はch1:デ…

ご本尊安置

PGAソケットの所定のピンにVCCおよびGNDが接続されていることを確認して 386DXを挿入しました。 FlashROM4個もさしていますがデータ内容は適当です

信号線仮接続

CPUのアドレス・データバス、チップセレクト、R/W系の信号線は配線済ですが まだ処理が未決定の信号についても仮接続しました。 残っていたのはこんなところ LOCK# :BUS LOCK→ 未使用で出力なので放置 NA# :NEXT ADDRESS→パイプライン制御はしないので抵抗…

CPLD回り配線

CPUを動作させるに必要最小限の信号線をCPLDと接続しました CPLDも挿込んで仮の電源投入 8ビットパラ出力の青色チップLEDが全点灯していますがすごい明るさです

CPLD書込み準備

今メインで使っているPCにはパラレルポートが1つしかなく、プリンタで専有していて ケーブルを挿しかえるのも面倒なのでパラレルI/F拡張ボードをオークションで落札してきました 今時、レガシーポートを拡張することはあまり無いでしょうが、新品で\1700で…

CPLD周り

システム制御信号を生成するXC95108周りの回路です。 パタンからリバース解析で起こしました。 ピンアサインがばらばらですが、最もパタンが引きやすいようにアサインしたためです。

バス配線完了

データバスD24-D31の配線が完了しました。 アドレスバスは意外とパタンの方で配線済みでかなり楽できます Eagleのスケマチックエディタを使っていまさらですが配線図を描き始めました。

バス配線続き

今日のノルマD16-D23を配線。 パタンチェックも並行して進めていますがここに来てどえらいミスを発見。 データバス最下位D0-D7はROM、RAMとI/Oの8ビットLED出力とuPD72001シリアルコントローラに 接続されていますがI/Oへのビット並びがむちゃくちゃにパタン…

バス配線続き

今日のノルマD8-D15までバス配線完了 最近、温調半田ごてが安くなっているので買っちゃいました。 今のところはUEWを付けているだけなので熱量もあまり必要なく ありがたみが良くわかりません ただ電源オンで即使用可能になるのとコテ自体が軽いのは なかな…

UEW配線開始

暑い時期は半田ごて握るのも億劫だし、換気の悪い冷房した部屋でヤニの煙り出すのもイヤなんで しばらく中断していましたが、最近涼しくなってきてやっと再開です まずはCPU~ROM間のデータバス接続をしています。 今日は最下位バイトD0-D7の8本で終了。先は…

CPLDフィッテング

ROM、RAMへのアクセスに最低限必要なチップセレクタ、クロック、リセット系の 回路を入力し、基板パタンにあわせてフロアプランを行いました。 I/Oピンはほぼ使い切りますが、内部のロジックはガラガラです

周辺ロジック設計

バス制御信号などの生成ロジックはCPLDに全部入れてしまいます。 XILINX ISEでクロック生成、アドレスデコーダを回路図入力し XC95108にフィッテングさせます

パタンミス

久しぶりに386基板をいじってます 部品の実装は終わっているのでパタンで引ききれなかった配線をUEWで行うために どこまで回路が完成してるか、回路図起こし・パタンチェックを兼ねて始めたら パタンミスを発見。 隣り合ったアドレスA14ラインと/WEの入れ違…

オシレータ取り付け

しばらくいじっていませんでしたが システムクロックを発生させるオシレータを取り付けました。 原振40MHzでCPLDのGCLKへ入力し、各種のタイミング信号を発生させます

RS232 I/F

RS232C用のドライバICを基板の半田面に実装してます。 PCではもはやレガシーI/Fで付いてるのを探すのも大変ですが 組込みの世界ではいまだに現役です。

電源、リセット回路

電源、リセット回路周りの実装をしています 電源入力部分にはEMIフィル、リセットICにはTL7705といういつものパタンです

LEDインジケータ

今回初めて表面実装の抵抗アレイを使ってます。 DIPスイッチのプルアップ用で基板裏面に実装しました。 ピッチは0.8mmですが4素子8ピンしかない部品なのでえらい小さく仮押さえが難しい デバッグ用のパラレル出力とシリアル出力のインジケータにも表面実装の…

周辺回路実装

CPLDのPLCC84ピンソケット、シリアルコントローラuPD72001、 パラレル出力用LEDなどを取り付けました。 こうして大きく接写するとかなり汚いな