77范文网 - 专业文章范例文档资料分享平台

OFDM调制及解调系统的设计 - 图文(3)

来源:网络收集 时间:2019-05-18 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

N=2^m ;

if length(din)

din=[din,zeros(1,N-length(din))]; end

nxd=bin2dec(fliplr(dec2bin([1:N]-1,m)))+1; y=din(nxd); for mm=1:m Nmr=2^mm; u=1;

WN=exp(-i*2*pi/Nmr); for j=1:Nmr/2 for k=j:Nmr:N kp=k+Nmr/2; t=y(kp)*u; y(kp)=y(k)-t; y(k)=y(k)+t; end

u=u*WN; end end dout=y;

% ************************end of file**********************************

5. 加循环前后缀与升采样

用IFFT输出数据的钱32点作为循环后缀,后32点作为循环前缀。假定射频的采样时钟为2.56MHz,所以需要数据速率匹配,对基带进行升采样。采样过程由两部分组成。第一部分对加了循环前后缀之后的数据进行2倍升采样,所采取的方式是在每个数据中间插入1个0;第二部分用上变频模块CIC内插滤波器对信号进行20倍升采样。

具体实现:

-d_GI_upsample.m

%加循环前后缀和升采样程序

function dout=add_CYC_upsample(din,upsample)

%插入循环前后缀是将每个OFDM符号的前32个数据放

%到符号尾部,将每个OFDM符号的后32个数据放到符号头部, %升采样是通过中间插零的方式实现

%+++++++++++++++++++++++variables++++++++++++++++++++++++++++ % din 输入数据 % upsample 升采样倍数 % dout 输出数据

%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

data_buf=[din(225:256),din,din(1:32)];

temp(1,:)=data_buf;

temp(2:upsample,:)=zeros(upsample-1,length(data_buf)); dout_temp=reshape(temp,1,length(data_buf)*upsample); dout=dout_temp(1:end);

% ************************end of file*********************************

6. 系统的同步

将基带信号送到帧检测模块,目的是系统需要知道是否有信号到达和信号来到后粗定时的位置,当检测到信号来到后同时启动粗定时模块、频偏捕获模块。符号粗定时与粗频偏捕获利用的是前导序列中的短序列来实现的,二细频偏估计采用的是前导序列中的长训练序列实现的。然后,利用前导序列中的Tm1和Tm2进行本地互相关,得到相关峰值,通过峰值所确定的位置确定精确的FFT开窗位置,并通过OFDM数据帧中的循环前后缀的循环特性进行频率跟踪,在频域中,再利用解调出的导频信息进行相位补偿。

实现框图:(具体实现见附件)

7. 主函数模块

%main_OFDM.m

%这是一个相对完整的OFDM通信系统的仿真设计,包括编码,调制,IFFT, %上下变频,高斯信道建模,FFT,PAPR抑制,各种同步,解调和解码等模 %块,并统括系统性能的仿真验证了系统设计的可靠性。

clear all close all clc

%++++++++++++++++++++++++++全局变量++++++++++++++++++++++++++++++ % seq_num 表示当前帧是第几帧 % count_dds_up 上变频处的控制字的累加

% count_dds_down 下变频处的控制字的累加(整整) % count_dds_down_tmp 下变频处的控制字的累加(小数) % dingshi 定时同步的定位

% m_syn 记录定时同步中的自相关平台 global seq_num global count_dds_up global count_dds_down

global count_dds_down_tmp global dingshi global m_syn

%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

% SNR_Pre 设定用于仿真的信噪比的初值 % interval_SNR 设定用于仿真的信噪比间隔

% frame_num 每一个信噪比下仿真的数据帧数 % err_int_final 用于计算每帧出现的误比特数

% fwc_down 设定的接收机初始载波频率控制字

% fre_offset 设定接收机初始载波频率偏移调整量(单位为Hz) % k0 每次进入卷积编码器的信息比特数 % G 卷积编码的生成矩阵 SNR_Pre=-5;

interval_SNR=1;

for SNR_System=SNR_Pre:interval_SNR:5

frame_num=152; dingshi=250; err_int_final=0; fwc_down=16.050; fre_offset=0; k0=1;

G=[1 0 1 1 0 1 1;1 1 1 1 0 0 1 ];

disp('--------------start-------------------');

for seq_num=1:frame_num, %frame_num 帧数

%+++++++++++++++++++++++以下为输入数据部分+++++++++++++++++++++++ datain=randint(1,90);

%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

%++++++++++++++++++++++以下为信道卷积编码部分+++++++++++++++++++++ encodeDATA=cnv_encd(G,k0,datain);

%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

%+++++++++++++++++++++++++++信道交织编码+++++++++++++++++++++++++ interlacedata=interlacecode(encodeDATA,8,24);

%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

%+++++++++++++++++++++++++以下为QPSK调制部分+++++++++++++++++++++ QPSKdata=qpsk(interlacedata);

%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

%+++++++++++++++++++++++++++生成训练序列+++++++++++++++++++++++++ if seq_num<3

trainsp_temp=seq_train(); end

%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

%++++++++++++++++++++++++++++插入导频++++++++++++++++++++++++++++ PILOT=(1+j);

m_QPSKdata=QPSKdata;

data2fft_temp=[m_QPSKdata(1:8),PILOT,m_QPSKdata(9:16),PILOT,m_QPSKdata(17:24),PILOT,m_QPSKdata(25:32),PILOT,m_QPSKdata(33:40),PILOT,m_QPSKdata(41:48),m_QPSKdata(49:56),PILOT,m_QPSKdata(57:64),PILOT,m_QPSKdata(65:72),PILOT,m_QPSKdata(73:80),PIL

OT,m_QPSKdata(81:88),PILOT,m_QPSKdata(89:end)];

%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

trainsp_temp2=[trainsp_temp,zeros(1,128)];

trainsp=[trainsp_temp2(65:256),trainsp_temp2(1:64)];

%++++++++++++++++++++++++++降PAPR矩阵变换++++++++++++++++++++++++ matix_data=nyquistimp_PS();

matrix_mult=data2fft_temp*matix_data;

%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

data2fft2=[matrix_mult(65:128),zeros(1,128),matrix_mult(1:64)];

%++++++++++++++++++++++++++++ifft运算+++++++++++++++++++++++++++ if seq_num==1 ifftin=trainsp; elseif seq_num==2 ifftin=trainsp; else

ifftin=data2fft2; end

IFFTdata=fft_my(conj(ifftin)/256); IFFTdata=conj(IFFTdata); % figure

% plot(real(IFFTdata)) % xlabel('realIFFTdata') % figure

% plot(imag(IFFTdata)) % xlabel('imagIFFTdata')

%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

%+++++++++++++++++++以下为插入循环前后缀,2倍升采样+++++++++++++++ data2fir=add_CYC_upsample(IFFTdata,2);

% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

% +++++++++++++++++++++++++fir低通滤波++++++++++++++++++++++++++ guiyi_a=[0.0017216 0.010162 0.025512 0.028801 -0.0059219 -0.060115 -0.0496 0.091431 0.29636 0.3956 0.29636 0.091431 -0.0496 -0.060115 -0.0059219 0.028801 0.025512 0.010162 0.0017216 ];

%抽样截止频率为128kHZ,通带截止频率为20kHZ,阻带截止频率为40kHZ,带内纹波动小于1dB,带外衰减100dB

txFIRdatai=filter(guiyi_a,1,real(data2fir)); txFIRdataq=filter(guiyi_a,1,imag(data2fir));

% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库OFDM调制及解调系统的设计 - 图文(3)在线全文阅读。

OFDM调制及解调系统的设计 - 图文(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/631113.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: