1. 概要(IP 等も含めた構成)
この記事では On-Chip Memory (以降 On Chip RAM と記載) から Nios® V プロセッサーを起動させる為に、最低限必要な IP の各種パラメーターと BSP Editor の設定、On Chip RAM の初期値ファイルの生成方法をご紹介します。
この記事でご紹介する構成では、ソフトウェア・ファイルを初期値ファイルとして On Chip RAM に格納します。この構成の利点として On Chip RAM に初期値ファイルを格納することにより、FPGA の電源が立ち上がった後すぐに Nios® V プロセッサーを Boot させることができます。
必要な設定として、オペレーションの違いが多少ありますがほとんど Nios® II と同じため、Nios® II の Boot 方法の設定についても以下記事より併せてご参照いただくことで、より理解が深まるかと思います。
参考資料:Nios® II Boot の種類 と 各 Boot Option における設定方法について
最低限必要な IP は下記のとおりです。(インテル® Quartus® Prime Pro Edition ソフトウェア・バージョン 22.4 の場合)
- Nios® V/m Processor Intel® FPGA IP
- On-Chip Memory (RAM or ROM) Intel® FPGA IP
Platform Designer で構築した場合 【図1】 の構成になります。
【図1】Platform Designer の構成
この記事ではコンソール出力用に JTAG_UART IP を実装しておりますが、こちらは必須ではないためご注意ください。
また実装している各 IP の名前は視認性を上げるため下記のとおりに設定しています。
- Clock Bridge Intel FPGA IP : Clock
- Reset Bridge Intel FPGA IP : Reset
- Nios® V/m Processor Intel® FPGA IP : NiosV
- On-Chip Memory (RAM or ROM) Intel® FPGA IP : OCRAM
- JTAG UART Intel FPGA IP : JTAG_UART
最低限必要な Nios® V プロセッサーと On Chip RAM の パラメーターの設定については次項でご紹介します。
1-1. Nios® V/m Processor Intel® FPGA IP
【図2】 のとおりに Debug 以下の "Enable Debug" と "Enable Reset From Debug Module" を有効にした後、Vectors 以下の Reset Agent を "OCRAM s1" に設定してください。
【図2】 Nios® V プロセッサーのパラメーター設定
注記:
Reset Agent : のプルダウン・メニューを選択する際に、"OCRAM.s1" ポートが表示されないことがあります。その際は一度別のポートを選択後に、再度プルダウン・メニューを開くことで選択可能になりますのでご注意ください。
1-2. On-Chip Memory (RAM or ROM) Intel® FPGA IP
【図3】 のとおりにソフトウェア実行に必要な Total memory Size の設定と、On Chip RAM に登録する初期値ファイルを指定するために、Memory Initialization の設定を行います。
【図3】 On Chip RAM のパラメーターの設定
Nios® II プロセッサーでは初期値ファイルを memint.qip を使用する方法で登録ができましたが、Nios® V プロセッサーで使用する RiscFree IDE では、meminit.qip を生成するコマンドが無いため、 【図3】のとおりに "Enable non-default initialization file" にもチェックを入れて、<任意の名前 >.hex のパスを登録する必要があります。
この記事では下記のとおりに設定しています。
- Total memory size : 51200 Bytes
- User created initialization file : ram.hex
HEX ファイルの作成方法については「3-1. HEX ファイルの生成」でご紹介します。
1-3. Quartus® Prime Settings
Assignment tab → Device → Device and Pin Options → Configuration を開いてください。
- Configuration scheme:FPGA の Configuration 方式を設定
- Active serial clock source:FPGA を Configuration するときのクロック周波数を設定
【図4】 Quartus® Prime の Device and Pin Options
2. BSP Editor 設定
Platform Designer より BSP Editor を起動して Setting.bsp を作成します。作成方法がわからない場合は下記リンクをご参照ください。
参考資料:Ashling* RiscFree* IDE を使用した Nios® V プロジェクト開発手順
4. RiscFree* IDE での Nios® V プロセッサーの開発
BSP Editor の起動方法については Nios® II プロセッサーと Nios® V プロセッサーで異なりますが、設定内容は同じです。下記に Linker Script の設定と hal.linker の設定内容についてご紹介します。
Linker Script の設定は BSP Linker Script タブを選択し 【図5】 のとおりに .entry 以外の Section を "OCRAM" に設定します。
【図5】 BSP Linker Script の設定
hal.linker の設定は Main タブにある Settings → Advanced → hal の項目で、hal.linker オプションを 【図6】 のとおりに下記項目のチェックを入れます。
- allow_code_at_reset
- enable_at_load
- enable_alt_load_copy_rwdata
【図6】 hal.linker の設定
BSP Editor での設定は以上です。
次章では On Chip RAM に登録する HEX ファイルと Programming ファイルの生成方法をご紹介します。
3. Programming ファイルの生成方法
ソフトウェアのコンパイルが終了し ELF ファイルを生成した後、On Chip RAM の初期値として登録する HEX ファイルを生成します。
ELF ファイルの生成までの手順は下記記事をご参照ください。
参考資料:Ashling* RiscFree* IDE を使用した Nios® V プロジェクト開発手順
4-4. RiscFree* IDE の起動
3-1. HEX ファイルの生成
ELF ファイルの生成が完了した後 Nios® V Command shell を起動し、カレント・ディレクトリを作成したプロジェクトまで移動します。
移動後下記コマンドを入力して HEX ファイルを作成してください。
$ elf2hex software/app/build/Debug/<生成した ELF ファイル>.elf -o <任意の名前>.hex -b <On Chip RAM の ベースアドレス> -w <On Chip RAM のデータ幅> -e <On Chip RAM の エンドアドレス>
実行例
$ elf2hex software/app/build/Debug/hello.elf -o ram.hex -b 0x00010000 -w 32 -e 0x0001c7ff
<任意の名前>.hex が生成されるため、「1-2. On-Chip Memory (RAM or ROM) Intel® FPGA IP」の手順で On Chip RAM に登録してください。
Nios® V プロセッサーの On Chip RAM Boot に必要な設定は以上です。
3-2. POF ファイルと JIC ファイルについて
On Chip RAM から Boot する場合は、初期値ファイルとしてソフトウェア・ファイルを登録しているため、SOF ファイルにソフトウェア情報が含まれています。
従って SOF ファイルから通常通り POF ファイルや JIC ファイルを生成することで、ソフトウェア情報を Programming ファイルに反映させることができます。
Quartus® Prime をフル・コンパイルせずに、更新した HEX ファイルを SOF ファイルに反映させる方法はこちらをご参照ください。
参考資料:Nios® II - オンチップ・メモリからのブート手順
おわりに
Nios® V プロセッサーに関する情報については、下記メーカーのページより詳細をご確認いただけますので併せてご参照ください。