6-1.外部アドレス空間と外部バス
RX621/RX62Nでは、下図のように外部アドレス空間が8つの領域(CS7~CS0)とSDRAM用の領域(SDCS)に分かれています。ただし、CS0は内蔵ROMの領域なので、普通は外部領域として使いません。また、SDCSはSDRAM専用なので、ここでは除外しておきます。
外部アドレス空間
(RX621/RX62N ハードウェアマニュアルより)
外部アドレス空間を使用するためには、システムコントロールレジスタ0(SYSCR0)のEXBEに“1”を書き込み、外部バスを使えるようにしておきます。
EXBE=“1”とすると、次のI/Oポートが自動的に外部バス用に切り替わります。
・I/Oポート2(PORT2):
P27~P24=CS7#~CS4#
・I/Oポート5(PORT5):
P52=RD#
P51=WR1#/BC1#
P50=WR#/WR0#
・I/OポートA(PORTA):
アドレスバスA7~A0
・I/OポートB(PORTB):
アドレスバスA15~A8
・I/OポートC(PORTC):
アドレスバスA23~A16
PC4~PC7=CS3#~CS0#
・I/OポートD(PORTD):
データバスD7~D0
・I/OポートE(PORTE):
データバスD15~D8
P27~P24=CS7#~CS4#
・I/Oポート5(PORT5):
P52=RD#
P51=WR1#/BC1#
P50=WR#/WR0#
・I/OポートA(PORTA):
アドレスバスA7~A0
・I/OポートB(PORTB):
アドレスバスA15~A8
・I/OポートC(PORTC):
アドレスバスA23~A16
PC4~PC7=CS3#~CS0#
・I/OポートD(PORTD):
データバスD7~D0
・I/OポートE(PORTE):
データバスD15~D8
6-2.SRAMの接続回路例
ここでは、外部アドレス領域の1つであるエリア4(CS4,アドレス=0x4000000~)に4MbitSRAM CY7C1041DV33(CYPRESS製)を1個接続する例を示します。
このエリア4を、「1ライトストローブモード」「データ幅16ビット(D15~D0)」「アドレス20ビット(A19~A0)有効」(ただしA19は未使用)として使うものとします。
書き込みモードには「1ライトストローブモード」と「バイトストローブモード」があり、前者は1本のライト信号(WR#)と2本のバイト選択信号(BC1#,BC0#)を使って、上位8ビットか下位8ビット、または16ビットの書き込みを行うモード、後者は2本のライト信号(WR1#,WR0#)をバイト選択と兼ねて同様の書き込みを行うモードです。どちらを使うかは、接続するデバイスによって決めます。
4MbitSRAMの接続回路例
6-3.設定プログラム例
次のリストは、前述のように外部アドレス領域のエリア4をSRAMで使うためのプログラム例です。
ハード的条件は100ピンのRX621/RX62Nで、システムクロック(ICK)=96MHz,外部バスクロック(BCK)=48MHz,周辺モジュールクロック(PCK)=48MHzとしています。
なお、このプログラムは統合開発環境で自動生成されるファイルhwsetup.cの、関数HardwareSetupに記述します。
この例では、2種類のバスタイミングが作成できるようになっています。マクロEXBUSFASTを宣言すると赤字の「より高速」部分がコンパイルされ、宣言しないと青字の「より慎重」の部分がコンパイルされます。
両者とも、4MbitSRAM CY7C1041DV33で動作可能です。また、それぞれのタイミングは下図のようになります。
「より高速」のタイミング 「より慎重」のタイミング
なお、このウェイトサイクルの設定には下記のような条件があるので注意が必要です。
・リードサイクル:CSON ≦ RDON ≦ CSRWAIT
・ライトサイクル:1 ≦ WDON ≦ WRON ≦ CSWWAIT かつ CSON ≦ WRON ≦ CSWWAIT
←ポートファンクションレジスタ4(PF4BUS)で無効/有効の設定必要
←ポートファンクションレジスタ4(PF4BUS)で無効/有効の設定必要
←ポートファンクションレジスタ3(PF3BUS)で無効/有効の設定必要
←ポートファンクションレジスタ0(PF0BUS)で無効/有効の設定必要
←ポートファンクションレジスタ5(PF5BUS)で無効/有効の設定必要