您好,欢迎来到年旅网。
搜索
您的当前位置:首页归零码

归零码

来源:年旅网
归零码

归零码:

信号电平在一个码元之内都要恢复到零的编码方式,它包括曼彻斯特编码和差分曼彻斯特编码两种编码方式。

一种二进制信息的编码,用极性不同的脉冲分别表示二进制的“1”和“0”,在脉冲结束之后要维持一段时间的零电平。能够自同步,但信息密度低。 它是码元

中间的信号回归到0电平,判断的方法是\"从正电平到零电平的转换边表示的码元为0,而从负电平到零电平转换边表示码元1\使得这种编码为自定时的编码.

曼彻斯 Manchester code (又称裂相码、双向码),一种用电平跳变来表示1或0的编码,其变化规则很简单,即每个码元均用两个不同相位的电平信号表示,也就是一个周期的方波,但0码和1码的相位正好相反。 其对应关系为: 0--》01 1--》10

信码 0 1 0 0 1 0 1 1 0

双向码 01 10 01 01 10 01 10 10 01

一. 原理:

1.曼彻斯特编码:每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号;从高到低跳变表示\"1\",从低到高跳变表示\"0\"。

曼彻斯特编码的编码规则是:

----在信号位中电平从低到高跳变表示1; ----在信号位中电平从高到低跳变表示0;

2.差分曼彻斯特编码:每位中间的跳变仅提供时钟定时,而用每位开始时有无跳变表示

\"0\"或\"1\",有跳变为\"0\",无跳变为\"1\"。

差分曼彻斯特编码的编码规则是:

在信号位开始时不改变信号极性,表示辑\"1\"

在信号位开始时改变信号极性,表示逻辑\"0\"

两种曼彻斯特编码是将时钟和数据包含在数据流中,在传输代码信息的同时,也将时钟同步信号一起传输到对方,每位编码中有一跳变,不存在直流分量,

因此具有自同步能力和良好的抗干扰性能。但每一个码元都被调成两个电平,所以数据传输速率只有调制速率的1/2。

二. 编解码流程:

3.不论码元是1或者0,在每个码元正中间的时刻,一定有一次电平转换。

图:数字信号与其曼彻斯特编码及差分曼彻斯特编码对应关系

编码步骤分析:

*. 以第一条虚线为纵坐标。 不归零制编码:

1. t=0时,接入信号。

2. 数字信号为1时,为高电平;数字信号为0时,为低电平。 曼彻斯特编码:

1. t=0时,接入数字信号。

2. 第一个时钟周期,数字信号为0,此时曼彻斯特编码表现为从高电平跳转为低电

平;

3. 第二个时钟周期,数字信号为1,此时曼彻斯特编码表现为从低电平跳转为高电

平。以此类推,根据数字信号即可编写为曼彻斯特编码,如图。

差分曼彻斯特编码:

1. t=0时,接入数字信号。

2. 第一个时钟周期,数字信号为0,此时差分曼彻斯特编码开始时需要进行一次跳

变,即从原来的高电平跳变为低电平。

3. 第二个时钟周期,数字信号为1,此时差分曼彻斯特编码开始时电平需要和原来

保持一致,即保持原来的高电平。以此类推,根据数字信号即可编写为差分曼彻斯特编码,如图。

就三种编码而言,在每个码元正中间都必定有一次电平跳转。差分曼切斯特编码比曼切斯特编码的变化要少,因此更适合与传输高速的信息,被广泛用于宽带高速网中。然而,由于每个时钟位都必须有一次变化,原本的数字信号需要由两种电平来表示,信息量变为2bit,故两种编码的效率仅可能达到50%左右。

三. 源代码

#include #include

#include #define M 10

int j; //j代表编码后序列的数组下标 int i; //i代表输入码字的数组下标 int length; //输入数组的长度 //参数表

int Direct_code(char str0[ ]) { char dirct_code[2*M];

memset(dirct_code,0,2*M); dirct_code[0]='0'; dirct_code[1]='1'; j=0;

for(i=0;i// 循环入口数据

printf(\"current character is: %c \ // 循环处理,0 ->00 1 ->11 if(str0[i]=='0') {

dirct_code[j++]='0';

dirct_code[j++]='0'; }

else if(str0[i]=='1') {

dirct_code[j++]='1'; dirct_code[j++]='1'; }

else

{ printf(\"input error,exit........ \"); return 1;

} // 输入出错

// 循环处理后数据 printf(\"-----\");

printf(\"after process: %c%c \ }

dirct_code[j]=0; // 输出结果

printf(\"------------------------------------------- \"); printf(\"\\n\");

printf(\"Direct_code coding is:%s \ printf(\"\\n\"); return 0; }

int Manchester(char str0[]) //曼彻斯特编码 {

char Manchester[2*M];

memset(Manchester,0,2*M); Manchester[0]='0'; Manchester[1]='1'; j=0;

for(i=0;i// 循环入口数据

printf(\"current character is: %c \

// 循环处理,0 ->10 1 ->01 if(str0[i]=='0') { }

Manchester[j++]='1'; Manchester[j++]='0';

else if(str0[i]=='1') { }

Manchester[j++]='0'; Manchester[j++]='1';

else

{ printf(\"input error,exit........ \"); return 1;

} // 输入出错

// 循环处理后数据 printf(\"-----\");

printf(\"after process: %c%c \ }

// 结果字符串加上终结符 Manchester[j]=0; // 输出结果

printf(\"------------------------------------------- \"); printf(\"\\n\");

printf(\"Manchester coding is :%s \ printf(\"\\n\"); return 0; }

int Dif_Manchester(char str0[]) //差分曼彻斯特编码 {

char Dif_Manch[2*M];

memset(Dif_Manch,0,2*M); //初始化数组 Dif_Manch[0]='0'; Dif_Manch[1]='1'; j=1;

for(i=0;i// 循环入口数据

printf(\"current character is: %c \

// 循环处理,0 ->01 1 ->10 if(str0[i]=='0') {

if(Dif_Manch[j]== '0')

{

Dif_Manch[++j]='1';

Dif_Manch[++j]='0'; } else {

Dif_Manch[++j]='0';

Dif_Manch[++j]='1'; } }

else if(str0[i]=='1') {

if(Dif_Manch[j]== '0') { } else

{

Dif_Manch[++j]='1';

Dif_Manch[++j]='0';

Dif_Manch[++j]='1';

Dif_Manch[++j]='0'; } }

else

{

printf(\"input error,exit........ \");

return 1; } // 输入出错 // 循环处理后数据 printf(\"-----\");

printf(\"after process: %c%c \ }

// 结果字符串加上终结符 j=j+1;

Dif_Manch[j]=0;

// 输出结果

printf(\"------------------------------------------- \"); printf(\"\\n\");

printf(\"Dif_Manchester coding is :%s \ printf(\"\\n\"); return 0; }

//主函数 int main() {

char str0[M];

// 获取输入数据

printf(\"please input the number string you want(it must less than 10): \"); scanf(\"%s\

// 验证输入数据是否正确,可以用assert之类 printf(\"what you input is------:: %s \ printf(\"\\n\");

length=strlen(str0);

assert(length return 0; }

四. 运行结果:

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务