PCM编码及解码文档格式.docx
《PCM编码及解码文档格式.docx》由会员分享,可在线阅读,更多相关《PCM编码及解码文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
整理程序,并进行调试,书写实验报告
2011-7-4
答辩
课程设计考勤表
周
星期一
星期二
星期三
星期四
星期五
课程设计评语表
指导教师评语:
成绩:
指导教师:
年月日
一、设计目的和意义
意义:
改善小信号量化性能。
二、设计原理
(一)PCM原理框图:
图1PCM系统原理图
(二)PCM编码包括如下三个过程
抽样:
将模拟信号转换为时间离散的样本脉冲序列。
量化:
将离散时间连续幅度的抽样信号转换成为离散时间离散幅度的数字信号。
编码:
用一定位数的脉冲码组表示量化采样值。
译码:
把编码后的码流在通过信道传输后得到的码流译成离散时间连续幅度的信号。
(三)
律15折线的原理
律采用非均匀量化,它用的是直接法即用不同的量阶对信号进行非均匀量化,对数量化器可以满足要求。
律的对数压缩特性为:
(1)
其中
为压缩系数。
越大则压缩效果越明显,
=0相当于无压缩,国际现在的标准为
=255。
律压缩特性可以用15折线来近似(折线图见附录中,PCM编码输入输出特性曲线)。
由于正负对称,且正的第一区间与负的第一区间斜率相同,所以途中只画出了正半轴。
编码规则:
M1M2M3M4M5M6M7M8,(
=255,L=256时)八位码。
这里采用的是折叠码(FBC)。
极性码M1:
‘0’表示负极性,‘1’表示正极性。
段落码M2M3M4:
表示量化采样值所在段落的序号。
电平码(段内码)M5M6M7M8:
表示每一段落内的16个均匀量化级。
(四)信道误码率
信道误码率即信码在信道中传错的概率,在数字通信中,即为‘0’被错传为‘1’,‘1’被错传为‘0’的概率。
它主要是由信道中的噪声引起的。
在本设计中由于采用软件仿真,没有用噪声的方式来产生误码,而是人为的用程序将它的码流变错,先要根据误码率计算出要被传错的码元的个数,再用随机的方法让他的码元变错,这就体现了噪声所引起的误码的不可确定性。
(五)量化信噪比
PCM系统输出端平均信号量化噪声比仅依赖于每一个编码组数N。
对于一个频带限制在
的信号,按照抽样定理,此时要求每秒钟最少传输的抽样脉冲数等于2
;
若PCM系统的编码位数为N,则要求系统每秒传输2
个二进制脉冲。
为此,这时的系统总带宽B至少等于N
。
故可用公式:
(2)
本设计取
=1000Hz,抽样点为1000时,
=1000kHz;
当抽样点可变时,
=k*
三、详细设计步骤
1、利用matlab绘制正态分布频谱图:
利用y=randn(1,1000)产生1000个随机数,然后取出部分点来画出其局部图。
这样再利用subplot函数实现子图的画法,并且对所画的图做标识,如标题,幅度。
具体图形如图2所示。
2、利用matlab来画出u=255的输入输出关系图,如图3所示。
3、利用非均匀编码函数来进行对这1000个点编解码,如图4所示。
4、利用公式计算量化信噪比,显示结果如图5所示。
四、设计结果及分析
运行主程序,观测到:
图2、长度为1000的标准正态分布的随机信号,时域波形及频谱图
图3、PCM编码输入输出关系曲线
图4、编码前以及解码后时域信号,和频域信号的波形
图5、量化信噪比
附录:
函数一:
非均匀PCM量化编码:
functionpcm=umpcm(x);
%PCM编码,入口参数:
X(-4079<
X<
4079),出口参数PCM为一8码序列;
pcm=zeros(1,8);
ifx<
k=0;
else
k=1;
end
x=abs(x);
p=x;
=15.5
pcm=[k,0,0,0];
elseifx<
=47.5
pcm=[k,0,0,1];
p=floor((x-15.5)/2);
elseifx<
=111.5
pcm=[k,0,1,0];
p=floor((x-47.5)/4);
=239.5
pcm=[k,0,1,1];
p=floor((x-111.5)/8);
=495.5
pcm=[k,1,0,0];
p=floor((x-239.5)/16);
=1007.5
pcm=[k,1,0,1];
p=floor((x-495.5)/32);
=2031.5
pcm=[k,1,1,0];
p=floor((x-1007.5)/64);
=4079.5
pcm=[k,1,1,1];
p=floor((x-2031.5)/128);
end
y=str2double(dec2bin(p));
pcm(5)=floor(y/1000);
pcm(6)=floor(mod(y,1000)/100);
pcm(7)=floor(mod(y,100)/10);
pcm(8)=floor(mod(y,10));
%dec2bin:
将十进制数转换为二进制数;
%str2double:
将字符型数转化为double型;
%floor:
像低位取整
%mod:
求两数的余数
函数二、非均匀PCM解码
functiondpcm=depcm(s);
%解码函数,入口参数S,二进制序列,出口参数:
dpcm数据
dpcm=0;
k=s
(2)*4+s(3)*2+s(4);
h=s(5)*8+s(6)*4+s(7)*2+s(8);
switchk
case0
dpcm=h;
case1
dpcm=16+h*2+1;
case2
dpcm=48+h*4+2;
case3
dpcm=112+h*8+4;
case4
dpcm=240+h*16+8;
case5
dpcm=496+h*32+16;
case6
dpcm=1008+h*64+32;
case7
dpcm=2032+h*128+64;
otherwise
disp('
error'
);
ifs
(1)==0
dpcm=0-dpcm;
函数三、误码率生成函数
functionwm=wml(num8,k)
p=randperm(k)%产生长度为K的随机序列
fori=1:
k
q=num8(p(i),1);
ifq==0
q=1;
else
q=0;
num8(p(i),1)=q;
functionmain()
n=1000;
num8=zeros(n,8);
函数四、主函数
t=0:
100*pi/(n-1):
100*pi;
x1=randn(1,1000);
%产生一正态分布序列
x10=fft(x1,1024);
%x=sin(t);
%待量化编码序列
x=x1(1:
n);
x0=fft(x,n);
subplot(2,1,1);
%绘制正态分布序列时域与频域图
plot(x1);
title('
长度为1000的标准正态分布的随机信号时域波形图'
subplot(2,1,2);
plot(abs(x10));
长度为1000正态分布的频域图'
figure;
%新窗口中绘制PCM编码输入输出关系曲线
u=255;
xx=0:
0.01:
1;
xy=log(1+u*xx)/log(1+u);
plot(xx,xy);
PCM编码输入输出关系曲线'
%打开新的窗口,绘制编码与解码信号时域与频域图
subplot(2,2,1);
plot(x);
编码前时域信号'
subplot(2,2,2);
plot(abs(x0));
编码前频域信号'
%编码过程umpcm
fori=1:
n
num8(i,:
)=umpcm(x(i));
wml(num8,8);
n%解码部分depcm
y(i)=depcm(num8(i,:
));
y0=fft(y,n);
subplot(2,2,3);
plot(y);
解码后时域信号'
subplot(2,2,4);
plot(abs(y0));
解码后频域信号'
FH=1000;
B=8*FH;
SNR=2^(2*B/FH);
disp('
非均匀量化信噪比:
'
disp(SNR);
函数五、U律PCM与线性PCM的变换函数
functionupcm=pcmcode(b);
upcm=zeros(1,8);
ifb
(2)==1
upcm=[b
(1),1,1,1,b(3),b(4),b(5),b(6)];
elseifb(3)==1
upcm=[b
(1),1,1,0,b(4),b(5),b(6),b(7)];
elseifb(4)==1
upcm=[b
(1),1,0,1,b(5),b(6),b(7),b(8)];
elseifb(5)==1
upcm=[b
(1),1,0,0,b(6),b(7),b(8),b(9)];
elseifb(6)==1
upcm=[b
(1),0,1,1,b(7),b(8),b(9),b(10)];
elseifb(7)==1
upcm=[b
(1),0,1,0,b(8),b(9),b(10),b(11)];
elseifb(8)==1
upcm=[b
(1),0,0,1,b(9),b(10),b(11),b(12)];
elseifb(9)==1
upcm=[b
(1),0,0,0,b(10),b(11),b(12),b(13)];
五、体会
在本次课程设计中我进一步熟练了查找资料,系统设计和软件运用的过程。
同时,让我更深入的了解了PCM脉冲编码调制原理,以及实现过程,使我对通信系统原理这门科目产生了很大的兴趣,从简单的软件仿真让我知晓了通信系统的整个框架结构,同时在更多的学习通信原理课程之外,此次课程设计中,又一次的接触到了MATLAB仿真软件,尽管该软件对于我们来说不再陌生,但是在使用的过程中仍遇到了很多问题,但最后还是在同学和老师的指导下顺利的得到了解决。
通过这次课程设计,学习复习知识的同时,进一步熟练了软件的运用,同时也让我明白了理论是实践的基础,只有掌握了相关的理论知识才能更好更轻松的实践。
当理论某些细节不是很理解时,可以通过编程仿真来进行探索,需要大胆的尝试,如果运行出来了,这样会使得记忆更加深刻,理解更加透彻,使理论变得很明白。
六、参考文献
1、曹志刚,钱亚生《现代通信原理》清华大学出版社,1994
2、程佩青《数字信号处理》(第三版),清华大学出版社。
2007
3、刘树棠译《信号与系统》第二版,西安交通大学出版社,1998
4、张威《MATLAB基础与编程入门》第二版,西安电子科技大学出版社,2008