Nios II - Vectored Interrupt Controller の実装

Similar documents
SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装

複数の Nios II を構成する際の注意事項

ModelSim-Altera Edition インストール & ライセンスセットアップ Linux ver.11

Quartus II クイック・スタートガイド

Nios II SBT Flash Programmer ユーザ・ガイド

アルテラ USB-Blastre ドライバのインストール方法 for Windows OS

Quartus II はじめてガイド - プロジェクトの作成方法

ModelSim-Altera - RTL シミュレーションの方法

Nios II Flash Programmer ユーザ・ガイド

Quartus II はじめてガイド - Convert Programming File の使い方

Nios II IDE によるソフトウェア開発 セクション 2

Quartus Prime はじめてガイド - デバイス・プログラミングの方法

PCI-Express ハード IP を使用した DMA の実現 for Cyclone V GT FPGA 開発キット(ソフトウェア編)

Quartus Prime - プログラミング・ファイルの生成や変換(Convert Programming Files)

Microsoft Word - ALT0982_program_epcs_by_niosii_v10.doc

FPGA 外部のメモリをアバロン・MM・インタフェースへ接続する方法

Nios II ソフトウェア開発ハンドブック Version 1.2 第6章. 例外処理 ver.1.2

Nios II 簡易シミュレーション

Quartus II はじめてガイド - プロジェクトの作成方法

Nios II 簡易チュートリアル

Nios II カスタム・インストラクションによるキャスト(型変換)の高速化

Quartus II クイック・スタート・ガイド

HyperLynx SI/PI/Thermal ライセンス設定ガイド

Quartus II Web Edition インストール・ガイド

オンチップ・メモリ クイック・ガイド for Cyclone III

Nios II IDE によるソフトウェア開発 - セクション 1

Quartus II はじめてガイド - EDA ツールの設定方法

ModelSim - アルテラ・シミュレーション・ライブラリ作成および登録方法

S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0

Quartus II ハンドブック Volume 5、セクションIV. マルチプロセッサの調整

PCI Express Compiler ユーザガイド ~シミュレーション編・SOPC Builder フロー~

Nios® II HAL API を使用したソフトウェア・サンプル集 「Modular Scatter-Gather DMA Core」

Quartus II はじめてガイド - デバイス・プログラミング方法

Quartus II はじめてガイド - よく使用するロジック・オプション設定方法 (個別設定)

SoC はじめてガイド - HPS-FPGA 間のアクセス方法(Arria® V SoC / Cyclone® V SoC 編)

目次 1. 概要 動作環境

Quartus II - デバイスの未使用ピンの状態とその処理

Quartus II はじめてガイド - EDA ツールの設定方法

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

Preloader Generator の使用方法

Quartus II はじめてガイド - ピン・アサインの方法

ご注意 1) 本書の内容 およびプログラムの一部 または全部を当社に無断で転載 複製することは禁止されております 2) 本書 およびプログラムに関して将来予告なしに変更することがあります 3) プログラムの機能向上のため 本書の内容と実際の画面 操作が異なってしまう可能性があります この場合には 実

1

Nios II マイコン活用ガイド Nios II マイコンボード紹介 ステップ 1 AuCE C3 製品紹介 AuCE C3 は ソフトコア プロセッサ Nios II( アルテラ社 ) を搭載可能なマイコンボードです 弊社の基本ソフトウェアをインストールし FPGA 開発者のデザインと Nios

はじめにお読みくださいfor HP Smart Zero Client v5.0

KDDI Smart Mobile Safety Manager Mac OS キッティングマニュアル 最終更新日 2019 年 4 月 25 日 Document ver1.1 (Web サイト ver.9.6.0)

PowerPoint プレゼンテーション

AN424 Modbus/TCP クイックスタートガイド CIE-H14

Quartus II はじめてガイド ‐ Device and Pin Options 設定方法

PCI-Express ハード IP を使用した DMA 転送の実現 for Cyclone V GT FPGA 開発キット(ハードウェア編)

RH850の割り込み/例外実現方法 CC-RHアプリケーションガイド

Space-E/Draw インストールガイド 発行通知書

機能仕様書フォーマット

IBIS

ワイヤレスセンサモジュール取扱説明書

Silicon Labs 社 CP210x クイックスタートガイド 2015 年 6 月

MAC アドレス変更ツール MAC アドレスチェンジャー ユーザーズマニュアル User's Manual エレコム株式会社

Ver.70 改版履歴 版数 日付 内容 担当 V /09/5 初版発行 STS V /0/8 証明書バックアップ作成とインストール手順追加 STS V /0/7 文言と画面修正 STS V..0 0//6 Firefox バージョンの変更 STS V..40

仮想 COM ポートドライバ Windows 10 編 インストールマニュアル

HULFT8 for Windows/UNIX/Linux/zLinux の機能で発生する不具合について

1 はじめに 概要 特徴 動作環境 本マニュアルの見かた 用語集 プロファイルについて 制約事項 ライセンス認証 ( プロファイルのインストール ) を行う..

HDC-EDI Base Web/deTradeII送受信機能起動時におけるJava8のセキュリティ警告とその回避策について

Ver.50 改版履歴 版数 日付 内容 担当 V..00 0//6 初版発行 STS V..0 03/4/7 サポート環境の追加 STS V..0 06/9/5 画面の修正 STS V /4/ 画面の修正 STS V // 文言と画面修正 FireFox のバージョン変更に

目次 1. はじめに ライセンス証書の受領 ライセンス証書に含まれる内容 環境前提条件 準備 インストール環境の確認 ファイル インストール インストール後の Dr

1

Quartus® Prime ガイド - Design Space Explorer II の使い方 Ver.16

HLS はじめてガイド - 簡易チュートリアル

RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社

PowerPoint プレゼンテーション

ユーザーズマニュアル

WebSAM AlertManager Ver4.2 UL1032-B03 UL1032-HB03 UL1032-JB03 セットアップカード 1 章パッケージの中身の確認 2 章セットアップの準備 3 章セットアップの方法 4 章注意事項 UL1032-XB03 SL1032B0301-1

Trueflow 3 Ver3

CONTEC DIOプロバイダ ユーザーズガイド

Notes and Points for TMPR454 Flash memory

RW-4040 導入説明書 Windows 7 用 2017 年 7 月 シャープ株式会社

バーコードハンディターミナル BT-1000 シリーズセットアップガイド ( 第 1 版 ) CE ***

HDL Designer Series SupportNet GUI HDL Designer Series HDL Desi

SCC(IPsec_win10)_リモート設定手順書.doc

WindowsXPインストール

SILAND.JP テンプレート集

proventia_site_protector_sp8_sysreq

Microsoft PowerPoint - セキュリティ強化後のWEBアクセスFAQ.ppt

スライド 1

現行のICカードリーダRW4040インストーラの課題

Microsoft Word - DWR-S01D_Updater_取扱説明書_120514A.doc

Quartus II はじめてガイド - プロジェクトの作成方法

PN-T321

NFCライブラリマニュアル

VisualStage Type-Basic Mobile 設定&操作マニュアル(iOS 版)

アジェンダ Renesas Synergy TM プラットフォーム構成 ThreadX とは ThreadX の状態遷移 ThreadX とμITRONの機能比較 まとめ ページ 2

Microsoft Windows XP Professional x64 Editionインストール方法説明書

目次 1 章はじめに 本書の利用について Web ブラウザーについて 章 kintone でタイムスタンプに対応したアプリを作成する kintone にログインする kintone でアプリを作成する

WindowsXPインストール

スライド 1

管理者マニュアル

HP USB Port Managerご紹介資料 -シンクライアント

Nios II マイコン活用ガイド マイコンの動作を確認しましょう AuCE C3 には 基本 CPU エンジン CPU0121C3880 と 対応する基本プログラムを書き込んで出荷しております 以下に AuCE C3 出荷時の状態を示します AuCE C3 FPGA Cyclone III 基本

はじめに 京セラ製スマートフォンを指定の microusb ケーブル ( 別売 ) またはこれと共通仕様の microusb ケーブル ( 別売 )( 以下 USB ケーブル ) と接続して USB テザリング機能をご使用いただくためには あらかじめパソコンに USB ドライバ をインストールしてい

目次 1. はじめに 本書の目的 本書の対象 作成環境 準備 インストール環境の確認 ライセンス インストーラー インストール その

Transcription:

ALTIMA Corp. Nios II Vectored Interrupt Controller の実装 ver.1.0 2010 年 7 月 ELSENA,Inc.

目次 1. はじめに... 3 2. 適用条件... 3 3. システムの構成... 4 3-1. SOPC Builder の設定... 4 3-2. ペリフェラルの設定... 4 3-2-1. VIC の設定... 4 3-2-2. Nios II の設定... 5 4. Nios II SBT での実装... 6 4-1. BSP の設定... 6 4-2. 割り込みネストを許可しない場合の割り込み... 7 4-3. 割り込みネストを許可する場合の割り込み ( 異なるレジスタ セット )... 8 4-4. 割り込みネストを許可する場合の割り込み ( 同一レジスタ セット )... 9 4-5. 同一レジスタ セットでも割り込みネストを許可する場合の割り込みの設定... 10 5. ソフトウェアの変更... 11 5-1. 記述の違い... 11 5-2. 記述の変更... 11 ver. 1.0 2010 年 7 月 2/12 ALTIMA Corp. / ELSENA,Inc.

1. はじめに この資料は Quartus II 9.1 / Nios II 9.1 より新たに追加された Vectored Interrupt Controller Core ( 以下 VIC) を使ったハードウェアおよびソフトウェアを実装する方法を紹介しています これまでの Nios II では割り込みの制御に例外レジスタ方式が採用されており プライオリティー エンコーダなどをソフトウェアで処理していたため 自由度の高い割り込み制御が可能になる半面 割り込み発生から割り込みサービス ルーチンの呼び出しまでのレスポンスについて若干遅くなる傾向がありました しかし version 9.1 で新たに追加された VIC を使うことによって より早い応答時間の割り込み制御が実現できるようになりました また それ以外にも VIC をデイジー チェーンで結合することで 32 を超えた割り込み制御が可能になり プライオリティーの変更やノンマスカブル割り込みの実現など 多くの機能が強化されております なお VIC を使用する場合 Nios II IDE ではなく version 9.1 で正式リリースされた Nios II Software Build Tool ( 以下 Nios II SBT) を使用する必要があり また 割り込み関連のソフトウェア記述に若干の修正が必要になりますのでご注意ください 2. 適用条件 本資料では Nios II SBT の基本的な操作方法やソフトウェアの一般的な記述方法については解説しておりませんので それらは別途マニュアル等を参照ください 対応バージョン Quartus II 9.1 以降 Nios II 9.1 以降 ModelSim-Altera Edition 6.5b 以降 ver. 1.0 2010 年 7 月 3/12 ALTIMA Corp. / ELSENA,Inc.

3. システムの構成 3-1. SOPC Builder の設定 SOPC Builder では 割り込み制御の検証のために 2 つのタイマーを実装し IRQ 番号を 0 と 1 で割り当てています また レスポンス計測時のキャッシュの影響を除くため Nios II のコード メモリやデータ メモリをタイトリー カップルド メモリーで実装しています 3-2. ペリフェラルの設定 3-2-1. VIC の設定 Number of Interrupts : 2 IRQ 番号の上限 Requested Interrupt Level (RIL) Width : 2bit 割り込みレベルのビット幅 (0~3) ver. 1.0 2010 年 7 月 4/12 ALTIMA Corp. / ELSENA,Inc.

3-2-2. Nios II の設定 Interrupt Controller : External VIC を使用する場合は External を選択 これまでの内部の割り込みコントローラを使用する場合は Internal を選択 Number of shadow register sets : 7 シャドウ レジスタの数 ( 標準は 7) ver. 1.0 2010 年 7 月 5/12 ALTIMA Corp. / ELSENA,Inc.

4. Nios II SBT での実装 4-1. BSP の設定 BSP Editor を開き Drivers タブの Settings を選択します enable_preemption : 割り込みのネストを許可します enable_preemption_into_new_register_set : プライオリティーの低い割り込みの実行時に 異なるレジスタ セットを使用するプライオリティーの高い割り込みが発生した場合にはネストを許しますが 同じレジスタ セットを使用する割り込みは制限します enable_preemption_rs_1 ~ 7 : プライオリティーの低い割り込みの実行時に 同じレジスタ セットを使用するプライオリティーの高い割り込みが発生した場合 実行途中のプライオリティーの低い割り込みは レジスタの値をシャドウ レジスタでは無くスタックに積んでプライオリティーの高い割り込みに遷移します ただし この動作はスタックに退避するオーバー ヘッドを含むため 割り込みの応答時間に余裕のある処理で使用してください irqn_ril : 割り込みレベルを設定します irqn_rnml : ノンマスカブル割り込みを選択します irqn_rrs : 使用するシャドウ レジスタを設定します ver. 1.0 2010 年 7 月 6/12 ALTIMA Corp. / ELSENA,Inc.

4-2. 割り込みネストを許可しない場合の割り込み 2 つの割り込みを用意し 1 つの割り込み処理の途中で別の割り込みを発生させ, 波形シミュレーションを行っています なお 割り込みサービス ルーチンの動作状況を判別するため 関数の先頭と最後で I/O に任意の値を書き込む処理を追加しています BSP の設定 void isr_timer0(void *context) IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x01); -1 IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_0_BASE,0); -2 IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x04); -3 void isr_timer1(void *context) IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x02); -4 IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_1_BASE,0); -5 IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x08); -6 2 5 1 3 4 6 21clk IRQ-1 の処理の途中で IRQ-2 が発生しています IRQ-1 は IRQ-2 よりも割り込みレベル (RIL) が低いのですが ネストを許可していないため IRQ-1 が終了するまで IRQ-2 の実行は待たされます なお VIC を使った割り込みでは 割り込み発生からサービス ルーチンの実行までの応答時間は 21clk となっています ver. 1.0 2010 年 7 月 7/12 ALTIMA Corp. / ELSENA,Inc.

4-3. 割り込みネストを許可する場合の割り込み ( 異なるレジスタ セット ) 前述の 4-2 と同じ条件で BSP の enable_preemption と enable_preemption_into_new_register_set にチェックを入れてシミュレーションを行っています BSP の設定 void isr_timer0(void *context) IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x01); -1 IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_0_BASE,0); -2 IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x04); -3 void isr_timer1(void *context) IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x02); -4 IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_1_BASE,0); -5 IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x08); -6 5 2 1 4 6 3 20clk IRQ-1 の処理の途中で IRQ-2 が発生していますが レジスタ セットが異なる割り込みのため IRQ-1 の中で IRQ-2 に制御が移されています なお ネスト割り込みでは 割り込み発生からサービス ルーチンの実行までの応答時間は 20clk となっています ver. 1.0 2010 年 7 月 8/12 ALTIMA Corp. / ELSENA,Inc.

4-4. 割り込みネストを許可する場合の割り込み ( 同一レジスタ セット ) 前述の 4-3 と同じ条件で BSP のレジスタ セット (Requested Register Set : RRS) を同一にし シミュレーションを行っています BSP の設定 void isr_timer0(void *context) IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x01); -1 IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_0_BASE,0); -2 IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x04); -3 void isr_timer1(void *context) IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x02); -4 IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_1_BASE,0); -5 IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x08); -6 2 5 1 3 4 6 IRQ-1 の処理の途中で IRQ-2 が発生しています IRQ-1 は IRQ-2 よりも割り込みレベル (RIL) が低いのですが 同一のレジスタ セットが指定されているため IRQ-1 が終了するまで IRQ-2 の実行は待たされます ver. 1.0 2010 年 7 月 9/12 ALTIMA Corp. / ELSENA,Inc.

4-5. 同一レジスタ セットでも割り込みネストを許可する場合の割り込みの設定 前述の 4-4 と同じ条件で BSP の enable_preemption_rs_1 にチェックを入れてシミュレーションを行っています BSP の設定 void isr_timer0(void *context) IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x01); -1 IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_0_BASE,0); -2 IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x04); -3 void isr_timer1(void *context) IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x02); -4 IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_1_BASE,0); -5 IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x08); -6 1 5 2 4 6 3 60clk シャドウ レジスタへの退避が出来ないためスタックに退避 IRQ-1 の処理の途中で IRQ-2 が発生しています IRQ-1 と IRQ-2 は同じレジスタ セットを使用しますが ネストを許可しているため IRQ-2 はシャドウ レジスタでは無くスタックにレジスタの値を退避します この条件での割り込みでは スタックへの退避をソフトウェアで実現しているため 通常より長い応答時間が必要となりますので ご注意ください ver. 1.0 2010 年 7 月 10/12 ALTIMA Corp. / ELSENA,Inc.

5. ソフトウェアの変更 5-1. 記述の違い Nios II 内部の割り込みコントローラを使用する HAL の記述と 新しい VIC を使用した HAL の記述を対比しています HAL API 内部割込みコントローラ使用時 alt_irq_register() alt_irq_disable() alt_irq_enable() alt_irq_interruptible() alt_irq_non_interruptible() alt_irq_disable_all( ) alt_irq_enable_all( ) alt_irq_enabled() VIC 使用時 alt_ic_irq_enable() alt_ic_irq_disable() alt_ic_irq_enabled() alt_ic_isr_register() 5-2. 記述の変更 割り込みサービス ルーチンと登録と 割り込みサービス ルーチン自身の記述の違いを下記に示します 割り込みサービス ルーチンの登録 (alt_irq_register) を使用している場合 新たな API を使用する場合大きな変更は必要ありません 唯一 VIC のデイジー チェーン時に必要となる ic_id を system.h から取得して設定することで変更は終了します また 割り込みサービス ルーチン自身については これまで在った id が削除されておりますので 割り込みサービス ルーチンを複数の割り込みで共用している場合などは isr_context で渡す情報の中に割り込みを識別できるような情報を埋め込んで頂く等の対応が必要となりますのでご注意ください int alt_irq_register(alt_u32 id, void* context, void (*isr)(void*, alt_u32)) int alt_ic_isr_register(alt_u32 ic_id, alt_u32 irq, alt_isr_func isr, void* isr_context, void* flags) 新たに追加された引数 alt_u32 ic_id : デイジー チェーンの VIC を使用する際の VIC ID を指定します この値は system.h に記述されています 例. VIC_0_INTERRUPT_CONTROLLER_ID void* flags : 将来用 0 を設定してください void (*alt_isr_func)(void* isr_context, alt_u32 id); void (*alt_isr_func) (void* isr_context); 上記以外にも割り込みを Enable/Disable する関数などがありますが それらは BSP での設定等で対応可能です ver. 1.0 2010 年 7 月 11/12 ALTIMA Corp. / ELSENA,Inc.

免責 及び ご利用上の注意 弊社より資料を入手されましたお客様におかれましては 下記の使用上の注意を一読いただいた上でご使用ください 1. 本資料は非売品です 許可無く転売することや無断複製することを禁じます 2. 本資料は予告なく変更することがあります 3. 本資料の作成には万全を期していますが 万一ご不明な点や誤り 記載漏れなどお気づきの点がありましたら 本資料を入手されました下記代理店までご 一報いただければ幸いです 株式会社アルティマ : 222-8563 横浜市港北区新横浜 1-5-5 マクニカ第二ビル TEL: 045-476-2155 HP: http://www.altima.co.jp 技術情報サイト EDISON : https://www.altima.jp/members/index.cfm 株式会社エルセナ : 163-0928 東京都新宿区西新宿 2-3-1 新宿モノリス 28F TEL: 03-3345-6205 HP: http://www.elsena.co.jp 技術情報サイト ETS : https://www.elsena.co.jp/elspear/members/index.cfm 4. 本資料で取り扱っている回路 技術 プログラムに関して運用した結果の影響については 責任を負いかねますのであらかじめご了承ください 5. 本資料は製品を利用する際の補助的な資料です 製品をご使用になる場合は 英語版の資料もあわせてご利用ください ver. 1.0 2010 年 7 月 12/12 ALTIMA Corp. / ELSENA,Inc.