然而在运用FPGA进行系统设计综合过程中,选择芯片的运行速率优化和资源利用优化常常是相互抵牾的,对速率指标哀求高的设计优化常常要占用较大的芯片资源,而减小芯片面积的设计又须要以降落系统速率为代价。从FPGA发展趋势和DSP运算哀求看,系统速率指标的意义比面积指标更趋主要,须要我们进一步深入研究提高芯片的最高事情速率的设计谋略。我们须要谈论一下基于FPGA的DSP系统设计中的流水线技能紧张运用在哪些方面?
0 流水线技能基本事理和FPGA构造特色
流水线是一种在韶光上串行,在空间上并行的技能,其基本事理如图1所示。将全体电路划分为多少个流水线级,流水线每级之间设置寄存器锁存上一级输出的数据;每一级只完成数据处理的一部分;一个时钟周期完成一级数据处理,然后不才一个时钟到来时将处理后的数据通报给下一级;第一组数据进入流水线后,经由一个时钟周期传到第二级,同时第二组数据进入第一级,数据行列步队依次提高。每组数据都要经由所有的流水级后才能得到末了的打算结果,但是对全体流水线而言,每个时钟都能打算出一构成果,以是均匀打算一组数据只须要一个时钟周期的韶光,这样就大大提高了数据处理速率,电路在单位韶光内处理的数据量就愈大,即电路的吞吐量就越大,担保全体系统以较高的频率事情。

FPGA的构造特点很适宜采取流水线设计,以Altera低本钱系列Cyclone II为例,不仅有最多达68416个逻辑单元(LE),而且供应嵌入式存储资源支持各种存储运用和低本钱DSP运用(如乘法器模块、PLL)。每个LE均含有一个四输入查找表LUT、一个可编程触发器等。一样平常设计中,这个触发器或者没有用到,或者用来存储布线资源。设计中可将一个算术操作分解成一些小规模的基本操作配置到LUT中,将进位和中间值存储在寄存器中,不才一个时钟内连续运算。因此,在FPGA中采取流水线技能,只须要极少或者根本不须要额外的资源本钱。特殊是在须要进行大批量重复运算的场合,如数字旗子暗记处理中的卷积操作、FFT或FIR滤波器设计,采取流水线技能,可以大大提高系统运行速率。
1 FPGA中基本DSP运算的流水线设计与性能剖析
加法器和乘法器是DSP中最基本的运算部件。在Quartus软件平台上设计加法器或乘法器可以采取事理图法和VHDL措辞两种基本方法。考虑到参数可设置宏模块(Library of Parameterrized Modtlles-LPM)经由严格测试和优化,可以发挥最佳性能,以是,我们采取事理图设计办法,通过MegaWizard P1ug-In Manager工具引入1pm add sub和1pm mult两种可设置流水线的LPM模块,实现了不同位宽、不同流水线级数的加法器和乘法器设计,并选用CycloneII系列EP2C5Q208C7器件进行了综合、布局布线、时序剖析和仿真设计,以比较其性能的变革特色。
1.1 不同流水线级数的运算器性能比较
对16位加法器和8位乘法器分别选用不同的流水线级数进行设计,比较结果如表1、2所示。
由比较结果可见:
(1)采取流水线技能普遍比不用流水线事情速率显著提高,表示流水线技能在高速DSP运算上的上风。
(2)采取流水线技能在资源耗用(逻辑单元与寄存器个数、存储器位数)上有所增加。
(3)采取不同的流水线级数在速率指标和资源耗用率上有所不同,流水线级数增加,速率指标不一定增加,但资源耗用大大增加,以是应把稳速率和资源耗用指标的权衡。如对16位加法器,如不用M4K(专用存储器资源),以采取2级流水线最佳;如选用M4K,则取6级流水最佳。8位乘法器则以2级或6级流水最佳。对付其他DSP运算,在设计时必须通过反复比较、设计,选择符合系统性能哀求的流水线级数。
1.2 不同位宽运算器相同流水线级数的性能比较
对采取6级流水的加法器和乘法器的数据位宽加以改变,通过综合仿真,剖析其性能指标的变革,见表3。
由比较结果可见:采取同样的流水线级数时,事情速率基本相同,但耗用资源随输入位数的增加而急剧增加,加法器紧张是逻辑单元LE个数的增加;乘法器则是存储器位和嵌入式乘法器个数的增加。因此,对付不同的运算器电路,应根据须要选用不同型号的FPGA器件以知足对不同资源的须要。如,仅作加法运算时,可以选用逻辑单元丰富的FPGA器件女HACEX系列、FLEX等系列;乘加运算则须要选择内嵌乘法器模块和存储器模块的Cyclone、CycloneII等系列。
2 基于FPGA实现DSP流水线设计中应把稳的其他问题
2.1 流水线设计方法的选择
流水线设计可分为事理图和VHDL两种基本方法。
如前所述,用事理图输入法设计时,为提高设计效率,应充分利用带有LPM_PIPELINE的LPM模块,并利用QuartusII(供应了40多种LPM函数)编译器给出的LPM PIPELINE最佳数值(即最佳流水线级数),设定最佳LPM_PIPEINE值。
在无得当的I PM模块可用时,须要用VHDL作为设计输入。
流水线技能的本色便是在适当的地方加入寄存器,将前面的运算结果或输入数据暂存,并不才一个时钟到来时,将寄存值作为后一级运算的输入。因此在用VHDL描述流水线时,只需对不含流水线的运算器描述代码作适当改写,施加必要的设计约束即可实现。一样平常通过在进程中加入WAIT语句或IF_THEN语句来测试敏感旗子暗记边沿,实现寄存器或锁存器。
如利用WAIT语句,常用的描述形式为:
PROCESS
BEGIN
wait until clk’event and clk=’1’;(上升沿触发)
reg<=x;
END PROCESS;
个中的x是指输入到所加流水线寄存器reg中的数据。
利用IF_THEN语句,常用描述办法为:
IF(clk’event and clk=’1’) THEN…
其余,用VHDL设计输入时也可以利用Altera所供应的LPM函数,但必须在设计实体前使LPM库可现,即加入以下语句:
LIBRARY lpm;
USE lpm.lpm_components.ALL;
2.2 流水线的首次延时和寄存器的触发韶光
对图1所示系统进行延时剖析,图中组合逻辑的延迟包括两级,合理设计的流水线构造中,其延迟韶光应大致相等,设为2Tpd,插入每级寄存器组的触发韶光为Tco。因此,从输入到输出总的等待时延为:TDl=2(Tpd+Tco),称为流水线设计的首次延时(First Latency)。对付连续的运算,由于加上寄存器组后,每级打算后的中间结果都能暂时保存,下一个时钟到来时,可以直接参与下一级逻辑运算,无需等待从系统的输入端传来数据。因此,第二个结果及往后的运算结果的得到只须要一个时钟周期,等待的时延为:TD2=Tpd+TCO。
可见,流水线设计的首次延时与流水线正常延时比较要长得多。以是在选择是否采取流水线技能时,要剖析DSP运算的频率。当须要进行连续运算(即流水线一贯是满负荷)时,采取流水线可以大大提高数据吞吐率;但如果只是偶尔须要加、乘运算,由于首次延时大于非流水线办法下的pin to pin延时,流水线运用效果变差,而且还捐躯了额外的芯片资源,以是不推举利用流水线。在FPGA/CPLD中,器件的延时Tpd要比寄存器的触发韶光TCO长得多,一样平常剖析流水线吞吐延时可以忽略TCO。但是在高速运算场合或流水线技能较多时(如视频旗子暗记处理或无线通信中的数据处理),TCO与Tpd比较已不可忽略,必须仔细选择流水线的级数,防止TCO的影响造成流水线的瓶颈。
2.3 嵌入式存储器块资源的充分利用
在FPGA器件中,嵌入式存储器块(Embedded Memory)是为支持各种存储器运用和DSP运用供应的专门资源。如Altera公司FLEX10K系列器件供应了3个嵌入式阵列块EAB,每个EAB供应可灵巧设置的2048位RAM,Cyclone系列供应了数十个M4K资源,每个M4K供应4608位RAM,可单独利用,也可组合利用。利用EAB或M4K构建运算器如乘法器,本色是构成乘法查找表,其运算速率比采取LPM的乘法器速率更快,只是由于资源有限,只能实现小型乘法器。如能把基于嵌入式阵列块的小型乘法器和流水线技能相结合,则能够实现运算量和速率的进一步提高。
2.4 掌握流水线和数据流水线的划分
由于数字旗子暗记处理系统繁芜性的不断提高,在利用流水线技能实现DSP运算设计时,还有一个须要考虑的问题便是掌握流水线和数据流水线的划分问题。如在高速数据采集与处理系统中,采样数据的处理紧张涉及DSP运算,可以归入数据流水线。各输入通道传感器与旗子暗记调理电路的选通掌握、模数转换、数据缓冲与传送、数据运算掌握则须要主控芯片完成,如图2所示。高速主控芯片可以选用FPGA器件,采取流水线技能,将数据采集与处理过程中的通道选择、模数转换、数据缓冲与发送、数据运算四部分的掌握过程设计为四级流水线进程,以减少数据采集与处理的均匀作业韶光,实现高速率的数据采集。主控芯片的流水线技能可以归入掌握流水线范畴。
3 结论
通过实验比拟,验证了利用流水线技能可以实现基于FPGA器件的高速DSP运算。在详细运算器设计中要通过综合过程,比较和优选流水线级数以知足速率和资源优化的须要。DSP系统在进行流水线设计时要根据运算频率明确用否流水线,合理划分掌握流水线和数据流水线,还要把稳合理选用事理图和VHDL描述,充分利用带有LPM_PIPELINE的LPM和EAB(M4K)等资源,最大限度提高系统数据吞吐率和设计效率。