尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

PG109/FFT/IFFT的IP核仿真(1)

PG109/FFT/IFFT的IP核仿真(1) AMD LogiCORE™ IP 快速傅里叶变换FFT核实现了库利‑图基Cooley‑TukeyFFT 算法该算法是一种高效计算离散傅里叶变换DFT的方法。本 IP 核支持标准采样模式与超采样率SSR工作模式在定点、原生浮点运算模式下每个时钟周期最多可处理 64 个采样点。主要功能特点支持复数信号的正向 FFT 与反向 IFFT 运算。变换点数只能是 2 的整数次幂范围 865536 点。提供多种运算方式定点运算无缩放、分级缩放、块浮点三种模式方便控制溢出与计算噪声原生浮点运算采用标准 IEEE754 单精度浮点格式。输入数据、旋转因子的位宽可在 834bit 之间配置。超采样率 SSR每个时钟周期并行处理多组采样大幅提升吞吐。定点架构每周期可并行处理 1/2/4/8/16/32/64 个采样浮点架构每周期可并行处理 2/4/8/32/64 个采样。内置 4 种硬件架构用户可以根据需求在占用资源多少和数据处理速度之间做取舍。存储旋转因子与采样数据时可以选用块 RAM 或者分布式 RAM。四种硬件架构 流水线流式 I/O、基 4 突发 I/O、基 2 突发 I/O、精简基 2 突发 I/O。该 FFT IP 采用三组独立的 AXI4‑Stream 通道配置通道、数据输入通道、数据输出通道额外附带状态通道与事件报警信号。s_axis_config每帧开始前下发配置动态指定 FFT/IFFT、变换点数、缩放策略、循环前缀长度s_axis_data送入时域复数采样tlast 标记一帧末尾m_axis_data输出频域或 IFFT 时域运算结果tuser 携带溢出、块指数、输出索引等附加信息event_xxx 事件信号用来监测帧异常、运算溢出、数据流停滞等故障方便系统调试与错误处理。信号名称输入 / 输出是否可选描述aclk输入否上升沿时钟信号aclken输入是高电平有效的时钟使能信号可选aresetn输入是低电平同步复位信号可选复位拥有最高优先级复位脉冲宽度至少保持 2 个时钟周期s_axis_config_tvalid输入否配置通道有效信号。由外部主控拉高表示准备向 IP 发送配置数据s_axis_config_tready输出否配置通道就绪信号。由 IP 拉高表示 IP 可以接收配置数据s_axis_config_tdata输入否配置通道数据。承载配置信息循环前缀长度 CP_LEN、正 / 逆变换选择 FWD_INV、FFT 点数 NFFT、缩放表 SCALE_SCH支持运行时变换参数配置s_axis_data_tvalid输入否数据输入通道有效信号。外部主控拉高表明输入数据有效s_axis_data_tready输出否数据输入通道就绪信号。IP 拉高表示 IP 能够接收输入采样数据s_axis_data_tdata输入否数据输入通道数据。传输复数采样信号包含实部 XK_RE、虚部 XK_IMs_axis_data_tlast输入否输入帧结束标记。外部主控在一帧最后一个采样点拉高该信号仅当 tlast 出现异常时IP 才会产生 tlast 错误事件m_axis_data_tvalid输出否数据输出通道有效信号。IP 拉高表示输出采样数据有效m_axis_data_tready输入否数据输出通道就绪信号。下游模块拉高表示可以接收 IP 输出数据仅在非实时模式Non‑Realtime下存在实时模式Realtime无此端口m_axis_data_tdata输出否数据输出通道数据输出经过 FFT/IFFT 运算后的复数结果包含实部 XK_RE、虚部 XK_IMm_axis_data_tuser输出否输出用户附加信息通道。携带帧相关附加信息输出索引 XK_INDEX、溢出标志 OVFLO、块浮点指数 BLK_EXP 等m_axis_data_tlast输出否输出帧结束标记。IP 在一帧的最后一个输出采样点拉高该信号m_axis_status_tvalid输出否状态通道有效信号。IP 拉高表示状态数据有效仅在非实时模式下存在m_axis_status_tready输入否状态通道就绪信号。下游模块拉高表示可以接收状态数据仅在非实时模式下存在m_axis_status_tdata输出否状态通道数据传输块浮点指数 BLK_EXP、整帧溢出 OVFLO 等帧状态信息event_frame_started输出否帧启动事件信号。IP 拉高标志 IP 开始处理新一帧数据event_tlast_unexpected输出否异常 tlast 事件。当一帧还没有结束输入通道提前出现 tlast 帧结束标志时该信号拉高报警event_tlast_missing输出否tlast 缺失事件。一帧数据传输完毕但在最后一个采样点没有收到 tlast 结束标志该信号拉高报警event_fft_overflow输出是FFT 溢出事件。当运算出现溢出时拉高仅在输出通道溢出有效时触发event_data_in_channel_halt输出否输入通道暂停事件。IP 请求接收新数据但外部无法提供有效数据输入通道停滞信号拉高报警event_data_out_channel_halt输出否输出通道暂停事件。IP 已经产生有效输出数据但下游 tready 未拉高无法接收输出通道停滞仅非实时模式有效event_status_channel_halt输出否状态通道暂停事件。IP 产生状态数据但下游无法接收仅非实时模式有效时钟本 IP 核仅使用一路时钟信号 aclk。所有输入、输出接口以及内部状态均同步于该时钟。aclken时钟使能若 IP 核引出 aclk 时钟使能引脚将该引脚置低可暂停 IP 运行并保持当前状态不变IP 内部所有逻辑停止工作将 aclk 置高IP 恢复继续运算。复位aresetn同步清零若 IP 核引出 aresetn 引脚当该引脚拉低时所有输出引脚、内部计数器以及状态变量均复位至初始值。下表给出的初始值同样是芯片上电后的默认值无论 IP 是否开启复位功能。所有正在执行的数据加载、FFT 变换运算、数据输出流程都会停止并重新初始化。NFFT 默认设置为 IP 配置允许的最大 FFT 点数即在 AMD Vivado 集成设计环境 IDE 中设定的变换长度缩放调度默认系数为 1/N。对于基 4 突发 I/O 架构、流水线流式 I/O 架构当 FFT 点数不为 4 的整数次幂时最后一级缩放系数为 1其余各级缩放系数见表 3。事件信号本 IP 提供若干非 AXI 标准的实时事件信号用来上报 IP 运行状态。事件信号每个时钟周期更新一次可接入中断控制器等响应式组件。该类信号不能在 IDE 中配置若端口悬空未连接综合工具会将其移除。event_frame_startedIP 开始处理新一帧数据时该事件信号拉高单个时钟周期。可利用该信号统计帧数或根据需要将 IP 配置与特定帧做同步。event_tlast_missing在一帧的最后一个输入采样点若s_axis_data_tlast为低电平该事件信号拉高单个时钟周期。代表 IP 与上游数据源的帧长度配置不匹配上游数据源设置的帧点数大于 IP 的帧点数。该事件仅在 IP 开始处理帧时才会判定上报因此报警信号相比缺失的tlast会滞后较多时钟周期。event_tlast_unexpectedIP 在非帧末尾的采样点检测到s_axis_data_tlast为高电平时该事件信号拉高单个时钟周期。代表 IP 与上游数据源帧长度配置不匹配上游数据源设置的帧点数小于 IP 的帧点数。 该事件仅在 IP 开始处理帧时判定上报报警信号相比异常tlast会滞后较多时钟周期若一帧内多次出现无效 tlast每次都会触发一次该事件。event_fft_overflow当m_axis_data_tdata输出采样数据出现溢出时每个时钟周期该信号均保持拉高。只有采用缩放定点算法或者伪浮点 I/O 模式时才可能产生 FFT 溢出报警其余配置模式下该引脚会被综合移除。event_data_in_channel_haltIP 需要从数据输入通道获取数据但此时没有有效数据每个时钟周期该信号均拉高。实时模式尽管帧数据发生不可恢复损坏IP 仍然继续处理当前帧非实时模式IP 暂停帧处理只有收到新输入数据后才继续运算帧数据不会损坏。 两种模式下只要输入通道无有效数据事件信号就持续有效直到收到输入数据。event_data_out_channel_haltIP 需要向数据输出通道写入结果但通道缓冲区已满无法输出每个时钟周期该信号拉高。触发后 IP 暂停运算所有操作停止直到输出缓冲区有空余位置帧数据不会损坏。该事件引脚仅在非实时模式下可用。event_status_channel_haltIP 需要向状态通道写入状态数据但通道缓冲区已满无法输出每个时钟周期该信号拉高。触发后 IP 暂停运算所有操作停止直到状态缓冲区有空余位置帧数据不会损坏。该事件引脚仅在非实时模式下可用。AXI4‑Stream 接口设计要点采用 AXI4‑Stream 接口实现了 AMD LogiCORE IP 标准化提升不同 IP 之间的互通兼容性。除 aclk、aclken、aresetn 等通用控制信号、事件信号以外IP 所有输入输出信号均由 AXI4‑Stream 通道传输。 一条 AXI 通道固定包含 TVALID、TDATA根据需求可选增加 TREADY、TUSER、TLAST 等信号。TVALID 与 TREADY 完成握手交互以传输报文报文载荷由 TDATA、TUSER、TLAST 共同组成。字段名位宽是否填充对齐说明NFFT5bit是变换点数。NFFT 可以设置为最大点数或者更小点数例如最大 1024 点 FFT 可配置成 1024/512/256 点等。NFFT 的值 log₂(点数)仅在开启运行时可配置变换长度功能时有效详见变换长度章节CP_LENlog₂(最大点数)是循环前缀长度从变换结果末尾取出的采样点数在输出整个帧之前作为循环前缀先行输出。取值范围 0点数‑1。仅开启循环前缀插入功能时存在详见循环前缀插入章节FWD_INV正向变换 1SCALE_SCH当 N 为 4 的整数次幂基 4 突发 I/O 或流水线流式 I/O 架构[10 10…10]当 N 不为 4 的整数次幂基 4 突发 I/O 或流水线流式 I/O 架构[01 10…10]基 2 突发 I/O、基 2 精简突发 I/O 架构[01 01…01]下一篇会单独写IP核的仿真。
返回列表