какой из них сложнее? вычисление 64-битного CRC или двух 32-битных CRC с разными полиномами?

Мне было интересно, как 64-битная CRC на FPGA сравнивается с двумя 32-битными CRC (разными полиномами) на той же FPGA. Будет ли два 32-битных CRC более сложными, чем выполнение одного 64-битного CRC? Это займет какое-то время или будет быстро?

Как рассчитать сложность (или провести анализ сложности)?

любая помощь будет высоко оценена Спасибо.


person Arash    schedule 01.06.2021    source источник


Ответы (1)


Мне было интересно, как 64-битная CRC на FPGA сравнивается с двумя 32-битными CRC (разными полиномами) на той же FPGA.

На обычной FPGA не имеет значения, какую информацию (CRC, контрольные суммы, значения с плавающей запятой...) вы сравниваете:

Проверка того, равно ли 64-битное значение другому 64-битному значению, требует такого же количества ресурсов (гейтов или времени).

Это, конечно, неверно, если вы используете FPGA со встроенным блоком CRC, который (например) поддерживает CRC32, но не CRC64...

Будет ли два 32-битных CRC более сложными, чем выполнение одного 64-битного CRC?

В обоих случаях вам потребуется 64 логические ячейки (это означает: 64 LUT и 64 триггера).

В случае 64-битного CRC 63 логические ячейки должны быть подключены к предыдущей логической ячейке, и должна быть одна сигнальная линия, соединяющая первую и последнюю логические ячейки.

В случае двух 32-битных CRC 62 логические ячейки должны быть подключены к предыдущей логической ячейке, и должны быть две сигнальные линии, соединяющие первую и последнюю логические ячейки каждой CRC.

Если у вас есть ПЛИС, позволяющая соединить 64 ячейки подряд без использования длинной сигнальной линии, 64-битная CRC экономит одну длинную сигнальную линию.

(Редактировать: На FPGA на моей плате eval можно соединить 16 ячеек подряд; на такой FPGA и одна 64-битная CRC, и две 32-битные CRC стоили бы 5 длинных сигнальных линий. )

Это займет какое-то время или будет быстро?

Как рассчитать сложность (или провести анализ сложности)?

Вам требуется один тактовый цикл на бит - в обоих случаях.

Обратите внимание, что FPGA работает совершенно иначе, чем компьютер:

Обычно вам не нужно время для выполнения какой-либо операции, но все операции выполняются одновременно...

person Martin Rosenau    schedule 01.06.2021
comment
Другими словами, они обычно одинаковы, но в некоторых случаях это зависит от типа ПЛИС. правильный? и знаете ли вы, как вычислить сложность CRC? (или у вас есть какие-либо ресурсы для этого) - person Arash; 01.06.2021
comment
Он дал вам сложность. По времени один цикл на бит сообщения. В космосе один триггер плюс соответствующая справочная таблица на бит. То есть с наименьшим пространством и наибольшим временем. Вы могли бы придумать другие реализации, подобные программным, которые могли бы работать, скажем, с восемью битами за такт, но требовали бы гораздо больше логических ресурсов для реализации таблиц 32 или 64 на 256. В этом случае для двух разных 32-битных CRC будет примерно столько же логики, сколько для одного 64-битного CRC. - person Mark Adler; 01.06.2021