C语言实现AMI码

AMI码

  AMI码全称是传号交替翻转码。AMI码把单极性非归零NRZ码中的0码与零电平对应,1码对应极性正、负交替变换的电平。
  例如:

原二进制序列:0 0 1 0  1 1 0
    AMI码:0 0 1 0 -1 1 0
  AMI码有如下优点:
  1. 在1、0码不等概率情况下,也没有直流分量,且零频附近低频分量小。
  2. 若接收端收到的码元极性与发送端的完全相反,也能正确判决。
  3. 便于观察误码。

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;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/QDchenxr/article/details/106297945