DIY编程器网

标题: 塑料光纤通信中基带升余弦滤波器的FPGA实现 [打印本页]

作者: admin    时间: 2015-4-27 17:27
标题: 塑料光纤通信中基带升余弦滤波器的FPGA实现
塑料光纤(POF)具有柔软性好、易于连接等优点,在短距离通信中得到广泛重视,继其在汽车内部网络的成功应用之后,室内通信网络将是塑料光纤通信的下一个巨大市场[1-3]。但塑料光纤由于芯径粗,模式色散大,造成信号波形经传输后失真大,高速率传输时码间干扰严重。奈奎斯特(Nyquist) 第一准则告诉我们:如果信号经传输后整个波形发生了变化,但只要其特定点的抽样值保持不变,那么用再次抽样的方法,仍然可以准确无误地恢复原始信号。根据这一准则,如果在发送前,采用奈奎斯特FIR滤波器将数字基带信号进行成形滤波,压缩旁瓣,就可以大大减小码间干扰的影响,从而降低误码率。因此,滤波器的设计在塑料光纤通信系统中占有重要的地位,它的性能将直接影响整个通信系统的性能指标。

目前FIR滤波器的实现方法主要有3种:单片通用数字滤波器集成电路、DSP器件和可编程逻辑器件。单片通用数字滤波器使用方便,但由于字长和阶数的规格较少,不能完全满足实际需要。使用DSP器件实现虽然简单,但由于程序顺序执行,执行速度较慢,在某些实时性要求高的场合中受到限制。可编程逻辑门阵列(FPGA)有着规整的内部逻辑阵列和丰富的连线资源,采用的是硬件并行算法,特别适合于实时通信要求高的场合[4,5]。塑料光纤数字基带传输系统的目标是实现100 Mb/s以上的传输速率,成型滤波器的工作频率较高,而FPGA的成本不断降低,所以用FPGA来设计塑料光纤通信成型滤波器具有明显的优势。

1 基带升余弦滚降数字滤波器设计

满足奈奎斯特第一准则的滤波器有无穷多种,最常用的是升余弦滚降滤波器。升余弦滚降滤波器的时域表达式为:
  
式中,0<&alpha;<1为滚降系数,Ts为码元宽度。可见升余弦滚降滤波器是一个无穷阶数的系数对称滤波器。为了能够在硬件电路上实现,必须截取其中一部分阶数。

由于实际设计中只能采用有限阶数有限精度滤波器,因而设计的滤波器频率响应与理想频率响应之间存在误差。为了减小误差,需要对滤波器进行优化。衡量误差的标准有两种:一种是最大误差最小化准则,就是使滤波器频率响应在一定的频率范围内与理论滤波器频率响应相比最大误差最小;另一种是最小均方误差准则,就是使滤波器的频率响应与理论滤波器频率响应相比误差的均方值最小。本文采用了最小均方误差优化的准则,对升余弦滤波器的系数进行优化。

Matlab的freqz函数能够方便地计算滤波器的频谱,可用于滤波器的优化。其过程是:选择一对对称的系数,增加或减少一个量化的最小单位(8位二进制量化最小单位是1/128);如果系数改变后频谱误差减少就采用改变后的系数,否则保持原来的系数;选择新的一对系数,重复上面的过程,一直调整到误差不能再减小为止。例如取滚降系数a=0.22,取样频率为4,FIR滤波器的有限长度N为23,可以得到其幅度和相位响应如图1(a)所示,相应的滤波系数如图1(b)所示。


2 升余弦滚降数字滤波器在FPGA上的实现
分布式算法DA(Distributed Arithmetic)是一种以实现乘累加为目的的运算方法。对于FIR滤波器的输出y(n)可以看作是滤波系数(即单位冲击响应)与输入信号x(n)的卷积和,其表达式为:

对于有符号的DA数值,最高有效位用来区别正数和负数,其x(n)可写成:

式中xb(n-i)表示x(n-i)的第b位,将式(3)代入式(2)中,可得FIR滤波器的分布式算法DA表达式:

式(4)中方括号的乘累加在DA中利用查找表LUT来实现,查找表的地址矢量xb=[xb(K-1)……xb(0)],即查找表的地址有K个输入信号的同位权位组成。如果滤波器的系数为B位,则一个DA查找表规模为2N×B bit。可以看到抽头系数N过多,则DA表的规模将十分庞大。这是因为LUT的规模随着地址空间的变化(也就是N的增加)而呈指数增加。

在塑料光纤数字基带传输系统中,为了减少FPGA逻辑资源的占有量和提高系统的运行速度,对升余弦滚降数据滤波器需要进一步优化处理。优化包括两个方面:一是在FPGA实现中利用特有的查找表进行优化,一是对表达式进行优化。

对查找表的优化,可以利用部分表计算,然后将结果相加。长度为LM(N=LM)的内积为:

这样就可以将和分配到L个独立的M阶并行DA查找表之中,表格的规模从一个2N×B bit降到L×2M×B bit,一般M控制在4个或8个最好。如果再加上流水线寄存器,由于大部分FPGA芯片的每个逻辑单元都有一个寄存器,所以并没有增加电路规模,却能大幅度提高电路的执行速度。DA算法的主要特点就是巧妙地利用了ROM查找表将固定系数的MAC运算转化为查表操作,其运算速度不随着系数和输入数据位数的增加而降低,而且相对直接实现乘法器而言在硬件规模上得到了极大的改善。

对表达式进行优化,考虑到升余弦滚降滤波器系数是奇对称的,h(i)=h(N-1-i),合并对称的部分可以减少大约一半的乘法运算,即
  
基于优化的分布式算法和利用FIR滤波器的线性相位特性,能够极大地提高电路的执行速度[7]。升余弦滚降滤波器的FPGA实现电路原理图如图2所示。图2中的加法树采用树形结构减少多个数累加次数的方法,即Wallace树结构加法器。Wallace树充分利用全加器3-2压缩的特性,随时将可利用的所有输入和中间结果及时并行计算,因而可以将N个部分积的累加次数从N-1次减少到logN次,大大节省了计算时延。图3为Wallace树结构与CSA结构的对照,其结构的关键特性在于利用不规则的树形结构对所有准备好输入数据的运算及时并行处理。Wallace树结构是一种高速加法器,其显著优点是速度快,尤其对处理多个数相加的情况具有相当的优越性。


3 优化结果与分析


塑料光纤数字基带传输系统升余弦滚降数据滤波器的设计首先采用MATLAB确定滤波器参数,产生一个滤波器的模型对给定的技术参数进行逼近,根据逼近结果得到的滤波器模型、滤波器系数,再用FPGA进行最后的硬件实现。

本FIR升余弦滤波器是在Altera公司Quartus II6.0版本软件开发环境下,并应用了该公司的Cyclone系列的FPGA芯片(EP2C5型号),进行FPGA程序编译和时序仿真。VHDL强大的行为描述能力和程序结构,使其具有支持对大规模设计进行分解,以及对已有的设计进行再利用的功能。本文采用VHDL语言编写了实现FIR升余弦滚降滤波器的FPGA程序代码,经编译完成后仅仅需要254个LE逻辑单元,节省了大量的资源,该算法具有极大的优势,可以有效解决在FPGA设计中资源紧张的问题,用VHDL语言实现硬件的流程图如图4所示。根据图1(b)中在Matlab中仿真计算出FIR数字升余弦滚降滤波器的量化系数,按照上面描述的方法在FPGA实现FIR升余弦滤波器。用VHDL编程并仿真,仿真结果如图5所示,实验仿真的结果与理论计算结果一致。

分布式算法在实现乘累加功能时,是通过将各输入数据的每一对应位产生的部分积预先进行相加形成相应的部分积,然后再对各个部分积累加形成最终结果的。它与传统算法实现乘累加的不同在于执行部分积运算的先后顺序不同。与传统串行算法相比,分布式算法可以利用查找表的方式实现,能极大地减少硬件电路的规模,提高电路的执行速度。本文根据塑料光纤基带传输系统模式色散大的特点,采用分布式算法在FPGA上设计了升余弦滚降成型滤波器,实现了23阶FIR升余弦滚降滤波器的实验仿真,仿真结果与理论计算结果一致,验证了设计方法的正确性和高效性,设计过程不仅克服了传统滤波器设计带来的诸多弊端,同时也提高了系统的整体性能。




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2