реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> To RAM or no to RAM - вот в чём вопрос!
vadimuzzz
сообщение Oct 6 2010, 09:49
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(m0use @ Oct 6 2010, 16:23) *
Многопортоый? В смысле двухпортовый? Я просто сделал, чтобы за такт два значения читалось. Можно больше? Ну, это я больше из интереса спрашиваю smile.gif.

именно, можно читать по 2 разным адресам. можно и 3-портовый доступ, 2 на чтение, 1 на запись. короче, есть где развернуться.
Go to the top of the page
 
+Quote Post
m0use
сообщение Oct 6 2010, 09:51
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 6-08-10
Пользователь №: 58 790



Цитата
можно дублировать контент (параллельная запись в несколько RAM никем не противопоказана)


Ага - хорошее дополнение. Я немного по-другому делал - разбивал одну RAM на две меньших (без дублирования) - но тут опять же предел в 20 умножителей. Вариантов по его достижению уже немало было рассмотрено. По быстродействию и ресурсам они, наверно, очень близки - надо просто выбрать один smile.gif.

Цитата
а скомбинировать?


Пока так и делаю, потому что умножение написано на RAM - а дальше конвеер на сложения пойдёт. Получится освоить этот подход на сложении - попробую и поумножать с его поможью. Просто этот подход очень привлекателен с той точки зрения, что входные данные плывут со своей скоростью, а мы их обрабатываем и не задерживаем их. А с RAM я жду заполнения памяти. Хотя можно, наверно попробовать уже считывать из RAM до того, как она заполнилась... попробовать можно, конецно.


--------------------
Усложнять - просто, упрощать - сложно.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 6 2010, 13:34
Сообщение #33


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(m0use @ Oct 6 2010, 12:23) *
У меня с этим конвеерным подходом небольшой вопрос появился. Мне нужная сумма 9 элементов на конвеере (условно горизонтальном). Соответственно, чтобы частота не падала - нужен конвеер уже в вертикальном направлении - из 8 "складывателей" smile.gif и промежуточными регистрами. Если это так, то тогда можете подсказать, как оптимально такой вопрос решать. Так как это матрица, то мне не все суммы нужны (граничные эффект - когда окно к краям матрицы подходит). Как мне следующему модулю передать только нужные суммы? Я тут три подхода вижу:

1. Передавать все, а обрабатывать только нужные.
2. Передавать только нужные каким-нибудь сигналом, что на выходе нужная сумма. Но тут такой момент возникает, что от того момента, когда на конвеере будет нужная последовательность до того, как их сумма попадёт на выход пройдёт 4 такта. То есть и сигнал нужно задерживать на столько же тактов. Это регистром сдвига делать?
3. Другой подход. Какой smile.gif ?

поясните, плиз 2 пункт


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
m0use
сообщение Oct 7 2010, 14:48
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 6-08-10
Пользователь №: 58 790



Цитата
поясните, плиз 2 пункт


Неясно выразился, возможно. Например, матрица 4x4. На конвеер она поступает последовательно:

...-13-[12-11-10]-9-[8-7-6]-5-[4-3-2]-1-...

Но оконная функция не все комбинации выбирает, а только:

*__*__*__4
*__*__*__8
*__*__*__12
13_14_15_16

1__*__*__*
5__*__*__*
9__*__*__*
13_14_15_16

и т.п.

То есть сумма 13+12+11+9+8+7+5+4+3, к примеру, нам не нужна. Но на выходе она есть. Поэтому нужна дополнительная информация. Которая должна быть синхронизирована с потоком основных данных.

Сообщение отредактировал m0use - Oct 7 2010, 14:50


--------------------
Усложнять - просто, упрощать - сложно.
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Oct 7 2010, 17:51
Сообщение #35


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



Цитата(m0use @ Oct 7 2010, 17:48) *
Поэтому нужна дополнительная информация. Которая должна быть синхронизирована с потоком основных данных.

закодируйте все возможные граничные условия и посылайте их коды через цепочку задержки (сдвиг. регистр), чтобы они приходили одновременно с данными. поступающий на вход сл. устройство код из этой цепочки будет кодом операции, настраивающим этот преобразователь


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post
m0use
сообщение Oct 7 2010, 21:30
Сообщение #36


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 6-08-10
Пользователь №: 58 790



Ребят, всем спасибо за советы и помощь. Я бы хотел теперь поделиться практическими результатами. Написал две реализации модуля, который принимает входное изображение, получает градиентные матрицы и перемножает их элементы. Одна реализация - конвеер с отводами, другая основана на использовании RAM.

Входная матрица - 8x6.

Речь прежде всего о скорости. И вот какие результаты:
конвеер - порядка 220 МГц,
RAM - порядка 120 МГц.

При этом в первом случае для полного прохода ещё и тактов меньше требуется.

Прикладываю RTL-схемы модулей для наглядности.

Возможно, что я не оптимально реализовал вариант с RAM. Там больше логики, потому что весь процесс разбивается на этапы и окончание одного запускает другой. Тут, наверно, причина в том, что RAM имеет ограниченное число портов и нельзя считывать данные одновременно с процессом их записи. Поэтому приходится ждать.

К чему я. Возникло предположение, что подход с конвеером здесь более эффективен. Получается, где поток данных "проходит" через кристалл, не задерживаясь, RAM не к месту? RAM оправдана там, где данные "задерживаются" для многократного вторичного использования? Или как smile.gif ?
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 


--------------------
Усложнять - просто, упрощать - сложно.
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Oct 8 2010, 03:09
Сообщение #37


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



Цитата(m0use @ Oct 8 2010, 00:30) *
Получается, где поток данных "проходит" через кристалл, не задерживаясь, RAM не к месту?

не обощайте так уж совсем. иногда например RAM удобно использовать в качестве демультиплексора в потоке: 1 порт на вход 2 на выход и разрядность у портов не связана меж собой обычная логика может сожрать много ресурсов и получится медленнее (всё зависит от подробностей).


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 09:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01433 секунд с 7
ELECTRONIX ©2004-2016