[Q2HB] PIO Core
[Altera][Q2HB][IP] PIO Core
refer to:"Volume 5: Embedded Peripherals","Section I. Off-Chip Interface Peripherals","Chapter 9, PIO Core"
Function Description
各PIOコアは最大32のI/Oポートを提供します.マイクロプロセッサのようなインテリジェントホストが,Avalon-MMインタフェースのレジスタマップに対して読み書きすることで,PIOポートを制御します.ホストの制御下において,PIOコアは入力のデータを取り込んだり,データを出力(駆動)します.PIOポートがI/O端子に直接接続されるとき,ホストはPIOコアの制御レジスタに書き込むことで,Tri-stateにすることができます.
SOPC Builderで生成した場合には,ユーザに見える2つの仕様を持ちます.
- MMインタフェース経由で見える,data,direction,interrupt-mask,edgecaptureレジスタ
- 1~32のI/O port(FPGA内部への接続でも,FPGA外部端子への接続も可能です.)
Instantiating the PIO Core in SOPC Builder
Basic Settings
Width | I/Oポートの幅を指定します.1~32の値が設定できます. |
Direction | 以下に示すテーブル(Direction Settings)から機能を選択します. |
Output Port Reset Value | 出力ポートのリセット値を指定できます.正しい値の幅は,ポート幅に依存します. |
Direction Settings
Bidirectional (tristate) ports | このモードでは,PIO bitはデータの駆動と取得のためにデバイス端子を共有します.各端子の方向は独立して選択可能です.FPGA I/Oをtrie-state状態にするには,directionは入力にします. |
Input ports only | このモードでは,PIOポートは取り込み入力のみです. |
Output ports only | このモードでは,PIOポートは出力駆動のみです. |
Both input and output ports | このモードでは,入出力ポートのバスが分離し,n bitの端方向バスとなります. |
Input Options
edge-captureとIRQ生成に関する指定を行います.Basic Settingsで,入力ポートが無ければ設定できません.
Edge Capture Register(作業中)
Interrupt(作業中)
Software Programming Model
ここで紹介するAPI・マクロは,"altera_avalon_pio_regs.h"をincludeすることで使えます.
baseは,scriptによる自動生成でシステムが作ってくれる.(定義されるファイルは"system.h")
書き込みマクロ
- IOWR_ALTERA_AVALON_PIO_DATA(base, data)
- IOWR_ALTERA_AVALON_PIO_DIRECTION(base, data)
- IOWR_ALTERA_AVALON_PIO_IRQ_MASK(base, data)
- IOWR_ALTERA_AVALON_PIO_EDGE_CAP(base, data)
読み出しマクロ
- IORD_ALTERA_AVALON_PIO_DATA(base)
- IORD_ALTERA_AVALON_PIO_DIRECTION(base)
- IORD_ALTERA_AVALON_PIO_IRQ_MASK(base)
- IORD_ALTERA_AVALON_PIO_EDGE_CAP(base)
アドレス計算マクロ
- IOADDR_ALTERA_AVALON_PIO_DATA(base)
- IOADDR_ALTERA_AVALON_PIO_DIRECTION(base)
- IOADDR_ALTERA_AVALON_PIO_IRQ_MASK(base)
- IOADDR_ALTERA_AVALON_PIO_EDGE_CAP(base)
# 方言"__builtin_ldwio"が入っているので,単純に(volatile*)(ADDR)で読み出せるのかは怪しい?