基于Nios的FFT算法软硬件协同设计
摘要:在深入研究Nios自定制指令的软硬件接口的基础上,利用Matlab/DSP Builder建立快速傅里叶变换FFT核心运算指令基本模型,然后用Altera公司提供的Singacompiler工具对其进行编译,产生 QuartusⅡ能够识别的VHDL源程序,并将此程序在Nios中自定制成相关的FFT运算指令。利用自定制的FFT运算指令,在Nios中利用C语言 编写基于Nios的FFT算法程序,实现了FFT运算的软硬件协同设计。经测试表明,将FFT算法加入到Nios嵌入式处理器指令集中,可以帮助系统完成 复杂的数据处理任务,增强Nios系统的实时处理能力。该设计方法打破了软硬件间的屏障,大大加快了系统的功能验证。
关键词:FFT;自定制指令;软硬件协同设计;EP2C5Q208C8
在自动控制领域,往往要对被控对象进行状态检测,从而作出下一步的处理,达到控制的目的,因此自动控制系统离不开对被控系统的状态进行监测,以便对其进行 处理,例如滚动轴承故障、电动机故障等均可以利用频谱分析法对其进行状态监测和故障诊断。要检测被控对象的状态,就离不开数字信号处理,因此,数字信号处 理应用广泛。并且FFT(快速傅里叶变换)促进了数字信号处理的发展,它可应用傅里叶变换理论所能涉及的任何领域。对于FFT工程的实现方法有软件法和硬 件法,即通过软件程序完成FFT运算,这种方法可适用于各种数字信号处理的应用场合,很灵活,但缺点是不能进行实时处理。而使用专用硬件完成数字信号处理 的方法能够实现实时处理,但外围电路相对复杂,不易扩展,灵活性差,且价格昂贵。因此人们一方面寻求结构简单、运算速度快,存储量小的FFI实现方法,另 一方面采用先进的VLSI技术改进实现FFT的硬件结构,将算法硬件化。
Nios嵌入式处理器是FPGA生产厂商Althera推出的软核CPU,它是一种面向用户的、可灵活定制的通用RISC嵌入式CPU。用户可以在 Nios指令系统中增加用户自定义指令,以增强对强实时软件算法的处理能力,可以把一个复杂的标准指令序列简化为一条用硬件实现的单个指令。特别是在需要 使用大量FFT算法的场合,可以根据用户的需要,定制专门的FFT处理器硬件和定制一些诸如复数乘法或复数加法等传统运算指令,使Nios系统不但具有常 规数字信号处理器功能,而且具有软件实现FFT运算处理的特点。
1 FFT算法原理
1.1 按时间抽取的基-2 FFT算法
设序列x(n)长度为N,且满足N=2M,M为正整数。按n的奇偶把x(n)分解为2个N/2点的子序列:
则可将DFT化为:
式中,X1(k)与X2(k)分别是x1(r)及x2(r)的N/2点DFT。
评论