基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

zynq系统

本文基于Xilinx的ZYNQ平台,实现ARM系统如何调用底层FFT IP核实现相应算法。ZYNQ平台内部包括两部分,即PL和PS。PL为FPGA逻辑部分,PS为双核ARM9 。FPGA与ARM9之间的通信采用高性能的AXI总线,PS为PL提供系统时钟,复位等基本信号。本文是在ARM9系统外围挂载AXI接口的DMA来控制FFT IP核的数据输入输出。

下面详细介绍具体搭建步骤。

第一步:创建新工程,芯片型号为zynq7020:xc7z020clg484-2,创建好后,点击右侧IP Integrator,创建系统——zynq_7020_fft_system。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

创建zynq7020系统

点击OK,跳转到系统构建区。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

系统构建区

第二步:在系统构建区,点击Add IP,搜索zynq processing system,点击后加到区域内

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

点击Add IP

zynq系统添加构建后如下图所示:

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

zynq 7020

第三步:配置zynq系统,添加系统外设,内存,配置时钟,中断系统。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

zynq配置界面

配置系统完毕后,创建DDR3端口,时钟和复位输出,及其他IO端口。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

创建DDR3端口

第四步:点击Add IP,搜索DMA,添加到系统构建区。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

添加DMA

配置DMA的参数。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

DMA 模块

第五步:添加concat ip,将DMA的输入输出中断连接concat ip的输入端口,将输出端口连接到zynq的中断端口上。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

连接中断到PS

点击运行自动连接布线。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

布线连接后如下图所示。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

系统连接

第六步:添加两个AXISTREAM FIFO IP核,分别连接到DMA的输入输出端口,同时配置FIFO的存储深度,及数据位宽。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

zynq系统搭建完成

第七步:右键点击generate output products,生成我们构建的系统。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

等待几分钟,生成后,系统中添加了一些文件及IP

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

右键点击create HDL Wrapper,添加系统顶层文件。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

按默认提示点击OK即可

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

顶层文件添加完成后如下图所示。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

致此zynq的ps部分已搭建完毕

第七步:点击IP Catalog 搜索FFT IP,双击FFT IP核。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

进入FFT IP核配置界面,本文选择的数据类型为float型,运行时钟100Mhz,配置流水线等,点击OK,生成FFT IP。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

FFT IP

创建FFT IP 顶层文件,实例化FFT IP,便于FFT IP的仿真,调用。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

创建FFT IP顶层文件

顶层文件中添加如下代码。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

第八步:在PS的系统顶层文件zynq_7020_fft_system_wrapper中,实例化FFT IP的顶层文件FFT_Top,如下所示。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

第九步:创建FFT IP核的仿真文件,单独对FFT IP进行模拟仿真测试。

对于浮点数的FFT IP仿真测试,需要提供单精度浮点数格式(32位的二进制数),且提供虚部和实部。blk_mem_gen_real存放实部,长度为1024,blk_mem_gen_imag存放虚部,长度为1024,本文的FFT IP是之前已调试好的IP测试,直接调用即可。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

仿真时序

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

第十步:测试完成后,生成bit流,不需配置管脚。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

生成bit流后,提供了系统资源利用率。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

第十一步:导出hardware,启动SDK软件。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

导出硬件

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

启动SDK

第十二步:创建fft_test工程,按默认配置,点击next。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

创建main.c

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

添加DMA测试例程,同时提供FFT IP所需实部和虚部,且都为单精度浮点数。修改check_data函数,将接收的数据存为文件,导入到matlab中进行数据比对。

基于FPGA的ZYNQ平台,系统裸机条件,如何实例化vivado的FFT IP核

main.c

本文经过以上步骤实现了zynq系统下的FFT IP核调用。但,还需在硬件平台下进行验证。希望有zynq平台的同学可以按此步骤验证,也可扩展训练,挂载其他IP核。

欢迎各位同仁相互交流学习,留言探讨。


分享到:


相關文章: