[AVR-SD] 次のステップ:ブートアップ

  • 投稿日:
  • 更新日:2015/03/08
  • by
  • カテゴリ: ,

SDカードインタフェースはほぼ期待通りに動作しています。 ハードを設計して、作って、ソフトを設計して、作ってというのは結構長い道のりですが、動いたときはうれしいものですね。 いつもはソフトしか作らないので、またこれも格別なものがあります。 とはいっても、今回は西田さんにもかなり助けられていますが。 ありがとうございます。

さて、次の課題はブートアッププロセスです。 現在のインタフェースはメモリを積んでいないため、テストプログラムはカセットインタフェースから読んでいます。 ベルーガのカートリッジと一緒に挿せばROMからブートアップが可能ですが、拡張ユニットを作るのが(配線が)面倒なので、まだやっていません。

現在のインタフェースに使っている部品は以下のとおりです。 安価で手に入りやすい部品のみ使用しています。

  • ATmega8L (88でも動作可)
  • 74HC373
  • 74HC374
  • 74HC4078
  • 74HC32
  • レギュレータ 48M033F
  • コンデンサ 0.1u x 1, 10u x 1
  • 抵抗 1k x 1, LED x 1

こ れまでのアイデアは、CPLDを使ってロジックをまとめ、SRAMを同時搭載することによりブートアップ時にデータをSRAMに転送することです。 理論的には全く可能なのですが、意外に多ピンのCPLDは高いです(SRAMは安い)。 というか、もともとCPLDは(上記の部品に比べれば)結構高価です。 部品代もあるので、あまり高価な部品は使いたくありません。

AVRで扱えず、ロジックで必要になるのは以下の部分です。

  1. 入出力用のラッチ(8ビット x 2)
  2. I/Oポートのデコード
  3. SRAM初期化用アドレス発生
  4. アドレスバス・データバスのバッファリング

このうち、1, 2については現在既に行っています。 3, 4が問題で、入出力数が多いので小さなCPLDでは無理があります。 ATtiny2313 + 74HC244/245数個という組み合わせもありますが、DIPでは基板に乗り切らなさそうです。

ここは金を使わず頭を使って(?)、何とかうまい方法を編み出したいものです。