通信报告111180147王雨PCM ADPCM编译码实验.docx
《通信报告111180147王雨PCM ADPCM编译码实验.docx》由会员分享,可在线阅读,更多相关《通信报告111180147王雨PCM ADPCM编译码实验.docx(17页珍藏版)》请在冰豆网上搜索。
通信报告111180147王雨PCMADPCM编译码实验
PCM/ADPCM编译码实验报告
111180147通信工程王雨
一、实验目的
1、了解语音编码的原理,验证PCM/ADPCM编译码原理;
2、比较A律和μ律编码,掌握两者的编码特点;
3、对比PCM和ADPCM编码的相同点和不同点;
二、实验仪器
1、JH5001(Ⅲ)通信原理基础实验箱一台
2、双踪示波器一台
3、函数信号发生器一台
三、实验原理
实际语音通话中通过将语音信号抽样、量化、编码之后再通过信道传输。
本实验利用MC145540集成电路完成PCM/ADPCM编译码功能,通过对试验箱上各点波形的观测,对比PCM和ADPCM两者在抽样时钟、编码数据和输入输出时钟等方面的区别。
实验电路框如下图所示:
实验中将不同开关置于不同位置、示波器探头测量不同测试点以得到不同观测波形,对这些波形进行分析即可得出相应结论。
四、实验内容及分析
1.准备工作:
加电后,将复接解复接模块中的跳线开关KB03置于左端PCM编码位置,此时MC145540工作在PCM编码状态。
将跳线开关K501设置在右边。
2.PCM/ADPCM编码信号输出时钟和抽样时钟信号观测
a、输出时钟和抽样时钟即帧同步时隙信号观测:
用示波器同时观测抽样时钟信号(TP504)和输出时钟信号(TP503),观测时以TP504做同步。
测量、分析和掌握PCM编码抽样时钟信号与输出时钟的频率、占空比以及它们之间的对应关系等。
★实际测得PCM编码抽样时钟与输出时钟的波形如图二所示,其中黄色代表抽样时钟信号(TP504),蓝色代表编码输出时钟信号(TP503)。
分析:
由对上图的测量可以看出:
编码抽样时钟信号频率为8KHz,脉冲宽度约为32us,可以算出编码抽样时钟信号的占空比约为
;而编码输出信号的频率为256KHz,占空比约为
。
而且,在抽样脉冲的高电平部分,编码输出时钟有8个脉冲,即进行了PCM编码,且为8bit/s。
所以PCM的传输速率为8KHz*8bit=64Kbps。
如下图三为在芯片MC14550x的pdf上截取的时序图(如下),与实际测量的出的关系一致。
b、抽样时钟信号与PCM编码数据测量:
用示波器同时观测抽样时钟信号(TP504)和编码输出数据信号端口(TP502),观测时以TP504做同步。
分析和掌握PCM编码输出数据与抽样时钟信号(同步沿、脉冲宽度)及输出时钟的对应关系。
★实际测得PCM抽样时钟信号与编码输出数据信号的波形如图四所示。
其中黄色代表抽样时钟信号(TP504),蓝色代表编码输出数据信号(TP502)。
分析:
图中抽样时钟信号和编码输出数据信号的脉冲宽度是一样的。
而由图三我们可以知道,一个抽样脉冲的宽度与8bit的采样编码数据的宽度是一样的,这里之所以没有编码数据的输出,是因为信号输入端还没有输入信号,故最后输出的数据均为全1。
当有信号输入时,PCM量化编码后输出的是“0”、“1”的数字信号,这些信号可根据A律或u律将其恢复成原来的电平,再经过抽样、滤波恢复原始的波形。
c、将复接解复接模块中的跳线开关KB03置于右端ADPCM编码位置,此时MC145540工作在ADPCM编码状态。
重复上述步骤,比较PCM编码和ADPCM编码时序,码元传送速率上的区别。
ADPCM输出时钟和抽样时钟即帧同步时隙信号
★实际测得ADPCM编码抽样时钟与输出时钟的波形如图五所示,其中黄色代表抽样时钟信号(TP504),蓝色代表编码输出时钟信号(TP503)。
分析:
由对上图的测量可以看出,编码抽样时钟信号频率为8KHz,脉冲宽度约为15us,可以算出编码抽样时钟信号的占空比约为
,而编码输出信号的频率为256KHz,占空比约为
。
而且,在抽样脉冲的高电平部分,编码输出时钟有4个脉冲,即进行了ADPCM编码,且为4bit/s。
所以ADPCM的传输速率为8KHz*4bit=32Kbps。
这个结果是与理论值相符的。
抽样时钟信号与ADPCM编码数据测量
★实际测得ADPCM抽样时钟信号与编码输出数据信号的波形如图六所示。
其中黄色代表抽样时钟信号(TP504),蓝色代表编码输出数据信号(TP502)。
分析:
与PCM编码相同,抽样时钟脉冲宽度与编码输出数据宽度相同,但每一个输出数据只包含了4bit的信息,这是与PCM编码不同的地方。
这也造成了PCM和ADPCM在编码速率上的差别,PCM是64Kbps,而ADPCM是32Kbps。
3、PCM编码
将跳线开关KB03置于左端PCM编码位置,用函数信号发生器产生一个频率为1KHz、电平为2Vp-p的正弦波(幅值需用示波器测量)测试信号送入信号测试端口TP001和TP002(地)。
用示波器同时观测抽样时钟信号(TP504)和编码输出数据信号端口(TP502),观测时以TP504做同步。
分析和掌握PCM编码输出数据与抽样时钟信号(同步沿、脉冲宽度)及输出时钟的对应关系。
由于是对1kHz信号进行8KHz采样,因此必须记录下连续的8个编码数据。
由测量数据,按照A律13折线或u律15折线编码规则通过matlab计算恢复正弦波形。
要求编写matlab程序将所测量的PCM编码数据按照G.711标准中的A律和u律编码规则恢复为电平值,按A律和u律需分别绘出至少3张图:
PCM编码数据恢复后的波形图及其频谱图。
将采样点插值后得到平滑正弦波形图。
★调节示波器的时间轴旋钮,使屏幕中能够显示至少8个抽样脉冲,按下stop键。
接着将波形展开,从左到右依次将数据读出。
如下图所示。
分析:
从上图中展开依次读出的编码数据为:
00100010,10100001,10001110,10001110,10100010,00100001,00001110,00001110
从读出的编码数据可以看出,第一个数据和第五个数据除了第一个符号位相反外,其他数据位均相同。
依次下去,第二个和第六个、第三个和第七个、第四个和第八个同样满足此规律。
这是由于正弦波的波形上下对称引起的。
根据G.711编码规则利用matlab分别编写逆A律和逆μ律程序,将得到的8个数据逆推回编码之前的数据,恢复出输入信号的波形,并据此确定实验箱采用的是A律编码还是μ律编码。
得到仿真图形分别如下图所示。
采用逆A律规则解码出的波形
采用逆μ律规则解码出的波形
分析:
由仿真结果可以看出,采用逆A律规则解码时得到的并不是一个1KHz的单频正弦波,还有很多其他频谱分量。
而采用逆u律规则解码时得到的确实是一个1KHz的单频信号。
于是我们可以得出这样的结论:
本实验箱采用的编码规则是u律编码。
4、ADPCM编码
将跳线开关KB03置于右端ADPCM编码位置,用函数信号发生器产生一个频率为1000Hz、电平为2Vp-p的正弦波测试信号送入信号测试端口TP001和TP002(地)。
观察连续9个采样点的编码数据,是否能观察到如PCM编码数据一样的规律,为什么?
★观测到的连续9个采样点的编码数据依次展开为1111、1010、1110、0001、0010、0111、1111、0001、1111。
分析:
ADPCM编码与PCM编码不一样,编码位数只有四位,并不能直接观察到和PCM编码数据一样的规律,特别是观察首位的“0”、“1”,并不能看出明显的正负,第一个和第五个也没有十分明显的对应关系,说明二者的编码方式并不一样。
ADPCM是自适应增量编码,后一个码元和前一个码元是相互关联的。
5.PCM译码器
准备:
跳线开关K501设置在测试位置、K504设置在右端自环工作位置,此时将PCM输出编码数据直接送入本地译码器,构成自环。
用函数信号发生器产生一个频率为1000Hz、电平为2Vp-p的正弦波测试信号送入信号测试端口TP001和TP002(地)。
PCM译码器输出模拟信号观测:
用示波器同时观测解码器输出信号端口(TP506)和编码器输入信号端口(TP501),观测信号时以TP501做同步。
定性的观测解码信号与输入信号的关系:
质量、电平、延时。
★刚开始测得的解码信号与输入信号波形如图所示。
其中黄色代表输入信号波形,蓝色代表解码信号波形。
分析:
通过上面的图我们可以发现:
解码信号的时域波形失真还是比较小的,但还是存在一些毛刺,这是由于量化、编码、恢复过程中的“近似”引入了一些误差,经过低通滤波之后会使信号变得更加平滑。
此外,由频域波形可以看出,解码信号只有一个较大的频率分量,那就是1KHz,这和我们想要得到的信号是几乎符合了,除了一定的幅度变化和相位延迟之外。
6、PCM/ADPCM频率响应测量:
将测试信号电平固定在2Vp-p,调整测试信号频率,定性的观测PCM/ADPCM解码恢复出的模拟信号电平。
观测输出信号信电平相对变化随输入信号频率变化的相对关系。
比较PCM和ADPCM编码频响特性。
输入频率(Hz)
200
500
800
1000
2000
3000
3400
3600
PCM译码输出Vpp(V)
2.03
2.12
2.14
2.12
2.12
2.10
2.06
1.60
ADPCM输出Vpp(V)
2.01
2.11
2.13
2.14
2.13
2.11
2.04
1.59
分析:
从上面的表格可以看出:
调整测试信号频率变化时,当频率从200Hz变化到3000Hz的时候,输出的电平几乎维持不变,只有略微的上升和变动,然而当频率超过3400Hz的时候,电平的值急剧的下降。
对于PCM和ADPCM来说都具有这样的现象。
这是因为在输入端接了放大器,由于元器件本身的一些参数,如果信号的幅度或者频率超过范围,就无法正常工作。
编码芯片对电平值也有严格的要求,所以我们在实验中采用1000Hz的模拟信号。
这样可以不会产生失真。
7、PCM/ADPCM动态范围测量:
将测试信号频率固定在1000Hz,改变测试信号电平,定性的观测解码恢复出的模拟信号质量,测量译码输出信号的信噪比。
观测信噪比随输入信号电平变化的相对关系。
比较PCM和ADPCM编码动态范围。
输入Vpp(V)
0.2
1
2
3
4
5
PCMS/N(dB)
4.9
20
26.2
30.3
19.9
19.0
ADPCMS/N(dB)
7.0
20.5
26.3
30.4
20.1
18.7
分析:
从上面的表格可以看出:
随着Vpp的增大。
信噪比是先增大,后减小的。
在2到3V的样子是达到了最大值,这个时候是噪声最小的时候,所以一般该系统的Vpp取2V。
这个结论对于PCM和ADPCM都是适用的。
另外,ADPCM的信噪比同等情况下要比PCM高一点。
关于电平对信噪比的影响的原理和上一题类似。
8、按照G.726标准编写ADPCM仿真程序。
(见后附)
五、实验中遇到的问题与实验总结
1、本次实验也主要以验证性为主,涉及到了我们还没有学习过的内容,就是A律编码和μ律编码,但通过老师简单讲授和自己课外自学之后,也能将这部分内容大致理解了,这也算一个收获吧,等到理论课学习时就会轻松许多。
2、第三个验证试验即从示波器读出连续八个采样值,通过PCM的逆运算,验证输出波形是否为输入的正弦波,测了将近6组数据,最后得到的波形失真还是很大,频谱中也可以看到有1KHz和3KHz两个分量,最后肯定不是自己读数的问题,就换了一个实验箱重新测量,结果一次性就成功了。
问了许多其他同学,也有很多出现和我类似的情况的,都通过重新读数或者换实验箱解决了。
3、在PCM译码验证实验中,观测最后解码恢复出的波形产生很大的失真,实验箱中哪里耦合了一个3KHz的信号,之后也是通过换实验箱解决的。
4、PCM编码系统由定时部分和PCM编译码器构成为适应语音信号的动态范围,实用的PCM编译码必须是非线性的。
目前,国际上采用的均是折线近似的对数压扩特性。
以13段折线近似的A律(A=87.56)和15段折线近似的μ律(μ=255)是最常用的。
我国国内大多采用的是A律量化特性,而本实验使用的μ律编码,使用matlab可以进行逆变化将其还原为模拟信号。
5、这次实验之后,对于matlab的使用也更加熟悉了,为接下来的实验做了一定的铺垫。
附matlab代码:
%PCM解码程序
%逆A律解码程序
closeall
clearall
a=[00100010;10100001;10001110;10001110;10100010;00100001;00001110;00001110;];
for(i=1:
8)
m=a(i,2)*4+a(i,3)*2+a(i,4);%计算段落码
n=a(i,5)*8+a(i,6)*4+a(i,7)*2+a(i,8);%计算段内码
if(m==0||m==1)
s(i)=32*m+2*n+1;
else
s(i)=2.^(m+4)+(2.^m)*n+2.^(m-1);
end
if(a(i,1)==0)
s(i)=-s(i);
end
end
for(j=9:
80)%将信号周期延拓
s(j)=s(j-8);
end
t=0.125e-4:
0.125e-4:
0.01;
k=1:
80;
for(i=1:
80)
ss(10*i)=s(i);
end
subplot(221);
plot(k,s);axis([080-100100]);
title('PCM编码数据恢复后的波形图(A\_LAW)');
[f,sf]=t2f(t,ss);%傅里叶变换
subplot(222);
plot(f,abs(sf),'r');axis([01000000.05]);
title('PCM编码数据恢复后的波形的频谱(A\_LAW)');
xlabel('Hz');
[b,a]=butter(8,3400*2*0.125e-4);%低通滤波
xt=filter(b,a,ss);
subplot(223);
plot(t,xt);axis([00.005-2020]);
title('低通滤波之后的信号波形(A\_LAW)');
[f1,sff]=t2f(t,xt);%傅里叶变换
subplot(224);
plot(f1,abs(sff),'r');axis([01000000.05]);
title('低通滤波之后信号的频谱(A\_LAW)');
xlabel('Hz');
逆u律解码程序
closeall
clearall
a=[00100010;10100001;10001110;10001110;10100010;00100001;00001110;00001110];
for(i=1:
8)
m=8-(a(i,2)*4+a(i,3)*2+a(i,4));%计算段落码
n=16-(a(i,5)*8+a(i,6)*4+a(i,7)*2+a(i,8));%计算段内码
switch(m)
case1%第一段内计算编码值
if(n==1)s(i)=0;
elses(i)=2*(n-1);
end
case2
s(i)=4*(n-1)+33;
case3
s(i)=8*(n-1)+99;
case4
s(i)=16*(n-1)+231;
case5
s(i)=32*(n-1)+495;
case6
s(i)=64*(n-1)+1023;
case7
s(i)=128*(n-1)+2079;
case8%第八段内计算编码值
s(i)=256*(n-1)+4191;
end
if(a(i,1)==0)
s(i)=-s(i);
end
end
for(j=9:
80)%将信号周期延拓
s(j)=s(j-8);
end
t=0.125e-4:
0.125e-4:
0.01;
k=1:
80;
for(i=1:
80)%将信号压缩
ss(10*i)=s(i);
end
subplot(221);
plot(k,s);axis([080-60006000]);
title('PCM编码数据恢复后的波形图(u\_LAW)');
[f,sf]=t2f(t,s);%傅里叶变换
subplot(222);
plot(f,abs(sf),'r');axis([010000030]);
title('PCM编码数据恢复后的波形的频谱(u\_LAW)');
xlabel('Hz');
[b,a]=butter(8,3400*2*0.125e-4);%低通滤波
xt=filter(b,a,ss);
subplot(223);
plot(t,xt);axis([00.005-500500]);
title('低通滤波之后的信号波形(u\_LAW)');
[f1,sff]=t2f(t,xt);%傅里叶变换
subplot(224);
plot(f1,abs(sff),'r');axis([01000003]);
title('低通滤波之后信号的频谱(u\_LAW)');
xlabel('Hz');
子程序--时域转换为频域
function[f,sf]=t2f(t,st)
%ThisisafunctionusingtheFFTfunctiontocalculateasignal'sFourier
%Translation
dt=t
(2)-t
(1);
T=t(end);
df=1/T;
N=length(st);
f=-N/2*df:
df:
N/2*df-df;
sf=fft(st);
sf=T/N*fftshift(sf);