您的当前位置:首页正文

增量调制编码仿真测试(选做)

2021-01-18 来源:钮旅网
实用标准

文案大全

通信原理仿真作业

班 级 1401014

学 号 14010140041

姓 名 许龙涛

任课教师 张艳玲

实用标准

增量调制编码仿真测试

一、 试验要求

利用Matlab建立仿真系统,对增量调制编码进行仿真测试,要求对输入的正弦波进行采样、量化和DM编码,画出解码波形与原波形,并在图中指出空载失真和过载失真的部分波形。

二、 试验原理

增量调制简称ΔM或DM,它是继PCM后出现的又一种模拟信号数字传输的

方法。其目的在于简化语音编码方法。

在PCM中,代码表示样值本身的大小,所需码位数较多,导致编译码设备复杂;而在ΔM中,它只用一位编码表示相邻样值的相对大小,从而反映抽样时刻波形的变化趋势,而与样值本身的大小无关。ΔM与PCM编码方式相比具有编译码设备简单,低比特率时的量化信噪比高,抗误码特性好等优点。 1. 编译码基本思想

一个语音信号,如果抽样速率很高(远大于奈奎斯特速率),抽样间隔很小,那么相邻样点之间的幅度变化不会很大,相邻抽样值的相对大小(差值)同样能反映模拟信号的变化规律。若将这些差值编码传输, 同样可传输模拟信号所含的信息。此差值又称“增量” ,其值可正可负。这种用差值编码进行通信的方式,就称为“增量调制”(Delta Modulation),缩写为DM或ΔM。 2. 编码过程

m(t)代表时间连续变化的模拟信号,我们可以用一个时间间隔为 Δt ,相邻幅度差为+ σ或 - σ的阶梯波形m′(t)来逼近m(t)。只要Δt足够小,即抽样速率fs=1/Δt足够高,且σ足够小,则阶梯波m′(t)克近似代替m(t)。Δt为抽样间隔 σ为量化台阶。

阶梯波m′(t)有两个特点:第一,在每个Δt间隔内, m′(t)的幅值不变; 第二,相邻间隔的幅值差不是+σ(上升一个量化阶),就是-σ(下降一个量化阶)。“1”码表示上升一个量化阶,“0”码表示下降一个量化阶,则m′(t) 码被一个二进制序列表表征。除了用阶梯波m′(t)近似m(t)外,还可用另一种形式——斜变波m1(t)来近似m(t)。本仿真中使用的为阶梯波,斜变波不再赘述。

文案大全

实用标准

图 1增量编码波形示意图

3. 译码过程

译码也有两种形式:阶梯波和斜变波。在这里,我们使用的是阶梯波。

收到“1” 码上升一个量阶(跳变),收到“0”码下降一个量阶(跳变),这样把二进制代码经过译码后变为m′(t)这样的阶梯波。 4. 过载失真与空载失真

当输入模拟信号m(t)斜率徒变时,本地译码器输出信号m’(t)跟不上信号m(t)的变化。这时,M(t)与m’(t)之间的误差明显增大,引起译码后信号的严重失真,这种现象叫过载现象。如图所示:

图 2 过载失真

在输入信号变化平缓的部分,编码器输出 1,0 交替码,相应的解码结果以正负阶距交替变化,形成颗粒噪声,称空载失真。

文案大全

实用标准

三、 试验流程

1. 产生信号

本仿真共用三组数据进行试验:sin(2*pi*50*t)+0.5*sin(2*pi*150*t)、sin(2*pi*200*t)和 zeros(1,length(t))。sin(2*pi*50*t)+0.5*sin(2*pi*150*t)为例程中给出的信号,仿真结果也是最好的;sin(2*pi*200*t)信号的频率相对于采样频率较高,即采样速率不够快。zeros(1,length(t))信号幅值一直为0。接下来的分析主要使用sin(2*pi*50*t)+0.5*sin(2*pi*150*t)信号。

图 3 sin(2*pi*50*t)+0.5*sin(2*pi*150*t)信号

图 4 sin(2*pi*200*t)信号

图 5 zeros(1,length(t))信号

2. 确定量化器基本参数

在这里我们去σ=0.4,预测器初始状态为0. 3. 编码

信号采样幅值与同时刻预测器初始状态相减得到误差信号。然后由误差信号决定阶梯波上升或下降一个量化阶,延迟输出。编码输出:“1”码表示上升一个量化阶,“0”码表示下降一个量化阶。

文案大全

实用标准

图 6编码输出

4. 译码

解码过程是编码过程的逆过程。由编码产生的二进制序列得到误差信号,由误差信号决定上升或下降一个量化阶,延迟输出,得到解码。

图 7比较

四、 试验结果

图 8 sin(2*pi*50*t)+0.5*sin(2*pi*150*t)结果图

通过比较我们可以发现,阶梯波有阶梯变化,当采样间隔很小时,阶梯波就

文案大全

实用标准

可以完全反映模拟信号了。图中红色部分为过载失真,蓝色部分为空载失真,但并不明显。

Sin(2*pi*200*t)信号:

图 9 sin(2*pi*200*t)信号结果图

载量失真过大,误差很大,说明采样速率不够高。

文案大全

实用标准

图 10 zeros(1,length(t))信号结果图

空载失真较大。

五、 程序附录及注释

(注:浅绿色的为原有注释,深绿色为新加注释即我对程序的理解与分析) clc

clear all close all

Ts=1e-3; % 采样间隔

t=0:Ts:20*Ts; % 仿真时间序列 采样周期为Ts 采样前模拟信号的时间长度T=20*Ts=0.02s

x=sin(2*pi*50*t)+0.5*sin(2*pi*150*t);% 信号1 产生信号此信号由频率分别为50HZ 150HZ的正弦波合成。

% x=sin(2*pi*200*t); %信号2 信号频率较高 % x=zeros(1,length(t)); %信号3 信号全为0 delta=0.4; % 量化阶距

D(1+length(t))=0; % 预测器初始状态 for k=1:length(t)

e(k)=x(k)-D(k); % 误差信号

e_q(k)=delta*(2*(e(k)>=0)-1);% 量化器输出 2*(e(k)>=0)-1作用:当e(k)>=0时,(e(k)>=0)判断语句得结果1,2*1-1还为一,

%但当e(k)<0时,

文案大全

实用标准

(e(k)>=0)判断结果为0,此时,2*1-1结果为-1,符合增量调制原理。

D(k+1)=e_q(k)+D(k); % 延迟器状态更新 当误差信号大于0时,D(k)上升一个阶梯,当误差信号小于0时,下降一个阶梯。

codeout(k)=(e_q(k)>0); % 编码输出 当e(k)>=0时,输出为1,当e(k)<0时,输出为0 end

subplot(3,1,1);plot(t,x,'-o');axis([0 20*Ts,-2 2]); title('原始信号'); hold on;

subplot(3,1,2);stairs(t,codeout);axis([0 20*Ts,-2 2]); title('编码输出') ;%做编码输出的阶梯图

% 解码端

Dr(1+length(t))=0; % 解码端预测器初始状态

for k=1:length(t) %解码过程是编码过程的逆过程

eq(k)=delta*(2*codeout(k)-1);% 解码 由编码输出信号得到误差信号

xr(k)=eq(k)+Dr(k);

Dr(k+1)=xr(k); % 延迟器状态更新 误差信号加上初始状态的信号得到下一时刻信号,延迟输出。 end

subplot(3,1,3);stairs(t,xr);hold on; % 解码输出

subplot(3,1,3);plot(t,x);title('解码信号与原始信号的比较'); % 原信号

文案大全

因篇幅问题不能全部显示,请点此查看更多更全内容