AMI码
AMI码全称是传号交替翻转码。AMI码把单极性非归零NRZ码中的0码与零电平对应,1码对应极性正、负交替变换的电平。
例如:
- 在1、0码不等概率情况下,也没有直流分量,且零频附近低频分量小。
- 若接收端收到的码元极性与发送端的完全相反,也能正确判决。
- 便于观察误码。
C语言AMI编码
/**
* @description: Encode the source code as AMI code.
* @param: AMI is a pointer to AMI code.
* source is a pointer to source code.
* len is sequence length.
* @return: none
*/
void AMI_Encoding(char *AMI, const char *source, int len)
{
unsigned int i = 0;
unsigned int cnt_1 = 0;
for(i = 0; i< len; i++)
{
if(!source[i])//0
{
//源码是0的位置,AIM码一定是0
*(AMI+i) = 0;
}
else//1
{
//源码第奇数个1转换为AMI码的1,第偶数个1转换为AMI码的-1
cnt_1++;
*(AMI+i) = (cnt_1&0x01)?1:-1;
}
}
}