注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

构建数字通信技术理论与实践之间的桥梁

孤云出岫去留一无所系 朗镜悬空静躁两不相干 菜根谭.明.洪应明

 
 
 

日志

 
 

再讨论锁相环环路增益问题  

2016-04-16 14:03:24|  分类: 通信同步技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
杜老师:
      您好。

看了您博客的回复后,仔细分析了《同步-Verilog》书中关于增益的计算过程。对于CostasMATLAB代码中滤波器增益处理还是有些疑惑。由于各种锁相环的MATLAB仿真,都离不开滤波器增益处理。所以再次请教老师。

   FPGA实现Costas环时,滤波器的增益,由滤波器的输入位数和输出位数决定(P109,实际计算总增益K时,其实只关注环路滤波器的输出位数BlpNCO相位累加字的位数Bdds,并没有考虑滤波器的增益
     Costas
MATLAB中, C1C2的计算与FPGA的计算方法相同,除此之外还需要单独考虑滤波器的增益处理。对此有以下疑问:

1)为什么要单独考虑滤波器的增益?MATLAB代码中滤波器的增益就是

glpf=lpf_b(1)/lpf_a(1)吗?

   2为什么要通过 pd(i)=1/glpf*lpf_i(len)*lpf_q(len)使滤波器的增益为1。这样就可以使增益为1吗?(您的书中有介绍吗)

3) 如果是普通的锁相环,只有一个滤波器输出(不是两个滤波器的滤波数据相乘),增益该怎样处理?

望老师赐教!


回复:

1)MATLAB代码的COSTAS环中,滤波器使用的是IIR滤波器,其增益为glpf=lpf_b(1)/lpf_a(1),计算增益时,再乘以1/glpf,当然就成为glpf* 1/glpf=1。MATLAB程序的设计思路采用了对模拟锁相环直接进行数字转化的方式,并没有完全按照数字环路理论进行设计(FPGA设计时,将锁相环每个电路部分都用数字模型分析)。FPGA设计时,计算总增益时只关注最终的累加字位宽,而这个位宽实际受到滤皮器输出位宽的影响。

2)如果是一个滤波器输出,就相当于FPGA设计COSTAS环中,鉴相器设计采用某个支路的符号判决,另一支路取正负两种情况输出,其增益处理可参考书中的分析。

3)锁相环的环路增益问题分析起来有些麻烦,也正因为如此,我在即将出版的新书《锁相环技术原理及FPGA实现》才又专门对其进行详细讨论。

祝愉快!



老师:
     您好。
    感谢您在百忙之中耐心的回答问题。
    您的回信中“IIR增益为glpf=lpf_b(1)/lpf_a(1),计算增益时,再乘以1/glpf,当然就成为glpf* 1/glpf=1”。对此有一点疑问。
    i路和q路信号分别经过增益均为glpf的IIR滤波器后,再相乘,此时相当于增益为
glpf2 ,所以要想使lpf_i(len)*lpf_q(len)的增益为1,应该1/glpf2lpf_i(len)*lpf_q(len) 。但通过仿真,发现只能乘以1/glpf,才能得出结果。
  望老师解惑。

回复:

你的问题很好,根据你的问题,我又发现了MATLAB程序中的不足之处。

我又查了一下MATLAB设计滤波器的帮助,发现设计出的滤波器已经进行了归一化处理,因此不再需要对其增益进行处理。

鉴相乘法器与反正切运算相比,在数据支路与本地载波相乘时会产生一个1/2因子,IQ两路相乘就会产生1/4因子。鉴相相乘时还会产生1/2,因此总共产生了1/8因子。具体请参考《数字通信同步技术的MATLAB与FPGA实现-Altera/Verilog版》中第136页的式(5-9)。这样在计算pd时应该修改为:pd(i)=8*lpf_i(len)*lpf_q(len).这样仿真时,程序能够收敛,但与反正切运算结果还有一些差异,可认为是两种运算误差造成的。

祝愉快!


  评论这张
 
阅读(100)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017