|
NIOS II的 PIO
PIO模块也作为SOPC Builder库中的一个组件,可以是1-32位的并行接口,有多种配置选项,比如输入\输出\双向\触发方式(若用于中断的话)
其相关的寄存器如下:
数据寄存器 data
方向寄存器 direction
中断允许寄存器 interruptmask
边沿捕获寄存器(edgecapture) (RISING.FALLING.ANY)
PIO的应用还是比较简单的,一般作为NIOS 与外部电路(还是FPGA内)的接口,比如数据\中断控制等等,下面贴上PIO的一些设置项,同样在system.h头文件中,几乎所有的设置都可以在 system.h和PTF文件中找到原型.
#define PIO_NAME "/dev/pio"
#define PIO_TYPE "altera_avalon_pio"
#define PIO_BASE 0x00001000
#define PIO_SPAN 16
#define PIO_DO_TEST_BENCH_WIRING 0
#define PIO_DRIVEN_SIM_VALUE 0x0000
#define PIO_HAS_TRI 0
#define PIO_HAS_OUT 1
#define PIO_HAS_IN 0
#define PIO_CAPTURE 0
#define PIO_EDGE_TYPE "NONE"
#define PIO_IRQ_TYPE "NONE"
#define PIO_FREQ 50000000
我想上述各个选项的含义就不多说了,应该很好理解,下面贴一个当时写过的一个PIO中断控制程序,求大家批评.
#i nclude "altera_avalon_pio_regs.h"
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_BASE, 0xf);
alt_irq_register(BUTTON_PIO_IRQ,edge_capture_ptr,handle_button_interrupts);
void handle_button_interrupts()
{}
大概好象是这个样子的,不是记得很清楚了,仅供参考
|
|
|