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的主要内容,如果未能解决你的问题,请参考以下文章

学习XILINX HLS工具的官方资料

利用Xilinx HLS实现LDPC译码器

数字信号处理相关12(vivado高层次综合(high-level synthesis,HLS)学习日记 )

数字信号处理相关12(vivado高层次综合(high-level synthesis,HLS)学习日记 )

xilinx提供测试dma和fft在sdk端的代码

基于Zynq-7000系列之硬件开发学习教程——Xilinx Vivado HLS案例