基于c语言的hdb编码变换系统.docx
《基于c语言的hdb编码变换系统.docx》由会员分享,可在线阅读,更多相关《基于c语言的hdb编码变换系统.docx(10页珍藏版)》请在冰豆网上搜索。
![基于c语言的hdb编码变换系统.docx](https://file1.bdocx.com/fileroot1/2023-1/3/e2b7af73-a030-44d3-88fb-84155b9ca19b/e2b7af73-a030-44d3-88fb-84155b9ca19b1.gif)
基于c语言的hdb编码变换系统
基于c语言的hdb3编码变换系统
————————————————————————————————作者:
————————————————————————————————日期:
基于c语言的hdb3编码变换系统
设计说明………………………………………………2
1.绪论…………………………………………………2
1.1引言……………………………………………2
1.2课题研究背景…………………………………3
1.3课题研究的主要内容…………………………3
1.4论文组织………………………………………3
2.C语言概述………………………………………….3
2.1C语言的发展………………………………….3
3.编码技术……………………………………………3
3.1通信系统………………………………………3
3.2编码……………………………………………3.
3.2.1信源编码…………………………………4
3.2.2信道编码…………………………………4
3.3.选择码型和常用码型…………………………4..
3.3.1选择码型的考虑…………………………4
3.3.2常用码型的特点…………………………4.
3.4.HDB3码简介……………………………………4
3.4.1HDB3的编码规则…………………………5
4.基带信号HDB3编码和设计…………………….6
1.设计说明
长期以来,人类进行信息交互的基本方式不外乎语言、文字和图像。
随着数字技术的发展,三大信息网:
电话、电视、和因特网在数字通信的平台上融为一体的趋势日益加速。
一方面是通信技术一日千里的发展,技术更新的周期越来越短;另一方面是人们对信息数量和质量的需求不断增长,如何更加有效、更加可靠、更加安全的传输信息,成为人们非常关注的问题。
数字通信具有许多优良的特性,数字处理的灵活性使得数字传输系统中传输的数字信息既可以来自计算机,电传机等数据终端的各种数字代码,也可以是来自模拟信号经过数字化处理后的脉冲编码PCM信号等。
在原理上,数字信息可以直接用数字代码序列表示和传输,但是在实际的传输中,视系统的要求和信道的情况,一般需要进行不同形式的编码,并且选用一组取值有限的离散波形表示,这些取值离散的波形可以是数字带通信号,也可以是数字基带信号。
数字基带信号的传输是数字通信系统的重要组成部分之一。
在数字通信中,一般由信源发出的数字基带信号含有丰富的低频分量,甚至直流分量,这些信号往往不宜直接用于传输,易产生码间干扰进而直接影响传输的可靠性,为了使基带信号能适合在基带HDB3编码的设计信道中传输,通常需要经过基带信号变换。
而为了用更短的代码表达同样多的信息,人们提出了压缩代码长度地方法,并发明了多种压缩方法和实施方案,统称为信源编码。
为了及时发现并纠正信息传输中出现的错误,人们采用了各种检错和纠错技术,由此发展起来了信道编码技术,它使通信更加可靠。
在编码过程中,不同码型有不同的特点和不同的用途。
例如AMI码的传号交替反转,这种码型无直流成分和很小的低频成分,利于在一般的基带信道中传输,但它可能出现四连零现象,不利于接收端的定时信号提取。
为了保持AMI码的优点而克服其缺点提出了HDB3码三阶高密度双极性码。
HDB3码具有编码规则简单,无直流,低频成份少,可打破长连“0”和对定时信号的恢复十分有利等优点,因此被CCITT协会推荐为常用的基带传输码型之一。
综合上述情况,本文提出了基于C语言的HDB3编码的设计方案。
本论文概括了HDB3数字编码的研究背景、意义同时对C语言技术和编码技术作了简要的说明。
设计方面包括规划基于C语言的HDB3编码设计的总体方案,合理利用各种软硬件资源;基于C语言的HDB3编码的软件实现。
其中HDB3码的编码首先在C++软件环境下建立一个工程,程序设计是在C++软件环境下进行的,工程名和程序的实体名一致,并将其作为该工程的设计文件。
然后在C++文本编辑窗中输入设计的源程序,进行编译、调试。
以上是本人对这次设计的简要说明,从设计背景、意义、内容等方面作了简要的介绍。
具体说明请见论文正文
1.绪论。
1.1引言
信号在信道的传输过程中,如何才能保证信号失真最小且可靠的传输是本次课程设计研究的目标。
一个完整的通讯系统,当信号经过一定距离的传送后,总会受到干扰、移相和衰减,因而需要对数字信号进行再生。
从信源输出的信号一般是01两种状态的单极性NRZ码,在进行数字信号传输时,考虑到传输信道的特点,将信息比特变换为适合于在信道中传输的数字信号,即进行线路编码。
传统的基带信号含有丰富的直流和低频分量,这些信号不适宜在信道中传输。
为了使得终端机编码输出的由0和1组成的单极性数码流适应于传输信道的特性,还必须经过码型变换,即对信号进行编码。
选择编码码型时一般应考虑几方面的因素,比如从线路码流中容易提取时钟,码型中不宜含有直流分量,高、低频成分应尽量减少,设备应简单,易于实现码型变换和码型反变换的调试等。
1.2课题研究背景
随着数字通信的迅速发展,线路编码已越来越被人们重视,人们先后提出了各种适合出书的码型,如CMI码、AMI码、HDB3码等。
传输码型是研究数字通信传输系统的一项重要课题,正确选择传输码型不但能改善传输性能,提高通信质量,而且能延长中继距离,是中继器机构简单,从而获得显著地经济效益。
1.3课题研究的主要内容
本设计主要基于C语言,选用一种合适的码型,完成基带型号在基带中的传输。
所以我们小组选择了基于c语言的码型变换系统,共有五种码型(CMI、AMI、HDB3双相码等)。
在设计中我所选用的码型是HDB3码,HDB3码具有无直流、低频成分少、频带较窄、可打破连0的和提取同步方便等特点。
1.4论文组织
本文主要从论文的总体设计、基于C语言的编码的设计几部分来进行论述,具体章节安排如下:
1.c语言的发展、C++软件的设计流程及使用。
2.本文的理论基础—编码技术做一些简单的论述,包括通信系统、编码问题及分类、两种基本的编码理论等。
2.C语言概述
2.1C语言的发展
C语言是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
1967年,剑桥大学的MartinRichards对CPL语言进行了简化,于是产生了BCPL(BasicCombinedPogrammingLanguage)语言。
1970年,美国贝尔实验室的KenThompson。
以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。
并且他用B语言写了第一个UNIX操作系统。
在1972年,美国贝尔实验室的D.M.Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
1978后,C语言已先后被移植到大、中、小及微型机上。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。
3.编码技术
3.1通信系统
信源—》信源编码—》信道编码—》调制器—》信道—》解调器—》信道解码—》信源解码—》信宿
|
噪声源
数字通信系统模型
3.2编码
3.2.1信源编码
信源编码是针对信源统计特性进行编码,主要任务就是减少冗余度,信源编码的基本途径有两个:
一个是序列中的各个符号尽可能的互相独立,即解除相关性;二是编码中各个符号出现的概率尽可能相等,即概率均匀化。
3.2.2信道编码
信道编码主要针对信道统计特性进行编码,主要目的是提高信息传输的可靠性。
3.3.选择码型和常用码型
3.3.1选择码型的考虑
在设计中我所选用的码型是HDB3码,HDB3码具有无直流、低频成分少、频带较窄、可打破连0的和提取同步方便等特点。
3.3.2常用码型的特点
基带信号在信道中传输,需编成适合于传输用的基带信号归纳起来有如下几点主要要求:
将原始信息符号编制成适合于传输用的码型;对所选码型的电波形,需适宜于在信道中传输。
可进行基带传输的码型较多,这里主要介绍几种常用的码型。
1.AMI码的特点:
1由AMI码确定的基带信号中正负脉冲交替,而0电位保持不变;所以由AMI码确定的基带信号无直流分量,且只有很小的低频分量;
例如:
消息代码:
1010100010111
AMI码:
+10-10+1000-10+1-1+1
2.双相码特点:
它用一个周期的正负称方波表示“0”,而其凡方向波表示“1”。
如图所示:
代码
0
1
双相码
01
10
3.CMI码成为传号反转码,是一种二电平码。
其编码规则是:
“I”码交替地用“11”和“00”表示:
“0”码用“01”表示。
编码举例如表所示。
表CMI编码举例
代码
1
1
0
1
0
0
1
CMI码
11
00
01
11
01
01
00
4.Hdb3码下面详细介绍。
3.4.HDB3码简介
3.4.1HDB3的编码规则
一、编码规则:
1先将消息代码变换成AMI码,若AMI码中连0的个数小于4,此时的AMI码就是HDB3码;
2若AMI码中连0的个数大于3,则将每4个连0小段的第4个0变换成与前一个非0符号(+1或-1)同极性的符号,用表示(+1+,-1-);
3为了不破坏极性交替反转,当相邻符号之间有偶数个非0符号时,再将该小段的第1个0变换成+B或-B,符号的极性与前一非零符号的相反,并让后面的非零符号从符号开始再交替变化。
例如:
消息代码:
100001000011000011
AMI码:
+10000-10000+1-10000+1-1
HDB3码:
+1000+V-1000-V+1-1+B00+V-1+1
二、HDB3码的特点:
1由HDB3码确定的基带信号无直流分量,且只有很小的低频分量;
2HDB3中连0串的数目至多为3个,易于提取定时信号。
3编码规则复杂,但译码较简单。
三、解码规则
1虽然编码很复杂,但解码规则很简单,就是把原来的取代节(4个连零)找到即可,若3连“0”前后非零脉冲同极性,则将最后一个非零元素译为零,如+1000+1就应该译成“10000”,否则不用改动;若2连“0”前后非零脉冲极性相同,则两零前后都译为零,如-100-1,就应该译为0000,否则也不用改动.
2再将所有的-1变换成+1后,就可以得到原消息代码。
我们设计的是基于c语言的数字基带信号码型变换系统。
由于码型较多,我们小组在老师的带领下决定分工对AMI码、HDB3码、双相码、CMI码四种常用的码型进行c语言的设计。
我重点对hdb3码进行了c语言的编程设计。
设计过程我通过查阅书籍、在网上搜索和老师的帮助、以及我们组在一起研究和讨论。
我们合力把设计完成了。
我也完成了我的设计。
我设计的程序如下:
打开c++软件
点击文件,选择新建。
选择c++sourcefile点击确定,开始编译
在菜单栏里点击组建——编译
点击是。
看程序是否有错误,有错误如
进行调试得到正确的程序如
在菜单栏里点击组建——组建——执行得到
输入新号码元为
得到hdb3码为
这是我设计的流程,在这里十分感谢张艳红老师在其中对我的指导和帮助,以及我们小组其他的同学对我帮助,谢谢!
!
!
附。
源程序
#include
#include
#include
voidmain()
{chars[102];
intl,i;
charb='u',v='u';
intz=0;
printf("\t\t欢迎使用,更欢迎您提出宝贵建议!
!
\n\n");
printf("注:
“0”代表:
0电平“u”代表:
负电平“n”代表:
正电平\n\n\n");
printf("请您输入数据:
\n");
scanf("%s",s);
l=strlen(s);
for(i=0;i{if(s[i]=='1')
{z=0;
if(b=='u')
b='n';
if(b=='n')
b='u';
s[i]=b;}
elseif(s[i]=='0'){z++;
if(z<4){s[i]='0';}
elseif(z==4){if(b!
=v){v=b;s[i]=v;}
elseif(b==v){if(b=='u')
b='n';
elseb='u';
s[i]=b;s[i-3]=b;v=b;s[i]=v;}
z=0;
}
}}
printf("HDB3编码:
\n");printf("%s\n",s);
}