преобразование скремблера и дескремблера matlab в код c.

#c #matlab

Вопрос:

Я пытаюсь преобразовать скремблер и дескремблер в c matlab link, часть скремблера была выполнена следующим образом:

 #include <stdint.h>
#include <stdio.h>


/* Binary scramble
   input: array of size *size* to be processed 
   output: array to store the result, must be as big as input 
   poly: polynom to use: array of *order* size
   state: internal state: array of *order* size
   order: order of polynom       
   */
void scramble (uint8_t *input, uint8_t *output,size_t size, uint8_t *poly, uint8_t *state, size_t order)
{    
    /* ignore the order 0 */
    poly  ;
    state  ;
    order--;

    /* for each input bits */
    for(int i = 0; i < size; i  )
    {
        /* compute the value to be xored to input */
        uint8_t xor = 0;
        for(int n = 0; n < order; n  )
        {
            if(poly[n])
            {
                xor ^= state[n];
            }
        }

        /* shift the state */
        for (int k = order-1; k > 0; k--)
        {
            state[k] = state[k-1];
        }

        /* compute the ouput */ 
        output[i] = state[0] = xor ^ input[i] ;
    }
}
int main(void)
{
    uint8_t bin[10] = { 1, 0, 0, 1, 0, 0, 0, 1, 1, 0};
    uint8_t out[10];
    uint8_t poly[5] = {1, 1, 1, 0, 1};
    uint8_t state[5] = {0};

    scramble(bin, out, 10, poly, state, 5);

    for (int i = 0; i < 10;   i)
    {
        printf("%d -> %dn", bin[i], out[i]);
    }
    return 0;
} 
 

Я попытался написать часть дескремблирования, как описано в этой ссылке matlab, насколько я знаю, чтобы преобразовать ее в дескремблер, мне нужно инвертировать бит xor, когда я назначаю его на вывод следующим образом output[i] = state[0] = !xor ^ input[i] , а также необходимо сбросить состояние обратно 0's перед вызовом функции дескремблирования, но я не получаюкорректный вывод, аналогичный вводу скремблера. Должен ли я изменить что-то еще?

Комментарии:

1. Вы проверили, что ваш скремблер выдает тот же результат, что и matlab, для того же ввода?

2. @PedroRodriguez да, у меня есть, я получаю тот же результат, что и у matlab