2

私がしていることへの少しの洞察として、私はSDIインターフェースのAES/EBUサブフレームを処理しようとしています。それはそれほど重要ではないはずです。それから抽象化しましょう。

標準文書の12ページでは、多項式G(x)= x ^ 8 + x ^ 4 + x ^ 3 + x ^ 2 + 1(またはx ^ 0)を使用したCRCチェックが必要です。

ドキュメントはここで見つけることができます:http://tech.ebu.ch/docs/tech/tech3250.pdf

ご想像のとおり、与えられた式のCRCテーブルを生成したいと思います。式G(x)= x ^ 8 + x ^ 2 + x ^ 1 + x^0を使用するコードスニペットに出くわしました。

コードスニペットはここにあります: http ://www.koders.com/cpp/fid9C544B36B8C41721691790197D38DAC91D2C29EF.aspx?s = crc#L8

私のAES3CRCで動作するように、数式を変更できますか(以下の変更されたバージョンを参照)?次は動作しますか?

// x^8 + x^4 + x^3 + x^2 + x^0 or (1)
void make_crc_table( void )
{
    int i, j;
    unsigned long poly, c;

    /* terms of polynomial defining this crc (except x^8): */
    static const byte p[] = {0,2,3,4};

    poly = 0L;

    for ( i = 0; i < sizeof( p ) / sizeof( byte ); i++ )
    {
        poly |= 1L << p[i];
    }

    for ( i = 0; i < 256; i++ )
    {
        c = i;

        for ( j = 0; j < 8; j++ )
        {
                            //ZeroDefect: This part has me worried.
            c = ( c & 0x80 ) ? poly ^ ( c << 1 ) : ( c << 1 );
        }
        crctable[i] = (byte) c;
    }
}

ヒント/提案をいただければ幸いです。

ZeroDefect。

4

1 に答える 1

1

私の知る限り、これはCRCフィードバックレジスタ(ウィキペディアの図を参照)のすべての可能な状態遷移をルックアップテーブルにエンコードしているだけです。

p[]タップ位置を考慮して配列を変更するだけでよいようです。

于 2012-06-18T13:11:19.503 に答える