脉冲编码PCM调制设计.docx
《脉冲编码PCM调制设计.docx》由会员分享,可在线阅读,更多相关《脉冲编码PCM调制设计.docx(10页珍藏版)》请在冰豆网上搜索。
脉冲编码PCM调制设计
数字通信原理课程设计报告书
课题名称
脉冲编码调制(PCM)系统
设计与仿真
姓名
学号
院系
物理与电信工程系
专业
通信工程
指导教师
2010年01月09日
一、设计任务及要求
(1)完成脉冲编码调制(PCM)系统的设计与仿真。
(2)用MATLAB软件将此次设计在电脑上实现,观察输出的波形。
(3)要求有各种需要的信号波形输出,并记录。
指导教师签名:
2010年01月15日
二、指导教师评语:
指导教师签名:
2010年01月15日
三、成绩
盖章验收
2010年01月15日
脉冲编码调制(PCM)系统设计与仿真
一、设计目的
加深对《数字通信原理与技术》及《MATLAB》课程的认识,进一步熟悉M语言编程中各个指令语句的运用;进一步了解和掌握数字通信原理课程设计中各种原理程序的设计技巧;掌握宏汇编语言的设计方法;掌握MATLAB软件的使用方法,加深对试验设备的了解以及对硬件设备的正确使用。
加强对于电路图的描绘技能,巩固独立设计实验的实验技能。
提高实践动手能力。
二、设计要求
采用matlab或者其它软件工具实现脉冲编码调制(PCM)系统的设计与仿真,并且绘制相关的图形;通过编程设置对参数进行调整,可以调节输出信号的显示效果。
所有设计要求,均必须在实验室调试,保证功能能够实现。
三、设计原理
在PCM中,波形的每个样本独立进行编码。
然而,以奈奎斯特速率或更高速率采样的绝大多数信号(包括语音信号),其相邻的样本之间呈现明显的相关性,换言之,相邻采样幅度间的平均变化较小。
所以,利用采样中多余度的编码方案将使语音信号的码率降低。
一种简单的解决方法就是对相邻样本之差编码而不是对样本本身编码,由于相邻样本之差比实际样本幅度小,所以表示差信号需要较小的位数。
这种普通方法的一种改进方案是用前面的n个样本根据一定的规律来预测当前的样本,然后将预测值与实际值的误差进行量化后传输,在根据误差信号,采用和发送端相同的预测方法恢复出原始信号。
图1PCM的原理框图
模拟信号数字化必须经过三个过程,即抽样、量化和编码,以实现话音数字化的脉冲编码调制(PCM,PulseCodingModulation)技术。
1.抽样(Samping)
抽样是把模拟信号以其信号带宽2倍以上的频率提取样值,变为在时间轴上离散的抽样信号的过程。
例如,话音信号带宽被限制在0.3~3.4kHz内,用8kHz的抽样频率(fs),就可获得能取代原来连续话音信号的抽样信号。
对一个正弦信号进行抽样获得的抽样信号是一个脉冲幅度调制(PAM)信号,如下图对模拟正弦信号的抽样所示。
对抽样信号进行检波和平滑滤波,即可还原出原来的模拟信号。
2.量化(quantizing)
抽样信号虽然是时间轴上离散的信号,但仍然是模拟信号,其样值在一定的取值范围内,可有无限多个值。
显然,对无限个样值一一给出数字码组来对应是不可能的。
为了实现以数字码表示样值,必须采用“四舍五入”的方法把样值分级“取整”,使一定取值范围内的样值由无限多个值变为有限个值。
这一过程称为量化。
量化后的抽样信号与量化前的抽样信号相比较,当然有所失真,且不再是模拟信号。
这种量化失真在接收端还原模拟信号时表现为噪声,并称为量化噪声。
量化噪声的大小取决于把样值分级“取整”的方式,分的级数越多,即量化级差或间隔越小,量化噪声也越小。
3.编码(Coding)
量化后的抽样信号在一定的取值范围内仅有有限个可取的样值,且信号正、负幅度分布的对称性使正、负样值的个数相等,正、负向的量化级对称分布。
若将有限个量化样值的绝对值从小到大依次排列,并对应地依次赋予一个十进制数字代码(例如,赋予样值0的十进制数字代码为0),在码前以“+”、“-”号为前缀,来区分样值的正、负,则量化后的抽样信号就转化为按抽样时序排列的一串十进制数字码流,即十进制数字信号。
简单高效的数据系统是二进制码系统,因此,应将十进制数字代码变换成二进制编码。
根据十进制数字代码的总个数,可以确定所需二进制编码的位数,即字长。
这种把量化的抽样信号变换成给定字长的二进制码流的过程称为编码。
话音PCM的抽样频率为8kHz,每个量化样值对应一个8位二进制码,故话音数字编码信号的速率为8bits×8kHz=64kb/s。
量化噪声随量化级数的增多和级差的缩小而减小。
量化级数增多即样值个数增多,就要求更长的二进制编码。
因此,量化噪声随二进制编码的位数增多而减小,即随数字编码信号的速率提高而减小。
自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。
PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。
图2PCM模块电路方框图
四、设计步骤
4.1、实施步骤
A、输出时钟和帧同步时隙信号观测
用示波器同时观测抽样时钟信号(TP504)和输出时钟信号(TP503),观测时以TP504作为同步信号。
B、抽样时钟信号与PCM编码数据测量
将跳线开关K501设置在T位置,用函数信号发生器产生一个频率为100HZ,电平为2V的正弦波测试信号,送入信号测试端口J005和J006。
用示波器同时观测抽样时钟信号(TP504)和编码输出数据信号(TP502),观测时以TP504作为同步信号。
4.2、具体设计程序
main.m
%showthepcmencodeanddecode
clearall
closeall
t=0:
0.01:
10;%1001个数
vm1=-70:
1:
10;%输入正弦信号幅度不同dB
vm=10.^(vm1/20);%dB---10进制
figure
(1)
fork=1:
length(vm)
form=1:
2
x=vm(k)*sin(2*pi*t+2*pi*rand
(1));
v=1;
xx=x/v;%normalize
sxx=floor(xx*4096);
y=pcm_encode(sxx);
yy=pcm_decode(y,v);
nq(m)=sum((x-yy).*(x-yy))/length(x);%燥声功率
sq(m)=mean(yy.^2);%信号功率
snr(m)=(sq(m)/nq(m));%信燥比
drawnow
subplot(211)
plot(t,x);
title('samplesequence');
subplot(212)
plot(t,yy);
title('pcmdecodesequence');
end
snrq(k)=10*log10(mean(snr));
end
figure
(2)
plot(vm1,snrq);
axis([-600060]);
grid;
pcm_encode.m
function[out]=pcm_encode(x)
%xencodetopcmcode
n=length(x);
%-4096fori=1:
n
ifx(i)>0
out(i,1)=1;%符号位
else
out(i,1)=0;%符号位
end
ifabs(x(i))>=0&abs(x(i))<32
out(i,2)=0;out(i,3)=0;out(i,4)=0;step=2;st=0;
elseif32<=abs(x(i))&abs(x(i))<64
out(i,2)=0;out(i,3)=0;out(i,4)=1;step=2;st=32;
elseif64<=abs(x(i))&abs(x(i))<128
out(i,2)=0;out(i,3)=1;out(i,4)=0;step=4;st=64;
elseif128<=abs(x(i))&abs(x(i))<256
out(i,2)=0;out(i,3)=1;out(i,4)=1;step=8;st=128;
elseif256<=abs(x(i))&abs(x(i))<512
out(i,2)=1;out(i,3)=0;out(i,4)=0;step=16;st=256;
elseif512<=abs(x(i))&abs(x(i))<1024
out(i,2)=1;out(i,3)=0;out(i,4)=1;step=32;st=512;
elseif1024<=abs(x(i))&abs(x(i))<2048
out(i,2)=1;out(i,3)=1;out(i,4)=0;step=64;st=1024;
elseif2048<=abs(x(i))&abs(x(i))<4096
out(i,2)=1;out(i,3)=1;out(i,4)=1;step=128;st=2048;
else
out(i,2)=1;out(i,3)=1;out(i,4)=1;step=128;st=2048;
end
if(abs(x(i))>=4096)
out(i,2:
8)=[1111111];
else
tmp=floor((abs(x(i))-st)/step);
t=dec2bin(tmp,4)-48;%函数dec2bin输出的是ASCII字符串,48对应0
out(i,5:
8)=t(1:
4);
end
end
out=reshape(out',1,8*n);%行变列
pcm_decode.m
function[out]=pcm_decode(in,v)
%decodetheinputpcmcode
%in:
inputthepcmcode8bitssample
%v:
quantizedlevel
n=length(in);
in=reshape(in',8,n/8)';%列变行
slot
(1)=0;
slot
(2)=32;
slot(3)=64;
slot(4)=128;
slot(5)=256;
slot(6)=512;
slot(7)=1024;
slot(8)=2048;
step
(1)=2;
step
(2)=2;
step(3)=4;
step(4)=8;
step(5)=16;
step(6)=32;
step(7)=64;
step(8)=128;
fori=1:
n/8
ss=2*in(i,1)-1;%+1-1
tmp=in(i,2)*4+in(i,3)*2+in(i,4)+1;%2进制转换10进制
st=slot(tmp);
dt=(in(i,5)*8+in(i,6)*4+in(i,7)*2+in(i,8))*step(tmp)+0.5*step(tmp);
out(i)=ss*(st+dt)/4096*v;
end
五、设计结果
图3输入正弦信号图
图4实验结果图
六、设计体会与建议
6.1设计体会
在此次设计中,我们将课本理论知识与实际应用联系起来,按照书本上的知识和老师讲授的方法,首先分析研究此次数字电路课程设计任务和要求,然后按照分析的结果进行实际编程操作,检测和校正,再进一步完善M程序。
在其中遇到一些不解和疑惑的位置,还有一些出现的未知问题,我们都认真分析讨论,然后对讨论出的结果进行实际检测校正,对一些疑难问题我们也认真向老师询问请教,和老师一起探讨解决。
通过此次数字电路课程设计,我们加深了对课本知识的认识理解,对数字电路设计方法和M语言也有了一定的初步认识。
6.2对设计的建议
在我们动手制作之前应先告诉我们应先熟练掌握相关软件指令、和原理,掌握如何编写程序的方法。
我们应当注意实验中的问题,要思考问题来源及如何去解决。
这样会有助于我们进一步的进入状态,完成设计;也更助于我们能够真正锻炼我们的动手能力。
总之,在本设计中,通过自己的努力,认真学习相关的函数,通过设计前后的分析,大大提高了自己解决问题的能力。
而在设计过程中通过对错误的改正,也加强了自己对相关知识的理解,这将对以后的学习工作有着很大的帮助。
同时由于本次设计运用了不同的知识,这样我就可以更好的将不同科目的知识进行联系学习,对牢靠的学习有着巨大的支持!
同时真诚感谢李梦醒老师给予的大力支持和帮助指导!
参考文献
[1].曹志刚,钱亚生.现代通信原理[M].清华大学出版社,2006年10月第24版:
70-71。
[2].张志涌.精通matlab6.5版[M].北京航天航空大学出版社,2005年8月:
51-53。
[3].程佩青.数字信号处理教程[M].清华大学出版社,2006年10月:
82-84。
[4].刘树棠.信号与系统[M].西安交通大学出版社2005年4月:
65-68。
[5].郭文彬.通信原理基于matlab的计算机仿真[M].北京邮电大学出版社:
36-45。