Документация Engee
Notebook

Расчет контрольной суммы в Engee

Сгенерируем контрольную сумму CRC-8 для примера из стандарта 802.11-2016 в секции 21.3.10.3 и сравним с ожидаемой контрольной суммой.

Описание модели

Чтобы реализовать вариант алгоритма контрольной суммы, изложенный в стандарте 802.11-2016, настроим блок General CRC Generator на работу с полиномом $z^8 + z^2 + z + 1$, выставим начальное состояние битов в 1, бит XOR сделаем равным 1 и выберем прямой метод (direct method).

image.png

Длина симуляции равна 0, то есть будет выполнена обработка одного входного сообщения из блока Input. Этот блок приведен в качестве примера в стандарте 802.11-2016 секция 21.3.10.3. Сообщение включает биты {m0, ... m22} со значениями [1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1], ожидаемая контрольная сумма для них {c7, ..., c0} равна [0 0 0 1 1 1 0 0]. В модели есть блоки для побитового сравнения рассчитанной и ожидаемой контрольной суммы. При каждом совпадении входа компаратора с заложенной в нём контрольной суммой соответствующий выходной бит принимает значение 1.

In [ ]:
model_name = "generate_crc_8_checksum";
model_name in [m.name for m in engee.get_all_models()] ? engee.open(model_name) : engee.load( "$(@__DIR__)/$(model_name).engee");
res = engee.run( model_name );

collect(res["comparedOut"]).value[end]
Out[0]:
8-element Vector{Bool}:
 1
 1
 1
 1
 1
 1
 1
 1

Заключение

Мы проверили работу блока General CRC Generator и реализовали расчет контрольной суммы согласно 802.11-2016.