рассчитать (и проверить) ethernet FCS (crc32) в VHDL
Я используюСпартанский 3E стартовый комплект и я пытаюсь получить кадры Ethernet через него по каналу 100 МБит.
Для тех, кто не знает, на плате установлена микросхема PHY, обеспечивающая тактовую частоту приема 25 МГц. Я (в значительной степени) проверил, что прием работает нормально, буферизуя полученные кадры и повторно отправляя их через последовательный канал.
Кроме того, я используюГенератор CRC32 от outputlogic.com, Я собираю полученные фрагменты в байты и пересылаю их в CRC. В конце кадра я фиксирую сгенерированный CRC и отображаю его на ЖК-дисплее вместе с CRC, который я нашел в кадре Ethernet.
Однако (как вы уже догадались) эти два числа не совпадают.
527edb0d -- FCS extracted from the frame
43a4d833 -- calculated using the CRC32 generator
Первый также можно проверить, запустив пакет через функцию pythons crc32, как с кадром, захваченным wireshark, так и с кадром, снятым и полученным через последовательный порт от FPGA.
Я думаю, это должно быть что-то более или менее тривиальное.Я вставил процесс получения здесь, Я скинул все, что не было необходимости. При захвате вывода через последовательный порт я добавил fifo (готовый блок из Xilinx), который защелкнулся одновременно с генератором CRC, чтобы получить точно такие же байты.
Кто-нибудь знает, что с этим не так?