Vivado中的IP核——GPIO详解

资料ID:PG144
文档查找软件:DocNav,在安装vivado时可以选择一并安装

Vivado中的GPIO模块框图如下。
在这里插入图片描述
下表展示了AXI GPIO的寄存器和相对于基地址的地址偏移值。
在这里插入图片描述
这些寄存器是否可用取决于一些配置参数的值。若某个寄存器是不可用的,一个写信号对该寄存器没有效果;当尝试读取该寄存器的值时,将会得到全零值。决定寄存器是否可用的参数如下表。
在这里插入图片描述
如上表所示,当Enable Interrupt参数为0时,与中断相关的三个寄存器GIER、IP IER、IP ISR是不可使用的,而对其余寄存器是没有影响的。同理,当使能双通道(Enable Dual Channel)这个参数为0时,通道2的数据寄存器和三态寄存器是不可用的。

Register Space

由于通道1和通道2的数据寄存器与三态寄存器是相同的,所以这里仅介绍五个寄存器。GPIOx_DATA表示通道x的数据寄存器。

GPIOx_DATA

GPIO数据寄存器的作用有两个,当GPIO被配置为输入端口时,用于读取输入值;当GPIO被配置为输出端口时,将要输出的值写入该寄存器。此外,当GPIO被配置为输入端口时,向该寄存器写数据是无效的。
GPIO数据寄存器的描述如下表。
在这里插入图片描述

GPIOx_TRI

GPIO 3态控制寄存器可以动态地配置端口为输入或者输出。当某一个比特位被配置为1,则相应的端口就会被配置为输入端口;当某一比特位被配置为0,则相应的端口被设置为输出端口。
GPIO 3态控制寄存器的描述如下。
在这里插入图片描述

Interrupts

在介绍与中断相关的寄存器之前,先介绍一下GPIO的中断。
在中断使能的情况下,任何输入通道的转换都会产生一个电平中断。GPIO接口模块中包含了中断检测逻辑,该逻辑可以识别任何输入通道的转换。当一个转换被检测到,它将被告知给中断控制模块。
为了支持通道的中断能力,中断控制模块中实现了以下的寄存器。
全局中断使能寄存器(GIER)-使能或不使能中断输出,这些中断输出到processor或者interrupt controller。
IP中断使能寄存器(IPIER)-为每一个通道配置独立的中断使能位。
IP中断状态寄存器(IPISR)-为每一个通道配置独立的中断状态位。为了测试,IP ISR也可以手动设置产生一个中断。

GIER

该寄存器有效位只有一位,即第31位。具体的寄存器描述如下。
在这里插入图片描述
如果想要产生中断,必须要设置两个使能,第一个就是上述寄存器,即Master enable;第二个就是IPIER。

IPIER

IPIER中有效位也只有两位,具体的寄存器描述如下。
在这里插入图片描述

IPISR

与IPIER类似,该寄存器中的有效位也是两个,具体描述如下。
在这里插入图片描述

示例程序:GPIO做为输出控制LED,GPIO2做为输入产生中断

在利用Vivado搭建硬件平台的时候已经对GPIO进行了相关设置,程序里首先验证这些设置是否会对相关寄存器进行初始化,如是否会将GPIO2所对应的4个端口全部设置为输入。实验结果表明,寄存器必须由软件初始化。

#include "xil_printf.h"
#include "sleep.h"

#define GPIOBaADDr 0x40000000
#define DATA1OffSet 0x0
#define TRI1OffSet 0x4
#define DATA2OffSet 0x8
#define TRI2OffSet 0xC
#define GIEROffSet 0x11C
#define IPIEROffSet 0x128
#define IPISROffSet 0x120
#define GETX(x) (*(volatile int *)(GPIOBaADDr + x))

int main()
{
	/***************initialize GPIO*******************/
	if((GETX(TRI1OffSet) & 0xf) == 0x0)
	{
		print("GPIO1 already set to output by hardware platform\r\n");
	}
	else
	{
		print("GPIO1 will set to output by software\r\n");
		GETX(TRI1OffSet) &= 0x0;
	}

	if((GETX(TRI2OffSet) & 0xf) == 0xf)
	{
		print("GPIO2 already set to input by hardware platform\r\n");
	}
	else
	{
		print("GPIO2 will set to input by software\r\n");
		GETX(TRI2OffSet) |= 0xf;
	}

	if((GETX(GIEROffSet) & 0x80000000) == 0x80000000)
	{
		print("Global Interrupt Enable by hardware platform\r\n");
	}
	else
	{
		print("Global Interrupt Enable by software\r\n");
		GETX(GIEROffSet) |= 0x80000000;
	}

	if((GETX(IPIEROffSet) & 0x2) == 0x2)
	{
		print("channel2 interrupt enable by hardware platform\r\n");
	}
	else
	{
		print("channel2 interrupt enable by software\r\n");
		GETX(IPIEROffSet) |= 0x2;
	}
	/*************************************************/

	/******************GPIO control led***************/
	//The four LEDs are lit in turn every one second
	for(int i = 0; i < 100; i++)
	{
		GETX(DATA1OffSet) |= (0x1 << (i % 4));
		sleep(1);
		GETX(DATA1OffSet) &= 0x0;
	}
	/*************************************************/

	/**************GPIO2 generate interrupt***********/
	while(1)
	{
		if((GETX(IPISROffSet) & 0x2) == 0x2)
		{
			print("GPIO2 Generate interrupt\r\n");
			GETX(IPISROffSet) |= 0x2;//clear interrupt by TOW
		}
	}
	/************** **********************************/
}

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vivado FFT IP核是Xilinx公司提供的一种用于高性能快速傅里叶变换(FFT)的可编程逻辑器件,可用于信号处理、通信系统、雷达、音频处理和图像处理等领域。 Vivado FFT IP核的主要功能是实现快速傅里叶变换,这是一种将时域信号转换为频域信号的数学技术。FFT是一种高效的算法,能够在较短的时间内对信号进行频谱分析和频率测量。Vivado FFT IP核提供了多种FFT算法,包括基于蝶形算法、流水线和并行化等技术,可以根据应用的需求选择适合的算法。 Vivado FFT IP核提供了多种配置选项,可以实现不同数据宽度、数据精度和时域点数的FFT计算。用户可以通过Vivado设计环境来配置和生成FFT IP核,方便地集成到自己的设计IP核的接口支持AXI4-Stream和AXI4-Lite等标准接口,与其他系统组件进行数据交换。 通过使用Vivado FFT IP核,用户可以在FPGA上快速实现高性能的FFT计算,提高系统的性能和效率。IP核的可编程性使得用户可以根据应用需求进行定制,并且可以随着设计的迭代进行功能增强或优化。此外,使用IP核还可以减少设计开发时间和复杂度,提高设计的可重用性。 综上所述,Vivado FFT IP核是一种用于快速傅里叶变换的可编程逻辑器件,具有灵活的配置选项和高性能的计算能力。使用该IP核可以快速实现高性能的FFT计算,提高系统的性能和效率。 ### 回答2: Vivado FFT IP核是Xilinx公司提供的一种用于快速傅里叶变换(FFT)运算的IP核。FFT是一种用于信号频谱分析的算法,广泛应用于数字信号处理领域。Vivado FFT IP核通过硬件加速的方式,实现了高效的FFT计算。 Vivado FFT IP核具有以下主要特点: 1. 高性能:Vivado FFT IP核使用专门的FFT硬件来执行计算,速度比软件实现的FFT更快。它能够在很短的时间内完成大规模FFT计算。 2. 可定制性:Vivado FFT IP核提供了许多可定制的选项。用户可以根据具体的需求选择不同的FFT大小、输出数据宽度、输入数据格式等。这样有助于优化设计,提高系统整体性能。 3. 多种接口:Vivado FFT IP核支持多种接口,如AXI4-Stream接口、AXI4-Lite接口等,方便与其他IP核或外部系统进行连接。 4. 低功耗:Vivado FFT IP核经过优化设计,能够在低功耗下运行,节约能源消耗。 Vivado FFT IP核的应用范围广泛。在通信领域,它可以用于信号解调、频谱分析、通道估计等。在图像处理领域,它可以用于图像压缩、图像增强等。此外,在雷达、声音处理、金融分析等其他领域也有广泛的应用。 Vivado FFT IP核的使用步骤相对简单。首先,在Vivado设计工具导入该IP核,在设计进行配置和参数设置。然后,将IP核与其他系统进行连接,并根据需要编写相应的控制和数据处理逻辑。最后,生成比特流文件(bitstream)并下载到目标设备进行验证和调试。 总之,Vivado FFT IP核是一种高性能、可定制的FFT计算IP核,广泛应用于信号处理等领域,为设计人员提供了快速可靠的FFT计算解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值