1. はじめに
本記事は、 Nios® V と DDR4 メモリーを接続して Write/Read 動作をおこなった事例の紹介です。
動作確認には以下の開発キットを使用しています。
:Intel Agilex® 7 FPGA F-Series Transceiver-SoC Development Kit (P-Tile and E-Tile)
開発キット上で FPGA と接続されている DDR4 メモリーの容量は DIMM 8GB、components 2GB の計 10GB です。
Nios® V は、4GB のアドレス空間しかありませんので、このままでは アドレス空間が足りません。
そこで本記事では、アドレス空間を拡張するために Address Span Extender を使用し、Nios® V のアクセス領域を 2GB としてシステムを構築しました。
Address Span Extender については以下の記事をご参照ください。
参考資料:Nios® II などの Master のアドレス空間を拡張する Address Span Extender の使い方
2. FPGA デザイン
Nios® V と DDR4 メモリー間のブロック図を【図 1】に示します。外部メモリー・インターフェース (EMIF) IP のユーザー側と Address Span Extender とはクロック・ドメインが異なるため、Clock Crossing Bridge を挿入しました。 デザイン上で挿入しなくてもツールが自動で挿入しますが、今回は明示的に挿入しました。
なお FPGA 全体のデザインとしては、このブロック図の部分を以下の記事のサンプル・デザインに追加したものを使用しています。
参考資料:Ashling* RiscFree* IDE を使用した Nios®V プロジェクト開発手順
【図 1】ブロック図
Platform Designer を用いて以下のように接続しました。
【図 2】 Platform Designer 画面
Nios® V から アクセスする DDR4 メモリーの領域は、Address Span Extender のコントロール・レジスターに設定します。領域① の場合は 0x0_0000_0000 と設定、領域⑤ には、0x2_0000_0000 と設定となります。
【図 3】 アドレス・マップ
3. Nios® V 動作プログラム
Nios® V 動作用のプログラムを以下に示します。
まずアクセスする DDR4 メモリーの領域を Address Span Extender のコントロール・レジスタに設定して、続いて DDR4 メモリーにアクセスしています。
【図 4】 動作プログラム
Nios® V 動作手順につきましては、以下の記事をご参照ください。
参考資料:Ashling* RiscFree* IDE を使用した Nios®V プロジェクト開発手順
4. 実機動作確認結果
実機動作確認では、SignalTap を使用し、想定通りに各領域にアクセスできていることを確認しました。
【図 5】 DIMM の addr = 0x0 へのアクセス (図 1 の領域 ①)
【図 6】 DIMM の addr = 0x7FFF_FFFF へのアクセス (図 1 の領域 ④)
【図 7】 components の addr = 0x0 へのアクセス (図 1 の領域 ⑤)
【図 8】components の アドレス = 0x1FFF_FFFF (図 1 の領域 ⑤)
5. おわりに
本記事では、Nios® V と DDR4 メモリーを接続し、アドレス空間を拡張するために Address Span Extender を使用して Write/Read をおこなう事例を紹介いたしました。デザインも添付していますので、参考になれば幸いです。