Я работаю над своим проектом CNN в Verilog, но у меня есть некоторые проблемы с реализацией процедуры свертки изображения с фильтром 3x3. Я написал код для сверточного модуля, но теперь, когда дело доходит до свертки, я должен читать значения из памяти, которая содержит пиксели изображения. Дело в том, что я должен прочитать эти значения в определенном порядке, так как свертка берет точечное произведение 2 матриц и затем перемещает его на 1 вправо. Итак, скажем, если изображение имеет матрицу 5x5, которая хранится в массиве памяти
[a1 a2 a3 a4 a5
a6 a7 a8 a9 a10
a11 a12 a13 a14 a15] - Ram памяти
как я могу прочитать значения памяти в следующем порядке:
a1, затем a2, затем a3, затем a6, затем a7, затем a8, и последний ряд a11, a12 a13, а затем шагните и начните сначала, начиная с a2, a3 и т. д., пока я не достигну конца моего массива. Пожалуйста, предложите любое решение, как мне следует обращаться к памяти в этой ситуации, фрагмент кода будет высоко оценен. Спасибо.
p.s. мой массив памяти будет содержать много данных, примерно будет матрица [400x300], где фильтр [3x3].