QUartUs PRIMEでniosⅡ DE10-lite編

はじめに
Intel社(旧アルテラ)のFPGA用プロセッサ(NiosⅡ)の設計手順をFPGA評価ボードのDE10-lite(Terasic社)を題材に
紹介します.ここではツールの導入とハードウェアとソフトウエアの作成手順を紹介します。


1-1.インストール情報
Quartus Primeがインストール済みの場合は"2.新規プロジェクトの作成"へお進みください.
Quartus Primeライト・エディションはintel社FPGAの一部を無償で設計できるFPGA開発ツールです。
インストール手順はintel社の以下の資料(インテル® Quartus® Prime開発ソフトウェア ダウンロード & インスト-ル クイック・スタート・ガイド )を参考にしてください。
http://dl.altera.com/static/quick_start_guide/quick_start_guide_17.0_ja.pdf

1-2.ダウンロードとインストール

intel社の以下サイトからQuartus Primeをダウンロードします。
http://dl.altera.com/?edition=lite
クイック・スタート・ガイドを参考にしてインストールしてくださ。

2.新規プロジェクトの作成

2-1.New Project Wizardの実行
Quartus Primeを起動してNew Project Wizardを実行します。

2-2.イントロダクション
Nextをクリック

2-3.プロジェクト名指定
作業ディレクトリ、プロジェクト名を指定
Nextをクリック

2-4.プロジェクトタイプの指定
Empty projectがマークしてあるのを確認して
Nextをクリック

2-5.ファイル追加
追加せずに
Nextをクリック

2-6.デバイス指定
デバイスファミリ、package等を指定してデバイスを絞り込み
DE10-liteのデバイスに合わせて10M50DAF484C7Gを指定する。
Nextをクリック

2-7.EDAツールの指定
変更なしで
Nextをクリック

2-8.サーマリ表示
Finishをクリックすると新規プロジェクトが完成する

3.ハードウエアの設計

3-1.Qsysの起動
NiosⅡプロセッサを含む回路はQsysで作成します。
Quarts PrimeのメニューからTools->Qsysを選択

3-2.NiosⅡの追加
起動したQsysのIP catalogで
Prcessors and Peripheralsy->Embedded Processors->NiosⅡProcessor
を選択して"+Add.."をクリックしてNiosⅡを追加する

3-3.NiosⅡの設定
MainタグでNiosⅡ/eにマーク
Finishをクリック

3-4.NiosⅡの接続
QsysのSystem Cntentsでnios2_gen2_0のclkとclk_0のclkの接点を
クリックして接続する。
QsysのSystem Cntentsでnios2_gen2_0のresetとclk_0のclk_resetの接点を
クリックして接続する。

3-5.On Chip Memoryの追加
起動したQsysのIP catalogで
Bsic Functions->On Chip Memory->On Chip Memory(RAM or ROM)
を選択して"+Add.."をクリックしてNiosⅡを追加する

3-6.On Chip Memory(RAM or ROM)の設定
Sizeを32768bytesに設定
Finishをクリック

3-7.On Chip Memoryの接続
QsysのSystem Cntentsでonchip_memory2_0のclk1とclkとclk_0のclkの接点を
クリックして接続する。
QsysのSystem Cntentsでonchip_memory2_0のreset1とclk_0のclk_resetの接点を
クリックして接続する。
QsysのSystem Cntentsでonchip_memory2_0のs1とnios2_gen2_0のdata masterの接点を
クリックして接続する。
QsysのSystem Cntentsでonchip_memory2_0のs1とnios2_gen2_0のinstruction masterの接点を
クリックして接続する。

3-8.On Chip Memoryのアドレス設定
Address Mapでonchip_memory2_0.s1のnios2_gen2_0.data_masterの設定の
開始アドレスを0x0001_0000に変更
Address Mapでonchip_memory2_0.s1のnios2_gen2_0.instruction_masterの設定の
開始アドレスを0x0001_0000に変更

3-9.NiosⅡのメモリ設定の変更
System Cntentsでnios2_gen2_0をクックして
parametrsのVectorタグで
Reset vector memoryをonchip_memory2_0.s1に設定
Exception vector memoryをonchip_memory2_0.s1に設定

3-10.System ID Peripheralの追加
起動したQsysのIP catalogで
Bsic Functions->Simulation Debug and Verification->Debug and Performance->System ID Peripheral
を選択して"+Add.."をクリックしてNiosⅡを追加する

3-11.System ID Peripheralの設定
変更なしで
Finishをクリック

3-12.System ID Peripheralの接続
QsysのSystem Cntentsでsysid_qsys_0のclkとclkとclk_0のclkの接点を
クリックして接続する。
QsysのSystem Cntentsでsysid_qsys_0のresetとclk_0のclk_resetの接点を
クリックして接続する。
QsysのSystem Cntentsでsysid_qsys_0のcontrol_slaveとnios2_gen2_0のdata masterの接点を
クリックして接続する。

3-13.JTAG_UARTの追加
起動したQsysのIP catalogで
Interface Protocols->Serial->JTAG UART
を選択して"+Add.."をクリックしてNiosⅡを追加する

3-14.JTAG_UARTの設定
変更なしで
Finishをクリック

3-15.JTAG_UARTの接続
QsysのSystem Cntentsでjtag_uart_0のclkとclkとclk_0のclkの接点を
クリックして接続する。
QsysのSystem Cntentsでjtag_uart_0のresetとclk_0のclk_resetの接点を
クリックして接続する。
QsysのSystem Cntentsでjtag_uart_0のavalon_jtag_slaveとnios2_gen2_0のdata masterの接点を
クリックして接続する。
QsysのSystem Cntentsでjtag_uart_0のirqとnios2_gen2_0のirgの接点を
クリックして接続する。

3-16.System ID PeripheralとJTAG_UARTのアドレス設定
Address Mapでsysid_qsys_0.control_slaveのnios2_gen2_0.data_masterの設定の
開始アドレスを0x0002_0000に変更
Address Mapでjtag_uart_0.avalon_jtag_slaveのnios2_gen2_0.data_masterの設定の
開始アドレスを0x0002_0100に変更

3-17.Qsysの終了
右下のFnishをクック

3-18.名前を指定して保存
Qsysの終了時にデザインに名前が付けられてない場合は
名前を聞かれる。名前を設定して保存をクリック
この名前はNisⅡを含んだ回路のモジュール名になる。
ここではmax10_nios2eとしました。

3-19.保存の完了
Svae System Completedウィンドに
Svae System Completed successfullyと表示されれば保存完了です。
Closeをクリック

3-20.Generateの指示
GenerateNow?と表示される

"はい"をクリックする

3-21.Generateの設定
変更せずにGenerateをクリック
モジュール設計データの作成が開始する

3-22.Generateの完了
Generate Completedウィンドに
Generate Completed successfullyと表示されればモジュール設計データの作成が完了です。
Finishをクリック

3-23.モジュール設計データのファイル名の表示
作成したモジュール設計データのファイル名が表示されている。
OKをクリック

3-24.max10_nios2eの追加
QuartsⅡのメニューからProject->Add/Remove File in Projectをクリック

3-25.追加ファイル
"..."をクリックすると.追加ファイルの指定ができる

3-26.追加ファイルの指定
max10_nios2e.qsysを選択して開くをクリック

3-27.追加ファイルの確認
max10_nios2e.qsysが追加されているのを確認して
OKをクリック

3-28.トップ回路記述の作成
Quartus PrimeのメニューからFile->Newをクリック

3-29.Fileの種類の指定
DesignFiles->Verilog HDL Fileを選択して
OKをクリック

3-30.トップ回路記述
エディタでトップ回路をVerilog-HDLで記述して保存
トップ回路はQsysで作成した max10_nios2eをインスタンスしてある
module max10_nios2e_sys (
 clk,
 reset_n); 

 input  clk;
 input  reset_n;
 
    max10_nios2e u0 (
  .clk_clk       (clk),     // clk.clk
  .reset_reset_n (reset_n)  // reset.reset_n
 );
endmodule

3-31.回路名の設定
回路を指定します。
トップ回路はプロジェクト名と同じでmax10_nios2e_sysを指定、
保存をクリック

3-32.デバイスオプションの設定①
Quartus PrimeのメニューからAssignments->Deviceをクリック

3-33.デバイスオプションの設定②
開いたウィンドでDevice Pin Optionをクリック

3-34.デバイスオプションの設定③
ConfigurationのConfiguration Modeで
Single Compressed Image with Memory Intialization(512Kbits UFM)
を選択してOKをクリック

3-35.コンパイルの実施
Quartus Primeの青三角をクリックすると
コンパイル(論理合成、配線)が実行される

3-36.ピン配置ツールの起動
Quartus PrimeのメニューからAssignments->Pin Plannerをクリック

3-37.ピン配置指定
Pin Plannerで
clkのlocationをPIN_P11、I/OStandardを3.3V LVTTLに指定
reset_nのlocationをPIN_B8、I/OStandardを3.3V LVTTLに指定
指定後にPin Plannerを閉じる

3-38.再コンパイル
Quartus Primeの青三角をクリックすると
ピン配置指定が反映さたコンパイル(論理合成、配線)が実行される

3-39.Programmerの起動
Compile Designに緑いろのチェックが付けば
コンパイル完了
De10-liteをPCのUSBポートに接続する
初回の接続ではドライバがインストールされる。
Quartus PrimeのメニューからTools->Programmerをクリック

3-40.デバイスの検出
Auto Detectをクリックすると10M50DAF484が検出される
Change Fileをクリック

3_41.プログラミングファイルの指定
max10_nos2e_sys.sofを指定して
Openをクリック

3_42.プログラミングファイルの書き込み
Program/Cnfgureにチェックを入れる
Startをクリックすると書き込み開始
100%(Successful)
と表示されると書き込み完了
これでハードウェアの準備は完了

4.NiosⅡプロセッサ用プログラムの作成

4_1.NiosⅡ software Build Tools for Eclipseの起動
Quartus PrimeのメニューからTools->NiosⅡ software Build...をクリック

4_2.ワークスペースの指定
Quart Primeの作業ディレクトリ/workspaceを指定して
OKをクリック

4_3.新規アプリケーションの作成
EclipseのFile->New->NiosⅡApplication and BSP for Templateをクリック

4_4.アプリケーションの設定
SOPC Information File nameにQuartsⅡの作業ディレクトリ/max10_nios2e.sopcnfoを指定
Project nameにprog_01を設定
Project templateにHelloWorldSmalを設定
Finshをクリック
アプリケーション用のプロジェクトとbspが作成される

4-5.アプリケーション用のプロジェクトの確認
Project Explorerのprog_01のhelloworld_small.cが
Cソースコード、ダブルクリックするとファイルが開く

4_6.アプリケーションのビルド
Project Explorerでprog_01の上でマウス右ボタンを押して
Build Projectをクリック

4_7.ビルドの結果
Consoleに
Build Fnishedと表示されればビルド完了

4_8.prog_01の実行
Project Explorerでprog_01の上でマウス右ボタンを押して
Run As->NiosⅡ Hardwareをクリック

4_9.prog_01の実行結果
NiosⅡ Consoleに
Hello from Nios II!
と表示されれば正常動作です。
赤い四角をクリックすると実行停止
ここまでNiosⅡプロセッサ用プログラムが完成です。