Nco_gen.m
上传用户:shencti
上传日期:2016-08-16
资源大小:16k
文件大小:1k
源码类别:

邮电通讯系统

开发平台:

Matlab

  1. %%NCO数据,用于下变频
  2. function [NCO_I_Quanti,NCO_Q_Quanti]=Nco_gen(Ts,fi,fd_estimate,N)
  3. %------------------------ 载波NCO的计算---------------------%
  4.     %%%%%% 载波NCO参数设定
  5.     Accumu_Bit = 32;            % 相位累积器的位数
  6.     factor = 2^Accumu_Bit;      % 基准频率对应的频率字
  7.     scaled_factor = factor*Ts;  % 单位频率对应的频率
  8.     A_NCO = 1;                  % 载波NCO的幅度
  9.     NCO_Bit = 10;               % NCO量化位数10位
  10.     NCO_L = 2^(NCO_Bit-1); 
  11.     NCO_Step = 1/NCO_L;   
  12.     f_ref = fi + fd_estimate; 
  13.    
  14.     %%%%%% 载波NCO计算
  15.     Freq_Word = floor(f_ref * scaled_factor);                        % 某一个搜索频率点所对应的载波NCO的频率字
  16.      Accumulator=0;
  17.     for n=1:N
  18.          Accumulator = Accumulator+Freq_Word;
  19.          Accumulator = mod(Accumulator,factor);
  20.          %-----高十位查找表
  21.          % 实际送入查找表的是高10位,低22位被砍掉了 fix 表示截取高位
  22.          lookup_index = floor(Accumulator/2^22);
  23.          NCO_I_Quanti(n) = round(cos(2*pi*lookup_index/2^10)*2^9);
  24.          NCO_Q_Quanti(n) = round(sin(2*pi*lookup_index/2^10)*2^9);
  25.     end
  26.     NCO_I_Quanti(find(NCO_L == NCO_I_Quanti)) = NCO_L - 1;
  27.     NCO_Q_Quanti(find(NCO_L == NCO_Q_Quanti)) = NCO_L - 1;
  28.     
  29.