Расчет контрольной суммы в 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).
Длина симуляции равна 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
.
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]
Заключение¶
Мы проверили работу блока General CRC Generator
и реализовали расчет контрольной суммы согласно 802.11-2016.