CMI编码 转换为 二进制

CMI编码 转换为 二进制,第1张

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

void main()

{

unsigned char cmi[] = { 0x37, 0x01 }

unsigned char bin[256], tmp

int i, j, k

/* 处理每个CMI字节 */

k = 0

for (i = 0i <sizeof(cmi)i++)

{

/* 分4次处理字节, 每次处理字节中的2个位 */

for (j = 0j <4j++)

{

/* 把CMI中的其中2位取出来 */

tmp = cmi[i]

tmp >>= (3 - j) * 2

tmp &= 0x03

/* 把该2位从CMI编码转换为二进制编码, 并存储到数组中 */

if (tmp == 0 || tmp == 3)

{

bin[k++] = 1

}

else if (tmp == 1)

{

bin[k++] = 0

}

else

{

printf("Error cmi format!\n")

return

}

}

}

/* 打印取到的二进制 */

for (i = 0i <ki++)

{

printf("%d ", bin[i])

}

getch()

}

CMI(Coded Mark Inversion)码是传号反转码的简称,与双相码类似,它也是一种双极性二电平码。其编码规则是“1”码交替用“11”和“00”两位码表示;“0”码固定地用“01”表示。  

 CMI码易于实现,含有丰富的定时信息。此外,由于10为禁用码组,不会出现三个以上的连码,这个规律可以用来宏观检错。该码已被ITU-T推荐为PCM四次群的接口码型,有时也用在速率低于8.44Mb/s的光缆传输系统中。

CMI又称传号反转码,是一种二电平非归零码。其中“0”码用固定的负、正电平表示,“1”码用交替的正、负电平表示。具有以下优点:(1)不存在直流分量,且低频分量较小;(2)信息码流中具有很强的时钟分量,便于从信号中提取时钟信息;(3)具有一定的检错能力。因此,在高次群的PCM系统中作为接口的码型,在速率低于8 848 kb/s的光纤数字传输系统中被推荐为线路传输码型。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11238285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存