ソフト・マクロのCPUでLinuxを動かす(前編) ――FPGAベースのボード・コンピュータを設計する
3)SDRAM
Linuxは従来の組み込み機器用OSと比べて,多くのデータ・メモリを必要とします.このため,16MバイトのSDRAMをFPGAの外部に置きました.16Mバイトの容量があれば,データ収集装置などのようなアプリケーションや,一度に多数のプロセスを動作させる必要のあるLinuxアプリケーションにも対応可能であると考えています.
FPGAとのインターフェースとして,OPB SDRAMコントローラ(以下,「OPB SDRAM」)を使用しています.OPB SDRAMでは,バス幅,自動リフレッシュ周期,CASレイテンシなどを指定できます.バースト長は,32ビット幅のデータ・バスのアクセスに合うように自動調整され,出力されます.例えばSDRAMのデータ・バスが16ビットの場合,2バーストになります.
OPB EMCとOPB SDRAMのアドレス/データ・バスは,共通のバスを使用する構成としました.これは,FPGAとしては比較的小型のパッケージ(256ピンBGA)を使用しており,メモリ・インターフェースのために必要となるI/Oピンの数を抑えたかったためです.
アドレス・バスとデータ・バスの信号の扱いには注意が必要です.OBPでは,MSBをビット0と表現します.しかし,多くの部品ではビット0はLSBとして扱われています.信号名の数字を合わせてしまうと,正しく動作しないということになります.このため,信号名の数字を入れ替えて使用しなければなりません(図3).
図3 アドレス・バスとデータ・バスの信号の扱い
OBPでは,MSBをビット0と表現する.多くの部品では,ビット0はLSBと表現している.このため,信号名の入れ替えが必要.