set_B3G_para.m
上传用户:look542
上传日期:2009-06-04
资源大小:784k
文件大小:6k
源码类别:

传真(Fax)编程

开发平台:

Matlab

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % 设置B3G系统全局变量,参阅本实验室的B3G系统参数文档
  3.     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  4.     % 2.1 OFDMA收发机系统参数定义单元
  5.     % 命名规律: N_xxx: xxx的数目,为非负整数
  6.     %           T_xxx: xxx的持续时间,为非负实数
  7.     %           Idx_xxx: xxx的编号,为整数向量
  8.     %           一些约定俗成的表示, 如fc载频, Bw信道带宽等
  9.     
  10.     % 1) 当TurnOn.AdptMod = 0 时表示所有子载波用调制方式:(不使用信道编码时)
  11.     % 1--BPSK调制, 2--QPSK调制,3--8PSK调制, 4--16QAM调制,6--64QAM调制
  12.     % 2) 当TurnOn.AdptMod = 1 时表示自适应调制,平均每个子载波上调制的比特数
  13.     % 此时最大只能设置为4, 否则调制器无法处理
  14.     Modulation = 2;       
  15.     
  16.     N_sym = 10;                              %  每帧中OFDM符号数,不包括两个前缀OFDM符号
  17.     N_frame = 100;                           %  仿真的帧个数
  18.     
  19.     % 仿真循环开始的Eb_No,定义为每比特的能量Eb
  20.     % 和噪声的单边功率谱密度No的比值, dB值
  21.     Eb_NoStart = 0;                                                          
  22.     Eb_NoInterval = 2;      % 仿真Eb/No的间隔值(dB)
  23.     Eb_NoEnd = 20;          % 仿真Eb/No的终止值(dB)                        
  24.     
  25.     
  26.     fc = 5e9;                               %  载波频率(Hz)
  27.     Bw = 20e6;                              %  基带系统带宽(Hz)
  28.     fs = 20e6;                              %  基带抽样频率
  29.     T_sample = 1/fs;                        %  基带时域样点间隔(s)
  30.     
  31.     N_subc = 1024;                          %  OFDM 子载波总数
  32.     Idx_used = [-400:-1 1:400];             %  使用的子载波编号
  33.     Idx_pilot = [-400:25:-25 25:25:400];    %  导频子载波编号
  34.     
  35.     
  36.     N_used = length(Idx_used);              % 使用的子载波数
  37.     N_pilot = length(Idx_pilot);            % 导频的子载波数
  38.     N_data = N_used - N_pilot;              % 导频的子载波数
  39.     Idx_data = zeros(1,N_data);
  40.     N_tran_sym = 2;
  41.     % 得到数据子载波的编号
  42.     m = 1; n = 1;
  43.     for k  = 1:length(Idx_used)
  44.         if Idx_used(k) ~= Idx_pilot(m);
  45.             Idx_data(n) = Idx_used(k);
  46.             n = n + 1;
  47.         else
  48.             if m ~= N_pilot
  49.                 m = m + 1;
  50.             end
  51.         end
  52.     end
  53.     %  为编程使用方便,调整子载波编号为从1开始,到子载波总数
  54.     Idx_used = Idx_used + N_subc/2 +1;       
  55.     Idx_pilot = Idx_pilot + N_subc/2 +1;
  56.     Idx_data = Idx_data + N_subc/2 +1; 
  57.     % 导频位置值
  58.     PilotValue = ones(N_pilot,1);
  59.     % OFDM循环前缀占有效FFT时间的比例
  60.     PrefixRatio = 1/4;                
  61.     T_sym = T_sample*( (1 + PrefixRatio)*N_subc );
  62.     
  63.     Es = 1;                 % 在16QAM, 64QAM调制方式下,符号能量都被归一化 
  64.     Eb = Es/Modulation;     % 每比特能量
  65.     
  66.     % 假设每个用户的RS码参数相同,均为(204,188,8)                                   
  67.     UserRS_Coding = repmat([255,239,8]',1,N_user);                              
  68.     TraceBackLen = 3;       % 卷积码译码参数
  69.     % 假设每个用户的卷积码trellis 结构体相同
  70.     UserTrellis = repmat( poly2trellis(3,[6 7]),1,N_user );
  71.     N_ant_pair = N_Tx_ant * N_Rx_ant;   % 收发天线对的数目
  72.     
  73.     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  74.     
  75.     % 2.2 信道参数定义单元, 
  76.     % 车辆运动速度, 单位:km/hr , 对应多普勒频移!!
  77.     speed = 0;
  78.     ch = struct('Speed', speed);
  79.     % 多普勒频移, 单位: Hz
  80.     ch.fd = ch.Speed *(1e3/3.6e3)*fc/3e8;  
  81.     % 信道每条径的功率
  82.     ch.Power = 10.^([ 0 -6 -12 -18 -24 -30 ]'./10);
  83.     ch.Power = ch.Power/ sum(ch.Power); % 功率归一化
  84.     % 每条径的时延:ns    
  85.     ch.Delay = [ 0 1400 2800 4200 5600 7000 ]';
  86.     % 每条径对应的样点数
  87.     ch.Delay_sample = round(ch.Delay  * 1e-9 * fs);                 
  88.     ch.N_path = size(ch.Power,1);          % 径数 
  89.     
  90.     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  91.     % 2.3 OFDMA收发机算法选择和参数定义单元
  92.     
  93.     %自适应调制方法 ,当TurnOn.AdptMod == 1时, 
  94.     % 1--自适应调制方法1, 给功率增加最小的子载波分配比特和功率, 子载波分配由AllocMethod确定
  95.     % 2--自适应调制方法2, 给误比特性能降低最小的子载波分配比特和增加功率, 子载波分配由AllocMethod确定
  96.     % 3--自适应调制方法3, 按照信道响应降序排列,子载波间争夺比特和功率, 子载波
  97.     % 分配由AllocMethod确定
  98.     % 当TurnOn.AdptMod == 0 时,此不起作用, 无自适应调制,使用固定子载波分配
  99.     AdptMethod = 1;
  100.     
  101.     % 子载波分配方法, 1--相邻分配, 2--交织分配, 3---跳频分配 ,4--自适应子载波分配
  102.     AllocMethod = 1;
  103.     
  104.     % 自适应调制算法中需要的目标误比特率
  105.     TargetBer = 1e-3;
  106.     
  107.     % 空时编码方法, 1--空时分组码, 2--空时格码
  108.     ST_Code = 1;   
  109.     
  110.     % 单天线信道估计方法
  111.     % 1 - 基本LS算法; 2 - LS的DFT改进算法; 3 - 加判决反馈的LS-DFT
  112.     % 4 - 基本MMSE算法; 5 - MMSE的DFT改进算法; 6 - 加判决反馈的MMSE-DFT
  113.     % 7 - 使用SVD分解算法,8 - Robust算法
  114.     CE_Method = 1 ;                      
  115.     
  116.     % 使用LS或MMSE的DFT改进算法时,所保留的子载波数                                    
  117.     CE_SubcRemain = max(ch.Delay_sample);        % 最大多径时延对应的样点数                 
  118.     % 多天线信道估计方法
  119.     CE_Method2 = 1;
  120.     
  121.     % 定时同步算法
  122.     PreNoiseLen = 500;      % 为定时算法加的前噪样点数
  123.     PostNoiseLen = 500;     % 后噪样点数
  124.     delta_fc = 10e3;         % 载波频偏 (Hz)
  125.     Repeat = 8;              % 第1个训练OFDM符号,时域信号重复部分的数目
  126.     
  127.     % 帧(粗)定时
  128.     % 帧定时算法, 1--单窗口能量检测方法, 2--双窗口能量检测方法 , 3--延时相关方法帧定时
  129.     FrameTiming = 1;         
  130.     Window1 = 128;          % 帧定时算法的窗口宽度
  131.     Threshold1 = 0.4;       % 帧定时算法门限
  132.     Delay1 = 128;            % 帧定时延时相关算法的延时样点数
  133.     
  134.     % 载波频偏粗估计
  135.     WinStart = 128*4;
  136.     WinSize = 128;
  137.     Delay2 = 128;
  138.     
  139.     % 符号定时算法
  140.     Window2 = 256;         % 和已知序列求相关,序列的长度
  141.     TimingAhead = 0;        % 定时提前的样点数
  142.     
  143.     % 载波频偏粗估计
  144.     WinStart2 = 256; 
  145.     WinSize2 = 512;
  146.     Delay3 = 512;
  147.     
  148.