通信原理软件AD转换课程设计Matlab.docx
《通信原理软件AD转换课程设计Matlab.docx》由会员分享,可在线阅读,更多相关《通信原理软件AD转换课程设计Matlab.docx(14页珍藏版)》请在冰豆网上搜索。
通信原理软件AD转换课程设计Matlab
通信原理课程设计报告
课程名称A/D转换的仿真实现(软件部分)
专业通信工程
班级XXXX
学号XXXXXXXX
姓名XXXXX
指导教师XXXX
2015年1月20日
前言
经过几天通信原理实验的学习让我受益菲浅。
在通信原理实验课即将结束之时,我对在这4天的学习进行了总结,取之长补之短,在今后的学习和工作中有所受用。
这次通信原理实验,不仅是对已学的《通信原理》知识的一种回顾,更是将这学期所开设的《光纤通信》,《通信电子电路》和《信息论与编码》的一种有效巩固,开始对数字基带信号的码型变换有了更好的了解。
《通信原理》是通信工程的重要基石,大三所学的都是更为精细与补充,在不断的时间投入与深入的沉淀中,体会到学习的另一番乐趣。
通过这次通信原理实验,我有认真地去翻阅思考《通信原理》的知识,认真地去上机调试每个硬件模块,用心地去编写调试Matlab程序,也认真地写下这份实验报告,我相信这份用心与耐心是经得起考验的,希望能得到老师的肯定与优秀。
软件部分A/D转换的仿真实现
一、实验目的
通信原理实验是针对通信工程专业学生的实践教学环节,通过这一环节,可使学生巩固相关课程知识,增强动手能力,提高学生对通信系统的仿真技能。
在强调基本原理的同时,更突出设计过程的锻炼,强化学生的实践创新能力。
二、实验基本要求
1、培养学生根据需要选学参考书,查阅手册,图表和文献资料的自学能力,通过独立思考﹑深入钻研有关问题,学会自己分析解决问题的方法。
2、通过对硬件电路的安装、调试等环节,初步掌握通信原理电路的分析方法和工程设计方法。
3、掌握常用仪表的正确使用方法,学会对电路的实验调试和相关指标测试方法,提高动手能力。
4、通过对通信系统的仿真模型的建立及其分析,掌握使用仿真软件对实际通信系统性能进行仿真的初步技能。
5、提高和挖掘学生对所学专业知识的应用能力和创新意识,培养和锻炼学生的团队合作精神和科研开发精神。
三、实验设计任务
(一)设计要求
1、学习使用计算机建立通信系统仿真模型的基本方法及基本技能,学会利用仿真手段对通信系统的基本理论、基本算法进行实际验证。
2、学习现有通信系统仿真软件的基本使用方法,学会通信仿真系统的基本设计与调试,学会使用仿真软件解决实际系统出现的问题。
3、通过系统仿真加深对通信课程理论的理解,拓展知识面。
学会查找资料,并结合通信原理的知识,对通信系统进行性能分析。
(二)设计任务
设计型实验共有两类实验题,每位同学可选择两类中其中一题。
设计型实验中仿真软件的选择,同学们可自由选取,建议用Matlab。
Ⅰ、基本任务:
单频正弦波模拟信号的简单数字化。
即对一个单频正弦波模拟信号进行抽样、均匀量化、PCM二进制自然编码。
主要步骤和要求:
(1)单频正弦波模拟信号的抽样实现。
要求输入信号的幅度A、频率F和相位P可变;要求仿真时间从0到2/F,抽样频率为Fs=20F;要求给出抽样信号的波形图。
(2)单频正弦波模拟信号均匀量化的实现。
要求对抽样信号归一化后再进行均匀量化;要求量化电平数D可变;要求输出信号为平顶正弦波;要求给出量化输出信号的波形图,并与抽样信号画在同一图形窗口中进行波形比较。
(3)单频正弦波模拟信号PCM二进制自然编码的实现。
要求按量化序号给出PCM二进制自然编码;要求给出编码后的数字序列pcm。
Ⅱ、选做任务:
单频正弦波模拟信号的特殊数字化。
按给定要求对一个单频正弦波模拟信号进行数字化。
主要步骤和要求:
(1)单频正弦波模拟信号的抽样实现。
要求输入信号的幅度A、频率F和相位P可变;要求仿真时间从0到2/F,抽样频率为Fs=20F;要求给出抽样信号的波形图。
(2)单频正弦波模拟信号非均匀量化的实现。
要求对抽样信号归一化后再分别进行满足A律和u律压缩的非均匀量化;要求压缩参数a、u可变;要求量化电平数D可变;要求输出信号为平顶正弦波;要求给出量化输出信号的波形图,并与抽样信号画在同一图形窗口中进行波形比较。
四、实验设计原理
信号的数字化需要三个步骤:
抽样、量化和编码。
抽样是指用每隔一定时间的信号样值序列来代替原来在时间上连续的信号,也就是在时间上将模拟信号离散化。
量化是用有限个幅度值近似原来连续变化的幅度值,把模拟信号的连续幅度变为有限数量的有一定间隔的离散值。
编码则是按照一定的规律,把量化后的值用二进制数字表示,然后转换成二值或多值的数字信号流。
这样得到的数字信号可以通过电缆、微波干线、卫星通道等数字线路传输。
在接收端则与上述模拟信号数字化过程相反,再经过后置滤波又恢复成原来的模拟信号。
上述数字化的过程又称为脉冲编码调制。
抽样
话音信号是模拟信号,它不仅在幅度取值上是连续的,而且在时间上也是连续的。
要使话音信号数字化并实现时分多路复用,首先要在时间上对话音信号进行离散化处理,这一过程叫抽样。
所谓抽样就是每隔一定的时间间隔T,抽取话音信号的一个瞬时幅度值(抽样值),抽样后所得出的一系列在时间上离散的抽样值称为样值序列。
抽样后的样值序列在时间上是离散的,可进行时分多路复用,也可将各个抽样值经过量化、编码变换成二进制数字信号。
理论和实践证明,只要抽样脉冲的间隔T≤1/(2fm)(或f≥2fm)(fm是话音信号的最高频率),则抽样后的样值序列可不失真地还原成原来的话音信号。
量化
抽样把模拟信号变成了时间上离散的脉冲信号,但脉冲的幅度仍然是模拟的,还必须进行离散化处理,才能最终用数码来表示。
这就要对幅值进行舍零取整的处理,这个过程称为量化。
量化有两种方式,量化方式中,取整时只舍不入,即0~1伏间的所有输入电压都输出0伏,1~2伏间所有输入电压都输出1伏等。
采用这种量化方式,输入电压总是大于输出电压,因此产生的量化误差总是正的,最大量化误差等于两个相邻量化级的间隔Δ。
量化方式在取整时有舍有入,即0~0.5伏间的输入电压都输出0伏,0.5~1?
5伏间的输出电压都输出1伏等等。
采用这种量化方式量化误差有正有负,量化误差的绝对值最大为Δ/2。
因此,采用有舍有入法进行量化,误差较小。
最小量化间隔越小,失真就越小。
最小量化间隔越小,用来表示一定幅度的模拟信号时所需要的量化级数就越多,因此处理和传输就越复杂。
所以,量化既要尽量减少量化级数,又要使量化失真看不出来。
一般都用一个二进制数来表示某一量化级数,经过传输在接收端再按照这个二进制数来恢复原信号的幅值。
所谓量化比特数是指要区分所有量化级所需几位二进制数。
例如,有8个量化级,那么可用三位二进制数来区分,因为,称8个量化级的量化为3比特量化。
8比特量化则是指共有个量化级的量化。
目前国际上普遍采用容易实现的A律13折线压扩特性和μ律15折线的压扩特性。
我国规定采用A律13折线压扩特性。
采用13折线压扩特性后小信号时量化信噪比的改善量可达24dB,而这是靠牺牲大信号量化信噪比(亏损12dB)换来的。
编码
抽样、量化后的信号还不是数字信号,需要把它转换成数字编码脉冲,这一过程称为编码。
最简单的编码方式是二进制编码。
具体说来,就是用n比特二进制码来表示已经量化了的样值,每个二进制数对应一个量化值,然后把它们排列,得到由二值脉冲组成的数字信息流。
编码过程在接收端,可以按所收到的信息重新组成原来的样值,再经过低通滤波器恢复原信号。
用这样方式组成的脉冲串的频率等于抽样频率与量化比特数的积,称为所传输数字信号的数码率。
显然,抽样频率越高,量化比特数越大,数码率就越高,所需要的传输带宽就越宽。
非均匀量化
为了克服均匀量化的缺点,实际中,往往采用非均匀量化。
非均匀量化是一种在输入信号的动态范围内量化间隔不相等的量化。
换言之,非均匀量化是根据输入信号的概率密度函数来分布量化电平,以改善量化性能。
非均匀量化是根据信号的不同区间来确定量化间隔的。
对于信号取值小的区间,其量化间隔也小;反之,量化间隔就大。
它与均匀量化相比,有两个主要的优点:
当输入量化器的信号具有非均匀分布的概率密度时,非均匀量化器的输出端可以较高的平均信号量化噪声功率比;
非均匀量化时,量化噪声功率的均方根值基本上与信号抽样值成比例。
因此,量化噪声对大、小信号的影响大致相同,即改善了小信号时的量化信噪比。
五、实验设计思路
假设量化电平数D已知,要求由PCM二进制自然编码序列恢复出单频正弦波模拟信号。
要求PCM二进制自然编码序列可以是数字型也可以是字符型;要求对PCM二进制自然编码序列进行数据处理(按照量化电平数D推导出一个码字的码长n,如果PCM二进制自然编码序列的长度不是n的整数倍,则补0);
1.PCM编码概念
PCM二进制编码:
(又叫脉冲编码调制)主要过程是将话音、图像等模拟信号每隔一定时间进行取样,使其离散化,同时将抽样值按分层单位四舍五入取整量化,同时将抽样值按一组二进制码来表示抽样脉冲的幅值。
内插函数:
利用以下内插公式可以实现模拟信号的恢复:
=xa(t),
其中g(t)=sin(πt)/(πt)=sinc(Fs×t);Fs为采样频率。
2.PCM编码生成
由于题目要求用pcm编码恢复一个单频正弦波的波形,为了得到较准确的单频正弦波的pcm编码(随便找一个编码不能确定它是正弦波),因此,本人先做了A/D转换,以得到正弦波编码。
通过查阅MATLAB函数大全,找到了两个函数Lloyd算法优化标量算法的函数lloyds()和量化输出值的函数quantiz(),通过一些例子了解的它们的用法,利用以上函数可以得到准确的量化值以完成较准确的pcm编码,为D/A转换提供一个前提准备。
(以正弦信号xa=3sin(2π*3000t)为例,采样频率为80*3200,量化电平数D=19)
六、实验结果:
采样频率为20F的输入信号
量化后的波形
两个波形的比较图
单频正弦波模拟信号的抽样实现
单频正弦波模拟信号非均匀量化的实现
pcm编码如下:
01001
01101
01111
10010
10011
10011
10011
10001
01110
01100
01001
00110
00100
00001
00000
00000
00000
00010
00100
00111
01010
01101
01110
10001
10011
10011
10011
10010
01111
01110
01000
00110
00011
00001
00000
00000
00000
00001
00101
00101
01010
过matlab完成了D/A转换,发现恢复出的波形与原始单频正弦模拟信号大体一致,也存在一些误差。
在实验中通过变换输入信号的采样频率,以及内插点数的多少还发现:
采样频率越大,恢复出来的信号越接近原始信号;插入的点数越多恢复出来的信号越接近于原始信号,与理论上完全相符。
证明本次实验比较成功的实现了D/A转换的仿真。
七、实验总结:
刚拿到实验题目的时候,就开始通过《通信原理》对它进行复习,逐渐明白了抽样量化编码的原理。
但是要让它在matlab上实现还是一个问题,于是又开始读《MATLAB及在电子信息课程中的应用》。
在对pcm编码以及用pcm编码恢复序列的时候多次利用查找matlab函数大全,获得一些可以直接利用的函数,为设计提供了很多便捷,比如Lloyd算法优化标量算法的函数lloyds()和量化输出值的函数quantiz(),通过一些例题演示可以大致了解他们的用法以及作用,还有比如矩阵左右翻转函数fliplr(),和二进制转十进制函数bi2de()。
通过对大量的资料的查阅可以发现matlab应用的灵活性,更重要的一点是:
我们应该把重点放在解题思想和程序设计的方法问题上,而对于很多函数的应用问题可以通过查表等方法简单实现。
总之,通过这次D/A转换的仿真实验,对MATLAB的操作更见熟练了,巩固了许多基础知识,也让我在解决问题的过程中获得了很多乐趣,对许多理论上的东西有了更深的认识。
八、实验代码
A=5;F=2500;P=0;D=20;%设定原始模拟信号的参数
Fs=20*F;
t1=0:
1/Fs:
2/F;
xa=A*sin(2*pi*F*t1);
figure
(1)
plot(t1,xa,'k');%显示输入信号波形以及采样点
holdon;
plot(t1,xa,'b.');
axis([0,2/F,-5,5]);
title('采样频率为20F的输入信号');
xlabel('x(t)');
ylabel('t')
m=max(xa);
x1=xa/m;%归一化,以便还原
%量化
[partition,codebook]=lloyds(x1,D);%Lloyd(劳埃德)算法优化量化算法函数分界点矢量(参数),码本
[indx,quant]=quantiz(x1,partition,codebook);%量化输出值函数量化索引
%根据partition来对x1输入信号产生量化索引(量化索引的长度和x1的长度相同)
%码本是长度为N的输出集
figure
(2)
stem(t1,quant,'g.');%显示量化后波形
axis([0,2/F,-2,2]);
title('量化后的波形');
xlabel('x(t)');
ylabel('t');
figure(3)
plot(t1,xa,'k');%显示输入信号波形以及采样点
holdon;
plot(t1,xa,'b.');
holdon
stem(t1,quant,'g.');%显示量化后波形
axis([0,2/F,-5,5]);
title('两个波形比较图');
xlabel('x(t)');
ylabel('t')
%编码
nu=ceil(log2(D));%对log2(D)向上取整
pcm=zeros(length(x1),nu);%待赋值的零矩阵,前一个系数是行,后一个系数是列
fori=1:
length(x1)%通过对每一位进行检验得到pcm编码
forj=nu:
-1:
0
if(fix(indx(i)/2^j)==1)
pcm(i,nu-j)=1;
indx(i)=indx(i)-2^j;
end
end
end
disp('pcm编码如下:
');
disp(pcm)
%单频正弦波模拟信号的抽样实现
Fs1=F;Fs2=2*F;Fs3=20*F;
t11=0:
1/Fs1:
2/F;
t12=0:
1/Fs2:
2/F;
t13=0:
1/Fs3:
2/F;
samp11=A*sin(2*pi*F*t11+P);
samp12=A*sin(2*pi*F*t12+P);
samp13=A*sin(2*pi*F*t13+P);
figure(4)
subplot(311);
plot(t11,samp11,'b');
xlabel('t');ylabel('samp11');
title('单频正弦波模拟信号的原波形');
subplot(312);
plot(t12,samp12,'y');
xlabel('t');ylabel('samp12');
title('单频正弦波模拟信号的2倍抽样波形');
subplot(313);
plot(t13,samp13,'g');
xlabel('t');ylabel('samp13');
title('单频正弦波模拟信号的20倍抽样波形');
%单频正弦波模拟信号非均匀量化的实现
Fs=20*F;a=87.6;u=255;
t3=0:
1/Fs:
2/F;
samp13=A*sin(2*pi*F*t3+P);
figure(5)
subplot(411);
plot(t3,samp13,'g');
xlabel('t');ylabel('samp13');
title('单频正弦波模拟信号的原波形');
x=samp13./max(samp13);
subplot(412);
plot(t3,x,'g');
xlabel('t');ylabel('samp13*');
title('抽样信号归一化');
quant11=compand(x,a,1,'A/compressor');
quant12=compand(x,u,1,'mu/compressor');
partition=[-1:
2/D:
0.9];
codebook=[-1-1/D:
2/D:
1];
[indx1,quant1]=quantiz(x,partition,codebook);
subplot(413);
plot(t3,quant11,'k');
xlabel('t');ylabel('quant11');
title('A律非均匀量化');
subplot(414);
plot(t3,quant12,'b');
xlabel('t');ylabel('quant12');
title('u律非均匀量化');