快捷搜索:

通过并行流水线结构实现直接型FIR滤波器的系统

1 、并行流水布局FIR的道理

在用FPGA或专用集成电路实现数字旌旗灯号处置惩罚算法时,谋略速率和芯片面积是两个互相制约的主要问题。实际利用FIR滤波器时,要得到优越的滤波效果,滤波器的阶数可能会显明增添,无意偶尔可能会多达几百阶。是以,有需要在机能和实现繁杂性之间做出选择,也便是选择不合的滤波器实现布局。这里运用并行流水线布局来实现速率和硬件面积之间的交换和协调。

在关键路径插入寄存器的流水线布局是前进系统吞吐率的一项强大年夜的实现技巧,并且不必要大年夜量重复设置硬件。流水线的类型主要分为两种:算术流水线和指令流水线。对FPGA设计,逻辑功能是面向特定利用的,是以,采纳必要较少额外节制逻辑的算术流水布局。 流水线布局就意味着将数字处置惩罚算法瓜分成光阴上前后相连的多个处置惩罚片段.并且在段与段之间加旌旗灯号寄存器来缓冲。这些段和段之间的缓冲就构成了流水线。系统原本的运算量被瓜分成k个部分,分手由流水线的k个段来外理。一旦前面的义务经由过程了流水线的第一段,新的义务就可以进入流水线。设系统不加流水时的延时是D,则加上流水后,每隔D/k个光阴单位就可以启动新的义务。要实现流水线的机能提升应满意3个前提:

①运算量平均分成延时同等的k个部分;

②输人数据有大年夜量重复的运算;

③重复的运算前后没有相关性。

并行布局便因此重复相同的布局,对同时满意并交运算前提的并行算法在硬件长进行实现的布局。并行布局运用起来的主要难点如下:一,并行布局占用更多的面积。二,互相并行的各谋略部分在互相互换数据时,必要额外的节制和互联布局。然则,在芯片工艺尺寸赓续减小的本日,并行布局成为设计高速、低延时数据处置惩罚系统的首选。节制和互联布局的繁杂性取决于算法和对算法的划分措施。FIR滤波器本身就得当并行处置惩罚,然则对付占用光阴和芯片面积都很大年夜的乘法器来说,用全并行来实现FIR滤波器是不经济的。

FIR滤波器以其设计简单、稳定性好、方便实现、线性相位等优点每每成为首选,以致是独一的选择。FIR滤波器用差分方程表示为:

FIR滤波器直接型布局如图1。

2 、实现措施

现场可编程门阵列(FPGA)具有体系布局和逻辑单德设置设置设备摆设摆设机动、集成度高以及设计开拓周期短等优点,是以,选用FPGA来验证并实现本滤波器布局。VHDL是一种硬件描述说话,主要用于描述数字系统的布局、行径、功能和接口,与FPGA相结合后,体现出加倍强大年夜与机动的数字系统设计能力。用VHDL完成数字系统的功能描述,用FPGA来实现是一种实用方便的软、硬件结合要领。从硬件描述说话到FPGA设置设置设备摆设摆设数据文件是由综合对象以及结构、布线对象来完成的。数字系统的功能终极能否实现以及机能若何,取决于数字系统的算法布局,也取决于综合对象、结构和布线对象,还有器件机能。然则,假如数字系统的算法设计不好,就会有更多的设计反复。这里对FIR滤波器提出一种处置惩罚光阴和所用芯片面积可以交换的布局,在最初的设计时,就能对其处置惩罚能力有所预计,削减了设计的反复。

对付FIR滤波器,Xilinx供给了两个软核,一个是基于散播式运算的,另一个是基于单路的乘加运算。对付大年夜阶数、高采样率的滤波器,这两种滤波器布局都不太得当。

为了前进FIR滤波器的吞吐量,可用并行加流水线的布局来实现FIR滤波器,如图2所示。流水布局用于前进吞吐量率,并行布局可以减小处置惩罚延时。使用流水和并行布局调剂滤波器机能使其满意实际利用要求。这里实现三级流水和二路并行的FIR滤波器。三级流水分手对应取数、乘法和累加。主要由双口RAM、乘法器、累加器、节制逻辑和流水线间的寄存器组成,还稀有据写入模块(图中未画)。

用两块RAM分手寄放FIR系数和数据的前N个样值点,这两个RAM要求有一个写数据和一个读数据的双端口RAM。数据写入模块认真把所要滤波的数据轮换地写入两个双口RAM;FIR的系数也按偶数下标和奇数下标分手写入两个系数RAM,实现时是预先设置设置设备摆设摆设的。在实现滤波时,如图1所示对数据移位是不现实的。是以,用交联收集结合节制模块实现第一级流水--取数,完成给下一级流水线精确送数的目的。第二级流水是两个并行的乘法器,完成乘法运算。第三级流水是一个累加器;在节制逻辑的节制下,对乘法器输出结果进行精确的累加运算。

完成布局设计后要进行时序设计。数据写入模块的时钟是根据数据源孕育发生数据的速度而定的。而流水线的事情时钟频率要求大年夜于数据孕育发生时钟频率的N/2倍,N是滤滤器阶数,2是并行度。也便是要求流水线在数据孕育发生的一个周期内能完成一次FIR滤波器输出的谋略。此中的节制逻辑是流水线正常运行的关键。数据流水线上的各类时序要求都要由其孕育发生,包括读数据地址、读系数的地址、交联收集的节制和流水线布局的输出。其VHDL的端口描述如下:

系数地址由计数器孕育发生,计数器周期是滤波器的阶数除以并行度,由first_data_address的第0位的边沿触发,以从新从0开始计数。数据RAM的地址加上计数器的值。两个RAM地址因当前输入滤波数据的寄放位置,可能相同也可能相差1。交联收集的节制旌旗灯号是计数器的最低位。累加器输出的使能旌旗灯号是在计数到滤波器的阶数时孕育发生的,而后颠末延时给到累加器。累加器清零旌旗灯号在这里孕育发生要比累加器顶用其他措施方便得多。

交联收集也是设计的重点。对付并行处置惩罚布局,各单元之间数据的共享和通信是限定并行度的主要缘故原由。在并行度为2的布局中,只要轮流互换系数就可以了。然则对更高的并行度,这一通信收集的延时是相昔时夜的,这也是把它零丁列为滤波器的流水线的一级的主要缘故原由。

还要留意的是:有符号数常用补码表示。在对有符号数进行扩展时,要扩展最高位。对乘法器的输出一样平常要进行扩展,以避免累加器溢出。

对付乘加运算,有一种散播式谋略措施,也便是把乘法进一步分化为部分和(二进制系数的每一位和输入数据相与的结果)。当乘加运算的一个乘数是已知常数时,散播式乘加运算会很节省资本。由于系数固定,与运算的结果是在运算前可知的,这样零位与数据相与的结果是不介入加运算的,从而实现无乘法器的滤波器。这里不选用这种措施,缘故原由有二:其一,散播式运算将使滤波器难以重配:其二,基于FPGA的硬件乘法器较综合得来的乘法器机能更佳。

3、 仿真及测试

用VHDL说话描述整个电路模块后,输入系数1、2、3、4、5和数据-l、-2、3、4等进行测试.用Mod-elsim进行仿真,其结果如图3所示。

可以看出,模块能精确进行谋略,从数据输入到数据输出约延时2个数据时钟.这主如果前面的数据输入模块的延时。乘加部分采纳数据时钟的N/2倍,其延时与滤波器的阶数成比例,但不会跨越一个数据时钟周期。

然后,对VHDL描述就Xilinx的Spartan-3进行综合和测试。可以得出表1所示的测试结果,此中第一行径并行流水布局所设计的滤波器,第二行是采纳Xilinx供给的软核设计的滤波器。

可以看出,除了增添一个乘法器外,逻辑块和触发器都增添了一倍多。用这种布局设计的滤波器面积增添了一倍,速率机能也前进了一倍。以上两种滤波器可以利用在语音旌旗灯号处置惩罚中--让语音旌旗灯号经由过程低通滤波器以获取语音的低频分量。相对而言,并行流水布局能实现比Xilinx软核更高阶数的滤波器。在听觉上,颠末两种滤波器(相同阶数)的语音旌旗灯号没有太大年夜区别。

4、 停止语

本文在运算层次上,依据流水和并交运算布局实现直接型FIR滤波器。假如在设计滤波器时,结合级联型和直接型两种滤波器布局,那么也能实现同样的并行和流水的效果。实际上,还可在更低层次的乘法运算时,对部分和也用并行和流水布局来实现。这些布局的选择都依据机能请乞降实现的繁杂性来详细确定。

作为实现今世高机能处置惩罚器的措施,并行和流水布局各有特征。并行因此面积换速率。流水因此延时换速率,采纳这两种布局,就能在面积、速率、延时之间机动交换。

责任编辑:gt

您可能还会对下面的文章感兴趣: