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

 
 
> Распределенная память на FPGA Altera, часть 2
files
сообщение Nov 23 2008, 11:05
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 30-04-08
Пользователь №: 37 189



Подобная тема уже была, но закрылась.

Интересует информация в контексте этого сообщения:
Цитата
Нет распределённого озу. Тригеры можно использовать как ячейки памяти, но это слишком жирно.


Задача состоит в следующем:
необходимо иметь возможность, двоичную матрицу n*n, где n – порядка 20-30, загружать в триггеры LE. И чтобы при этом двоичные значения геометрически располагались, так же как и в матрице. Ну и возможность выгрузить при необходимости эту матрицу (считать значения с триггеров LE) из FPGA.

Возможно ли вообще такое в условиях отсутствия возможности явного обращения к LE и LAB? Может есть какие мегафункции для подобных действий?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Mc_off
сообщение Nov 23 2008, 11:11
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-01-07
Из: Ростовская область
Пользователь №: 24 044



Цитата(files @ Nov 23 2008, 14:05) *
И чтобы при этом двоичные значения геометрически располагались, так же как и в матрице.


Что имеется в виду ?
вы ведь их глазом всё равно не увидите... и под микроскопом - тоже wink.gif

Что мешает создать память с однобитной шиной данных и log_2(n)+log_2(n) битной шиной адреса ?

Сообщение отредактировал Mc_off - Nov 23 2008, 11:14
Go to the top of the page
 
+Quote Post
murmel1
сообщение Nov 23 2008, 13:46
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 2-11-08
Из: Ростов-на-Дону
Пользователь №: 41 331



1. Распределенного ОЗУ в FPGA Altera нет
2. Нет никакой разницы, какая реализация функции (у вас - памяти) применяется, если по поведению они одинаковы. Встроенные блоки памяти позволяют экономить регистры.
3. Располагаться геометрически ? Какая Вам разница, в каком порядке они лежат на кристалле? Для компилятора это имеет некоторе значение, а для пользователя имеет значение только порты
(30 downto 1) (30 downto 1)
4. Если очень хотите, то 30 на 30 бит это всего 900 регистров. В любой современной ПЛИС это поместится, даже в младших моделях циклона это всего 25% их объема. Запускаете Megawizard Plug-In Manager, выбираете закладку Memory Compiler, RAM - нужное число портов, на первой странице ставите "LCs" - вся память будет размещена в триггерах.

Опишите Вашу задачу, невозможно понять зачем Вы так усложняете. Возможно Вам нужно, чтобы все значения были доступны одновременно, без выборки с помощью адреса ?

Сообщение отредактировал murmel1 - Nov 23 2008, 13:48
Go to the top of the page
 
+Quote Post
files
сообщение Nov 29 2008, 19:14
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 30-04-08
Пользователь №: 37 189



Цитата(murmel1 @ Nov 23 2008, 15:46) *
2. Нет никакой разницы, какая реализация функции (у вас - памяти) применяется, если по поведению они одинаковы. Встроенные блоки памяти позволяют экономить регистры.
3. Располагаться геометрически ? Какая Вам разница, в каком порядке они лежат на кристалле? Для компилятора это имеет некоторе значение, а для пользователя имеет значение только порты
(30 downto 1) (30 downto 1)
4. Если очень хотите, то 30 на 30 бит это всего 900 регистров. В любой современной ПЛИС это поместится, даже в младших моделях циклона это всего 25% их объема. Запускаете Megawizard Plug-In Manager, выбираете закладку Memory Compiler, RAM - нужное число портов, на первой странице ставите "LCs" - вся память будет размещена в триггерах.

Здравствуйте.

То, что вы предлагаете, даст эмуляцию обычной линейной памяти на параллельной физической среде ПЛИС. Не так ли?

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


Цитата(murmel1 @ Nov 23 2008, 15:46) *
Опишите Вашу задачу, невозможно понять зачем Вы так усложняете. Возможно Вам нужно, чтобы все значения были доступны одновременно, без выборки с помощью адреса ?
Именно это.

Меня интересует возможность ПЛИС естественным образом хранить двумерную структуру данных и выполнять над этими данными вычислительные действия.
Привожу синтетический пример. Нужно считать содержимое из триггера текущего LE, сложить его по OR со значением из левого LE, результат умножить по AND с верхним LE и поместить в правый LE. И это действие нужно одновременно (синхронно) выполнить для всех LE некоторой квадратной (прямоугольной) области ПЛИС.

Такое возможно?

Сообщение отредактировал files - Nov 29 2008, 19:17
Go to the top of the page
 
+Quote Post



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

 


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


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