justin_n 发表于 2014-9-9 15:08:42

求助!关于COSTAS环环路滤波器参数设计问题

本帖最后由 justin_n 于 2014-9-9 15:24 编辑

   目前做QPSK接收机的行为级仿真,但到了环路路滤波器那块就停滞不前快半个月了,由于现在还处于本科阶段能与之商量探讨基本没有,老师也忙因此一直在摸瞎。所以恳请坛内大神指点一二。
    我描述一下我前面所做的工作,恳请大神们看看是否有问题。
    我现在符号速率为1Mhz,载波10.7Mhz 采样率为40Mhz。解调采用正交解调,调制信号经过IQ两路正交信号相乘后送入CIC滤波器进行8倍抽取,将数据速率降到5Mhz,随后将信号送入FIR滤波器,滤出基带信号。接着在进行5倍抽取使得速率降至到1Mhz接着进行鉴相。到目前位置该出来的都出来了。

图片1:1,2两路为IQ两路在载波设置相同后的解调出来的基带信号,3,4两路为CIC滤波出来的IQ信号。

图片2:1,2两路设置频差2K的基带信号,第三路为鉴相输出。

接下来就是环路滤波器参数的设计了,我参考了些资料,通过matlab进行运算参数如下:
clc;
es=0.707;
fs=1*10^6;
Wn=30.7*10^3*2*pi;%自然角频率
Bit_Loop_out=23;
N=32;
kdds=2*pi*2^(-N)*8;
k0=2^(Bit_Loop_out-2);%普通锁相环增益计算公式
k=kdds*k0%环路总增益

WL=2*es*Wn
WnTs=Wn/fs

c1=(4*Wn*Wn/fs/fs+8*es*Wn/fs)/(4+4*es*Wn/fs+Wn*Wn/fs/fs)/k
c2=(4*Wn*Wn/fs/fs)/(4+4*es*Wn/fs+Wn*Wn/fs/fs)/k

其中最关键的自然角频率wn 根据环路带宽为符号速率的0.01倍计算而得。
环路总增益与DDS的总增益鉴相输出的增益相关。
环路滤波器的采样率也为1mhz;
最后计算C1 C2;
通过上路公式算的
c1 =

   11.0231


c2 =

    1.3232


为了节省乘法器采用移位操作,对于才c1 左移3位加上左移2位 为12
而c2则是原数据加上右移2为为1,25


always@(posedge clk_1mhz or negedge rst_n)//二阶环路滤波
begin
if(!rst_n)
    begin
           loopfilter_shift_c1 <= 25'd0;
                loopfilter_shift_c2 <= 22'd0;
          end
else
   begin
          loopfilter_shift_c1 <= {loop_filter_in,3'd0}+{loop_filter_in,2'd0};
          loopfilter_shift_c2 <= loop_filter_in + loop_filter_in ;
end
       
always@(posedge clk_1mhz or negedge rst_n)
begin
if(!rst_n)
    begin
           loop_filter_acc <= 22'd0;
                loop_filter_buf <= 25'd0;
          end               
else

    begin
          loop_filter_buf <= loopfilter_shift_c1;
   end
end
assign loop_filter_out = loop_filter_buf + loop_filter_acc;


图片3:是第一第二路是基带输出,可以看出明显存在频差,第三路为环路滤波器输出。好像基本没作用,参数尝试上下浮动调试但基本没反应,如果进一步扩大调试参数,则数据完全乱掉。
希望有经验的坛友能通过我简短的描述,给出些建议,小弟感谢不已!

justin_n 发表于 2014-9-9 17:33:29

调了半天的参数,属于能够锁定了,时间居然要6ms!!不管怎么样能锁就行,待会继续优化参数。不知道莫元能不能自己领{:lol:}

chenchaoting 发表于 2014-9-9 17:38:26

你可以先用matlab 做仿真,然后再上verilog 仿真,我现在也做这个相关的,不能自己领,莫元送我吧

qianniao29 发表于 2014-9-9 15:08:43

私聊………
页: [1]
查看完整版本: 求助!关于COSTAS环环路滤波器参数设计问题