MAX10ボードがもうすぐ到着 [FPGA]

昨日MAX10シリーズが発表になり、即日出荷が始まっています。

アルテラ、次世代の不揮発性 MAX 10 FPGA、およびMAX 10 FPGA 評価キットの提供開始を発表

EVAボードはALTERAを初め、Arrowやマクニカから4種類が発表され、DigikeyやMouserで取り扱いが始まりました。
早速、ALTERAのEK-10M08E144ES/Pを注文してみました。
max_10_eval_board.JPG


さて、それと平行してMAX10の実デバイス向けにコンフィグレーションデータを用意します。
MAX10はコンフィグレーションROMが内蔵されているため、外部コンフィグはMAX II/VのようにJTAGのみです。
コンパイルはQuartusII 14.0にMAX10用ライブラリを追加するUpdate2を導入します。

ダウンロード・センター Quartus II ウェブ エディション
update2.png


QuartusプロジェクトはCycloneIIIやCycloneIV Eのものがほぼそのまま流用できます。
EPCSペリフェラルを使っているものはSPI Flash扱いになりますが、リモートアップデートペリフェラルはMAX10の内蔵ROMと競合してしまうので修正が必要になります。
また、MAX10では256ピン以下のパッケージのデバイスではPLLが1個しか使えないため、PLLを2個以上使っているデザインはそのまま流用できません。CycloneIII/IV EではE144パッケージでも2個または4個のPLLが使えたので、ここは要注意です。
Qsysで新しくデザインをする時は、旧来のNiosIIでは生成することができず、新しくNiosII Gen2のコンポーネントに差し替える必要があります。


QuartusII 14.0 Update2では、後付けでMAX10のライブラリを追加してコンフィグレーションデータを生成するようにしたため、本来は自動で設定されるであろう項目をマニュアルで設定しなければなりません。
このうち、特にクリティカルなのがM9kメモリマクロの設定です。

Settings→Analysys&Synthesis→More Settings で追加設定を開き、その中のEnable ERAM PreloadをOff→Onにします。
max10_m9k_option.png


どうやらMAX10ではコンフィグレーションデータ圧縮のためにメモリマクロの初期化を変更しているようで、この設定をしないと初期値データ(.mifや.hex)があるM9kメモリがコンパイルエラーになります。

また、14.0 Update2では合成結果がsofまでしか生成されません。
MAX10デバイスに書き込むpofファイルを生成するには、File→Convert Programming file でsofをpofに変換します。UFMに書き込むユーザーデータやDualコンフィグレーションのsofもここで一緒にpofにまとめます。

MAX 10 FPGA Configuration User Guideに詳しい手順が書いてありますが、14.0 Update2と一部食い違う部分があり、現状はあくまで暫定環境という扱いだと思います。
QuartusII 14.1ではこのあたりの面倒くさい手順もすっきりすると思います。