IP配置

  • Configuration

    • 配置通道数和FFT长度
    • 时钟频率以及数据吞吐速率
    • FFT的结构选择
      • Srteaming , 可以对数据进行流水处理
      • Radix-4 , 基4的迭代算法,使用资源比流水线结构多,但是转换时间长
      • Radix-2, Radix-2 lite 都为基2的迭代算法,Radix-2 lite的资源占用更少,但是转换时间也更长。
    • Run Time configuration transform length

可以动态改变配置信息。

  • Implementation

    • Data format(数据格式)

      • 定点数或者浮点数
    • Scaled option(缩放选项)
      • Unscaled : 所有整数位的数据输出。这可以使用更多的FPGA资源。
      • Scaled     : 截取数据域输入数据位宽相同
      • Block Floating-Point  : 这种方式确定要充分利用可用的动态范围需要多大的缩放,并以块指数的形式报告缩放因子。
    • Rounding Modes
      • 截位方式:Truncation ,收敛截位。收敛舍入如果该数是奇数则向上舍入,如果该数是偶数则向下舍入
    • Precision(精度)
      • 数据输入位宽
      • 相位因子位宽:该位宽越大输出噪声越小,但是占用资源越多
    • Control Signals
      • 时钟使能信号
      • 复位信号
    • Output Ordering
      • 输出数据选择是位/数字反转顺序或自然顺序。基于Radix-2的体系结构(流水I/O、Radix-2 Burst I/O和Radix-2 Lite Burst I/O)提供了位反转排序,基于Radix-4的体系结构(Radix-4 Burst I/O)提供了数字反转排序。对于流水I/O架构,选择自然顺序输出顺序会增加内核使用的内存。对于Burst I/O体系结构,选择自然顺序输出会增加整体转换时间
    • Optional Output Fields
      • XK_INDEX 输出数据的通道数,也即是XK 的下标,
      • OVFLO 标识数据输出通道和状态通道。
    • Throttle Schemes
      • 实时模式通常提供更小、更快的设计,但对何时必须提供和使用数据有严格的限制。非实时模式没有这样的限制,但设计可能更大、更慢。更多细节请参见控制FFT核心。

  • Detaild implementation

    • Memory option

      • 选择数据存储的存储器类型
    • Optimize options
      • Complex multipliers

        • Use CLB logic: 所有的复乘法器都是用片逻辑构造的。这适用于性能要求较低的目标应用程序,或DSP片较少的目标设备。
        • Use 3-multiplier structure: 所有复杂乘法器都使用三实乘、五加减结构,其中乘法器使用DSP片。这减少了DSP片数,但使用了一些片逻辑。该结构可以利用DSP片预加器,减少或消除对额外片逻辑的需要,提高性能。
        • Use 4-multiplier structure : 所有的复数乘法器都使用四个实数乘法,两个加减法结构,利用DSP片。这种结构以牺牲更多专用乘法器为代价获得了最高的时钟性能。在有DSP片的设备中,加/减操作在DSP片中实现。

s_axis_config_tdata(配置信息)

  • FWD/INV

    • 0 时做FFT, 1时做逆FFT
  • NFFT
    • FFT的点数,The value of NFFT is log2 (point size),例NFFT=3时。做8点FFT
  • CP_LEN
    • 循环前缀长度:在整个变换输出之前,从变换结束开始作为循环前缀初始输出的样本数量。CP_LEN可以是小于点大小的0到1之间的任何数字。此字段仅在循环前缀插入时出现。
  • SCALE_SCH
    • 当FFT核被配置为处理浮点数据时,不需要伸缩计划(SCALE_SCH被忽略)。浮点数据的规范化和缩放在内部处理。
    • 对于Burst I/O架构,伸缩调度为每个阶段指定两个比特,第一个阶段的伸缩由两个lsb给出。缩放可以指定为3、2、1或0,这表示要移位的比特数。N =1024,基数-4突发I/O的扩展调度示例为[1 02 3 2](从最后一级到第一级排序)。对于N =128, Radix-2突发I/O或Radix-2 Lite突发I/O,一种可能的扩展计划是[1 1 1 1 1 0 12](从最后一级到第一级排序)。
    • 对于流水I/O体系结构,伸缩调度为每一对基数-2阶段指定两个比特,从两个lsb开始。例如,N = 256的伸缩调度可以是[2 2 2 3]。当N不是4的幂时,最后阶段的最大比特增长为1位。例如,对于N = 512,[0 2 2 2]或[1 2 2 2 2]是有效的伸缩调度,但[2 2 2 2 2]是无效的。对于这个转换长度,SCALE_SCH的两个msb只能是00或01。此字段仅在缩放算术(非缩放、块浮点或单精度浮点)时可用。

仿真结果

信号输入输出:

信号

方向

定义

s_axis_config_tdata

in

配置参数

s_axis_config_tvalid

in

s_axis_config_tready

out

s_axis_data_tdata

in

输入数据(复数)

s_axis_data_tvalid

in

数据有效信号

s_axis_data_tready

out

s_axis_data_tlast

in

标识每帧的最后一个数据

m_axis_data_tdata

out

数据输出(复数)

m_axis_data_tuser

out

输出数据的下标

m_axis_data_tvalid

out

数据有效

m_axis_data_tready

in

m_axis_data_tlast

out

标识最后一个数据

event_frame_started

out

当开始处理一个新帧时,该事件信号被断言为单个时钟周期。这个信号允许你计算帧数,并在需要时将核心的配置同步到特定的帧。

event_tlast_unexpected

out

当没有接收到一帧的最后一个数据而s_axis_data_tlast拉高时,这表明输入数据的长度与IP核预设的数据不匹配,输入数据长度小于预设的长度

event_tlast_missing

out

当接收到一帧的最后一个数据而s_axis_data_tlast没有拉高时,这表明输入数据的长度与IP核预设的数据不匹配,输入数据长度大于预设的长度

event_status_channel_halt

out

每当核心需要向data Output通道写入数据,但由于通道中的缓冲区已满而无法写入时,都会断言此事件。当发生这种情况时,核心处理将停止,所有活动将停止,直到通道缓冲区中有可用空间为止。框架没有损坏。

事件引脚仅在非实时模式下可用。

event_data_in_channel_halt

out

当IP核需要来自数据输入通道的数据但没有可用数据时,在每个周期断言此事件。

event_data_out_channel_halt

out

每当核心需要向Status通道写入数据,但由于通道上的缓冲区已满而无法写入时,都会断言此事件。当发生这种情况时,核心处理将停止,所有活动将停止,直到通道缓冲区中有可用空间为止。框架没有损坏。事件引脚仅在非实时模式下可用。

FFT仿真结果

时钟频率为160M,正弦波频率为160M/8=20M,FFT(128点)之后在第16根谱线达到最大值,频率为160M/128*16=20M。

当输入一个负频时,代表的频率为160M/128*(128-112)= -20M

IFFT仿真结果

将参数FWD/INV置1就变成了IFFT运算,将IP核配置为IFFT模式,将前面的输出作为IFFT的输入进行仿真,

输出的正弦信号个周期占据8个160M的时钟,说明该正弦信号的频率为:160M/8=20M,与做FFT输入的信号相同,说明IFFT运算结果正确。

Xilinx 的FFT IP核使用方法(配置为FFT 、IFFT两种模式)相关推荐

  1. Xilinx的FIR IP核使用方法(参数重构改变滤波器形式)

    FIR IP核可配置为极点系数为0的横向滤波器结构 IP 核配置 Filter coefficients 这里配置滤波器的类型,在Filter type中可将滤波器配置为单比率.抽取.插值滤波器.对于 ...

  2. FFT IP核调用与仿真之FFT数学分析

    对于FFT这个IP核,我其实对它真的是又爱又恨,因为它真的耗费了我太多时间,但是随着研究的深入,遇到的问题一点点给消化解决,终于不用带着问题睡觉了,哈哈,有时候真的挺佩服自己的,遇到不懂的,不了解的, ...

  3. FPGA数字信号处理(八)Quartus FFT IP核实现

    本系列的2-7篇分别介绍了FIR和IIR滤波器的FPGA实现.除了数字滤波器外,快速傅里叶变换(FFT)也是DSP系统常用的运算单元,用于对信号进行频域分析.FFT算法的实现很复杂,但Altera和X ...

  4. 频谱仪的更改ip_【正点原子FPGA连载】第五十一章 基于FFT IP核的音频频谱仪-摘自【正点原子】开拓者 FPGA 开发指南 (amobbs.com 阿莫电子论坛)...

    本帖最后由 正点原子 于 2020-10-24 15:19 编辑 203429z6c3os33t8albi33.png (66.36 KB) 2019-7-28 15:14 上传 第五十一章 基于FF ...

  5. FPGA数字信号处理(九)Vivado FFT IP核实现

    该篇是FPGA数字信号处理的第9篇,选题为DSP系统中极其常用的FFT运算.上篇介绍了Quartus环境下FFT IP核的使用"FPGA数字信号处理(八)Quartus FFT IP核实现h ...

  6. Xilinx HLS FFT IP核运行时动态配置FFT长度

    如上图所示,xilinx hls的fft ip核不仅可以计算固定长度的FFT变换,还可以在运行时动态配置fft变换长度,但其可配置的长度仅限于小于等于最大长度的所有可能的2的幂,即若该fft ip可支 ...

  7. FFT IP核调用与仿真之SCALE压缩因子设置

    关于FFT IP核的配置,网上有很多相关的资料可以参考,但是唯独涉及到scaled压缩因子设置这个参数,资料却非常匮乏,这是个什么参数,应该整么设置,设置后对结果输出会有什么影响,整样才能知道它设置的 ...

  8. Xilinx DDR3 —— MIG IP核的读写仿真(APP接口)

    在上一篇中Xilinx DDR3 -- MIG IP核的配置(APP接口),已经观看了Xilinx官方提供的MIG IP核读写例程仿真波形,本着学习的目的,本篇开始自己编写MIG IP核读写程序,用于 ...

  9. Vivado中的FFT IP核使用(含代码)

    本文介绍了Vidado中FFT IP核的使用,具体内容为:调用IP核>>配置界面介绍>>IP核端口介绍>>MATLAB生成测试数据>>测试verilog ...

最新文章

  1. python之接口开发
  2. Arduino学习笔记35
  3. 七月算法--12月机器学习在线班-第七次课笔记—最大熵
  4. 最感叹的莫过于一见如故,最悲伤的莫过于再见陌路。最深的孤独,是你明知道自己的渴望,却得对它装聋作哑。最美的你不是生如夏花,而是在时间的长河里,波澜不惊。...
  5. c ++查找字符串_C ++朋友功能| 查找输出程序| 套装2
  6. 图解集合6:LinkedHashMap
  7. kali linux 自动登录,Kali Linux SSH登录故障处理
  8. 布谷鸟过滤器java使用_一种基于布谷鸟过滤器的云平台隐私保护方法与流程
  9. 夜神模拟器 Nox Player 雷电模拟器 掉线 连不上 运行不显示的解决方案
  10. 的it生活_双子IT男性格随和、爱美食懂生活,会给女朋友准备小惊喜 | 企鹅来电VOL.03...
  11. python实现电话簿
  12. web安全—万能密码登录(跳过密码验证)
  13. 手机 9006 端口 不断的闪掉
  14. 小明加密通道进入_如何利用PS通道去除面部雀斑
  15. Python自动签退脚本
  16. KVG制作-【Arduino指纹解锁 智能家居系列-01】DIY自制的智能门禁,AS608指纹解锁+红外线遥控解锁。附演示视频。
  17. PHP苹果支付以及事件通知-周期订阅实现
  18. 概率算法c 语言,c语言概率算法简介(Introduction to probabilistic algorithms for c languages).doc...
  19. MT6771_MT6762_ISP_Tuning_Introduction
  20. 微型计算机原理孙力娟课后答案,微型计算机原理与接口技术s答案

热门文章

  1. 《Head First Java (中文第二版)》勘误
  2. 解决桌面图标无法拖动的方法
  3. mac home/end/pageup/pageDown
  4. 安卓SDK——人脸识别
  5. Spring Cloud 极简入门
  6. JDBC链接中的问题
  7. 说说如何在项目中引入 jBPM4 工作流框架以及遇到的坑儿
  8. php区分线上环境和测试环境
  9. 精睿 ESS EAV 【中文商业特别版+纯净版-官方升级】【2.11更新3.0.685.0】
  10. LeeTCode:6. Z 字形变换 python实现