フォト
無料ブログはココログ

MC14500B

2012年12月 7日 (金)

ROMエミュレータ

MC14500Bを使ったボードを1年前に作った。このボードはプログラムをUV-EPROMやEEPROMに書くと、書いたり消したりが面倒なので、RAMに格納するようにした。
プログラムの入力はスイッチでデータをセットしてWRボタンを押してRAMに書き込み、STEPボタンを押してアドレスを進める、という手順が必要である。

 この方法の問題は書き込んでいるデータとアドレス両方を確認できないことである。
アドレスのインクリメント(STEPボタン)を忘れてデータを入力すると、そのアドレス以降全てやり直しになるので効率が悪い。結局、面倒になって1年間放ったままだ。

 懐古趣味とはいえ、ヘタレなのでスイッチをパチパチやってプログラムを入力するのは正直つらいのでROMエミュレータを作ることを考えた。
TD4のROM(DIP-SW×16)をAVRを使ってROMエミュレータにしている方がいらっしゃる

 ということでAVRでROMエミュレータを考えてみた。
AVR AT90S2344の手持ちがあるのでこれを消費することにしよう。(ATMegaがあるので今更AT90S2344を使うこともないだろうし)
Romemu
 256byteのROMエミュレータで動作は、#CE,#OEで割り込みを発生させて、アドレス用のポートをを読んでテーブル(ROMデータ)を引いてデータ用のポートに出力する。
プログラムを考えると、割り込み遅延、ポートが分かれているためアドレス計算、出力データ計算が必要で速度的に厳しそうだ。
 読み取る側のCPUが遅いならば使えるが、古い8bitCPUのIPLに使いたいのでUV-EPROMくらいのスピード(450usくらい)が欲しい。 と思案していたら、同じことを考えている方がいらっしゃった。外付けのバッファ(HC244)で#CE,#OEを処理すると、AVRでの余分な処理がなくなるので早くなりそうだ。

 ROMデータプログラムを領域に置いてISPで書くのは面倒なのでSRAMに置いて、シリアル経由でダウンロードできるようにしよう。スイッチでA0,A1とRxD,TxDを切り替えるようにして、リセット時に特定のポートをチェックしてLならばプログラム・ダウンロードモード、HならばROMモードになるようにしよう。
Romemu2313

 Tiny2313のSRAMは128byteである。SRAMすべてをROMデータにするとファームウエアでCALLや割り込みが使えなくなるのでCで書けなくなる。
ちょっと前はAT90S1200を使ったニキシー管時計のファームをアセンブラで書いてたのに最近はすっかりヘタレになってしまった。

 ROMデータを64byteにするかなあ...ATMega88/ATMega168を使うかなあ...

2011年11月15日 (火)

間違ってる!

間違を発見した。

Oneshot_2
両方NANDだとゲートの数が足りない。
左側はNANDで右側はNORにする必要がある。

Oneshot1

2011年11月11日 (金)

配線した

配線した。

Mc14500board
電源スイッチは省略し、サンハヤトの ICB-293Uに収まった。
あと、データ入力用にバスを引き出せばOK

Mc14500board1
うちの娘に聞くと、↑このあたりが"なんだかすごい"のだそうな、 (?_?

2011年11月 6日 (日)

回路図を描いてみた

回路図を描いてみた。

Icumini1

 できればすべてモトロラーで統一したいところだけど,揃うかなあ
右側の破線内は、他で使い廻しするので別の基板に実装しよう。

 プログラムカウンタに4040を使うのでJMP命令が使えない。
 モノマルチに4538を使うと2種類のディレイが得られるのだが、今回は余ったゲートで構成してみた。

メモリマップはこんな感じ

Addr Read Write
1XXX 4599:0-7 4599:0-7
01XX 4512:4-7
00XX 4512:0-3 Delay

2011年8月12日 (金)

MC14500B

長いこと探していた MC14500B をようやく見つけた.
Mc14500bcp_2
厨房のころ初めて買ったトラ技に記事があった.
ほしいなと思って30数年経ってようやく手に入れることができた.