Я работаю с последовательным протоколом. Сообщения имеют переменную длину, которая известна заранее. На обеих сторонах передачи и приема у меня есть сообщение, сохраненное в сдвиговом регистре, до тех пор, пока это самое длинное сообщение. Мне нужно вычислить CRC32 этих регистров, так же как и для Ethernet, как можно быстрее. Поскольку сообщения являются переменной длиной (что-то от 12 до 64 бит), я выбрал последовательную реализацию, которая должна работать уже параллельно с получением/передачей сообщения.Сообщения переменной длины в Verilog (серийный CRC-32)
У меня возникла проблема с организацией данных перед вычислением. Как указано here, данные должны быть восстановлены по битам, дополнены 32 нулями и дополнены перед вычислением.
Даже если я забуду часть про параллельную работу с получением или передачей данных, как я могу эффективно получить только мое релевантное сообщение из регистра максимальной длины, чтобы я мог выполнить его до вычисления? Я знаю, что такие идеи, как
newregister[31:0] <= oldregister[X:0] // X is my variable length
не работает. Также невозможно иметь предложение generate for loop, которое я использую для бит-инвертирования старого вектора run variable количество раз. Я мог бы использовать счетчик для последовательного перемещения данных на желаемую длину, но я не могу позволить себе потерять это много времени.
В качестве альтернативы, существует ли операция, которая непосредственно даст мне дополненный и дополненный результат? У меня даже нет идеи, как начать разработку такой идеи.
Заранее благодарим за понимание.
Ухаживайте за подробностями или дайте мне пример этих «миллионов хитов»? Я нашел примечание к приложению Xilinx, но оно устарело для нашего оборудования, и мои начальники решили не использовать его. Я также нашел ряд калькуляторов и генераторов кода, но, насколько я понял последний, они выполнили только расчеты CRC, в то время как мне все еще нужно было организовать данные до и после него. Это правда, что я только опробовал их на другом расчете CRC, а не на упомянутом CRC-32, и поскольку мне там нужна дополнительная работа, я ожидал, что он будет таким же. – FlyinGazebo