■ AVRに 外部メモリー(S-RAM)を増設する ■


 AVRマイコンのSRAM(Static RAM)は、多く搭載されているチップでも4〜8KByte程度ですが、ATmega8515やATmega128などの一部のチップでは、ポートをバスラインに使用して、外部にSRAMを増設することができます。
 今回は、ATmega128のテストボードを試作したので、外部メモリーのテストも行ってみました。


      20年も前のSRAM
   日立 HM62256LP-12 (上)
   256Kbit 32KByte アクセスタイム 120ns

   最近購入したSRAM
   EPSON SRM2B256SLMX55 (下)
   256Kbit 32KByte アクセスタイム 55ns


回路の概要
 
1.電源電圧
 
 ・AVR、SRAM共に、5V電圧で動作させます。
 ・3.3Vなどの電圧では、アクセスタイムが倍近く必要になりますから、注意して下さい。

2.ALE信号 (Address Latch Enable)
 
 ・64KByteのメモリー空間をアクセスするには、アドレスバス16本とデータバス8本、制御信号
  (/RD・/WR)2本の、合計26個のポートが必要になりますが、ポートピンの節約のため、
  下位アドレス8本とデータ8本が、時間差で同一のポートから入出力されます。
 
 ・この複合信号を、再度分離するために、8ビットのラッチICが必要になります。
 
 ・テストボードでは、AVRのクロックに16MHzを使用しているので、タイミングを考慮すると、高速の
  ラッチICが必要になり、C-MOSのTC74AC573P(または同等品)を選択しました。

3.SRAM(Static RAM)の選定
 
 ・メモリーを選択する際に、重要になるのはアクセスタイムです。
 
 ・これは、メモリーのチップイネーブル信号が有効になる、またはアドレスが変化した時点から、
  メモリーがデータを準備できるまでの時間です。
   (/OE信号からのアクセスタイムも設定があります)
   (書き込み時は、タイミングが多少変わります)
 
 ・下記に、ATmega128を、クロック16MHz、電源電圧5Vで使用する場合の、外部メモリー・アクセス
  タイミングを示します。

  

 ・AVRのレジスタ設定で、WAIT(待ち時間)を入れることができるので、アクセスタイムの遅い
  メモリーも使用が可能です。
 
 ・これにより、今回用意したEPSON SRM2B256SLMX55(アクセスタイム55ns)は、WAITを1つ
  入れる事で使用できます。
 
 ・日立のHM62256LP-12は、アクセスタイムが120nsなので、2つのWAITが必要になります。

4.シリアル インターフェイス(RS-232C)回路
 
 ・メモリーテストの結果などを表示するために、ターミナル入出力として使用します。
 ・ATmega128は、ISPポートとUSART0ポートが同じなので、プログラム書き込み時の衝突を避ける
  ため、74HC126が入っています。
 ・電源電圧が5V単一なので、定番のMAX3232でレベル変換を行っています。
 ・パソコンとの接続は、RS-232C メス-メス クロスケーブルを使用します。

 
 
ソフトウェアについて
 
 ・外部メモリーのアドレス空間は、バンク機能を使用しない場合で、64KByte($0000〜$FFFF)です。
 
 ・使用したSRAMは32KByteなので、アドレスは$0000〜$7FFFが標準となりますが、AVRのレジスタ
  および内蔵SRAMが、$0000〜$10FF番地を使用するため、外部メモリーは$1100〜$7FFF番地と
  なってしまいます。
 
 ・この重なった部分のメモリーも使用可能にするため、このボードでは、メモリーの/CS端子を、
  アドレス最上位のA15に接続せずに、GNDに接続してあります。
 
 ・これにより、外部メモリーは、$0000〜$7FFFと同じ内容が、$8000〜$FFFF番地にも見えるように
  なり、外部メモリーの有効なアドレスは$1100〜$90FFで、32KByteすべてを使用することができ
  ます。
 
 ・外部SRAMへのアクセスは、内部SRAMに比べて、1クロック分余分に時間がかかりますので、
  スタックは、内部SRAMに配置する方が、プログラムの実行速度が上がります。
  (外部SRAMにWAITを使用する場合は、さらに遅くなります)

 ・下記に、BASICの簡単なメモリーテストプログラムを掲載しておきます。
 ・SRAMのアクセスタイムに合わせて、ウェイトも変更できます。
 
 ・RS-232Cターミナルの設定は、使用するモニターに合わせて、プログラム内 または BASCOMの
  オプション設定で、通信速度などを設定して下さい。

 
 ・BASCOM-AVRの外部メモリーに関する命令文は、下記を参照して下さい。
 
CONFIG XRAM 外部メモリー(XRAM)へのアクセス状態と、ウェイト・ステートを設定します。
$XRAMSIZE 外部メモリー(XRAM)の、メモリー容量を指定します。
$XRAMSTART 外部メモリー(XRAM)の、スタートアドレスを指定します。


 
回 路 図  GIF版 Am128Tcir.gif (271KB)  PDF版 Am128Tcir.pdf (217KB)

部品配置図  GIF版 Am128Tpcb.gif (190KB)
   注意! この図面を使用した、いかなる損害にも責任を負いません。 

プログラム  テキスト形式 ソースファイル  ExRAMtest.TXT (4KB)
 BASCOM-AVR用 ソースファイル  ExRAMtest.bas (4KB)
 インテルHEX形式 オブジェクトファイル  ExRAMtest.HEX (5KB)



 
AVR・RAM 実装状態

 
メイン基板 部品面

 
メイン基板 ハンダ面


AVRマイコン ATmega128の、ヒューズ ビット書き換え
 
・ATmega128は、工場出荷時に、ヒューズ ビットが下記の様になっていますので、変更が必要です。
 
 ○ クロック=内蔵RC発振器
 ○ JTAGインターフェイスが許可。
 ○ 発振器出力振幅(小)
 ○ ATmega103互換動作モード。

下記ページの書き換え方法 「6.」を、以下の様に変更して、ヒューズ ビットの書き換えを行います。

    ヒューズ ビット書き換え

   [ Fusebit98DCBA ] の右欄 [ 100001:Int. RC Osc. 1 MHz; Start-up time:
   6 CK + 64 ms; [CKSEL=0001 SUT=10]; default value
] をクリックすると、
   右側にプルダウンメニューが現れますから、
   [ 111111:Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 64 ms;
   [CKSEL=1111 SUT=11]
] を選択します。
 
   [ Fusebit High F ] の右欄 [ 0:Enable JTAG ] をクリックすると、右側にプルダウン
   メニューが現れますから、[ 1:Disable JTAG ] を選択します。
 
   [ Fusebit High H ] の右欄 [ 1:osc 1 ] をクリックすると、右側にプルダウンメニューが
   現れますから、[ 0:osc 0 ] を選択します。
 
   [ Fusebit Extended P ] の右欄 [ 0:ATMEGA103 compatibility mode set ] を
   クリックすると、右側にプルダウンメニューが現れますから、
    [ 1:ATMEGA128 mode ] を選択します。


○パーツの参考資料
 ・基板  「秋月電子通商」 片面ガラスエポキシ・ユニバーサル基板 Bタイプ (95x72mm)
 ・QFP IC変換基板  「サンハヤト」  QFP-83
 ・SOP IC変換基板  「サンハヤト」  ICB-010


   電子工作の部屋 Top へ 前のページへ戻る