Мне было интересно, как 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