qam映射c程序_DVB-C系统中QAM调制与解调仿真

本文简单记录一下自己学习《通信原理》的时候调试的一个仿真DVB-C(Cable,数字有线电视)系统中QAM调制和解调的程序。自己一直是研究“信源”方面的东西,所以对“信道”这方面的知识进行实践的机会一直不是很多,做这个小程序的过程中也熟悉了不少相关的知识。在这个程序中,每执行一步操作,都会画出时域信号图和频域信号图,同时会在控制台打印出有关变量的取值,对于理解QAM调制与解调有一定的帮助。

一.DVB-C中QAM的调制与解调

简单介绍DVB-C系统中的QAM的调制与解调。DVB系列标准是数字电视领域最重要的标准,它是一个完整的数字广播解决方案,涉及数字电视广播的方方面面。DVB 规范了数字电视的系统结构和信号处理方式,各厂商可以开发各自的 DVB设备,只要该设备能够正确接收和处理信号并满足规范中所规定的性能指标就可以了。我国的卫星数字电视采用了DVB-S标准,地面广播数字电视采用了自主的DTMB标准,有线数字电视传输标准采用了DVB-C 标准。本文主要分析有线数字电视传输中的DVB-C标准。

1.DVB-C发送端和接收端

下面简单介绍DVB-C系统的发送端和接收端。DVB-C 标准描述了有线数字电视的帧结构,信道编码和调制。主要用于传送电视中的视频和音频信号。DVB-C 描述的有线数字电视前端与接收端的原理框图如图所示。

有线前端与接收端的原理框图

下面简单说明有线前端每个部分的功能:

(1)基带接口:该单元将数据结构与信号源格式匹配,帧结构应与包含同步字节的 MPEG-2 TS 流一致。

(2)SYNC1反转和随机化。该单元将依据 MPEG-2 帧结构转换 SYNC1字节;同时为了频谱成形,对数据流进行随机化。

(3)RS编码器。将每一个TS包送入RS编码器进行RS(204,188)信道编码。

(4)卷积交织器。完成深度 I=12 的卷积交织信道编码。

(5)字节变换到 m 比特符号。将字节变换为 QAM 符号。

(6)差分编码。为了获得旋转不变星座图,将每符号两个最高有效位进行差分编码。

(7)基带成形。将差分编码的符号映射到I、Q分量。此外对 I 和 Q 信号进行平方根升余弦滚降滤波。

(8)QAM 调制和物理接口。完成 QAM 调制。之后,它将 QAM 已调制信号连接到有线射频信道。

接收端的功能不再详细叙述。接收端只要按照前端的处理顺序进行逆处理就可以得到基带信号。

2.QAM 信号的调制和解调

正交振幅调制(QAM)数字传输系统因为其高的频带利用率而被确定为DVB-C 标准。下面简单介绍QAM的调制和解调的步骤。QAM调制的步骤可以由下图表示。

QAM调制原理图

如图所示,输入的码元数据首先经过“串并转换”形成两路数据信号,转换之后,每个码元的持续时间变成原先的2倍;然后经过“2-L电平变换”转换成为多进制的QAM符号;然后将这2路QAM多进制信号分别和2路正交载波相乘;最后再将这2路调制后的信号相加,就形成了调制后的QAM信号。

QAM信号解调的步骤与调制的步骤正好相反,如下图所示。

QAM解调原理图

如图所示,QAM信号首先分别使用2路正交的相干载波进行解调;然后经过“多电平判决”电路获得2路多进制的QAM符号;接着经过“L-2电平变换”转换成2路码元数据;最后经过“串并转换”将2路码元数据合并后形成完整的码元数据。

二.仿真

下面介绍仿真实验。本文做了3个仿真实验。第1个实验仿真了16QAM的调制与解调;第2个实验在第一个实验的基础上,仿真了16QAM信号传输过程中信噪比与误码率之间的关系;第3个实验仿真了2FSK,2PSK,4PSK,16PSK,16QAM的信噪比(S/N)与误码率之间的关系对比图。

1. QAM的调制与解调

本实验利用Matlab软件,完成如下图所示的一个基本的基于16QAM的数字通信系统。整个系统可以分成信源、信道和信宿三个部分。信号源产生二进制(0和1)的随机信号,经过调制后形成2路QAM符号(取值-3,-1,1和3)。2路QAM符号分别经过平方根升余弦滤波器,形成等待调制到高频的信号。随后通过给这两路信号添加高斯白噪声的方法,模拟信道的传输环境。然后通过匹配滤波器(平方根升余弦滤波器)。最后经过采样,判决,和解调得到二进制信号。本系统可以从Matlab控制台输出整个过程中关键信号的取值,并且可以在最后统计误码信息。

QAM的调制和解调过程原理图

下文将会按照上图所示的信号传递的顺序详细介绍每个步骤。

(a)二进制信号的生成

使用randsrc()函数生成随机二进制序列。本程序默认序列长度为240,其中“1”出现的概率为0.5。代码如下所示。

%====定义待仿真序列的长度 N

global N

N=240;

%====定义产生‘1’的概率为 p

global p

p=0.5;

%==============================

%首先产生随机二进制序列

source=randsrc(1,N,[1,0;p,1-p]);

%画出序列波形

h=figure(1);

stairs(source);

ylim([-1,2]);

set(h,'name','随机二进制序列');

该步骤运行完成后生成的二进制序列如图所示。

随机二进制序列

(b)    调制

调制步骤将二进制的码元序列转换成为2路QAM符号。该部分的功能在单独定义的modulate_sig()函数中完成。该函数完成了以下几个步骤:

(1)     串并转换。该部分将输入的码元序列中序号为奇数的码元选择出来形成一组数据,然后再将剩下的序号为偶数的码元选择出来形成另一组数据。为了描述方便,下文中称第一组数据称为“I路”,第二组数据称为“Q路”。下文中仅描述I路信号的处理,Q路信号的处理和I路是一模一样的。

(2)     格雷码映射。将I路数据中每两个码元作为一个单元,按照格雷码的映射规则进行映射。格雷码的映射规则如下表所示。

格雷码映射规则

映射前(二进制码)

映射后(QAM符号)

0 0

-3

0 1

-1

1 1

1

1 0

3

注:上述映射规则可以有个简单的记法:第一个比特位代表符号,“1”代表“+”,第二个比特位代表取值,“1”代表“3”。

经过上述两个步骤处理之后,内容为“0101”的二进制码元序列调制成了内容包含-3,-1,1,3的2路QAM符号。该步骤运行完成后生成的2路QAM符号如下图所示。

QAM符号序列

将上图中的QAM符号中的I路取值作为x坐标,Q路取值作为y坐标,可以画图得到16QAM符号的“星座图”,如下图所示。

QAM符号星座图

将该QAM符号进行DTFT变换后的频域波形如下图所示。x轴的单位是π。

QAM符号DTFT频域图

该部分的代码如下所示。

%对产生的二进制序列进行QAM调制

function [y1,y2]=modulate_sig(x)

%=====首先进行串并转换,将原二进制序列转换成两路信号

N=length(x);

a=1:2:N;

fprintf('串并转换\n第一路:第1,3,5,7...元素\n第二路:第2,4,6,8...元素\n');

y1=x(a);

y2=x(a+1);

%=====分别对两路信号进行QPSK调制

%======对两路信号分别进行2-4电平变换

a=1:2:N/2;

temp1=y1(a);

temp2=y1(a+1);

y11=temp1*2+temp2;

temp1=y2(a);

temp2=y2(a+1);

y22=temp1*2+temp2;

%=======对两路信号分别进行相位调制

a=1:N/4;

y1=(y11*2-

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值