Если вы представляете базовое обнаружение движения, в котором у вас есть два кадра, хранящихся в памяти: предыдущий кадр 640x480 и текущий кадр 640x480, какой тип памяти (SRAM, DRAM, SDRAM, DDR SDRAM и т. д.) позволит выполнять наиболее параллельное чтение/ запись операций за такт ? Например, идеальным решением было бы одновременное считывание двух кадров (307 200 x 2 пикселя) за один такт. Какая память лучше для этого, SRAM, встроенная в FPGA, или внешняя микросхема, такая как DDR SDRAM? (В более широком смысле я бы искал плату разработки FPGA, которая имеет наименьшую стоимость и размер с самой большой способностью параллельного чтения/записи.)
Практически невозможно превзойти ОЗУ с двумя портами и ОЗУ LUT, поскольку они находятся на кристалле FPGA, и доступ к ним не требует использования каких-либо контактов ввода-вывода. Если у вас не хватает объема в блочной ОЗУ, то можно закинуть на проблему внешнюю память. QDR SRAM является двухпортовой и поэтому имеет вдвое большую пропускную способность, чем SDRAM, это может быть полезно для некоторых приложений, хотя и очень дорого. DDR3 SDRAM, вероятно, является самым дешевым вариантом, но даже это относительно медленно по сравнению с тем, что вы можете сделать с LUT RAM и блочной RAM.
Я думаю, что вы идете о своем дизайне неправильно. Кроме того, если вам нужно выполнить какую-либо реальную обработку такого количества входных данных, одна только логика займет абсолютно гигантское количество места и может не поместиться на самых больших FPGA, доступных сегодня. В чем FPGA преуспевают, так это в очень высокоскоростных конвейерных операциях обработки. Что вам нужно сделать, так это выяснить, сколько пикселей в секунду вам нужно обработать (640x480xfps), а затем выяснить, как реализовать алгоритм обработки изображений, чтобы получить такой уровень производительности. Как правило, идея состоит в том, чтобы считывать небольшое количество пикселей за такт, а затем обрабатывать их упорядоченным образом.
Том Карпентер
Том Карпентер
Пэббельс
Джонатан Дролет
pjc50