はじめに
この記事では Tightly Coupled Memory(以降 TCM と記載)から Nios® V プロセッサーを起動させるために、必要な IP と BSP Editor の設定、TCM の初期値ファイルの生成方法をご紹介します。
この記事の内容は、Nios® V を使用した構成の開発手順を理解している方向けの内容となっています。Nios® V を初めて使用される方は下記コンテンツをご参照ください。
参考資料:Ashling* RiscFree* IDE を使用した Nios® V プロジェクト開発手順
1. TCM とは
TCM とはプロセッサーに直接接続されるメモリーです。ミスヒットがないキャッシュ・ライクな使い方ができ、高速なアクセスが可能なため、リアルタイム性が求められるアプリケーションでよく使われます。
TCM には以下の特徴があります。
- 低レイテンシーで高速なアクセスが実現可能
- アクセスの競合が発生しない
通常 FPGA のインターコネクトを介してメモリーへアクセスする場合、最低 2 クロック程度アクセスにかかりますが、TCM では 最低 1 クロックでのアクセスが可能です。
TCM は Nios® V/g プロセッサーに実装されているオプションであり、下記 Quartus® Prime のバージョンから使用可能です。
- Quartus® Prime Pro Edition Version 23.3
- Quartus® Prime Standard Edition Version 23.1
2. ハードウェアの設定とデザイン構成
この章では Nios® V を TCM で Boot させるための最低限必要な IP と設定についてご紹介します。
2-1. Platform Designer の構成と IP の設定
下図に Platform Designer システムのデザイン例を示します。
【図 1】Platform Designer システム全体図
Nios® V の TCM Boot には最低限下記の IP が必要となります。
-
- Clock Bridge FPGA IP(上図の Clock)
- Reset Bridge FPGA IP(上図の Reset)
- Nios® V/g General Purpose Processor FPGA IP(上図の NiosV)
上記以外の IP(PIO 等)についてはユーザーのシステム仕様に応じてご使用ください。
2-1-1. Nios® V/g プロセッサーの設定
Platform Designer の Parameter Editor から Nios® V/g プロセッサーの設定を行います。
まず、Memory Configurations ブロックより Tightly Coupled Memories の Instruction TCM1 タブと Data TCM1 タブの設定を行います。
下図を参考に各 TCM の Size、Base Address、初期値ファイルを設定してください。
【図 2】Instruction TCM タブの設定
【図 3】Data TCM タブの設定
各 TCM の設定後、Platform Designer の System View 内の Nios® V プロセッサーを確認してみると、下記赤枠の ポートが増えています。これらが TCM とのインターフェイスとなりますので、下図のとおり Nios® V の instruction_manager と data_manager を接続してください。
【図 4】TCM のインターフェイスを接続
接続後、instruction_tcs1 がマッピングされ、ベースアドレスが割り振られます。 このベースアドレスは、Parameter Editor で設定した Instruction TCM1 のベースアドレスと同じアドレスに設定してください。
【図 5】Instruction TCM のベースアドレス
上記完了後、再度 Parameter Editor をご確認いただき、Traps. Exceptions, and interrupts のブロックから、Reset Agent を Instruction TCM1 に設定してください(本記事の説明では niosvitcm1 となっています)。
【図 6】Reset Vector の設定
注記:
Quartus® Prime Pro Edition Version 24.3 以前では、上記設定項目は Vectors ブロック内にありますのでご注意ください。
Platform Designer での IP の設定は以上となります。Platform Designer で Generate HDL を実行して各種ファイルの生成を行ってください。
2-2. Quartus® Prime の設定
Quartus® Prime では FPGA のコンフィグレーション・スキームを設定します
Assignments タブ → Device → Device and Pin Options → Configuration を開いてください。
-
- Configuration scheme:FPGA の Configuration 方式を設定
- Active serial clock source:FPGA を Configuration するときのクロック周波数を設定
下図は 1 例のため、使用しているボードの仕様に合わせて設定を行ってください。
【図 7】コンフィグレーション・スキームの設定
3. ソフトウェアの設定
この章では BSP Editor を使用して、Nios® V を TCM から Boot させるために必要な BSP の設定をご紹介します。Platform Designer より BSP Editor を起動して setting.bsp ファイルを作成してください。作成方法がわからない場合は下記リンクをご参照ください。
参考資料:Ashling* RiscFree* IDE を使用した Nios®V プロジェクト開発手順 ⇒ 4. RiscFree* IDE での Nios®V 開発
下記に Linker Script の設定と hal.linker の設定内容について説明します。
Linker Script の設定は、BSP Editor から BSP Linker Script タブを選択し、.text および .exceptions に Instruction TCM1(niosvitcm1)を設定し、残りの Linker Section Name に Data TCM1(niosvdtcm1)を設定します。
【図 8】BSP Linker Script タブの設定
hal.linker の設定は Main タブにある Settings → Advanced → hal の項目で、hal.linker オプションを allow_code_at_reset のみを有効にします。
【図 9】hal.linker の設定
4. プログラミング・ファイル(HEX ファイル)の生成
ソフトウェアのコンパイルが終了し ELF ファイルを生成した後、TCM の初期値として登録する HEX ファイルを生成します。
ELF ファイルの生成までの手順は下記記事をご参照ください。
参考資料:Ashling* RiscFree* IDE を使用した Nios®V プロジェクト開発手順 ⇒ 4-4. RiscFree* IDE の起動
Nios® V プロセッサーを TCM からブートする場合は、Nios® V command shell を使用して、アプリケーションの ELF ファイルを HEX ファイルに変換します。次のコマンドによりユーザー・アプリケーションの itcm.hex および dtcm.hex ファイルを作成します。
- itcm.hex の生成コマンド(Instrcution TCM 用の初期値ファイル)
elf2hex software/app/build/<user_application>.elf -o itcm.hex -b <base address of ITCM> -w 32 -e <end address of ITCM> -r 4- 実行例
elf2hex software/app/build/app.elf -o itcm.hex -b 0x00040000 -w 32 -e 0x0007ffff -r 4- dtcm.hex の生成コマンド(Data TCM 用の初期値ファイル)
elf2hex software/app/build/<user_application>.elf -o dtcm.hex -b <base address of DTCM> -w 32 -e <end address of DTCM> -r 4- 実行例
elf2hex software/app/build/app.elf -o dtcm.hex -b 0x00080000 -w 32 -e 0x000bffff -r 4上記コマンドで生成したファイルは、「2-1-1. Nios® V /g プロセッサーの設定」で設定した TCM の初期値ファイルとなるため、格納先の ディレクトリーにはご注意ください。
上記設定を行い FPGA をコンパイルをすることで、TCM Boot の設定が完了したコンフィグレーション・ファイルが生成されます。
おわりに
この記事では TCM を使用して、Nios® V を TCM から Boot させる方法をご紹介しました。
Nios® V プロセッサーに関する情報については、下記メーカーのページより詳細をご確認いただけますので併せてご参照ください。
参考: Nios® V Processor Developer Center
また、弊社では Nios® V に関する情報をまとめた「Nios® V まとめページ」をご用意しております。本記事以外にも有用な情報がありますので、こちらも併せてご確認ください。