基于FPGA的通用位同步器设计方案

本文主要是先阐述传统gardner算法的原理,然后给出改进后的设计和fpga实现方法,最后对结果进行仿真和分析,证明该设计方案的正确、可行性。
0 引言
数字通信中,位同步性能直接影响接收机的好坏,是通信技术研究的重点和热点问题。通信系统中,接收端产生与发送基带信号速率相同,相位与最佳判决时刻一致的定时脉冲序列,该过程即称为位同步。常见的位同步方法包括滤波法和鉴相法。滤波法对接收波形进行变换,使之含有位同步信息,再通过窄带滤波器滤出,缺点是只适用于窄带信号。最为常用的位同步方法是鉴相法,包括锁相法和内插法两种。锁相法采用传统锁相环,需要不断调整本地时钟的频率和相位,不适合宽速率范围的基带码元同步。而内插法则利用数字信号的内插原理,通过计算直接得到最佳判决点的值和相位。
gardner算法即是基于内插法的原理,通过定时环路调整内插计算的参数,从而跟踪和锁定位同步信号,该算法的优点在于不需要改变本地采样时钟,可以适应较宽速率范围内的基带信号,因而具有传统方法不可替代的优势。gardner算法的实现方法,为算法的应用提供了基础。farrow结构非常适合实现gardner算法的核心,即内插滤波器部分,其优点是资源占用较少,且滤波器系数实时计算,便于内插参数调整。定时误差检测,但在定时误差检测时需要信号中存在判定信息,并且对载波相位偏差敏感。不足进行了改进,提出了ga-ted(gardner timing error detection)算法,其优点是不需要预知判定信息,且独立于载波同步,并且适合fpga 实现。改进的gardner 算法,并将其应用于m-psk 系统。提高了gardner 算法的抗自噪声能力,即降低了对本地时钟的要求。
本文基于fpga 平台并采用gardner 算法设计,其中,内插滤波器采用farrow 结构,定时误差检测采用ga-ted算法。同时对传统gardner算法结构进行了改进,使环路滤波器和nco的参数可由外部控制器设置,以适应不同速率的基带码元,实现通用的位同步器的设计方案。此外,本设计方案还对fpga 代码进行了优化,节省了大量硬件资源。最后进行了仿真和分析,给出了仿真结果,证实了该方案的可行性。
1 传统gardner 算法与改进
1.1 传统gardner算法基本原理
传统gardner算法结构如图1所示。
在图1中,输入的连续时间信号x(t) 码元周期为t,频带受限。在满足奈奎斯特定理的条件下,接收端采用独立时钟对x(t) 进行采样。内插滤波器计算出内插值y(k),送至定时环路进行误差反馈和参数调整,并与控制器输出的位同步脉冲bs一起送往解调器的抽样判决器。
定时环路包含定时误差检测、环路滤波器和控制器。定时误差检测提取插值时刻和最佳判决时刻的误差;该误差经环路滤波器滤除高频噪声后送给控制器;控制器计算插值时刻(即为位同步信号的2倍频)和误差间隔。插值时刻和误差间隔用于调整内插滤波器的系数,使插值时刻尽可能与最佳判决点同相,最终实现位同步信号的提取。
1.2 改进的gardner算法结构
从上节可以看出,传统gardner算法无法满足较宽速率范围基带信号的位同步要求。为实现该要求,本设计在fpga 平台的基础上,对算法实现结构进行了改进,改进结构如图2所示。
图2中,内插滤波器采用farrow结构的fir 滤波器实现,滤波器系数实时计算;定时误差检测采用独立于载波且采样点较少的ga-ted 算法;环路滤波器、内部控制器可由外部控制器设置参数,基带码元速率变化时,相应参数可以随之变化。因此,本设计可以满足位同步器的通用性要求。
该同步器工作过程如下:外部控制器根据基带码元速率设置相应参数,通过外部控制器接口将控制、地址和数据信号分别送往分频器、环路滤波器和内部控制器。时钟电路分别提供采样时钟和fpga 时钟,fpga工作时钟在片内通过分频器产生所需频率的时钟,供fpga 各模块使用。输入连续时间信号x(t) 经由独立时钟控制的adc 进行采样,转换为8 位数字信号送至fpga 内,符号化后变为有符号数字序列,送入内插滤波器模块。内插滤波器根据输入信号的采样值和内部控制器给出的参数μk,在每个插值时刻kti 计算出最佳判决点的内插值y(kti)。定时误差检测计算出误差μτ (n),输出至环路滤波器。环路滤波器依据当前的参数设定,滤除噪声并将误差信息送给内部控制器。内部控制器以nco为核心,根据处理后的误差信息和设定的频率字参数调整插值时刻kti,使之尽可能接近最佳判决时刻,并输出位同步脉冲bs,同时计算出误差间隔μk 送给内插滤波器,进行内插值计算,最终完成定时信息的恢复。
2 fpga设计
2.1 整体结构设计
根据图2的算法结构,fpga设计采用模块化方式,整体结构的顶层图如图3所示。
从图3可以看到,该设计包含分频器(div_fre)、符号化(sym)、内插滤波器(interpolation)、定时误差检测(ted)、环路滤波器(lpf)、内部控制器(inter_ctl)和外部控制器接口的时序电路(exter_ctl)共7个模块。其中,分频器由片外晶振提供时钟输入,分频后为片内其他模块提供相应时钟。其中码元时钟的分频系数可由外部控制器通过接口进行设置。符号化是将a/d采样产生的无符号数转换为有符号数,以便后续模块进行带符号的运算。
外部控制器接口的时序电路将外部控制器送来的控制信号(ale和rd)、地址信号(p2.0、p2.1)和数据信号(p0口)、转换为fpga 内分频器、环路滤波器和nco的使能信号和参数,实现对位同步器各参数的设置。
分频器、符号化和外部控制器接口模块实现较为简单,不再赘述。而内插滤波器、定时误差检测、环路滤波器和内部控制器的实现较为复杂,且本设计通过采用相应算法和改进结构,实现了位同步器的通用性。本文将详细阐述这些模块的设计。
2.2 模块详细设计
2.2.1 内插滤波器设计
内插滤波器是完成算法的核心,它根据内插参数实时计算最佳判决点的内插值,即:
式中:mk 为内插滤波器基点索引,决定输入序列中哪些采样点参与运算,它由插值时刻kti 确定;μk 为误差间隔,决定了内插滤波器的冲激响应系数[1].kti 和μk 的信息由内部控制器反馈回来。
本设计的内插滤波器采用基于4 点分段抛物线多项式的farrow结构实现。将式(1)变换为拉格朗日多项式,即令:
根据式(2)和(3),内插滤波器程序实现结构如图4所示。
从图4可以看到,该结构由1个移位器、5个触发器、 8个相加器、2个乘法器组成,比直接型fir节省10个乘法器、4个相加器的资源。其中,除以2的运算采用数据移位实现,避免使用除法器。输入的8位数据 x,计算后得到10位的内插值y 输出。由于内部所有寄存器经计算后,均采用最小位数,有效地减少了logic elements资源的占用。
2.2.2 定时误差检测设计
定时误差检测程序采用独立于载波相位偏差的ga-ted算法。该算法每个符号周期只需要两个插值,每个码元周期输出一个误差信号μτ (n) ,即:
其中,y(n) 表示第n 个码元选通时刻的内插值,前后两个内插值的插值代表误差方向;y(n - 1 2) 表示第 n 个和第n - 1 个码元的中间时刻内插值,代表误差大小。
fpga实现时,为避免乘法运算,采用y(n) 和y(n - 1)的符号来代替实际值[8],即采用式(5)计算误差信息:
根据式(5)进行程序设计,误差的正负方向判断采用case 语句,当y(n) 和y(n - 1) 的符号位分别为“0”和“1”时,y(n - 1 2)的符号位不变;当符号位分别为“1”和“0”时,y(n - 1 2) 的符号位取反;当符号位为“0”“0”或“1”“1”时,令输出的μτ (n) = 0.ted程序在1 ti 的时钟控制下进行运算,最终得到29位误差数据,并以1 t 的速率即码元速率输出至环路滤波器电路。
2.2.3 环路滤波器设计
本文对gardner算法中的环路滤波器进行了改进,根据通用位同步器的要求,采用二阶数字滤波器,并且开放滤波器参数(c1,c2 ) 和使能(c_en)端口,当码元速率变化时,通过外部控制器来改变参数,实现滤波器的通用性。滤波器结构如图5所示。
从图5可以看到,滤波器的输出为:
式中:ko kd 为环路增益;ζ 为阻尼系数,取ζ =0.707;t 为采样时间间隔,即相位调整间隔;ωn 为无阻尼振荡频率。
为减少资源占用,环路滤波器中的乘法运算均采用移位方式实现,处理后的误差信息送给内部控制器。
2.2.4 内部控制器设计
内部控制器根据定时误差信息,调整插值频率1 ti和误差间隔μk ,并输出位同步脉冲bs,它包含nco(numerically controlled oscillator)和误差间隔计算两部分。该程序提供接口(频率字fw 和使能端fw_en),外部控制器可以通过该接口输入参数。
本设计中nco 采用与文献[10]类似的dds(directdigital synthesis)结构,其频率控制字fw 可由外部控制器设置,其结构如图6所示。
图6中,m 为频率控制字位数,n 为相位累加器和相位寄存器的位数。这里取m = n = 23,采用递减型的nco,归一化后相位累加器的累加值为:
式中:fw 为频率控制字;w (mk ) 为环路滤波器输出的误差信号,二者由环路滤波器提供,决定了nco的溢出周期。其中,当:
nco 溢出信号即为提取出的位同步信号的2 倍频(2bs),经2分频后可以得到位同步脉冲(bs)输出,2bs同时作为内插滤波器和误差间隔计算的使能信号。
误差间隔μk 在nco 溢出后的下一个ts 时刻进行计算,环路锁定时:
将其截断为8位数据送给内插滤波器。
本设计同时对代码进行了优化,数据有效位的截取、内插滤波器的结构优化、乘法采用移位计算代替等措施,有效地节省了硬件资源,优化前和优化后的资源占用情况对比见表1.
3 仿真和分析
3.1 matlab仿真
本文采用matlab对算法进行理论仿真,输入采样值x(m) 为[-1,1]之间的随机码,采样频率上限为20 mhz,令码元速率分别为2 kb/s,600 kb/s,10 mb/s,环路滤波器、内部控制器参数随码元速率变化。取内插滤波器的插值输出y(kti) 做散射图分析,验证对不同速率的基带信号,内插值是否接近最佳判决值,如图7所示。
从图7可以看出,在基带速率和采样率满足奈奎斯特定理的条件下,该仿真输出的内插值均集中在理想值 -1和1周围,虽然有一定的模糊,且频率越高,模糊程度越大,但码元判决阈值在0值点,所以判决值无需严格为±1,该图表明对于较宽速率范围内的基带信号,输出的插值均能够较好地用于码元判决,即算法正确。
3.2 fpga仿真
在quartus下对本设计进行仿真。基带信号采用m 序列,由fpga生成,令基带码速率分别为2 kb/s,600 kb/s,1 mb/s,同时分频器、nco 及环路滤波器参数也做相应设置,仿真结果如图8所示。
在图8中,x为基带码元序列,y为内插值输出,clk_t为基带码元时钟,clk_bs为提取出的位同步信号。从图中可以看到,clk_bs经过定时环路调整,其上升沿逐渐向clk_t的下降沿(即最佳判决点)靠近,且随着基带码元速率的变化,clk_bs也会随之变化,但其中心频率与clk_t相同,相位与最佳判决点相差不超过半个码元周期,可以进行码元判决,这表明本设计对2 kb/s~1 mb/s内的基带信号,均可实现位同步。
4 结语
本文提出了一种基于fpga的通用位同步器的设计方案。该设计方案中的同步器在传统gardner 算法的基础上进行了改进,其中,内插滤波器采用farrow结构,定时误差检测采用ga-ted算法,环路滤波器和内部控制器参数可由外部控制器设置,因而实现了较宽速率范围内基带码元的位同步。仿真结果表明,该方案占用fpga资源较少,并且在实际应用中具有可靠有效性。

RFID系统安全分析
车载主机的MD播放
关于重载AGV小车,它的未来发展前景怎么样
打破医疗耗材伽马屏障的新记忆
人民日报点赞美团单车数字人民币试点:推动生产生活方式绿色变革
基于FPGA的通用位同步器设计方案
拉幕式数码显示技术
基于RS485总线的多机通信系统设计方案解析
sense-id:氧气浓度监测标签
期待满满!12.16华为荣耀Magic新品发布会现场图文直播
BRIC产品可最大程度地降低与被测设备和测试仪器之间线缆连接的复杂性
云起全屋智能体验店落地西安,体验最新Nature视界面板
浅谈封装测试工艺及封装形式发展
中国外文局携手科大讯飞深化AI翻译产业化应用
局域网的特点
米尔科技SDIO WIFI模块
PLC自动化解决方案-ABB可编程逻辑控制器优势及选型应用
一场国家级别的网络战争,降临在德国电信这样一家商业公司头顶
室外非可视网络报警箱
一文看懂手术机器人的现状和未来前景