资源描述
______________________________________________________________________________________________________________
课 程 设 计 报 告
课程名称 通信原理
课题名称 信号量化,编码
专 业 通信工程
班 级 1301
学 号 201303020102
姓 名 谢**
指导教师 胡倩 彭祯 韩宁
2016 年 1 月 15 日
13级通信工程专业“通信原理”课程设计任务书
一、课题名称
基带通信过程仿真
二、课程设计内容
本课题使用Matlab仿真软件,利用Matlab集成环境下的M文件编写程序来模拟和仿真简单的通信过程,主要包括采样量化编码、信道编码、信道解码、数模转换输出,最后集成各个模块。最后根据输出的相应信号的时域波形和频域波形或仿真结果,来判断通信的质量,并分析误差存在的原因。
三、课程设计目的
(1)综合应用《Matlab编程与系统仿真》、《信号与系统》、《现代通信原理》等多门课程知识,建立通信系统的整体概念;
(2)培养系统设计与系统开发的思想;
(3)培养利用软件进行通信仿真的能力;
(4)熟悉Matlab文件中M文件的使用方法,包括函数、原理和使用的方法。
四、设计要求
(1)8-9个同学一组,在Matlab环境下完成对通信系统各部分仿真程序的设计与调试,对通信过程整体有较深入的理解;
(2)组员深入理解自己仿真部分的原理的基础,提出仿真方案,画出对应的子系统的原理框图;
(3)完成仿真程序的编制,运行仿真程序;
(4)组长负责各模块的集成,并对本组系统总结。
(5)完成课设报告,程序分组打包。
五、分组安排
学号末两位%8=1,信号抽样
学号末两位%8=2,3,信号量化,编码
学号末两位%8=4,信道编码(HDB3)
学号末两位%8=5,信道解码
学号末两位%8=6,7,信号数模转换
学号末两位%8=0, 各模块仿真结果分析,集成各模块
1-8号,9-16号,17-24号,25-32号一组,33,34,35号每个人跟一个组。每组选出一个组长。
六、时间安排
(1)上机时间:
十八周: 礼拜一:上午
礼拜二:下午
礼拜三:下午
礼拜四:下午
礼拜五:上午
十九周: 礼拜一:下午
礼拜二:下午
(2)其他时间
自己在寝室或图书馆查找资料、代码设计、完成课设报告
目 录
一.数字通信系统的简介 1
二. 类似A率的13折线编码原理 3
三.13折线法的PCM解码流程图 4
3.1 编码原理 4
3.2 编码流程图 5
四.用MATLAB进行解码仿真 6
五.心得体会 7
六.附录 8
七.评分表 10
精品资料
基带通信系统——信号量化,编码
一.数字通信系统的简介
数字通信系统是利用数字信号来传递信息的通信系统,它不同于模拟通信系统。它同模拟通信系统相比,具有以下一些优点:
① 抗干扰能力强,且噪声不累计。
② 传输差错可控。
③ 便于用现代数字信号处理技术对数字信息进行处理、变换、储存。
④ 易于集成,使通信设备微型化,重量减轻。
⑤ 易于加密处理,且保密性好。
但它也存在一定的缺点就是可能需要较大的传输带宽。
至今,数字通信技术一直受重视。其系统模型如下图所示。数字通信涉及的技术问题很多,其中主要有信源编码与译码、信道编码与译码、数字调制与解调、同步及加密与解密等。
数字解调
信源编码
信宿
信源译码
解密
信道译码
信道
数字调制
信道编码
加密
信源
噪声源
图1 数字通信系统模型
(1) 信源编码与译码
信源编码有两个基本功能:一是提高信息传输的有效性,即通过某种压缩编码技术设法减少码元数目以降低码元速率。二是完成数模转换,即当信息源给出的是模拟信号时,信源编码器将其转换为数字信号,以实现模拟信号的数字传输。信源译码是信源编码的逆过程。
(2) 信道编码与译码
信道编码的作用是进行差错控制。数字信号在传输过程中会受到噪声等影响而发生差错。为了减小差错,信道编码器对传输的信息码元按一定的规则加入保护成分(监督码元),组成所谓的“抗干扰编码”。接收端的信道译码按相应的逆规则进行解码,从中发现错误或纠正错误,提高通信系统的可靠性。
(3) 加密与解密
在需要实现保密通信的场合,为了保证所传信息的安全。人为的将传输的数字序列扰乱,即加上密码,这种处理过程叫做加密。在接收端利用与发送端处理过程相反的过程对收到的数字序列进行解密,恢复原来的信息。
(4) 数字调制与解调
数字调制是把数字基带信号的频谱搬移到高频处,形成适合在信道中传输的通信号。基本的数字调制方式有振幅键控、频移键控、绝对相移键控、相对(差分)相移键控。在接收端可以采用相干解调或非相干解调还原数字基带号。
(5) 同步
同步是使发收两端的信号在时间上保持步调一致,是保证数字通信系统有序、准确、可靠工作的前提条件。在按照同步的功能不同,分为载波同步、位同步、帧同步和网同步。同步单元也是系统的组成部分。
所谓抽样,就是根据奈奎斯特采样定理对模拟信号进行采样,使其时域离散化,但此时信号仍是模拟信号,这个抽样后的信号必须经过量化才能变成数字信号。信号的量化,分为均匀量化和非均匀量化,量化方式不同,但原理相同。下图为量化的原理示意图:
图2 量化过程
量化完之后要将信号进行编码,在这里一般采用脉冲编码调制(PCM)。然而在实际的基带传输系统中,并不是所有的基带波形都适合在信道传输,例如,含有直流和低频分量的单极性基带波形就不适合在低频传输特性差的信道中传输,因为这有可能造成严重的畸变。所以,在信道中要选择合适的传输码,将PCM基带信号按某种码形规则编译好的过程就是信道编码过程,信号传输码形有很多种类型,例如:AMI码,HDB3码,双相码,差分双相码,CMI码等等(本次课程设计选用HDB3码)。相反,信道解码就是将上一步信道编码好的信号无失真的还原成基带信号。最后信号的数模转换,也就是PCM的解调过程,将编码好的数字基带信号还原成采样后的模拟信号的过程。
二. 类似A率的13折线编码原理
由于A率表示式是一条连续的平滑曲线,用电子线路很难准确的实现。所以要采用13折线近似A率的特性来实现。如下图:
图3 对称输入13折线压缩特性
图中横坐标x在0~1区间中分为不均匀的八段。1/2~1间的线段称为第8段;1/4~1/2间的线段称为7段;1/8~1/4间的线段称为第6段;以此类推,直到0~1/128间的线段称为第1段。图中纵坐标y则均匀地划分作8段。将与这8段相应的坐标点(x,y)相连,就得到一条折线。由图可见,除第一段和第二段外,其他各段折线的斜率都不相同。斜率如下表:
表1
各段折线的斜率
折线段号
1
2
3
4
5
6
7
8
斜率
16
16
8
4
2
1
1/2
1/4
x的取值应该还有负的一半。就是说,在坐标系的第三象限还有对原点奇对称的另一半曲线,在图3中第一象限中的第一段和第二段斜率相同,所以过程一条直线。同样,在第三象限中的第一段和第二段折线的斜率也相同,并且和第一象限中的斜率相同。所以,这四段折线构成了一条直线。因此,在这正负两个象限中的完整压缩曲线共有13段折线,故称13折线压缩特性。
三.13折线的PCM解码流程图
3.1 编码原理
13折线的PCM编码是将一个抽样值编码成为8位二进制数。这八位数又分为极性码C1,段落码C2、C3、C4,段落码C5、C6、C7、C8。所以代码可以分为三段来写:
在将抽样值归一化为Is后进行如下过程
极性码C1:根据抽样值得符号判断,如果抽样是y(k)>=0则C1=1,反之C1=0。
段落码:先定义一个flag=7,判断Is是否大于等于2^flag,如果是,则Ci=1,反之Ci=0。此外,在判断完Ci的值后还要记得将flag进行相应的变化,如:C2=1时,flag因变为9,继而C3=1时,flag要变为10。依次循环三次之后既可以得出段落码。
flag = 7;
for i = 2:4 %段落码
if i_s >= 2^flag %判断C2
code(i) = 1;
if i == 3
flag = flag+1;
else
flag = flag+2;
end
else
code(i) = 0;
if i == 3
flag = flag-1;
else
flag = flag-2;
end
end
end
段内码:段内码的结果需要根据段落码来确定该段的其实电平start以及该段的量化间隔delta。根据这两个值可以算出每次与Is比较的Iw。即第一次比较的Iw=start+8*delta。判断Is是否大于等于Iw,如果是则Ci=1,否则Ci=0。
level = 8; %级别初始化
changeLevel = 8; %级别变化初始化
for i = 5:8
i_w = start + level*delta ; %第一段的为start+8*delta
if i_s >= i_w %比较i_s和i_w来判断段内码
code(i) = 1;
changeLevel = changeLevel/2;
level = level + changeLevel;%判断哪一级
else
code(i) = 0;
changeLevel = changeLevel/2;
level = level - changeLevel;
end
end
整理并输出:将编出来的8位码按顺序插入到最终的序列endCode中,最后把endCode传出给主函数进行下步操作。
精品资料
3.2 编码流程图开始
输入一个抽样值
将值归一化
Is>=0
结束
C1 = 1
C1 = 0
flag = 7,i=1
Is>=2^flag
Ci = 1
Ci = 0
flag改变
算出其段的起始电平和量化间隔
根据起始电平和间隔算出Iw
Is>=Iw
C1 = 1
C1 = 0
量化区间改变
i++
1<=i<=8
整合并输出
2<=i<=4
5<=i<=8
Y
Y
Y
Y
Y
N
N
N
N
Y
N
图4 13折线PCM解码流程图
四.用MATLAB进行解码仿真
若将原基带信号为y=sinx其进行13折线PCM编码结果如下:即11111001
图5 幅度为1的0.62的PCM解码仿真结果
y的原信号图如下:
图5 y=sinx的原信号图
对y编码后在解码的图如下:
图6 经过PCM解码后的信号图
五.心得体会
本次课程设计的题目刚下达的时候,我有点迷茫不知道怎么开始做,在任务分配中我做的是第二个,就是量化、编码的部分,这个部分我开始并不清楚,以为量化和编码是可以分开单独进行的。也尝试过想讲信号量化,在对信号进行编码,可是我写了一点代码后发现这种方法行不通,也是因为这个波折让我跟深刻的直到量化和编码最好不要分开来写,同时,在这个过程中,我渐渐的熟悉了matlab这门语言的魅力,便开始喜欢上了编写matlab程序代码。
经过一番思想整理后,在信号量化、编码部分我采用的是近似A率的13折线法编码,通过书上的例题,我更加明白了13折线法对信号编码的规则,于是我便开始了我的“写代码之旅”。书上的例题是对一个抽样值进行编码,变成8位的二进制数,我便按照书上的方法,先能够编出一个数的编码。所以,在最开始我的程序没有整理输出这一部分。等到我正确编写出一个数值的编码后我在开始对所有抽样值得编码进行最后的的整理,整理到一个数组里以便PCM解码。
在编码过程中,我最纠结的地方是如何改变和Is比较的那个数,经过仔细推敲后,我发现这些用于和Is比较的数都是有规律的,比如段落码最先和Is比较的是2^7,如果大于它就和2^9比较,如果还大于就和2^10比较。所以我将2的指数定义为flag,在第一次比较后对flag进行加2或减2,第二次比较就对flag进行加1或减1,这样一来就可以将段落码编出来;有了段落码的编写经验,在段内码编码中我采用了类似的方式用level来代表段内区间,并在段内码编写里将level进行相应的变化。
在写完自己的部分后,我便开始帮助同组的人编写并指导,这次课设做完后,我感觉自己对数字基带系统有了更深入的了解,让我对它的兴趣更加浓厚
六.附录:
function [A,code1] = A13PCM(y)
%函数功能: 将抽样脉冲幅度进行编码
%参数:传入y为信号函数序列,输出code1为编码后的0 1序列,A为y的幅度
code1 = zeros(1,8*length(y))
A = max(abs(y)); %算出信号的最大幅度
for k = 1:length(y)
i_s = abs(y(k)/A)*2048; %将抽样值化为量化单位
i_s = round(i_s);
code = zeros(1,8); %建一个8位的数组
code(1) = (sign(y(k)) >= 0);%级性码C1 0也算符号为正
flag = 7;
for i = 2:4 %段落码
if i_s >= 2^flag %判断C2
code(i) = 1;
if i == 3
flag = flag+1;
else
flag = flag+2;
end
else
code(i) = 0;
if i == 3
flag = flag-1;
else
flag = flag-2;
end
end
end
%下面判断段内码
phase = code(2)*4+code(3)*2+code(4)+1; %段落码换成10进制
if phase >= 2
delta = 2^(phase-2); %计算量化间隔
start = 2^(phase+2); %该段的段落起始电平
else
delta = 1;
start = 0;
end
level = 8; %级别初始化
changeLevel = 8; %级别变化初始化
for i = 5:8
i_w = start + level*delta ; %第一段的为start+8*delta
if i_s >= i_w %比较i_s和i_w来判断段内码
code(i) = 1;
changeLevel = changeLevel/2;
level = level + changeLevel;%判断哪一级
else
code(i) = 0;
changeLevel = changeLevel/2;
level = level - changeLevel;
end
end
for j = 1:8
code1(j+8*(k-1)) = code(j); %整合编码
end
end
七.评分表
计算机与通信学院课程设计评分表
课程名称: 通信原理
项 目
评 价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日 期:
附加:
HDB3编码程序:
function endCode = HDB3encode(code)
%函数功能: HDB3编码
%参数: code为输入原序列,endCode为输出HDB3码的序列
code = [1,code];%先将序列首位添加一个符号位
%B00V中,V的符号满足两个条件:
% 1、V与前一个V符号相反
% 2、V与前一个非0值符号相同,B用于协调
count = 0; %计数器初始化
flag = 1; %第一次联零的标志
symbolCode = 1; %code的符号
V = code(1); %V的符号初始化
for j = 1:length(code)
if code(j) == 0
count = count + 1;
else
code(j) = symbolCode*code(j);
symbolCode = -1*symbolCode;
if flag == 1 %还没有出现第一次连0
V = code(j);
end
count = 0;
end
if count == 4 %检测到4个0
count = 0; %计数清零
code(j) = V; %加V
if V ~= code(j-4) %V与前一个非0值符号不同
if flag == 0
code(j-3) = V; %用B来协调
end
end
flag = 0; %连零标志失效
V = -code(j); %记录V下次的符号
symbolCode = V; %记录下一个1的符号
end
end
endCode = code(2:length(code)); %去除首位
HDB3解码程序:
function endCode = HDB3decode(code)
%函数功能: HDB3解码
%参数: 传入编码信号code,解码成endCode输出
endCode = code;
symbol = 1;
for i = 1:length(endCode)
if endCode(i) ~= 0
%判断它和前一个非零数是不是相同
if symbol == endCode(i)
if i-3 >= 1
endCode(i-3) = 0;
end
endCode(i) = 0;
else
symbol = endCode(i);
end
end
end
for i = 1:length(endCode) %消去符号
if endCode(i) ~= 0
endCode(i) = 1;
end
end
信道PCM解码:
function signal = Decode(A,code)
%函数功能: PCM译码
%参数: 传入已编码信号code和原信号序列y,解码成为signal返回
signal_len = length(code)/8;
signal = zeros(1,signal_len); %创建返回数组
sp = [0,16,32,64,128,256,512,1024]; %段落起点值
spmin = [1,1,2,4,8,16,32,64]; %最小量化间隔
for i = 1:signal_len
symbol = 1; %符号初始化
phase = 1; %段落值初始化
phase_in = 0; %段内值初始化
for j = 1:8
%一维数组的j 对应 j+(i-1)*8
if j == 1 %级性码
if code(j+(i-1)*8) == 0 %如果级性码为0
symbol = -1; %符号记录(负号)
end
end
if j >= 2&&j <= 4 %段落码
%段落码转换为10进制数
phase = code(j+(i-1)*8)*2^(4-j)+phase;
elseif j > 4&&j <= 8
%段内码转化为10进制数
phase_in = code(j+(i-1)*8)*2^(8-j)+phase_in;
end
end
%循环完后将值计算并给出
temp = sp(phase) + spmin(phase)*(phase_in + 0.5);
temp = symbol * temp / 2048; %去归一化和信号还原
signal(i) = A*temp;
end
主函数:
clear all;close all;
f = 200; %采样频率
n = 0:1/f:1-1/f; %采样间隔
y = 2*sin(2*pi*n); %输入信号
[A,code] = A13PCM(y); %量化编码PCM
code1 = HDB3encode(code); %HDB3编码
code2 = HDB3decode(code1); %HDB3解码
signal = Decode(A,code2); %PCM解码
%下面作图
figure
plot(n,y,'r'); %原信号图
title('原信号图');
figure
subplot(311);
stairs(code); %PCM编码图
title('PCM编码图');
axis([1,50,-1,2]);
subplot(312);
stairs(code1); %HDB3编码图
title('HDB3编码图');
axis([1,50,-2,2]);
subplot(313);
stairs(code2); %PCM解码图
title('PCM解码图');
axis([1,50,-1,2]);
figure
stairs(n,signal); %PCM解码信号图
title('PCM解码信号图');
Welcome To
Download !!!
欢迎您的下载,资料仅供参考!
展开阅读全文