罗兰C前端数字带通滤波器设计与实现
扫描二维码
随时随地手机看文章
摘 要: 分析了罗兰C信号的特征,并根据信号特征决定选用FIR滤波器,利用MATLAB工具设计了满足滤波要求的高阶数字带通滤波器。详细研究了分布式算法的原理和分布式算法在FPGA上实现FIR数字滤波器的方法。最终采用改进的分布式算法在FPGA上实现了127阶FIR数字带通滤波器。利用实际采集的信号进行仿真和现场测试,结果均显示由该方法设计的滤波器性能良好,方法简单易行,相对于传统的乘累加结构不仅能节省硬件资源,而且可以改善数据处理速度,具有一定的推广价值。
关键词: 罗兰C;分布式算法;FIR高阶带通滤波器;FPGA;Modelsim仿真
罗兰C导航系统是一种采用脉冲相位调制的陆基中远程低频无线电导航系统,是我国独立控制的唯一大型陆基无线电导航系统,也是全球罗兰C系统网的重要组成部分。目前已作为我国卫星定位导航授时(PNT)的最重要备份手段。又由于其工作在低频段,因此具有较强的抗干扰能力和水下接收的可能[1]。研究罗兰C的数字化接收技术对提高罗兰C的利用率和提高军事应用能力具有很大价值。其射频前端的数字带通滤波器是实现数字化接收机的重要组成部分。为此,本文针对罗兰C数字接收机前端滤波的要求,就如何在FPGA上实现罗兰C数字带通滤波器进行了研究。
1.2 FIR滤波器的计算机辅助设计
利用MATLAB信号处理工具箱(fdatool),选取least-squares模式,采样率为1 MHz,按照本设计要求,输入通带(90 kHz~110 kHz)和阻带频率(80 kHz~120 kHz)参数值。为满足其阻带要达到25 dB以上衰减的要求,设计滤波器阶数为127阶,可以得出满足要求的128个滤波器系数,利用FIR滤波器系数的对称性,选取前64个系数并乘212取整后的滤波器参数如表1所示。
2 硬件设计与实现
2.1 硬件电路结构设计
要实现前端数字滤波,首先要对天线接收来的信号进行数字化处理。由于天线端接收的信号非常微弱,进行数字化处理之前必须放大处理。系统硬件设计是以Altera公司的EP2C8Q208C芯片为核心,由磁天线接收的罗兰C信号经过以运算放大器MAX4418为核心的低噪声放大(LNA)后,经过12 bit的ADC芯片AD9235转换成数字信号输入到FPGA芯片内,经FPGA内部运算实现信号的数字滤波,输出经由12 bit的DAC芯片AD9752转换成模拟信号,经过平滑处理送往罗兰C接收机,也可以直接数字输出到数字接收机或者数据采集计算机,从而实现接收机定位和数据采集分析的目的。电路结构图如图2所示。
FIR滤波器只在原点处存在极点,所以具有全局稳定性,由一个“抽头延迟线”、加法器、乘法器的集合构成,是一个典型的乘累加结构,很方便进行FPGA实现。乘累加运算的次数由滤波器的阶数来决定,但乘法运算十分耗费资源。利用传统的MAC方式只能实现较低阶的数字滤波器,而要满足罗兰C前端的滤波要求则需要高达127阶的高阶滤波器,如此作为主芯片的EP2C8Q208C就很难满足其资源要求。可以考虑采用分布式算法(Distributed Arithmetic)来实现,以达到节约资源和提高运算速度的目的。
2.3 分布式算法原理
分布式算法是在30年前被首次提出的,但直到Xilinx公司发明FPGA的查找表结构以后,DA算法才广泛应用在计算乘积和之中。对于FIR滤波器,其基本结构是一个分节的延时线,每一节的输出加权累加,得到滤波器的输出。其输出y就是输出x与系数h的内积[4]:
2.4 改进的分布式算法
查找表(LUT)的大小是由滤波器的阶数决定的,N阶滤波器则共需要2N个查找表单元。若已知滤波器的系数位宽为B bit,则表中每个存储单元的数据位宽可表示为(B+
log2127)bit,所以要完成127阶滤波器需要(B+log2127)×
2127 bit的RAM。为了减小查找表的规模可以利用FIR滤波器的线性特性采用部分表计算,如此一个高阶滤波器的输出即是低阶滤波器输出的相加值。在设计中将每4个滤波器系数作为一个小的查找表,每个查找表的规模为(B+log24)×24 bit。利用FIR滤波器系数的对称性,将对应对称系数的输入数据预相加后再查找表,这样128个系数可以缩减为64个,如此实现整体的查找表则共需要(B+log24)×24×64 bit。如此规模的RAM硬件是可以接受的,而且不会降低滤波器的处理速度。将每个查找表的输出分别相加后再经过二次幂加权相加即可。实现原理如图5所示,每个查找表的内容如表2所示[5-6]。
fs为信号采样率,B为处理数据的位宽,fsc为单比特流控制时钟频率。即:fs可以由fsc分频得到(或fsc可以由fs倍频得到)。设计中AD9235采样数据的位宽为12 bit,根据FIR滤波器的系数对称性,简化硬件实现考虑将对应对称的两个输入数据相加,相加后数据处理位宽为13 bit。考虑到主控制时钟,可以选定FPGA的最高时钟工作频率为fsc=fs×13=13 MHz,而13为质数,很难经过分频或者有10 MHz的晶振倍频得到。为方便工程化实现,考虑将处理数据位宽扩展,同时为节约资源又不宜采用太大的位宽。如此将滤波器主体时钟设置为15 MHz。其中原始输入时钟为10 MHz,经过PLL进行3倍频到30 MHz时钟,再2分频即可得到15 MHz主控制时钟。设置15 MHz时钟为设计中串行移位控制时钟,计数状态从0~14即计15个数,因此可以将数据位拓宽到14 bit。具体设计流程如图6所示。