●主题论文1引言在通信系统中,匹配滤波器的应用十分广泛,尤其在扩频通信如在CDMA系统中,用于伪随机序列(通常是m序列)的同步捕获。
匹配滤波器是扩频通信中的关键部件,它的性能直接影响到通信的质量。
本文从数字匹配滤波器的理论及结构出发,讨论了它在数字通信直扩系统中的应用,并对其基于FPGA的具体实现进行了优化。
2数字匹配滤波捕获技术在直接序列扩频解扩系统中,数字匹配滤波器的捕获是以接收端扩频码序列作为数字FIR滤波器的抽头系数,对接收到的信号进行相关滤波,滤波输出结果进入门限判决器进行门限判决,如果超过设定门限,表明此刻本地序列码的相位与接收扩频序列码的相位达到同步。
如果并未超过设定门限,则表明此刻本地序列码的相位与接收到的扩频序列码的相位不同步,需要再次重复相关运算,直到同步为止,如图1所示。
数字匹配滤波器由移位寄存器、乘法器和累加器组成,这只是FIR滤波器的结构形式,只不过伪数字匹配滤波器的优化设计与FPGA实现(王光1,田斌1,吴勉2,易克初1,田红心1)(1.西安电子科技大学综合业务网国家重点实验室,陕西西安710071;2.深圳通创通信有限公司,广东深圳518001)摘要:介绍在直接序列扩频通信中应用数字匹配滤波器实现m序列同步,分析其具体结构,详细讨论了其基于FPGA(现场可编程门阵列)的性能优化。
结果表明,数字匹配滤波器用FPGA实现时,能够大大减少资源占用,并提高工作效率。
关键词:FPGA;数字匹配滤波器;直接序列扩频中图分类号:TN713文献标识码:A文章编号:1006-6977(2006)05-0070-04Digitalmatchingfilter’soptimizationdesigningandFPGAimplementationWANGGuang1,TIANBin1,WUMian2,YIKe-chu1,TIANHong-xin1(1.NationalKeyLaboratoryofIntegratedServicesNetworks,XidianUniversity,Xi’an710071,China;2.ShenzhenNewComTelecommunicationsCo.,Ltd,Shenzhen518001,China)Abstract:Them-sequence’ssynchronouscapturingindirectsequencespreadspectrumsystembyus-ingdigitalmatchingfilterisdescribed,itsrealizationstructureisanalyzedanditsoptimizationimple-mentationisdiscussedindetail.Theresultshowsthattheoptimizationdigitalmatchingfiltercande-creasetheresourceoccupationgreatlyandincreaseworkingefficiency.Keywords:FPGA;digitalmatchingfilter;directsequencespreadspectrum图1数字匹配滤波器的结构图码寄存器中的系数为-1或+1,实际并不是真正意义上的乘法。
伪码寄存器中的数据可以由一种伪随机序列发生器产生。
数字匹配滤波器的表达式为:其中,x(n)为输入信号;h(-i)为滤波系数,由接收端扩频码决定,取值-1或+1,m序列码元为1,取值为+1,m序列码元为0,取值为-1。
匹配滤波器的长度N等于扩频比,也就是对于每一信息符号的扩频码元数,即Tb/Tc。
当输入信号{x(n)}与本地扩频码{h(-i)}匹配时,时输出Z达到最大,超出预先设定的门限,表示捕获成功。
很显然,数字匹配滤波器中的关键部件是乘法器和累加器,而移位寄存器可以由信号的相互移位来实现,例如要实现8bit串行数据的移位,假设输入数据序列为din,移位寄存器中的信号为d0,d1,d2,d3,d4,d5,d6,d7,用VHDL语言中的进程语句实现程序为[1]:process(clk)beginif(clk’eventandclk=‘1’)thend7<=d6;d6<=d5;d5<=d4;d4<=d3;d3<=d2;d2<=d1;d1<=d0;d0<=din;endif;endprocess;每来一个时钟信号,信号同时改变1次,这就实现了和移位寄存器相同的功能。
这样的进程实现并不需要太多的逻辑单元。
所以影响资源占用和工作效率的主要是乘法器和累加器。
下面讨论就乘法器和累加器分别加以讨论,研究其对资源和效率的影响。
3乘法器由于此处采用的是0,1的二进制系统,所以将逻辑0映射为实际电平-1,逻辑1映射为实际电平+1,也就是伪码寄存器中的系数。
移位寄存器抽头输出为有符号二进制补码,采用乘法器实现相乘运算时,如果伪码较长,则需要耗费太多的逻辑单元且运行速度过慢。
已经知道,一个数乘以1不改变原值,而乘以-1则改变符号,因为移位寄存器抽头系数只能是1和-1,可以考虑用二进制的补码运算来代替相乘1和-1运算,这就避免了相乘运算对资源的大量耗费,并能提高运算速度。
可以看到,伪码寄存器中的系数为+1或-1,如对移位抽头输出进行乘1运算,相当于不改变原补码值,而对移位抽头输出进行乘-1运算,则相当于对原补码数值改变符号,并对低位二进制码元求其补码值。
下面证明上述结论[2]。
假设二进制补码数为x=xn-1xn-2xn-3…x2x1x0(2)最高位xn-1为符号位,其取值为0或1,0代表正数,1代表负数。
不失一般性,设xn-2,xn-3,x1,x0均为1,x2到xn-4均设为0,则二进制补码数x的后n-1位代表的真值为2n-2+2n-3+21+20当最高位xn-1=0时,若移位抽头输出系数为1,则x代表的正数乘1后仍然是xn-2+2n-3+21+20,正数的补码表示还是x。
若移位抽头输出系数为-1,x代表的正数和-1相乘后变为负数,取x的后n-1位的补码值,可以表示为2n-4+2n-3+…+23+20,改变x最高位的符号位为1,取2n-4+2n-3+…+23+20的二进制表示作为x的后(n-1)位,即为x与-1相乘的补码表示;当最高位xn-1=1时,若移位抽头输出系数为1,则x代表的负数乘1后的真值仍然是x的后n-1位的补码值2n-4+2n-3+…+23+20,负数的补码表示还是x。
若移位抽头输出系数为-1,x代表的负数和-1相乘后变为正数,取x的后n-1位的补码值,可以表示为2n-4+2n-3+…+23+20,改变x最高位的符号位为0,取2n-4+2n-3+…+23+20的二进制表示作为x的后(n-1)位,即为x与-1相乘的补码表示。
结论成立,二进制求补运算代替乘法器的处理框图为如图2所示。
综上所述,在数字匹配滤波器中,因为滤波系数即移位抽头系数取值只能为1或-1,所以将有符号图2补码器的结构数的二进制补码的乘法运算变为求补码运算是完全可行的,这就避免了乘法运算对于资源的大量需求,运算速度也可大大提高。
在补码运算中,对每个移位抽头输出同时并行运算,并在后两个时钟得到并行求补码运算输出数据。
传统设计乘法器时,输入n1,n2位的2路有符号补码,结果输出为n1+n2位二进制补码数据。
随着移位寄存器输入有符号二进制补码矢量数据,时钟改变一次,移位寄存器每个抽头输出均和相应的抽头系数做一次相乘运算。
求补码运算代替乘法器时,不同于传统的乘法器设计,寄存器中每一数据只需求其补码即可,省略了相乘运算。
从根本上说,用求补代替相乘运算只是功能相同,但可以大大减少资源浪费并提高运算速度,所以有很大的应用优势。
4累加器数字匹配滤波器的移位寄存器每一级抽头进行1次乘法运算,结果输出到累加器进行累加,当运算到最后一级时,输出累加结果,送入门限判决器进行判决。
当对2个二进制补码相加时,若2个加数都为Bbit,考虑到数据可能溢出,则加法器的输出只需要(B+1)bit;而当3个bit二进制补码相加时,输出则需要(B+2)bit。
通过观察可以发现:2N个Bbit二进制补码的值可以用(B+N)bit二进制表示。
4.1传统的累加器设计考虑到传统累加器数据可能溢出,故将数据位展宽,比如在本仿真中,63个4位有符号补码求和,最后结果最多为4+6位,其中4为每一加数的位数,因为26<64,故扩展位为6位。
所以计算,如果数据位不足10位,正数在数据前加0,负数在数据前加1,这样每一数据都是10位(包括符号位),不用考虑溢出问题,完全用62个10位加法器可以实现。
4.2较优的累加器设计随着移位级数的增加,加法器的位数当然也要相应增加,第1级加法器用(B+1)位,第2、3级用(B+2)位,第4级到第7级用(B+3)位,后面依次类推。
这样设计,每一级并没有用考虑溢出结果的最多位的加法器,而是递推增加,可以减少资源浪费。
4.3优化的累加器设计将匹配滤波器的乘法器输出数据进行分组,并执行加法运算,第一级的加法器用(B+1)位,第二级用位,第三级用(B+3)位,后面依次类推。
每一级的加法器数量是前面的大约一半,依几何级数递减,这样的设计在低位相加时用了较多的加法器并以几何级数递减,也就避免了高位相加的资源浪费。
以63位m序列为例,设有符号补码数为B位:将前62位输入分为2组,每一组输入和另一组中相应输入作相加运算,总共用到31个(B+1)位加法器;余1位输入和31个(B+1)位加法器输出再次分组,用到16个(B+2)位加法器;16个(B+2)位加法器输出再次分组,用到8个(B+3)位加法器;16个(B+2)位加法器输出再次分组,用到8个(B+3)位加法器;8个(B+2)位加法器输出再次分组,用到4个(B+4)位加法器;4个(B+4)位加法器输出再次分组,用到2个(B+5)位加法器;2个(B+5)位加法器输出再次分组,用到1个(B+6)位加法器。
63位累加器占用加法器的比较如表1所示。
较优累加器的运算形式是串行,而优化累加器的运算形式是并行。
可以很明显看出,优化的累加器比较优的累加器更能减少资源占用,运行效率也可大大提高。
4.4Quatus模块化设计法Quatus仿真软件的MegaWizardPlug-InManag-er中提供了parallel_add模块,用户可以自由设计输入数据位宽,累加数据个数,定义累加输入数据类型,模块最终自动生成适当位宽的数据输出(考虑了所有的数据溢出)。
与上面的累加器设计比较,这样的设计很方便,可读性强,程序简练。
实际中逻辑单元占用也不是很多,只比上面多出10%左右。
所以,如果不是特别关注资源占用问题,这样的设计也不失为一种好方法。