さて、今回はNEEKに搭載されたDDR3メモリを使ってみたい。MAX 10 NEEKには、FPGA内に内蔵されたSRAMとは別に、外部にDDR3メモリが搭載されている。DDR3/LPDDR2のI/FはMAX 10に標準搭載されており、なので基本DDR3ないしLPDDR2を搭載すればMAX 10からこれを利用する事ができる。もちろん、NIOS IIからの利用も可能だ。
MAX 10 NEEKのSystem CDを展開すると、Demonstrations\ddr3_niosの下に、NIOS IIからDDR3をアクセスするためのサンプルコードが用意されている。まずは手始めに、MAX 10 NEEKを起動してUSB Blaster IIを接続した状態で、Demonstrations\ddr3_nios\demo_batchの下にあるddr3_nios.batを起動すると、こんな画面になるはずだ(Photo02)。KEY0を押すと、NIOS IIからDDR3メモリへの読み書きがテストが開始される(Photo03)。問題がなければ、test結果は“Pass”になる。
このdemo_batchの下はバイナリの形で提供されているので、これを自分でビルドしなおしてみよう。
Demonstrations\ddr3_nios の下を丸ごと他のフォルダにコピーして、Quartus IIから"File" → "Open Project..."でddr3_nios.qpfを選択してプロジェクトを開く(Photo04)。そのままコンパイルしてもいいのだが、構成を確認するためにQSYSを開いてみる(Photo05,06)。
メモリマップはこんな感じ(Photo07)で、0x08000000〜0xfffffffにDDR3メモリがマッピングされていることが分かる。マッピングを見る限り、スタックとかダイナミックな変数にDDR3の領域を使うのは、そのままでは無理(EclipseでC++のソースのビルドの際にリンクオプションで設定をしない限り自動では使ってくれない)だが、プログラム内からアドレスを指定して利用するのは問題なさそうだ。
Copyright © ITmedia, Inc. All Rights Reserved.