目次
1. はじめに
この記事では、LED や スイッチの 制御に使用できる PIO Core の概要とサンプルについて記載しています。
PIO に関する コンテンツやサンプルは他にも下記のようなものがございます。併せてご参照頂くとより理解が深まります。
参考:Nios® II はじめてガイド - ペリフェラル PIO (Parallel I/O) 簡易ユーザ・ガイド
参考:Nios® II はじめてガイド - 割り込みの実現
参考:Nios® II はじめてガイド - PIO を使用した I2C-Bus(2 ワイヤ)マスタの実装
2. PIO Core の概要
PIO の詳しい ユーザーガイドは、下記ユーザーガイドをご参照ください。
この記事では、よく使用する Input(割り込み使用)と Output の設定方法をご紹介いたします。
参考:Embedded Peripherals IP User Guide 27. PIO Core
PIO は Avalon Memory Mapped スレーブポートと Conduit Interface を有しており、Nios® II と FPGA 内外のロジックを接続する際に使用できます。
PIO Core ひとつに付き、32 bit のデータ幅を持つことができます。Nios® II などのマスターからの制御によって、データレジスターへのデータ書き込みや読み出しが可能です。
【表 1】に PIO Core のレジスターマップを示します。
【表 2】には、Basic Settings(Bidr, Input, InOut, Output)の設定によって、レジスターマップがどのような構成になるかを記載しています。
【表 1】 PIO Core レジスターマップ
Offset | Register Name | R/W | 31 | … | 2 | 1 | 0 | |
0 | data | Read Access | R | 現在 PIO にあるデータ値 | ||||
Write Access | W | PIO に出力するデータ値 | ||||||
1 | direction | R/W | 各 I/O ポートに対する個別入出力方向制御 入力の場合は 0、出力の場合は 1 に設定 |
|||||
2 |
interruptmask |
R/W | 各 I/O ポートに対する割り込み設定制御 ビットを 1 に設定すると、そのビットの割り込みが有効になる |
|||||
3 | edgecapture *1 | R/W | 各入力ポートのエッジを検出 | |||||
4 | outset *2 | W | 出力設定時に、特定ビットに値をセットします | |||||
5 | outclear *2 | W | 出力設定時に、特定ビットをクリアします |
*1:Edge Capture レジスターのクリア方法がパラメーター設定によって異なります。
Enable bit-clearing for edge capture register が無効の場合は、レジスターに値を書き込むと、すべてのビットがクリアされます。有効の場合は、特定のビットに 1 を書き込むと、その ビットのみクリアされます。
*2:[4] outset、[5] outclear のレジスターは、Output Register の Enable individual bit set/clear
output register 設定が有効になっている場合のみ使用可能です。
【表 2】 PIO Core レジスターマップ詳細(〇=有効、×=無効、△=オプション設定によっては有効)
Offset | Register Name | R/W | Basic Settings と レジスターの関係性 | ||||
Bidr | Input | InOut | Ontput | ||||
0 | data | Read Access | R | 〇 | 〇 | 〇 | × |
Write Access | W | 〇 | × | 〇 | 〇 | ||
1 | direction | R/W | 〇 | × | 〇 | × | |
2 | interruptmask *3 | R/W | △ | △ | △ | × | |
3 | edgecapture *4 | R/W | △ | △ | △ | × | |
4 | outset *5 | W | △ | × | △ | △ | |
5 | outclear *5 | W | △ | × | △ | △ |
*3:Generate IRQ オプションを有効にするとアクセスできるようになります。
*4:Synchronously capture オプションを有効にするとアクセスできるようになります。
*5:Enable individual bit setting/clearing オプションを有効にするとアクセスできるようになります。
2.1. Input 概要
PIO Core Input の主な使い方としては、データが入力されたら割り込みを発行してハンドラー内で処理を実施する使い方があります。この記事では例として割り込みを使用してハンドラー内で入力信号に応じた処理を実施する方法のパラメーター設定をご紹介します。
割り込みを使用して入力状態を判定する方法のパラメーター設定
Nios® II で割り込みを実現する方法は、下記のコンテンツで紹介しています。また、このコンテンツのサンプルにも実装しております。
【図 1】は、スイッチの 入力信号の立ち上がりエッジで割り込みを発生させて、Nios® II の割り込みハンドラー内でデータ処理を実施する為の、PIO Core パラメーター設定例を示しています。
割り込みを使用しないで Input Data Register だけ読み出して使用する場合は、
Synchronously capture と Generate IRQ を OFF にすることで、無駄なロジックを使用せずにシステムを構築可能です。
【図 1】 割り込みを使用して入力信号の状態を判定する PIO Core パラメーター設定例
・Basic Settings :Input
・Edge capture register :入力信号の Edge の状態を edgecapture レジスターに格納するかを設定
- Synchronously capture :有効にすると、Edge の状態が edgecapture レジスターに格納されます
- Edge Type :どのような Edge を edgecapture レジスターに格納するかを設定します
RISING:立ち上がりエッジを格納します
FALLING:立下りエッジを格納します
ANY:両エッジを格納します
- Enable bit-clearing for edge capture register:有効にするとビット操作で特定ビットをクリア可能にします
・Interrupt:割り込みの条件を設定
- Generate IRQ :有効にすると、割り込みが使用可能になります
- IRQ Type:レベルかエッジどちらで IRQ を発行するかを設定します
LEVEL:入力ポートの状態(レベル)が HIGH の時に 割り込みを発行します
EDGE:Edge Capture register の状態(エッジ)で割り込みを発行します(→ エッジで割り込み発行可能)
・Test bench writing:シミュレーション実行時に入力信号として与える初期値を設定
- Hardware PIO inputs in test bench:有効にすると初期値の設定を行えるようになります
- Drive inputs to field:設定された値はツールが生成するテストベンチに記述されます
2.2. Output 概要
PIO Core Output の主な使用方法としては、マスターの制御で HIGH/LOW を出力することです。この記事では、LED を制御する際に使用した パラメーター設定例をご紹介します。
PIO Core でLEDを制御する際のパラメーター設定
【図 2】は Output を使用する際の PIO Core パラメーター設定例を示しています。
【図 2】 Output を使用する際の PIO Core パラメーター設定例
・Basic Settings :Output
- Output Port Reset Value: PIO Core の Reset が解除された直後の Output Data Register の値を設定します
・Output Register:[4] outset、[5] outclear のレジスター の設定を行います
- Enable individual bit setting/clearing:有効にすると、[4] outset、[5] outclear が有効になります
3. サンプルの概要
この記事で紹介するサンプルデザイン情報を下記に記載します。
・使用 KIT:Cycloen V GX Starterkit(ただし、大半は Qsys ファイルの移植で動作可能)
・Tool バージョン:Quartus® Prime ver19.1_Standard
・主な使用 IP:Nios® II, JTAG UART, PIO(LED, DIP SW, Push SW)
・Nios® II/f(Gen2)
命令キャッシュ: 4 KB
データキャッシュ: 4 KB
・ OCRAM:128KB(ワークメモリー)
Platform Designer の接続図を【図 3】に示します。
【図 3】 Platform Designer 接続図
サンプルの挙動を【図 4】に示します。
【図 4】 サンプル動作イメージ図
<サンプル動作>
DIP SW で LED 初期点灯を切り替え、Push SW を 押すとその上の LED が 2つ 点灯します。
<初期点灯>
DIP SW の状態によって、LED の点灯が切り替わります。
DIP SW - ON :0xFF
DIP SW - OFF :0x55
Platform Designer Reset SW を押すと、Nios® II が再起動してソフトウェアの先頭から実行されます。
コメント
0件のコメント
記事コメントは受け付けていません。