xilinx官方教程ug871利用HLS实现RealFFT
Posted 只是有点小怂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xilinx官方教程ug871利用HLS实现RealFFT相关的知识,希望对你有一定的参考价值。
- 首先我在米联客上看到HLS算法基础入门12课时的S05_CH08_傅里叶变换的 HLS 实现,中间一段提到这个教程根据官方实现
在官方的参考手册 ug871-vivado-high-level-synthesis-tutorial.pdf 中对 FFT 有比较详细的介绍,并且官方提供的 Example 中也有对应的工程方便大家学习,这一节我们主要说一下如何使用 TCL 语言创建工程,并且进行对应的操作,源码直接使用官方提供的
-
好的,那就没有米联客什么事了,打开Docnav搜索ug871,仔细找找在chapter 9,Using HLS IP in IP Integrator找到宝藏,藏得可真够深的,一句FFT都没有提到,而且这个教程有点奇怪,既有ISE示例截图又有Vivado示例截图,不过应该不影响使用。点击蓝字会跳转到PDF里一个教你如何下载例程的界面,解压文件后定位到文件夹
Vivado_HLS_Tutorial\\Using_IP_with_IPI
下
-
首先要下载一下官方的例程Vivado_HLS_Tutorial,网址是
https://www.xilinx.com/cgi-bin/docs/ctdoc?cid=fb443589-ba28-4756-841c-ba83be7ecdf8;d=ug871-design-files.zip
,解压在一个英文名文件夹下。这个例程不大我自己搞了一个下载地址https://wws.lanzous.com/iBfghos5hih
-
在应用里找到Vivado HLS 2018.3 Command Prompt
-
定位到文件夹
Vivado_HLS_Tutorial\\Using_IP_with_IPI\\lab1\\hls_designs
并输入命令vivado_hls -f run_hls.tcl
-
运行完成可以看见多了两个文件夹be_vhls_prj和fe_vhls_prj
-
如文档所述我们需要的IP就在这里面
-
打开文件夹查看确实多了个zip文件
-
新建一个名为RealFFT的工程
-
打开settings的IP的Repository添加刚刚创建的IP
-
select选中后刷新一下
-
最后结果如下
-
点击加号就可以使用这个新建的IP
-
如图所示
-
接下来的步骤可以参考ug871,添加模块FFT并修改配置
-
勾选低电平复位
-
根据ug871进行连线,根据米联客这两个模块是用作数据转化,转换成FFT处理的数据
-
make external并修改端口名字为
real2xfft_din
-
输出端口也需要修改为xfft2real_dout
-
为fft模块时钟和复位make external
-
添加模块constant IP并设置位宽为1
-
连接两个外接模块的ap_start
-
把时钟信号和复位信号都连接在一起
-
按照ug871添加realfft_rtl_tb.v,但顶层文件要修改为Real_FFT_wrapper,以及仿真10us时间也太长了
-
但这没数据也看不出啥啊摸头
-
按照米联客再添加一个AXI4模块axis_subset_converter并继续打包成IP在其他工程中进行调用
-
这个教程旨在教会你用TCL创建工程,里面源代码还是可以看一下学习配置思路
-
在hls_realfft.h
尝试修改输入数据位宽为32位,将上述步骤再跑一遍,希望能成功
-
直接修改不太行,开始位宽为32位输出为64位,先放弃这个想法/(ㄒoㄒ)/~~目前还不具备直接修改FFT代码的能力。
-
打包IP
-
点击当前工程current project点击include ip generate files
-
点击package ip
-
新生成模块如图所示
-
或者全选整个模块点击create hierarchy输入名字real_fft
-
展开来可以看见整个模块
-
这里表扬一下米联客,虽然视频教程做得不深入,但起码解决了从无到有的问题,对概念的科普还是挺详细的。
-
最后骂一句论文,一点卵用都没有,看了那么多还是白白浪费时间,都说根据官方教程来得,具体怎么实现却又都含糊其辞
以上是关于xilinx官方教程ug871利用HLS实现RealFFT的主要内容,如果未能解决你的问题,请参考以下文章
数字信号处理相关12(vivado高层次综合(high-level synthesis,HLS)学习日记 )