16QAM的调制与解调要点
16qam_星形和矩形星座图调制解调matlab代码

16qam_星形和矩形星座图调制解调matlab代码%% ------------------------------------------------------------ % 软件无线电课程设计%% 方形、星形16QAM调制解调仿真%%%------------------------------------------------------------ %%主程序clcclear%% 定义参数fd=250*10^6; %码元速率250Mfs=2500*10^6; %滤波器采样率fc=2500*10^6; %载波频率2.5Gf=10000*10^6; %对载波采样data_len=200000; %数据长度sym_len=data_len/4; %码元序列长度M_QAM=16;%QAM数k=log2(M_QAM);SNR=1:12;%白噪声信噪比,%% ------------------------------------------------------------ bit_tx=randint(1,data_len);%产生随机序列echo off;rec_qam16=QamMod(bit_tx,16); %方形16QAM调制star_qam16=SrarQamMod(bit_tx); %星形16QAM调制base_rec=base_shape(fd,fs,f,rec_qam16); %基带成型滤波base_star=base_shape(fd,fs,f,star_qam16); %基带成型滤波for i=1:length(SNR) %信噪比从1dB到12dB计算误码率SNR_=i%方形映射16QAMrf_rec_qam16=CarrierMod(fc,f,base_rec); %载波调制rf_rec_qam16_n=awgn(rf_rec_qam16,SNR(i),'measured'); %加噪声[rec_qam16_rx base_rec_rx]=CarrierDemod(fd,fs,fc,f,rf_rec_qam16_n); %载波解调bit_rec_rx=QamDemod(rec_qam16_rx,16); %MQAM解调[num_qam16,perr_qam16_rec(i)]=biterr(bit_tx,bit_rec_rx);%误码率qam16_data_rec(i,:)=rec_qam16_rx;%scatterplot(rec_qam16_rx);%星形映射16QAMrf_star_qam16=CarrierMod(fc,f,base_star); %载波调制rf_star_qam16_n=awgn(rf_star_qam16,SNR(i),'measured'); %加噪声[star_qam16_rxbase_star_rx]=CarrierDemod(fd,fs,fc,f,rf_star_qam16_n); %载波解调bit_star_rx=StarQamDemod(star_qam16_rx); %MQAM解调[num_qam16,perr_qam16_star(i)]=biterr(bit_tx,bit_star_rx);%误码率qam16_data_star(i,:)=star_qam16_rx;%scatterplot(star_qam16_rx);end%% 理论误码率计算SNRtheo=0:0.1:length(SNR); for i=1:length(SNRtheo) SNRdec=10.^(SNRtheo(i)/10);theo_perr_qam16(i)=(3/8)*erfc(sqrt(SNRdec*2/5)); end%% 基带波形N=200;n=1:N;t=1:N*10;%发送端波形figure;stem(n,bit_tx(n)); title('发送序列'); %发送序列figure('Name','发送端基带信号');subplot(411);plot(t,real(base_rec(t))); title('方形映射-Q路'); subplot(412);plot(t,imag(base_rec(t))); title('方形映射-I路'); subplot(413);plot(t,real(base_star(t))); title('星形映射-Q路'); subplot(414);plot(t,imag(base_star(t))); title('星形映射-I路'); %接收端波形figure;subplot(211);stem(n,bit_rec_rx(n)); title('方形接收序列');subplot(212);stem(n,bit_star_rx(n)); title('星形接收序列');figure('Name','接收端基带信号');subplot(411);plot(t,real(base_rec_rx(t))); title('方形映射-Q路');subplot(412);plot(t,imag(base_rec_rx(t))); title('方形映射-I路');subplot(413);plot(t,real(base_star_rx(t))); title('星形映射-Q路');subplot(414);plot(t,imag(base_star_rx(t))); title('星形映射-I路');%基带眼图N1=20000;Tn=f/fd;eye_rex=base_rec(1:N1);eyediagram(eye_rex,Tn*4,Tn); title('方形基带眼图');eye_star=base_star(1:N1);eyediagram(eye_star,Tn*4,Tn); title('星形基带眼图');%% 接收端星座图%scatterplot(qam16_data_rec(12,:)); figure('Name','方形16QAM接收端星座图');for i=3:3:12subplot(2,2,i/3);plot(real(qam16_data_rec(i,:)),imag(qam16_data_rec(i,:)),'.'); xmax=5;axis([-xmax xmax -xmax xmax])title(['Snr=',num2str(SNR(i)),' dB']);endfigure('Name','星形16QAM接收端星座图');for i=3:3:12subplot(2,2,i/3);plot(real(qam16_data_star(i,:)),imag(qam16_data_star(i,:)),'.'); xmax=3;axis([-xmax xmax -xmax xmax])grid on; title(['Snr=',num2str(SNR(i)),' dB']);end%% 功率谱密度f_plot;%% 误码率分析%16QAM误码率曲线figure('Name','16QAM误码性能对比');% semilogy(SNRtheo,theo_perr_qam16); % hold on;semilogy(SNR,perr_qam16_rec,'*'); hold on;semilogy(SNR,perr_qam16_star,'o'); xlabel('SNR in dB');ylabel('Prb of Err');legend('方形16QAM','星形16QAM');title('16QAM误码性能对比');%-------------------------------------------------------------------------------%% 基带成型function base_info=base_shape(fd,fs,f,seq_16QAM) %平方根升余弦滤波器,滚降系数0.5,延迟3个采样点flt=rcosine(fd,fs,'sqrt',0.5);%I路和Q路seq_Q=real(seq_16QAM);seq_I=imag(seq_16QAM);%增采样R=fs/fd;up_seq_Q=upsample(seq_Q,R);up_seq_I=upsample(seq_I,R);%升余弦调制rcos_Q=conv(up_seq_Q,flt);rcos_I=conv(up_seq_I,flt);%提升rcos_Q_up=interp(rcos_Q,f/fs);rcos_I_up=interp(rcos_I,f/fs);base_info=rcos_Q_up+j*rcos_I_up;%--------------------------------------------------------------------%% 载波解调function [data_rx base_rx]=CarrierDemod(fd,fs,fc,f,receive)%% 分两路乘正交高频载波rc_length=length(receive);flt=rcosine(fd,fs,'sqrt',0.5);t=0:rc_length-1;rc_Q=receive .* sin(2*pi*fc*t/f); rc_I=receive .* cos(2*pi*fc*t/f);%减采样后根升余弦匹配滤波,注意对齐采样点down_Q=downsample([0 rc_Q],f/fs);down_I=downsample(rc_I,f/fs);low_Q_rcos=conv(down_Q,flt);low_I_rcos=conv(down_I,flt);base_rx=low_Q_rcos(1:length(low_I_rcos))+j*low_I_rcos;%两次根升余弦滤波延迟,定位初始信号位置%delay+1:end-delay-1R=fs/fd;delay=3*R*2;rc_Q_seq=(downsample(low_Q_rcos(delay+1:end-delay-1),R));rc_I_seq=(downsample(low_I_rcos(delay+1:end-delay-1),R)); %类型转换data_rx=rc_Q_seq+j*rc_I_seq;%--------------------------------------------------------------------------%% 载波调制function transmit=CarrierMod(fc,f,base)%载波调制t=0:length(base)-1;high_freq_Q=real(base) .* sin(2*pi*fc*t/f);high_freq_I=imag(base) .* cos(2*pi*fc*t/f);transmit=high_freq_Q+high_freq_I;%------------------------------------------------------------------------------%% QAM解调程序,将MQAM码元还原为二进制数据% 入口参数:data_QAM:QAM码元数据% M_QAM:MQAM中M的大小% 出口参数:二进制数据比特流%------------------------------------------------------------------------function data_out=QamDemod(data_QAM,M_QAM)k=log2(M_QAM);%每个M进制码元的bit数data_len=length(data_QAM);%码元长度%------------------------------------------------------------------- %QAM信号放缩至与发送端相同比例data_temp=data_QAM(find(real(data_QAM>0)));aver=mean(real(data_temp));data_Qam_temp=data_QAM/aver*(2^(k/2-1));%------------------------------------------------------------------------%平移到第一象限data_Qam_temp2=(data_Qam_temp+(2^(k/2)-1)*(1+j))/2; %---------------------------------------------------------------------- %将实部虚部分别映射为二进制数据%实部data_real=round(real(data_Qam_temp2));%实部判决data_real(find(data_real>(2^(k/2)-1)))=2^(k/2)-1;%大于2^(k/2)-1的数据判定为2^(k/2)-1 data_real(find(data_real<0))=0;%小于0的数据判为0 bit_real=abs(dec2bin(data_real))-'0'; %虚部data_imag=round(imag(data_Qam_temp2));%虚部判决data_imag(find(data_imag>(2^(k/2)-1)))=2^(k/2)-1;%大于2^(k/2)-1的数据判定为2^(k/2)-1 data_imag(find(data_imag<0))=0;%小于0的数据判为0 bit_imag=abs(dec2bin(data_imag))-'0'; %------------------------------------------------------------------------%还原为二进制比特流bit_rec=[bit_real,bit_imag]';data_out=reshape(bit_rec,1,data_len*k);%-------------------------------------------------------------------------------------------------------------%% QAM调制程序,实现二进制到MQam调制% 入口参数:binary:二进制数据% M_QAM:MQAM中M的大小% 返回参数:MQAM码元%------------------------------------------------------------------------function data_M = QamMod(binary,M_QAM)k=log2(M_QAM);%每个M进制码元的bit数data_len=length(binary);%比特长度binary_rec=reshape(binary,k,data_len/k)';%转化为data_len/k行,k列,的矩阵,以便转化为16进制M进制%计算实部data_str1=num2str(binary_rec(:,1:k/2));data_m_real=bin2dec(data_str1);%计算虚部data_str2=num2str(binary_rec(:,k/2+1:k));data_m_imag=bin2dec(data_str2);%实部虚部映射到MQamdata_M=((data_m_real*2-2^(k/2)+1)+j*(data_m_imag*2-2^(k/2)+1)).';%---------------------------------------------------------------------------------%% 星形16QAM映射function data_m16 = SrarQamMod(binary) %binary=randint(1,100);%产生随机序列data_len=length(binary);%比特长度binary_rec=reshape(binary,4,data_len/4)';%转化为data_len/4行,4列,的矩阵,以便转化为16进制data_str=num2str(binary_rec);data_dec=bin2dec(data_str);data_mm16=(floor(data_dec/8)+1).*exp(j*45/180*pi*mod(data_dec,8));data_m16=reshape(data_mm16,1,data_len/4);%------------------------------------------------------------------------------%% 星形16QAM解调function data_bit = StarQamDemod(qam_rev)%qam_rev=xing_qam16_noise(1:10);am=abs(qam_rev);%幅度判定am(find(am>2))=2;%幅度大于2的判定为2am(find(am<1.5))=1;%幅度大于2的判定为2%相位判定ang=angle(qam_rev)/pi*180;%将-180度到0度变为180度到360度ang(find(ang<0))=ang(find(ang<0))+360; ang_n=round(ang/45);ang_n(find(ang_n>7))=0;data_dec=8*(round(am)-1)+ang_n;%data_dec(find(data_dec>15))=15;%大于15的判定为15%data_dec(find(data_dec<0))=0;%小于0的判定为0data_bit_rec=dec2bin(data_dec);data_bit=reshape(data_bit_rec',1,length(qam_rev)*4)-'0';。
基于FPGA的16QAM调制解调电路设计

编号:审定成绩:重庆邮电大学毕业设计(论文)设计(论文)题目:基于FPGA的16QAM调制解调电路设计学院名称:自动化学生姓名:赵国强专业:机械设计制造及其自动化班级:0841003学号:2010213292指导教师:周围答辩组负责人:张开碧填表时间:2014 年 5 月重庆邮电大学教务处制摘要正交振幅调制(QAM)技术有着非常广泛的应用范围,不仅在移动通信领域应用,而且在有线电视传输、数字视频广播卫星通信(DVB-S)等领域也都得到广泛应用。
它在调制过程中利用了相位和幅度两维空间资源,比只利用单一维度空间资源的PSK和ASK调制方式频谱利用率高,不仅如此,QAM的星座点比PSK的星座点更分散,星座点之间的距离因此更大,所以能提供更好的传输性能。
本文在对QAM调制解调的基本原理、调制端的基带成形理论研究的基础上,通过Matlab 软件的Simulink仿真平台实现了16QAM调制解调系统的建立及实验验证。
之后利用Alera 公司的Quartus II软件加载ModelSim作为软件开发环境,设计并实现了16QAM调制解调系统的串并转换、差分和星座映射、DDS和加法器等关键模块。
关于载波信号发生器的设计,本文釆取传统DDS采用的正弦查表来实现DDS中相位幅度的转换。
本文主要研究了基于FPGA的16QAM调制与解调的实现。
釆用Verilog硬件描述语言对16QAM调制解调系统中的关键模块进行描述,完成了功能上的仿真验证,通过对比验证了设计的正确性,为下一步的硬件实现打下了很好的基础。
说明了QAM调制和解调的原理,,然后对各系统组成模块分析与仿真之后提出基于FPGA的16QAM调制与解调的总体设计方案。
最后用Verilog语言编写程序完成了整个系统的仿真,并对编好的程序其进行了编译调试。
首先对16QAM调制解调总体进行了系统仿真;然后用Verilog语言在Quartus II软件平台下完成了系统各功能模块的编写、功能与时序仿真和综合,最后把各模块组成的顶层原理图编译成的程序下载到EPMC20T100C5芯片上,手动输入基带信号,经过芯片处理后,基带信号得以有效恢复。
16-QAM基带传输系统.

16-QAM 基带传输系统1. 引言随着通信业迅速的发展,传统通信系统的容量已经越来越不能满足当前用户的要求,而可用频谱资源有限,业不能靠无限增加频道数目来解决系统容量问题。
另外,人们亦不能满足通信单一的语音服务,希望能利用移动电话进行图像等多媒体信息的通信。
但由于图像通信比电话需要更大的信道容量。
高效、可靠的数字传输系统对于数字图像通信系统的实现很重要,正交幅度调制QAM 是数字通信中一种经常利用的数字调制技术,尤其是多进制QAM 具有很高的频带利用率,在通信业务日益增多使得频带利用率成为主要矛盾的情况下,正交幅度调制方式是一种比较好的选择。
为了加深对QAM 调制解调数字传输系统的理解,本实验对整个16-QAM 基带传输系统的仿真,结构框图如图1所示:2. QAM 调制解调原理2.1 QAM 调制正交幅度调制QAM 是数字通信中一种经常利用的数字调制技术,尤其是多进制QAM 具有很高的频带利用率,在通信业务日益增多使得频带利用率成为主要矛盾的情况下,正交幅度调制方式是一种比较好的选择。
正交幅度调制(QAM )信号采用了两个正交载波t f t f c c ππ2sin 2cos 和,每一个载波都被一个独立的信息比特序列所调制。
发送信号波形如图2.1.1所示,2sin )(2cos )()(t f t g A t f t g A t u c T ms c T mc m ππ+= M m ,...,2,1=图2.1.1 M=16QAM 信号星座图式中{mc A }和{ms A }是电平集合,这些电平是通过将k 比特序列映射为信号振幅而获得的。
例如一个16位正交幅度调制信号的星座图如下图所示,该星座是通过用M =4PAM 信号对每个正交载波进行振幅调制得到的。
利用PAM 分别调制两个正交载波可得到矩形信号星座。
QAM 可以看成是振幅调制和相位调制的结合。
因此发送的QAM 信号波形可表示为),2cos()()(n c T m mn t f t g A t u θπ+= ,,....,2,11M m = ,,....,2,12M n = 如果,211k M =,222k M =那么QAM 方法就可以达到以符号速率)(21k k R B +同时发送12221log M M k k =+个二进制数据。
毕业设计(论文)-基于systemview的16QAM调制解调系统

目录第一章绪论 (3)1.1 QAM简介 (3)1. 2 systemview软件介绍及特点 (3)第二章正交振幅调制 (5)2.1 MQAM信号的星座图 (5)2. 2 QAM的调制解调原理 (7)2. 3 QAM的误码率性能 (8)2. 4 QAM的改进方案 (9)第三章 SYSTEMVIEW概述 (10)3. 1 systemview基本模块库介绍 (10)第四章 16QAM调制解调系统实现与仿真 (12)4.1 16QAM 调制模块的模型建立与仿真 (14)4.1.1 信号源部分 (14)4.1.2 串并转换模块 (15)4.1.3 2/4电平转换模块 (17)4.1.4 其余模块与调制部分的结果 (19)4.2 16QAM解调模块的模型建立与仿真 (22)4.2.1 相干解调 (22)4.2.2 4/2电平判决与毛刺消除仿真电路 (25)4.2.3 并串转换与最终解调结果对比 (30)第五章 16QAM抗噪声性能研究 (34)5.1 16QAM抗噪声性能的systemview仿真 (34)5.2 16QAM抗噪声性能的matlab仿真 (38)第六章结论与总结 (41)6.1 本设计总结 (41)6.2 对设计软件的不足与实验感想 (41)参考文献 (43)第一章绪论1.1 QAM简介在现代通信中,提高频谱利用率一直是人们关注的焦点之一。
近年来,随着通信业务需求的迅速增长,寻找频谱利用率高的数字调制方式已成为数字通信系统设计、研究的主要目标之一。
正交振幅调制QAM(Quadrature Amplitude Modulation)就是一种频谱利用率很高的调制方式,其在中、大容量数字微波通信系统、有线电视网络高速数据传输、卫星通信系统等领域得到了广泛应用。
在移动通信中,随着微蜂窝和微微蜂窝的出现,使得信道传输特性发生了很大变化。
过去在传统蜂窝系统中不能应用的正交振幅调制也引起人们的重视。
QAM数字调制器作为DVB系统的前端设备,接收来自编码器、复用器、DVB网关、视频服务器等设备的TS流,进行RS编码、卷积编码和QAM数字调制,输出的射频信号可以直接在有线电视网上传送,同时也可根据需要选择中频输出。
基于FPGA的16QAM调制解调

基于FPGA的16QAM调制解调器的实现组员:目录摘要3一、QAM调制原理3二、QAM的解调原理4三、16QAM调制器的实现51 系统总体框图 52 时钟分频 63 串并转换 64 差分编码和星座映射 65 DDS和线性加法器7四、QAM解调模块设计71 低通滤波器模块设计72 采样判决模块设计8五、16QAM调制器的仿真结果9四、附录121 顶层模块122 时钟分频模块133 串并转换模块144 差分模块和星座映射模块155 DDS 和加法器模块176 testbench 源程序227 用matlab 进行频谱分析23摘要QAM(Quadrature Amplitude Modulation)是一种新的调制技术,它在调制过程中利用了相位和幅度两维空间资源,比只利用单一维度空间资源的PSK 和ASK 调制方式频谱利用率高,不仅如此,QAM 的星座点比PSK 的星座点更分散,星座点之间的距离因此更大,所以能提供更好的传输性能。
随着第三代移动通信的兴起,传输容量增大,多进制正交幅度调制MQAM (Multiple Quadrature Amplitude Modulation)将得到更加广泛的运用。
本文主要研究了基于FPGA 的16QAM 调制与解调的实现。
首先说明了QAM 调制和解调的原理,然后对各系统组成模块分析与仿真之后提出基于FPGA 的16QAM 调制与解调的总体设计方案。
最后用Verilog 语言编写程序完成了整个系统的仿真,并对编好的程序其进行了编译调试。
文中详细介绍了载波恢复、正交相干解调、FIR 低通滤波器和采样判决的基本原理和设计方法。
关键词:正交相干解调,混频,FPGA ,QAM一、QAM 调制原理正交幅度调制(QAM)是一种把数字信息包含在载波的振幅和相位中的数字调制方式,也是ASK 和PSK 的结合。
式(1)表示了QAM 信号,它还可用式(2)来表示在QAM 中是如何结合幅度和相位调制的。
16QAM

1
%% 进行调制 y = qammod(xsym,M); % 16-QAM.此处为方形星 座图 %% 发送的基带信号 ytx = y;
2
%% 信道 % 在AWGN信道传输信号 %% 比特到符号的映射 % 将向量x中的比特转换成k比特长的符号流 EbNo = 10; % 信噪比定义(In dB) snr = EbNo + 10*log10(k) - 10*log10(nsamp); xsym = bi2de(reshape(x,k,length(x)/k).','left-msb'); ynoisy = awgn(ytx,snr,'measured'); %加噪声 %% 接收信号 yrx = ynoisy;
• SystemView:用SystemView,可以构造各种复杂的模
拟、数字、数模混合系统,各种多速率系统,用户在进行 系统设计时,只需从System View配置的图标库中调出有 关图标并进行参数设置,完成图标间的连线,然后运行仿 真操作,最终以时域波形、眼图、功率谱等形式给出系统 的仿真分析结果。
3
16QAM产生方法
1
• 正交调幅法:两路正交的四电平振幅键控信 号叠加而成。 • 复合相位法:两路正交的四相位移相键控信 2 号叠加而成。 • 16进制正交调幅法是一种振幅调制和相位调 制相结合的调制方式,即用16进制数字基带 信号去控制去控制载波的振幅和相位。
3
16QAM调制原理
1
2
速率为Rb的二进制码元序列经过串/并转换分为两路,再经 过2/4电平转换转换为四电平信号,这两路四电平信号分 别与正交载波相乘,完成正交调制,将两路信号叠加后产 3 生16QAM信号。
1
16qam_星形和矩形星座图调制解调matlab代码

16qam_星形和矩形星座图调制解调matlab代码%% ------------------------------------------------------------ % 软件无线电课程设计%% 方形、星形16QAM调制解调仿真%%%------------------------------------------------------------ %%主程序clcclear%% 定义参数fd=250*10^6; %码元速率250Mfs=2500*10^6; %滤波器采样率fc=2500*10^6; %载波频率2.5Gf=10000*10^6; %对载波采样data_len=200000; %数据长度sym_len=data_len/4; %码元序列长度M_QAM=16;%QAM数k=log2(M_QAM);SNR=1:12;%白噪声信噪比,%% ------------------------------------------------------------ bit_tx=randint(1,data_len);%产生随机序列echo off;rec_qam16=QamMod(bit_tx,16); %方形16QAM调制star_qam16=SrarQamMod(bit_tx); %星形16QAM调制base_rec=base_shape(fd,fs,f,rec_qam16); %基带成型滤波base_star=base_shape(fd,fs,f,star_qam16); %基带成型滤波for i=1:length(SNR) %信噪比从1dB到12dB计算误码率SNR_=i%方形映射16QAMrf_rec_qam16=CarrierMod(fc,f,base_rec); %载波调制rf_rec_qam16_n=awgn(rf_rec_qam16,SNR(i),'measured'); %加噪声[rec_qam16_rx base_rec_rx]=CarrierDemod(fd,fs,fc,f,rf_rec_qam16_n); %载波解调bit_rec_rx=QamDemod(rec_qam16_rx,16); %MQAM解调[num_qam16,perr_qam16_rec(i)]=biterr(bit_tx,bit_rec_rx);%误码率qam16_data_rec(i,:)=rec_qam16_rx;%scatterplot(rec_qam16_rx);%星形映射16QAMrf_star_qam16=CarrierMod(fc,f,base_star); %载波调制rf_star_qam16_n=awgn(rf_star_qam16,SNR(i),'measured'); %加噪声[star_qam16_rxbase_star_rx]=CarrierDemod(fd,fs,fc,f,rf_star_qam16_n); %载波解调bit_star_rx=StarQamDemod(star_qam16_rx); %MQAM解调[num_qam16,perr_qam16_star(i)]=biterr(bit_tx,bit_star_rx);%误码率qam16_data_star(i,:)=star_qam16_rx;%scatterplot(star_qam16_rx);end%% 理论误码率计算SNRtheo=0:0.1:length(SNR); for i=1:length(SNRtheo) SNRdec=10.^(SNRtheo(i)/10);theo_perr_qam16(i)=(3/8)*erfc(sqrt(SNRdec*2/5)); end%% 基带波形N=200;n=1:N;t=1:N*10;%发送端波形figure;stem(n,bit_tx(n)); title('发送序列'); %发送序列figure('Name','发送端基带信号');subplot(411);plot(t,real(base_rec(t))); title('方形映射-Q路'); subplot(412);plot(t,imag(base_rec(t))); title('方形映射-I路'); subplot(413);plot(t,real(base_star(t))); title('星形映射-Q路'); subplot(414);plot(t,imag(base_star(t))); title('星形映射-I路'); %接收端波形figure;subplot(211);stem(n,bit_rec_rx(n)); title('方形接收序列');subplot(212);stem(n,bit_star_rx(n)); title('星形接收序列');figure('Name','接收端基带信号');subplot(411);plot(t,real(base_rec_rx(t))); title('方形映射-Q路');subplot(412);plot(t,imag(base_rec_rx(t))); title('方形映射-I路');subplot(413);plot(t,real(base_star_rx(t))); title('星形映射-Q路');subplot(414);plot(t,imag(base_star_rx(t))); title('星形映射-I路');%基带眼图N1=20000;Tn=f/fd;eye_rex=base_rec(1:N1);eyediagram(eye_rex,Tn*4,Tn); title('方形基带眼图');eye_star=base_star(1:N1);eyediagram(eye_star,Tn*4,Tn); title('星形基带眼图');%% 接收端星座图%scatterplot(qam16_data_rec(12,:)); figure('Name','方形16QAM接收端星座图');for i=3:3:12subplot(2,2,i/3);plot(real(qam16_data_rec(i,:)),imag(qam16_data_rec(i,:)),'.'); xmax=5;axis([-xmax xmax -xmax xmax])title(['Snr=',num2str(SNR(i)),' dB']);endfigure('Name','星形16QAM接收端星座图');for i=3:3:12subplot(2,2,i/3);plot(real(qam16_data_star(i,:)),imag(qam16_data_star(i,:)),'.'); xmax=3;axis([-xmax xmax -xmax xmax])grid on; title(['Snr=',num2str(SNR(i)),' dB']);end%% 功率谱密度f_plot;%% 误码率分析%16QAM误码率曲线figure('Name','16QAM误码性能对比');% semilogy(SNRtheo,theo_perr_qam16); % hold on;semilogy(SNR,perr_qam16_rec,'*'); hold on;semilogy(SNR,perr_qam16_star,'o'); xlabel('SNR in dB');ylabel('Prb of Err');legend('方形16QAM','星形16QAM');title('16QAM误码性能对比');%-------------------------------------------------------------------------------%% 基带成型function base_info=base_shape(fd,fs,f,seq_16QAM) %平方根升余弦滤波器,滚降系数0.5,延迟3个采样点flt=rcosine(fd,fs,'sqrt',0.5);%I路和Q路seq_Q=real(seq_16QAM);seq_I=imag(seq_16QAM);%增采样R=fs/fd;up_seq_Q=upsample(seq_Q,R);up_seq_I=upsample(seq_I,R);%升余弦调制rcos_Q=conv(up_seq_Q,flt);rcos_I=conv(up_seq_I,flt);%提升rcos_Q_up=interp(rcos_Q,f/fs);rcos_I_up=interp(rcos_I,f/fs);base_info=rcos_Q_up+j*rcos_I_up;%--------------------------------------------------------------------%% 载波解调function [data_rx base_rx]=CarrierDemod(fd,fs,fc,f,receive)%% 分两路乘正交高频载波rc_length=length(receive);flt=rcosine(fd,fs,'sqrt',0.5);t=0:rc_length-1;rc_Q=receive .* sin(2*pi*fc*t/f); rc_I=receive .* cos(2*pi*fc*t/f);%减采样后根升余弦匹配滤波,注意对齐采样点down_Q=downsample([0 rc_Q],f/fs);down_I=downsample(rc_I,f/fs);low_Q_rcos=conv(down_Q,flt);low_I_rcos=conv(down_I,flt);base_rx=low_Q_rcos(1:length(low_I_rcos))+j*low_I_rcos;%两次根升余弦滤波延迟,定位初始信号位置%delay+1:end-delay-1R=fs/fd;delay=3*R*2;rc_Q_seq=(downsample(low_Q_rcos(delay+1:end-delay-1),R));rc_I_seq=(downsample(low_I_rcos(delay+1:end-delay-1),R)); %类型转换data_rx=rc_Q_seq+j*rc_I_seq;%--------------------------------------------------------------------------%% 载波调制function transmit=CarrierMod(fc,f,base)%载波调制t=0:length(base)-1;high_freq_Q=real(base) .* sin(2*pi*fc*t/f);high_freq_I=imag(base) .* cos(2*pi*fc*t/f);transmit=high_freq_Q+high_freq_I;%------------------------------------------------------------------------------%% QAM解调程序,将MQAM码元还原为二进制数据% 入口参数:data_QAM:QAM码元数据% M_QAM:MQAM中M的大小% 出口参数:二进制数据比特流%------------------------------------------------------------------------function data_out=QamDemod(data_QAM,M_QAM)k=log2(M_QAM);%每个M进制码元的bit数data_len=length(data_QAM);%码元长度%------------------------------------------------------------------- %QAM信号放缩至与发送端相同比例data_temp=data_QAM(find(real(data_QAM>0)));aver=mean(real(data_temp));data_Qam_temp=data_QAM/aver*(2^(k/2-1));%------------------------------------------------------------------------%平移到第一象限data_Qam_temp2=(data_Qam_temp+(2^(k/2)-1)*(1+j))/2; %---------------------------------------------------------------------- %将实部虚部分别映射为二进制数据%实部data_real=round(real(data_Qam_temp2));%实部判决data_real(find(data_real>(2^(k/2)-1)))=2^(k/2)-1;%大于2^(k/2)-1的数据判定为2^(k/2)-1 data_real(find(data_real<0))=0;%小于0的数据判为0 bit_real=abs(dec2bin(data_real))-'0'; %虚部data_imag=round(imag(data_Qam_temp2));%虚部判决data_imag(find(data_imag>(2^(k/2)-1)))=2^(k/2)-1;%大于2^(k/2)-1的数据判定为2^(k/2)-1 data_imag(find(data_imag<0))=0;%小于0的数据判为0 bit_imag=abs(dec2bin(data_imag))-'0'; %------------------------------------------------------------------------%还原为二进制比特流bit_rec=[bit_real,bit_imag]';data_out=reshape(bit_rec,1,data_len*k);%-------------------------------------------------------------------------------------------------------------%% QAM调制程序,实现二进制到MQam调制% 入口参数:binary:二进制数据% M_QAM:MQAM中M的大小% 返回参数:MQAM码元%------------------------------------------------------------------------function data_M = QamMod(binary,M_QAM)k=log2(M_QAM);%每个M进制码元的bit数data_len=length(binary);%比特长度binary_rec=reshape(binary,k,data_len/k)';%转化为data_len/k行,k列,的矩阵,以便转化为16进制M进制%计算实部data_str1=num2str(binary_rec(:,1:k/2));data_m_real=bin2dec(data_str1);%计算虚部data_str2=num2str(binary_rec(:,k/2+1:k));data_m_imag=bin2dec(data_str2);%实部虚部映射到MQamdata_M=((data_m_real*2-2^(k/2)+1)+j*(data_m_imag*2-2^(k/2)+1)).';%---------------------------------------------------------------------------------%% 星形16QAM映射function data_m16 = SrarQamMod(binary) %binary=randint(1,100);%产生随机序列data_len=length(binary);%比特长度binary_rec=reshape(binary,4,data_len/4)';%转化为data_len/4行,4列,的矩阵,以便转化为16进制data_str=num2str(binary_rec);data_dec=bin2dec(data_str);data_mm16=(floor(data_dec/8)+1).*exp(j*45/180*pi*mod(data_dec,8));data_m16=reshape(data_mm16,1,data_len/4);%------------------------------------------------------------------------------%% 星形16QAM解调function data_bit = StarQamDemod(qam_rev)%qam_rev=xing_qam16_noise(1:10);am=abs(qam_rev);%幅度判定am(find(am>2))=2;%幅度大于2的判定为2am(find(am<1.5))=1;%幅度大于2的判定为2%相位判定ang=angle(qam_rev)/pi*180;%将-180度到0度变为180度到360度ang(find(ang<0))=ang(find(ang<0))+360; ang_n=round(ang/45);ang_n(find(ang_n>7))=0;data_dec=8*(round(am)-1)+ang_n;%data_dec(find(data_dec>15))=15;%大于15的判定为15%data_dec(find(data_dec<0))=0;%小于0的判定为0data_bit_rec=dec2bin(data_dec);data_bit=reshape(data_bit_rec',1,length(qam_rev)*4)-'0';。
基于Simulink的16QAM调制解调仿真

目录摘要 (3)Abstract (4)1.1 选题背景及研究的意义 (5)1.2 论文内容及安排 (5)第二章正交振幅调制理论研究 (6)2.1 QAM调制原理 (6)2.2 QAM解调原理 (8)2.3 本章小结 (10)第三章 16QAM调制解调系统的实现与仿真 (11)3.1 16QAM调制模块模型建立 (11)3.1.1信号源 (11)3.1.2 串/并转换 (11)3.1.3 2/4转换 (13)3.1.4 其他模块 (14)3.1.5 调制实现 (15)3.2 16QAM解调模块模型建立 (17)3.2.1 相干解调 (17)3.2.2 4/2转换 (18)3.2.3 并/串转换 (19)3.2.4 其他模块 (20)3.2.5 解调实现 (21)3.3 16QAM系统Simulink模型建立 (22)3.4 本章小结 (23)第四章 16QAM抗噪声性能分析 (24)4.1 16QAM错误概率计算 (24)4.2 16QAM抗噪声性能仿真 (24)4.3 本章小结 (26)第五章总结与展望 (27)致谢 (28)参考文献 (29)摘要QAM(Quadrature Amplitude Modulation)调制是一种具有高频谱利用率且能够灵活地根据传输环境与传输信源的不同自适应地调整其调制速率的调制技术,因此可以缓和目前通信传输技术中频带紧张状况以及多速率综合业务传输。
目前QAM调制技术在移动通信领域,数字电视广播,因特网宽带接入以及一些专门的军事无线通信领域得到了广泛地应用。
本文首先阐述了QAM调制解调技术的基本原理及QAM信号产生和解调所需的关键步骤,然后利用Simulink仿真平台对16QAM调制与解调系统进行建模仿真并且在加入高斯白噪声信道的情况下得到了调制端与解调端的波形图,星座图与误码率,最后绘制出该仿真系统的误码率曲线。
关键词:16QAM 调制与解调高斯白噪声星座图误码率AbstractQAM is a modulation technique of high spectral efficiency, the modulation rate of QAM can be adjusted adaptively according to the environment and the type of source. Because of these advantages, the current severe situation of band can be eased. Now, QAM technique applies in the field, such as mobile communications, digital television broadcasting, Internet as well as some specialized military fields of wireless communications.The theory and model of QAM modulation and demodulation are analyzed first in this paper. And then design 16QAM modulation and demodulation system by using Simulink. In the case of adding Gaussian white noise channel, the waveform diagram, constellation diagram and BER can be obtained. Finally, by drawing out the BER curves of the simulation system the correctness of the design results can be concluded.Keywords: 16QAM Modulation and Demodulation Gaussian white noise Constellation diagram BER第一章绪论1.1 选题背景及研究的意义在当代社会中信息交换日益频繁,随着通信技术和计算机技术的发展及它们的密切结合,通信能克服对空间和时间的限制,大量的、远距离的信息传递和存取已成为可能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通信专业课程设计二太原科技大学课程设计(论文)设计(论文)题目:16 QAM的调制解调姓名学号班级学院指导教师2012年 1月 4 日太原科技大学课程设计(论文)任务书学院(直属系):电子信息工程学院时间: 2012年12月19日16QAM的调制与解调摘要随着无线通信频带日趋紧张,研究和设计自适应信道调制技术体制是建立宽带移动通信网络的关键技术之一。
正交振幅调制技术(QAM)是一种功率和带宽相对高效的信道调制技术,因此在大容量数字微波通信系统、有线电视网络高速数据传输、卫星通信系统等领域得到了广泛应用。
在移动通信中,随着微蜂窝和微微蜂窝的出现,使得信道传输特性发生了很大变化。
过去在传统蜂窝系统中不能应用的正交振幅调制也引起了人们的重视。
本文首先简单简绍了QAM调制解调系统和Simulink的工作原理。
然后利用Simulink 对16QAM调制系统进行仿真,不但得到了信号在加噪前后的星座图、眼图,而且在信噪比变化条件下,得到了16QAM系统的误码率。
最后,在简单做了一个2DPSK系统仿真之后,将它与16QAM系统进行了比较,并得出了16QAM是一种相对优越的调制解调系统这一结论。
关键词:QAM ;SIMULINK ;仿真; 2DPSK ;误码率目录摘要 (I)第1章绪论 (1)1.1 QAM简介 (1)1.2 SIMULINK (1)1.3 SIMULINK与通信仿真 (2)第2章正交振幅调制 (3)2.1 MQAM信号的星座图 (3)2.2 16QAM的调制解调原理 (5)2.3 16QAM的改进方案 (6)第3章 16QAM调制解调系统实现与仿真 (8)3.1 16QAM 调制模块的模型建立与仿真 (10)3.1.1 信号源 (10)3.1.2 串并转换模块 (10)3.1.3 2/4电平转换模块 (11)3.1.4 其余模块 (13)3.1.5 调制系统的实现 (14)3.2 16QAM解调模块的模型建立与仿真 (15)3.2.1 相干解调 (15)3.2.2 4/2电平判决 (16)3.2.3 并串转换 (18)参考文献 (21)第1章绪论1.1 QAM简介在现代通信中,提高频谱利用率一直是人们关注的焦点之一。
近年来,随着通信业务需求的迅速增长,寻找频谱利用率高的数字调制方式已成为数字通信系统设计、研究的主要目标之一。
正交振幅调制QAM(Quadrature Amplitude Modulation)就是一种频谱利用率很高的调制方式,其在中、大容量数字微波通信系统、有线电视网络高速数据传输、卫星通信系统等领域得到了广泛应用。
在移动通信中,随着微蜂窝和微微蜂窝的出现,使得信道传输特性发生了很大变化。
过去在传统蜂窝系统中不能应用的正交振幅调制也引起人们的重视。
QAM数字调制器作为DVB系统的前端设备,接收来自编码器、复用器、DVB 网关、视频服务器等设备的TS流,进行RS编码、卷积编码和QAM数字调制,输出的射频信号可以直接在有线电视网上传送,同时也可根据需要选择中频输出。
它以其灵活的配置和优越的性能指标,广泛的应用于数字有线电视传输领域和数字MMDS系统。
作为国际上移动通信技术专家十分重视的一种信号调制方式之一,正交振幅调制(QAM)在移动通信中频谱利用率一直是人们关注的焦点之一,随着微蜂窝(Microcell)和微微蜂窝(Picocell)系统的出现,使得信道的传输特性发生了很大变化,接收机和发射机之间通常具有很强的支达分量,以往在蜂窝系统中不能应用的但频谱利用率很高的WAM已引起人们的重视,许多学者已对16QAM及其它变型的QAM在PCN中的应用进行了广泛深入地研究。
1.2 SIMULINKSimulink是MATLAB中的一种可视化仿真工具,是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。
Simulink可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。
为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口(GUI) ,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。
1.3 SIMULINK与通信仿真仿真是衡量系统性能的工具,它通过仿真模型的仿真结果来推断原系统的性能,从而为新系统的建立或原系统的改造提供可靠的参考。
仿真是科学研究和工程建设中不可缺少的方法。
实际的通信系统是一个功能结构相当复杂的系统,对于这个系统作出的任何改变都可能影响到整个系统的性能和稳定。
而Simulink作为Matlab提供的用于对动态系统进行建模、仿真和分析的工具包,提供了仿真所需的信源编码、纠错编码、信道、调制解调以及其它所用的全部库函数和模块。
可见,不管对任何复杂的通信系统,用Simulink对其仿真都是一个不错的选择。
第2章 正交振幅调制2.1 MQAM 信号的星座图MQAM 信号表示式可写成 )sin cos (2)(t w B t w A T t S c i c i B MQAM +=(2.1) 其中,Ai 和Bi 是振幅,表示为⎭⎬⎫-±=-±=)12()12(j Bj i Ai (2.2) 其中,i,j=1,2,…,L ,当L=1时,是4QAM 信号;当L=2时,是16QAM 信号;当L=4时,是64QAM 信号。
选择正交的基本信号为 ⎪⎪⎭⎪⎪⎬⎫==t w T t t w T t c B c B sin 2)(cos 2)(21ϕϕ (2.3) 在信号空间中MQAM 信号点⎪⎪⎭⎫ ⎝⎛=j i ij B A S (i,j=1,2,…,L) (2.4)图2.1是MQAM 的星座图,这是一种矩形的MQAM 星座图。
图2.1 MQAM 信号星座图 为了说明MQAM 比MPSK 具有更好的抗干扰能力,图2.2示出了16PSK 和16QAM 的星座图,这两个星座图表示的信号最大功率相等,相邻信号点的距离d1,d2分别为: 2DPSK A A d 39.016sin 21=≈π, 16QAM A M d 47.01162122=-=-≈。
结果表明,d2>d1,大约超过1.64dB 。
合理地比较两星座图的最小空间距离应该是以平均功率相等为条件。
可以证明,在平均功率相等条件下,16QAM 的相邻信号距离超过16PSK 约4.19dB 。
星座图中,两个信号点距离越大,在噪声干扰使信号图模糊的情况下,要求分开两个可能信号点越容易办到。
因此16QAM 方式抗噪声干扰能力优于16PSK 。
图2.2 16QAM和16PSK的星座图MQAM的星座图除正方形外,还有圆形、三角形、矩形、六角形等。
星座图的形式不同,信号点在空间距离也不同,误码性能也不同。
MQAM和MPSK在相同信号点数时,功率谱相同,带宽均为基带信号带宽的2倍。
2.2 16QAM的调制解调原理MQAM的调制解调框图如图2.3所示。
在发送端调制器中串/并变换使得信息速率为Rb 的输入二进制信号分成两个速率为Rb/2的二进制信号,2/L电平转换将每个速率为Rb/2的二进制信号变为速率为Rb/(2lbL)的电平信号,然后分别与两个正交载波相乘,再相加后即得MQAM信号。
在接收端解调器中可以采用正交的相干解调方法。
接受到的信号分两路进入两个正交的载波的相干解调器,再分别进入判决器形成L进制信号并输出二进制信号,最后经并/串变换后得到基带信号。
MQAM调制MQAM的解调图2.3 MQAM调制解调框图2.316QAM的改进方案为了适应不同的需要,QAM有一些改进方案,如正交部分响应幅度调制(MQPR)、非线性正交振幅调制(NLA-QAM)、叠加式正交振幅调制(SQAM)等,还可以把QAM调制与信道编码技术结合起来设计,取得最优的可靠性和有效性,这种技术称为网格编码调制(TCM)。
1.MQPR调制这是一种在多电平正交调制中,上下两支路的同相和正交基带信号都用部分响应信号(通常采用第Ⅰ类和第Ⅳ类部分响应)的调制方式。
QPR与QAM相比,在相同信息传输速率条件下,严格带宽受限的QPR优于QAM。
2.NLA-QAM调制QAM信号在进行传输之前,还要进行功率放大,而高效的功率放大是非线性的功率放大器,故而需考虑非线性对QAM的特性没有明显的影响措施,这就是NLA-QAM调制。
NLA-QAM信号的产生方法与QAM不相同,但解调的方法与QAM完全一样。
3.SQAM调制QAM调制信号在码元转换时刻有相位跳变的时刻,旁瓣分量比连续相位的调制信号要高。
要改善QAM的频谱特性,应改善其基带波形以平滑码元转换时的相位变化,SQAM就是从这个角度提出的。
SQAM的基本脉冲波形是由两个宽度为TB的升余弦波形与一个宽度为2TB的升余弦波形叠加而成。
采用正交调制方式时,在下支路要延时TB/2,并且上下两支路放大倍数相差60dB。
SQAM信号的功率谱与QAM相比,旁瓣分量得到有效地抑制。
第3章 16QAM调制解调系统实现与仿真前面两章简单介绍了16QAM的调制解调和SIMULINK的工作原理,下面本文将用MATLAB 数学软件中的SIMULINK模块实现16QAM调制、解调通信系统,并进行仿真。
由第二章MQAM 的调制解调原理可以得出,16QAM的调制解调框图如下所示:图3.1 16QAM的调制解调框图由图3.1可以知道,16QAM的调制解调原理比较简单,接下来,我们将通过调制与解调两大模块来介绍SIMULINK下16QAM的仿真结果,并且将对仿真结果作出分析并对系统进行一定的优化,从而获得较好的系统模型。
下页为本次仿真的系统总体框图:图3.2 仿真总体框图3.1 16QAM 调制模块的模型建立与仿真通过对图3.1中16QAM 调制原理框图的分析,16QAM 一个码元所携带的信息为M 2log 即4bit ,是一般基带数字调制(QPSK )码元携带信息量的2倍。
而且16QAM 调制是由两路相互独立的信号进行调制,一个16QAM 码元宽度是基础信号的2倍。
以下我将对系统仿真框图中的各模块进行简单的介绍:3.1.1 信号源本次仿真在信号源部分采用了伪随机序列发生器,由于系统要求基带信号码元速率19.2kbps ,则本序列发生器的基本参数设置如下:Generator polynomial:[1 0 0 0 0 1 1]Initial states:[0 0 0 0 0 1]Output mask vector:0Sample time:1/19200Output data type:double3.1.2 串并转换模块由于系统仿真总框图涉及模块较多,为不失美观同时又能显的浅显易懂特将串并转化作成一个单独子系统而嵌入总系统中。