はじめに
いまさら聞けない Nios® II プロセッサーシリーズということで本記事では Nios® II プロセッサーにおけるポートの接続について解説します。
Nios® II プロセッサーはいわゆるマイコンですが FPGA の回路を使用して構成される CPU のため通常のマイコンに比べてハードウェアとしての自由度が高いマイコンになっています。通常のマイコンであればデバイスの仕様として決まっている部分をユーザーにて設計する必要があり、逆に言えばこれが取っつき難い要因でもあります。
本記事ではその 1つでもある Nios® II におけるポート接続(バス接続) で使用するインストラクション・マスターおよびデータ・マスターについて解説します。
Nios® II のポート
Nios® II に用意されるポートは大きくインストラクション・マスター/データ・マスターの 2 つに分類されます。
Nios® II の設計には プラットフォーム・デザイナー(旧 Qsys) を使用しますがそれぞれのポートにどんなものを接続すべきかわからないという方がいらっしゃいます。 概念がわかれば怖くないということでそれぞれの役割について見ていきます。
インストラクション・マスター
こちらは Nios® II がメモリー上に格納された命令(インストラクション)を読み出す際に使用されるポートです(CPU 用語ではフェッチとも呼びます)。このため、プラットフォーム・デザイナー上で Nios® II の"命令が格納される"メモリー(RAM/ROM)にのみ接続すれば問題ありません。ポイントは"命令が格納される"というところです。命令が格納されないメモリーに対しては後述するデータ・マスターポートの接続のみで OK ということになります。
下記の例では jtag_uart_0 や led_pio には接続されていないことが確認できます。
データ・マスター
こちらは Nios® II がデータを読み書きするためのポートで制御する対象のペリフェラル(コンポーネント)すべてに接続します。制御対象には上記で解説したインストラクション・マスターに接続したメモリーも含まれることに注意してください。逆に言えばこちらのポートは プラットフォーム・デザイナー上のほぼすべてのペリフェラルに接続しておけば OK ということになります。
下記の例では nios_ram を含むすべてのコンポーネントに接続されていることがわかります。
接続例
以下がそれぞれのポートを接続した例です。これまで紹介してきたようにポートに色をつけることもできるので設計の効率化にお役立てください。
以上の通り、インストラクション・マスター、データ・マスターに接続されたコンポーネントにはアドレスが割り振られ CPU からのアクセスに使用されます。(いわゆるメモリーマップド I/O と呼ばれるものです。)
このアドレスを自由に指定できるのも通常のマイコンとの違いとなり最初は戸惑う部分かもしれません。
まとめ
上記の通り Nios® II は命令を読み出すポートとデータを読み書きするポートがそれぞれ独立した構成を取ります。それぞれのポートの役割さえ理解すれば接続すべきペリフェラルが理解できるようになったのでは無いでしょうか?
シンプルに考えるために以下で覚えていただけるとわかりやすいと思います。
- インストラクション・マスターには命令が格納されるメモリーのみを接続
- データ・マスターには上記を含むすべてのアクセス対象に接続
以上の情報を参考に Nios® II を使用したオリジナルマイコンの実装にチャレンジしてみてください。
おまけ
Nios® II からはリセットの出力ポートも用意されています。こちらも接続しておくべきか悩むケースがあると思います。
このリセットポートは通常時は使いませんがソフトウェアのデバッグ時に使用されるデバッグ用のリセットになっています。そのため接続は必須ではありませんが、あると便利な信号のため接続しておくことをおすすめします。接続対象のペリフェラルはデータ・マスターと同様に制御対象のペリフェラルすべて(Nios® II 自身を含む)に対して接続していただければ問題ありません。
ただし プラットフォーム・デザイナー上に PLL を実装している場合にはご注意ください。PLL からの出力クロックを Nios® II の入力クロックとして使用している場合には PLL がリセットされ入力クロックが不安定になってしまう可能性があります。このため PLL を実装している場合にはリセットの接続対象から外してください。
デバッグ用のリセット信号の設定を Run/Debug Configuration のオプション設定でどのように設定するかについては、下記の記事を参照ください。
📖 Nios® II SBT for Eclipse における Run/Debug Configuration 設定の使い方
おすすめページ
弊社では Nios® II に関する各種情報とまとめた「Nios® II まとめページ」をご用意しております。本記事以外にも有用な情報が満載ですのでこちらも併せてご確認ください。