摘 要:主要研究基于SOPC的DSP系统的设计与实现。根据待实现的DSP算法的特征,利用QUARTUS中提供的丰富的功能模块和VHDL语言进行设计。经过仿真和开发板上验证,证明了采用FPGA技术的数字信号处理器的速度要远远快于一般的通用DSP,为高速数据处理与通信技术的应用提供了另外一种解决方案。
关键词:FPGA;NIOS;流水线;蝶形运算
0 引言在过去很长一段时间,DSP处理器几乎是DSP应用系统核心器件的唯一选择。尽管DSP处理器具有通过软件设计能适用于不同功能实现的灵活性,但面对当今迅速变化的DSP应用市场,特别是面对现代通信技术的发展和各种新功能的要求,已经开始显得力不从心了。例如其硬件结构的不可变性导致了其总线的不可改变性,而固定的数据总线宽度,已成为DSP处理器一个难以突破的瓶颈。DSP处理器的这种固定的硬件结构特别不适合于当前许多要求能进行结构特性随时变更的应用场合,即所谓面向对象型的DSP系统,或者说是用户可定制型,或可重配置型的DSP应用系统,如软件无线电、医用设备、导航、工业控制等方面。至于在满足速度要求方面,尽管新一代的DSP也增加了部分并行执行结构,但基本构架仍属顺序执行的CPU构架,对许多要求高速处理的对象,显得不堪重负。增强DSP处理能力的传统方法是采用多个处理器。选择此类方案的缺点是成本昂贵,需要众多附加部件,并且功耗很大。面向DSP的各类专用ASIC芯片虽然可以解决并行性和速度的问题,但是高昂的开发设计费用、耗时的设计周期,及不灵活的纯硬件结构,使得DSP的ASIC解决方案日益失去其实用性。
1 FPGA的结构特点现代大容量、高速度的FPGA以及相应的SOPC技术的出现,克服了上述方案的诸多不足。在这些FPGA中,一般都内嵌有可配置的高速RAM、PLL、LVDS、LVTTL以及硬件乘法器等DSP模块。用FPGA来实现数字信号处理可以很好地解决并行性和顺序性的矛盾,直至速度问题,而且其灵活的可配置特性,使得FPGA构成的DSP系统非常易于修改,易于测试及硬件升级。
FPGA与传统逻辑电路和门阵列具有不同的结构,FPGA利用小型查找表(16×1 RAM)来实现组合逻辑。每个查找表连接到一个D触发器的输入器,触发器再来驱动其它逻辑,或驱动I/O。这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储器单元加载配置数据来实现的。存储在存储器单元中的值决定了逻辑单元的逻辑功能以及模块间或与I/O间的连接,并最终决定了FPGA实现的功能。FPGA的这种结构允许无限次的重新编程[1]。
2 FPGA设计方案优点与传统数据处理方法不同,DSP采用了高度流水线化的并行操作。而FPGA结构则可以做得更好,达到更高的性能。FPGA具有成千上万的查找表和触发器,因此FPGA平台可以更低的成本达到比通用DSP更快的速度。例如,目前的两百万门FPGA可达到每秒1280亿MAC的性能,比目前最快的DSP性能还要高一个量级。
对多DSP处理器解决方案,需要较大的功率才能驱动连接多个处理器的板级连接(具有较大的容抗)。与此相对比,FPGA可创建具有定制数据通道的处理器,数据以最小的负载从一个并行操作传送到下一个操作,并且没有取指令的额外开销[2]。这种结构使得在较低的时钟频率下可达到较高的性能。而功耗直接正比于电路的频率,因此运行于较低时钟频率下并行处理的FPGA方案可大大减小功耗。
3 系统总体设计该系统从结构上分为A/D采样单元、FFT运算处理单元、控制单元。系统使用FPGA内部实现的处理器Nios作为系统的嵌入式处理器,来控制14位高速A/D采样芯片、FFT运算。A/D采样单元对外部的模拟信号每周波采样128点,精确变换成12位的数字量; FFT运算处理单元负责处理FIFO单元输出的数字量,进行128点FFT变换运算;控制单元负责系统各个单元的控制,如控制A/D采样单元的采样频率和采样的启动及停止、PLL电路的输出频率计算、FFT运算处理单元的控制和数据传输等。
从该系统结构可见,其FFT运算处理单元承担FFT运算的巨大运算任务,可以在 内完成128点的标准单精度浮点数FFT运算,从而大大减轻了控制单元的工作量。该系统提供了RS232接口,可以直接与计算机通信。用户可以通过上位机对该次分析进行控制或进行数据传输,也可直接在计算机上进行控制数据查阅。
图1 系统结构图
4 FFT设计FFT运算处理单元:FFT运算处理单元基于一块ALTERA公司的EP1C20 FPGA芯片,该芯片带有294912bit RAM,具有20060个逻辑单元(LE),最大引脚数为301[2]。FFT运算处理单元采用先进的多层并行流水线技术,可以在 内完成128点的FFT运算处理。FFT运算部分包括FFT控制逻辑、FFT处理核。从A/D转换后的12位采样数据首先暂存于FIFO中;然后在NIOS处理器的控制下FFT从FIFO中读取数据,并进行转换;最后在NIOS的控制下从FFT中读取分析结果。
FFT随着转换长度的增加,所占用的逻辑单元和转换时间也会增加。由于FFT的性能在很大程度上取决与FFT引擎结构和I/O数据流,所以FFT的转换长度定在128。
FFT点数根据实际设计的采样数据的数量决定,数据量越大所占用的资源越多,处理时间越长。基于FPGA的DSP系统的最大好处是能根据需要可以随时修改FFT的有关参数,
5 FFT结果验证为了验证该FFT运算核心的正确性,选择了一些模拟信号输入进行验证。首先输入了一个模拟信号为:
这是一个由基波和一个等幅值的2倍频率谐波复合而成的信号。通过FFT运算核心处理后得到输出结果。
经过变换处理后对应频谱幅值如图2:
图2 转换频谱图1 在图2中的上半部分,是用MATLAB对函数进行采样,然后执行128点FFT后所得到的频谱图。
在图2下半部分,是由FPGA对采样数据进行FFT变换所得出的数据用MATLAB仿真出来。由下半部分可见基波和2次波频谱全部被分离出来,其结果跟MATLAB所得出的结果大致相同。
为了进一步验证FFT运算核心的正确性,输入如式所示的波形:
其波形为基波和幅值相同的谐波和一些噪声合成。
其结果幅值频谱如图3所示, 由图3可见基波和谐波全部被分离出来,且幅值正确,该FFT变换是正确的。
FPGA在进行FFT变换时,经过开始两个数据块的处理3 左右时间延迟后,数据流水输出。在 的时间内完成了128点FFT变换,达到了系统对FFT变换的运算速度要求。
通过以上的测试,信号通过FFT计算后的输出能够保持理论上的频率特性,因此系统设计是可行的。
每一个蝶形运算均包含4次实数乘法和6次实数加(减)法。N点复数FFT包含 级迭代运算,每级迭代运算包含N/2个蝶形运算,变换约做 次实数乘法运算和 实时加法运算。TMS320LC549的乘法、加法都是单周期指令,取N=128,不计内存访问和其它时间,则一次FFT所需时间为:7×640×10 约为44.8 。
图3 转换频谱图2 图4是FPGA仿真时序图,在系统时钟为10ns时,完成一次128点的FFT变换需要1.27 。 相比之下,TI公司的TMS320LC549(主频100MHz)需要44.8 ,AD公司的ADSP21160(主频100MHz)需要90 。可见,基于FPGA的FFT处理器由于其硬件上的并行性,速度远远快于一般的通用DSP。
图4 FFT转换输出波形 6 结束语**深入地探讨了基于SOPC的DSP系统的设计与实现,创新之处在于:不仅从理论上分析得出了基于FPGA的FFT处理器由于其硬件上的并行性,速度要远远快于一般的通用DSP的结论,而且通过实验在仿真和开发板上都得到了验证,从而为在需要强大的数据处理能力的数据通信和图像处理这样的应用中,当目前通用的数字信号处理器(DSP)仍无法达到速度要求时,提供了另外一种可以缩短设计周期,还可以获得高性能,满足成本要求的解决方案。 |