Создание многопортового блочного барана в Vivado + Verilog - PullRequest
0 голосов
/ 23 октября 2019

Я хочу сделать свертку в моей FPGA. У меня есть массив, в котором хранится изображение, которое затем выводится на экран через VGA. Я хочу вычислить свертку в момент закрытия пикселя, так что мне нужны только множители размера ядра свертки.

Однако я не знаю, как создать блок памяти, такой, чтобыЯ могу получить доступ, например, к 9 адресам (если я использовал сверточное ядро ​​3x3) одновременно. Это возможно в Вивадо? В настоящее время я использую генератор блочного поршня.

1 Ответ

2 голосов
/ 23 октября 2019

Лучшее, что вы можете сделать, это прочитать два значения с двух разных адресов, и для этого вам нужно использовать двухпортовый ОЗУ.

Но в большинстве случаев вам нужен один порт для записи видеоданных ивторой порт для чтения.

Чтобы прочитать 9 местоположений, вы должны либо:

  • иметь 9 разных ячеек памяти
  • Убедитесь, что все данные находятся в одном адресе иувеличьте объем памяти в 9 раз.

Но надежда все еще есть.
В видео вы получаете горизонтальные пиксели один за другим. Это означает, что для свертки 3х3 вы можете построить три небольших трехступенчатых пиксельных конвейера из регистров:

enter image description here

(Да, я поставил несколькокод в Vivado и использовать разработанную схему для этого)

Теперь у вас есть доступ к данным 9 пикселей за один раз. Вы можете даже пропустить один этап, но это может нарушить время свертки.

Конечный демпфер
Это выглядит так просто, но для этого вам необходим доступ к данным три видео строки одновременно. Таким образом, «все», что вам нужно сделать сейчас, - это создать систему, которая запоминает данные для двух строк, и как только вы попадете в строку три, перечитайте данные из предыдущих двух строк и поместите их с данными строки 3 в маленькую строку. Система показана выше. Таким образом, вам нужно как минимум 2 независимых банка памяти с двумя портами, каждый из которых может хранить одну строку видеоданных.

Я знаю, что это работает, потому что я создал нечто подобное на прошлой неделе.

...