CCSDS 编码和解码

问题描述 投票:0回答:1

我正在开展一个项目,需要使用 Reed Solomon 和 CCSDS 标准给出的宪法编码对数据帧进行编码和解码。我试图找到一些合适的库,但很难找到一个用 C 语言完成的库。

我找到了一个可以工作的 Reed Solomon 库(与 https://scholarworks.calstate.edu/downloads/8336h559x?locale=en 中给出的库非常相似),但是,我在尝试生成元素时遇到了困难CCSDS 标准给出的代码生成多项式。在CCSDS 131.0-B-4中,场生成多项式F(X)= x^8 + x^7 + x^2 + x + 1,a^11是GF(256)中的本原元素,112是第一个连续根,代码生成多项式为:

enter image description here

在代码中,很大程度上基于上面链接中的代码,我不知道如何引入原始元素或第一个连续根:

void encode_rs(int NN, int KK, int* gg, int* alpha_to, int* index_of, int* Data, int* BB)
/* take the string of symbols in Data[i], i=0..(k-1) and encode systematically
   to produce 2*tt parity symbols in BB[0]..BB[2*tt-1]
   Data[] is input and BB[] is output in polynomial form.
   Encoding is done by using a feedback shift register with appropriate
   coNNections specified by the elements of gg[], which was generated above.
   Codeword is   c(X) = Data(X)*X**(NN-KK)+ b(X)          */
{
    register int i, j;
    int feedback;

    for (i = 0; i < NN - KK; i++)   BB[i] = 0;


    for (i = KK - 1; i >= 0; i--)
    {
        feedback = index_of[Data[i] ^ BB[NN - KK - 1]];
        if (feedback != -1)
        {
            for (j = NN - KK - 1; j > 0; j--)
            {
                if (gg[j] != -1)
                    BB[j] = BB[j - 1] ^ alpha_to[(gg[j] + feedback) % NN];
                else
                    BB[j] = BB[j - 1];
            }
            BB[0] = alpha_to[(gg[0] + feedback) % NN];
        }
        else
        {
            for (j = NN - KK - 1; j > 0; j--)
                BB[j] = BB[j - 1];
            BB[0] = 0;
        };
    };
};

因此,我最终得到的 g(x) 系数与 CCSDS 131.0-B-4 附录 G 中给出的不同。如果我直接复制这些系数,我会得到正确的奇偶校验位,但解码函数无法解码。解码函数是上面链接中给出的decode_rs函数。我尝试更改encode_rs和decode_rs但没有运气。

有人可以帮我更改函数以使用原始元素和第一个连续根吗?

c decode encode reed-solomon
1个回答
0
投票

在 GF(2^8) 中,α^11 = 0x02^0x0B = 0xE8, 0xE8^0xE3 = 0x70 = 112 ???

为了获得第一个生成器根 = 112,里德所罗门码需要 57 个奇偶校验字节,并具有自倒数多项式。然而,我发现的 CCSDS 文章使用 RS(255,223) => 32 奇偶校验字节来纠正最多 16 个错误,还使用自倒多项式,在这种情况下,第一个连续根是 121。您有可能交换数字,所以 121变成112了?

© www.soinside.com 2019 - 2024. All rights reserved.