AFON//Радиотехник
AHDL · проект 43/50

Последовательный CRC-8

Расчёт CRC по одному биту (полином 0x07)

Задача

Вычислять контрольную сумму CRC-8 последовательного потока бит с полиномом 0x07.

Тип схемы и среда

Последовательная схема: 8-битный регистр с XOR-обратными связями по образующему полиному.

Алгоритм работы

Бит обратной связи fb = старший разряд XOR входной бит. Разряды регистра сдвигаются, а в позициях, соответствующих полиному, добавляется fb.

Код на AHDL

ahdl_43_crc8.tdf↓ скачать .tdf
% Проект 43: последовательный CRC-8 (полином 0x07) %
SUBDESIGN ahdl_43_crc8
(
    clk, clrn : INPUT;
    init      : INPUT;
    ce        : INPUT;
    din       : INPUT;
    crc[7..0] : OUTPUT;
)
VARIABLE
    r[7..0] : DFF;
    fb      : NODE;
BEGIN
    r[].clk  = clk;
    r[].clrn = clrn;
    fb = r[7].q $ din;

    IF init THEN
        r[].d = 0;
    ELSIF ce THEN
        r[7].d = r[6].q $ fb;
        r[6].d = r[5].q;
        r[5].d = r[4].q;
        r[4].d = r[3].q;
        r[3].d = r[2].q;
        r[2].d = r[1].q $ fb;
        r[1].d = r[0].q $ fb;
        r[0].d = fb;
    ELSE
        r[].d = r[].q;
    END IF;

    crc[] = r[].q;
END;

Пояснения

CRC-8/0x07 применяется, например, в датчиках 1-Wire. init сбрасывает регистр, ce разрешает обработку очередного бита.

Инструменты и справочники по теме

📦 help-user.ru — скупка и ремонт компьютерной техники. Продать ноутбук, ПК, комплектующие — help-user.ru.

Что дальше

Скачайте ahdl_43_crc8.tdf, создайте проект в MAX+PLUS II или Quartus, назначьте выводы под свою плату и скомпилируйте. Остальные 49 разработок — в разделе проектов на AHDL.