基于simulink的QAM-WIMAX的系统仿真
Posted fpga&matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于simulink的QAM-WIMAX的系统仿真相关的知识,希望对你有一定的参考价值。
系统的基本机构如下所示:
下面我们分别对系统三个模块进行理论分析与介绍:卷积编码和维特比译码,QAM调制解调已经OFDM调制解调。
1.2 卷积编解码的simulink模块建模和分析
卷积编码模块:
其参数设置界面如下所示:
图3 卷积编码模块参数设置界面
Matlab中的卷积编码器对二进制输入序列进行卷积编码,得到相应的二进制输出序列。如果卷积编码器的输入信号的数目为k输出信号为n,则这个卷积编码器的码率为k/n.
Trellis structure(Trellis 结构):
卷积编码器的Trellis 结构,通常在Matlab工作区中设置一个Trellis 结构的变量,在工作区中设置Trellis 结构的各种参数,然后在卷积编码器模块的Trellis structure参数中填上该变量的名称。另外还可以通过poly2Trellis ()函数把卷积编码器的约束长度、生成多项式以及反馈连接多项式转换成Trellis 结构的形式。
Viterbi编码模块:
其参数设置界面如下所示:
图4 维特比译码模块
其主要参数的Trellis structure(Trellis 结构)解释和上面图3相同。像这里当使用约束长度为7,生成多项式为171和133(八进制数)、反馈连接多项式为171(八进制数)的卷积编码器时,可以把本参数设置为poly2Trellis (7,[171 133],171)。
1.3 QAM的理论简介
为了提高频带利用率,采用正交载波技术传输ASK信号,并结合多进制技术,即QAM调制[2]。它是利用正交载波对两路信号分别进行双边带抑制载波调幅形成的,通常有四进制(16QAM)、六进制(64QAM)、八进制(256QAM)等等。
QAM信号可表示为:
式(1.1)
其中两个通道的基带信号x(t)和y(t)分别为
式(1.2)
式中为多进制码元间隔。为了传输与检测方便,式中一般为双极性m进制码元。调制器的基本原理框图见图2.1。它由码元映射器、差分编码器、升余弦滚降滤波器、调制器(乘法器)和线性加法器组成。
图1.1 4QAM调制器的基本原理框图
(1)码元映射器。包括串并转换、进制转换。串并转换主要是对串行输入的高速二进制数字脉冲分割成并行的数字脉冲,以降低输入到进制转换的脉冲速率,进而降低调制信号所占用的频带宽度;进制转换器是对输入的二进制数字脉冲作多进制的脉冲转换,以进一步降低输出脉冲的符号速率,同时又保持在这种符号速率上有较高的信息传输速率。
(2)差分编码器。该单元对每个符号的两个最高有效位进行差分编码,从而获得旋转不变的星座图(图2.2)。
图2.2 4QAM星座图
(3)升余弦滚降滤波器。由于实际信道频带都是严格受限的,直接传输基带信号必然产生波形失真,造成码间干扰。因此传输前需要对基带信号的波形整形。为满足抽样值的无失真奈奎斯特第一准则,实现无码间干扰,在实际应用中广泛采用“升余弦滚降函数”作为传输系统的基带滤波器。基带滤波器通过升余弦滚降滤波器,使能量集中,消除码间串扰。通过基带成形滤波,减少了高频和低频成分的能量,并由于生余弦函数的冲击响应特性,使符号间干扰减少。
(4)QAM调制。QAM调制模块通过对IQ信号采样,然后分别与两路同频正交的载波相乘,最后相加。
1.3 QAM的仿真模块分析
64QAM调制:
图2-3 参数设计界面
这里的参数设置,主要是通过调制星座点的计算公式得到的。
64QAM解调:
图2-4 QAM解调参数
这个参数设置与QAM调制相同。
第三部分:OFDM调制解调
1.3 OFDM的simulink建模
OFDM调制:
图3-3 OFDM调制
这个部分相当于OFDM系统的,通过通道选择进行IFFT变化,从而完成OFDM的调制。
OFDM解调:
其内部结构如下所示:
这个模块相当于OFDM调制的逆运算。
第四部分:系统给总体建模仿真和相关simulink模块介绍
整个系统的结构如下所示:
图1-4 WIMAX系统的基本结构。
这里我们再来讲解一些系统中的其他模块,然后给出仿真分析图。
信号源::主要可以生成二进制信号源,
这里参数主要为:probability of a zero ,出现0bit的概率,initial seed,设置随机数的随机数种子。 Sample time,采样时间。Frame-based outputs,按帧输出,帧的采样时间为576.输出类型为double型。
数据导入到workspace模块
这个比较简单,这里不做详细介绍,其功能就是将simulink中的数据导入到matlab的workspace中,这样就可以方便进行数据分析了。
Bit转整数
将输入的二进制数转为整数类型,这里可以给QAM调制输入,
眼图查看:
看眼图
FFT看频谱
:数据截至,表示这个数据流结束传输,
信道模块,可以设置信噪比。
下面我们开始运行模块:
这里我们直接通过调用m文件,m文件如下,
clc;
close all;
clear;
%运行simulink
sim('main.mdl');
%为了更好的分析数据,在M文件中进行数据分析
%发送信号
signal_TXs = signal_TX.signals.values;
%卷积信号
conv_TXs = conv_TX.signals.values;
%QAM信号
QAM_TXs = QAM_TX.signals.values;
%OFDM信号
OFDM_TXs = OFDM_TX.signals.values;
%OFDM信号
OFDM_RXs = OFDM_RX.signals.values;
%deOFDM信号
deOFDM_RXs = deOFDM_RX.signals.values;
%deQAM信号
deQAM_RXs = deQAM_RX.signals.values;
%卷积信号
viterbi_RXs = viterbi_RX.signals.values;
clear signal_TX conv_TX QAM_TX OFDM_TX OFDM_RX deOFDM_RX deQAM_RX viterbi_RX
figure
subplot(211),stairs(signal_TXs),axis([0,length(signal_TXs),0,1.4]);
title('发送信号');
subplot(212),stairs(conv_TXs) ,axis([0,length(conv_TXs),0,1.4]) ;
title('发送信号的卷积编码信号');
%QAM,OFDM直接观察simulink产生的图片,更加的直观
figure
subplot(211),stairs(deQAM_RXs) ,axis([0,length(deQAM_RXs),0,1.4])
;title('QAM解调后的信号');
subplot(212),stairs(viterbi_RXs),axis([0,length(viterbi_RXs),0,1.4]);
title('维特比译码后的信号');
这个程序就是自动将每个模块的数据保存下来,然后再显示其模型。
64qam调制后的星座图(这里由于电脑运行慢,有些点没有显示出来,本质上64个点)
64qam解调前后的星座图(这里由于电脑运行慢,有些点没有显示出来,本质上64个点)
OFDM通过信道后的频谱
信号源的输出信号:
仿真后的QAM_Tx:
64点的星座图
A01-28
以上是关于基于simulink的QAM-WIMAX的系统仿真的主要内容,如果未能解决你的问题,请参考以下文章