基于声卡的QPSK信号的实时软解调

近几年来,pc机的各项技术得到了迅速发展,cpu的计算速度、内存容量都大幅度提高,其数字信号处理能力已经完全可以满足对常规通信信号的实时解调。将调制解调器设计在声卡上而不是dsp芯片上,有很多好处:首先,声卡廉价易得,充分利用卡上的line in、mic in、line out、spk out等端口,可以实现多路信号的实时解调,一卡多用;其次,优化后的解调软件占用cpu的时间很少,可以在接收数据的同时从事其他工作;第三,不受存储空间的限制,用高级语言编程,设计周期短。另外,这种设计方案与硬件平台无关,软件升级周期短。本文正是基于这种思想,抛开dsp器件,以pc机为硬件平台,实现对qpsk信号的实时解调,系统框图如图1所示。
图1中,接收机输出的基带信号经pc机声卡采样后得到离散化的数字序列。对信号的采样可调用windows的api函数对声卡进行控制,包括采样频率、缓存大小、每次读入的字节数等,具体实现可参看相关资料,本文不再赘述。图1中的解调软件部分是本文讨论的重点,它完成对信号的数字化实时解调功能,其数字化解调原理如图2所示。
软件agc
软件agc用于跟踪信号外包络变化实现对衰落的补偿。本文采用图3所示对数agc。
图3中的对数agc用软件实现时,a(n)的计算采用下式。
log{a(n+1)}=log{a(n)}+α[log{r}-log{|a(n)x(n)|}]
图中,x(n)是软件agc的输入信号,y(n)是输出信号;a(n)是agc的增益控制变量;α和r为常量,取值根据设计要求在补偿速度和稳定性之间取折中,当要求补偿速度迅速时,取较大的值,反之,取较小的值。
dfpll载波频率恢复
在位同步点附近,存在信号的码间串扰问题。dfpll的基本思想就是,对于每个码元,利用位同步附近的采样点计算码元的相位,并根据基带信号码元的相位特点,计算出参考载波与信号载波的差值,利用此差值调整vco的相位,进行载波恢复。
设qpsk信号的第n个码元在位同步点处的相位信息为:,其中,i=0,1,2,3,θ(n)为第n个码元的相位偏移。要得到相位误差,需要去除相位信息中的信息分量πi/2,通过观察qpsk星座图可以发现,相邻星座点间的相差总在π/2附近,于是用如下方法可以去除信息分量。令,并令,其中,mod表示求余,ξ(n)是单个码元的相位误差。如果采样频率为fs,码元速率为fb,则该码元每个采样点的平均相位误差为e(n)=ξ(n)/(fs/fb)。平均相位误差送入环路滤波器,滤波结果由系数k调整后,送入vco进行相位增量调整,当e(n)稳定在一个较小值附近时,dfpll处于锁定状态。环路滤波器采用一阶rc低通滤波器。由于其输入为相位估计器,考虑来自相位估计器的相位差值信号以码元速率fb变化,其截止频率应在fb附近,用冲激不变法设计归一化系统函数为:。滤波器的截止频率和增益k对捕获时间和环路的稳定性都有影响,调整这两个参数,使之达到最佳状态。
dttl符号定时恢复
qpsk调制的dttl符号定时恢复算法原理如图4所示。该算法由farrow插值器、定时误差检测器、数字环路滤波器及数控振荡器等四部分组成。可以看出,它实际上是一个带锁相环的反馈定时误差同步器。符号定时恢复主要是通过不断调整farrow插值器的参数,使得输出的样点值抽样在每个符号周期的最大值上。该算法工作在2个样点/符号。
图4中的farrow插值器使用线性插值公式z1(k)=(1-μ(k))y1(k-1)+μ(k)y1(k),其中0≤μ(k)<1。调整μ(k)的值,即可使样值采样在最佳时刻。误差检测器可表示如下。
vd(k)=z1(k-1)[sgn(z1(k))-sgn(z1(k-2))]+zq(k-1)[sgn(zq(k))-sgn(zq(k-2))]
环路滤波器采用二阶数字环路滤波器,其输入输出关系可表示如下。
vc(k)=vc(k-1)+kpvd(k)+(ki-kp)vd(k-1)
关于比例增益常量kp和积分增益常量ki的选择,可以参考文献4。数控振荡器的控制字vo按照下式每个符号调整一次。
vo(k)=vo(k-1)+kovc(k)
式中ko为数控振荡器灵敏度增益常量。最后,分数索引μ(k)可按下式更新。
μ(k)=mod(μ(k-1)+vo(k-1),1)
式中mod表示取余。
kalman dfe自适应均衡器
kalman dfe自适应均衡器的均衡原理如图5所示。
由图5可以看出,dfe均衡器包含两个横向滤波器,一个横向滤波器用于线性的前向滤波处理,其判决结果反馈给另一个横向滤波器。如果前面的判决是正确的,则反馈滤波器就能消除由前面码元所造成的串扰。反馈滤波器的抽头系数由包括前向滤波器所造成的信道冲激响应拖尾所决定。不难理解,只要误码率小于1/2,原则上就能保证收敛。
图中前向滤波器为m阶,反馈滤波器为n阶;tn为训练序列;yk为前向滤波器的输入,ai为其抽头系数;ik为反馈滤波器的输入,bi为其抽头系数;zk为dfe的输出;e(k)为误差信号。均衡器工作时,总是先由接收到的同步序列或训练序列tn等已知序列进行训练。在训练期间,dfe均衡器将内部产生的理想信号作为反馈输入信号,由lms或rls算法对信道进行估计,同时调整前向与反馈滤波器的抽头系数,收敛到均方误差最小。当残差足够小时,均衡器被切换到直接判决模式,即由判决符号重调制生成的参考信号作为反馈输入,均衡器将继续工作在均方误差最小状态。
由图5可知,
令xt(k)=yk,yk+1,...,yk+m-1,ik-1,ik-2,...,ik-n)
wt(k)=(a1,a2, ..., am,b1,b2, ...,bn)
其中,t表示转置,则误差信号e(k)表示如下。
e(k)=ik-zk=ik-wt(k-1)x(k)
kalman算法的精髓在于,已知w(k-1),递推计算w(k),其递推步骤如下。
初始化:0<ω<1;w(0)=0;p(0)=i,i表示单位矩阵。
for k=1 to n do :e(k)=i(k)-xt(k)w(k-1)
k(k)= p(k-1)x*(k)
ω+xt(k)p(k-1)x*(k)
p(k)= [p(k-1)-k(k)xt(k)p(k-1)]
w(k)=w(k-1)+k(k)e(k)
其中,k(k)为卡尔曼增益向量,p(k)为x(k)的协方差矩阵。均衡器系数随时间改变的量等于误差e(k)乘以卡尔曼增益向量k(k)。因为是m+n维的,所以每一个抽头系数实际上受到k(k)的一个元素的控制,从而获得快速收敛。
实时测试结果
测试系统框图如图1所示。这里接收机输出的psk31信号的载频为1000hz,码元速率为31.25波特,调制方式为qpsk,声卡的采样频率为8000hz。dttl符号定时恢复过程中,定时误差及分数索引的收敛情况如图6、图7所示。dfpll载频恢复过程中,vco输出参考载频的收敛情况如图8所示。图9则分别显示了未加均衡与加均衡时,解调出的qpsk星座的对比。

Power Integrations发布InnoSwitch3系列高效率(94%)离线 反激式开关电源IC
硅晶圆销售于第三季度开始下滑
Imagination的智能家居关键模块及解决方案
基于虚拟仪器技术的705D雷达自动检测系统
全球汽车行业的三支创新力量_重塑十年后的汽车产业
基于声卡的QPSK信号的实时软解调
四海八荒三生三世只为你?华为P10:称霸高端旗舰抢占海外市场
《60天10串BMS锂离子电池管理系统设计实战特训班》开班倒计时第7天
如何测试带服务接口的Simulink模型?
部署更多的射频场来支持能量收集设备助力物联网下一个挑战
芯片板块行情分析
Ethertronics 1002289天线能够用于多种无线技术,还带有宽带调谐功能
AI与医学影像互相融合,在医疗市场形成创新和突破
LG化学和SK创新的商业机密盗窃案件判决公布
米粉来看:这才是热衷于小米手机的原因 你中了哪几点?
又放迷雾弹!苹果iPhone8或启用不锈钢外壳!
Microchip中国2023大咖汇报名进行时!
采用JFET晶体管置于电路中实现高频LC振荡器的设计
详解Σ-Δ型ADC拓扑结构的基本原理
无监督学习方法来聚类“车辆相遇”数据