May 31, 2006

TD4用ROMエミュレータ

「CPUの創りかた」CPUのTD4用に作成したROMエミュレータもようやく完成。
本体部分は非常にシンプルな作りで、
  • 起動時にEEPROMからRAMにROMデータを読み込み
  • TD4からのCLOCK信号を割り込みトリガとし、指定されたアドレスに対するデータ(RAM)を出力
だけ。

おまけ機能のUARTからROMデータをを操作する部分に非常に多くのコードが費やされる状態。
ここの機能は、
  • ROMバンク(16バイト単位,バンク)
  • ROMバンク切り替え
  • EEPROM書き換え
  • RAM内のROMデータダンプ
を実装。全部で500バイト弱。意外と大きい。

10数年振りにフルアセンブラで書いた割りには上出来か。初アーキテクチャ(AVR)でもあるし。
当初はPICで作るつもりだったけど、AVRの方が適しているという結論となった。
どちらも使ったことがないので、慣れの問題は無いがAVRの方が使いやすかった。
条件としては、
  • 入力5bit+出力8bit+UART
  • 外部割り込みあり
  • データ用EEPROMを内蔵
  • 必要最小限のピン数
の4点。
最初に試したPIC16F648(18ピン)では、汎用I/Oポートと特殊機能ポートの重複度合いが良くない。
PORTAはリセット端子が入力専用、PORTBにはUARTと外部割り込みといった具合で、ひとつのポートを出力用専用とすることができない。
TD4ではROMに対してストローブ信号を持たないため、PORTA/Bに分けて出力すると誤動作する可能性がある。
次のクラスだと、28ピンか40ピンになってしまうため、大きすぎ。
AVR90S2313(20ピン)は外付けクロックが必要ではあるが、PORTDにUART,外部割り込みがあり、PORTBは全部出力用に使えるため問題なし。
Posted at 00:10 in embedded