Лучшее, что вы можете сделать, это прочитать два значения с двух разных адресов, и для этого вы должны использовать двухпортовую оперативную память.
Но в большинстве случаев вам нужен один порт для записи видеоданных и второй порт для их чтения.
Чтобы прочитать 9 локацию, вам нужно:
- Иметь 9 разных воспоминаний
- Убедитесь, что все данные находятся по одному адресу, и увеличьте память в 9 раз.
Но надежда еще есть.
В видео вы получаете горизонтальные пиксели один за другим. Это означает, что для свертки 3x3 вы можете построить три небольших 3-этапных пиксельных конвейера из регистров:
![введите здесь описание изображения](https://i.stack.imgur.com/IwPMD.png)
(Да, я добавил код в Vivado и использовал для этого разработанную схему)
Теперь у вас есть доступ к данным 9 пикселей за раз. Вы даже можете пропустить один этап, но это может нарушить синхронизацию свертки.
Последний демпфер
Это выглядит так просто, но для этого вам нужно иметь доступ к данным трех видеострок одновременно. Таким образом, «все», что вам нужно сделать сейчас, это построить систему, которая запоминает данные для двух строк, и как только вы дойдете до третьей строки, перечитаете данные из предыдущих двух строк и поместите их с данными строки 3 в маленькую строку. показанная выше система. Таким образом, вам потребуется как минимум 2 независимых двухпортовых банка памяти, каждый из которых может содержать одну строку видеоданных.
Я знаю, что это работает, потому что я построил что-то подобное на прошлой неделе.
person
Oldfart
schedule
23.10.2019