Matlab 与FPGA 的联合开发方式 --------全并行结构FFT 的FPGA 实现 目前Matlab 与FPGA 的联合开发主要可分为三种形式:一种是利用Matlab 来进行FPGA 设计时的前期系统算法仿真,另一种是利用Matlab 软件来完成FPGA 设计中的辅助仿真功能,最后一种是利用Matlab 软件将系统级的FPGA 设计模型转换成硬件描述语言
本报告利用一个具体例子介绍第一种应用方法
1 全并行FFT 算法介绍 FFT 算法是DFT(离散傅里叶变换)算法的简称,它是由 Cooley 和 Tu key 在 1965 年提出的,FFT 在数字信号处理中得到了广泛的应用,各大 FPGA 生产厂家也都提供了相应的运算点数可以改变的FFT 核,其运算速度相对于其他由 DSP 器件实现的FFT 要快得多,但是其运算速度仍然满足不了某些特殊应用领域的需求,而且这些 FFT 商业核的价格不菲,即使购买,源代码也不公开
DFT 算法公式为 10( )( )NknNnX kx n W (1-1) 其中:( )x n 为输入序列(时域);(( )X k 为输出序列(频域);knNW为旋转因子
其快速算法FFT 结构,如图1 所示
为了作图方便,这里以基 2 时间抽取 8 点 FFT 为例加以说明
图中箭头上的数字代表旋转因子knNW中的k
输入是码位倒序的,输出是自然顺序
这种全并行结构的特点使每个蝶形的输出数据不需存储,直接流向下一级,整个算法不会产生数据堆积,如果采用同步时序电路,则可以实现每个时钟节拍输出一组 FFT 计算结果,从而充分发挥了并行加流水结构的快速处理特点,使得 FFT 运算速度得到极大提高
图 1 基 2 时间抽取全并行FFT 算法结构图 1
2 算法MATLAB 验证 从图 1 所示的算法流程图中可以看出,经过蝶形运算后的数据位宽