files 0 23 ноября, 2008 Опубликовано 23 ноября, 2008 · Жалоба Подобная тема уже была, но закрылась. Интересует информация в контексте этого сообщения: Нет распределённого озу. Тригеры можно использовать как ячейки памяти, но это слишком жирно. Задача состоит в следующем: необходимо иметь возможность, двоичную матрицу n*n, где n – порядка 20-30, загружать в триггеры LE. И чтобы при этом двоичные значения геометрически располагались, так же как и в матрице. Ну и возможность выгрузить при необходимости эту матрицу (считать значения с триггеров LE) из FPGA. Возможно ли вообще такое в условиях отсутствия возможности явного обращения к LE и LAB? Может есть какие мегафункции для подобных действий? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mc_off 0 23 ноября, 2008 Опубликовано 23 ноября, 2008 (изменено) · Жалоба И чтобы при этом двоичные значения геометрически располагались, так же как и в матрице. Что имеется в виду ? вы ведь их глазом всё равно не увидите... и под микроскопом - тоже ;) Что мешает создать память с однобитной шиной данных и log_2(n)+log_2(n) битной шиной адреса ? Изменено 23 ноября, 2008 пользователем Mc_off Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmel1 0 23 ноября, 2008 Опубликовано 23 ноября, 2008 (изменено) · Жалоба 1. Распределенного ОЗУ в FPGA Altera нет 2. Нет никакой разницы, какая реализация функции (у вас - памяти) применяется, если по поведению они одинаковы. Встроенные блоки памяти позволяют экономить регистры. 3. Располагаться геометрически ? Какая Вам разница, в каком порядке они лежат на кристалле? Для компилятора это имеет некоторе значение, а для пользователя имеет значение только порты (30 downto 1) (30 downto 1) 4. Если очень хотите, то 30 на 30 бит это всего 900 регистров. В любой современной ПЛИС это поместится, даже в младших моделях циклона это всего 25% их объема. Запускаете Megawizard Plug-In Manager, выбираете закладку Memory Compiler, RAM - нужное число портов, на первой странице ставите "LCs" - вся память будет размещена в триггерах. Опишите Вашу задачу, невозможно понять зачем Вы так усложняете. Возможно Вам нужно, чтобы все значения были доступны одновременно, без выборки с помощью адреса ? Изменено 23 ноября, 2008 пользователем murmel1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 24 ноября, 2008 Опубликовано 24 ноября, 2008 · Жалоба 1. Распределенного ОЗУ в FPGA Altera нет Ну я бы не был столь категоричен. The LAB of Stratix IV has a new derivative called Memory LAB (MLAB), which adds look-up table (LUT)-based SRAM capability to the LAB as shown in Figure 2–2. The MLAB supports a maximum of 640 bits of simple dual-port static random access memory (SRAM). You can configure each ALM in an MLAB as either a 64 × 1 or 32 × 2 block, resulting in a configuration of 64 × 10 or 32 × 20 simple dual port SRAM block. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Elresearch 1 24 ноября, 2008 Опубликовано 24 ноября, 2008 · Жалоба ИМХО под "Распределенным ОЗУ" обычно понимают один из вариантов использования LUT таблиц (Xilinx) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmel1 0 24 ноября, 2008 Опубликовано 24 ноября, 2008 (изменено) · Жалоба Ну я бы не был столь категоричен. В Стратиксе 4 ? Значит, пока еще: 1. Распределенного ОЗУ в FPGA Altera нет :) Изменено 24 ноября, 2008 пользователем murmel1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
files 0 29 ноября, 2008 Опубликовано 29 ноября, 2008 (изменено) · Жалоба 2. Нет никакой разницы, какая реализация функции (у вас - памяти) применяется, если по поведению они одинаковы. Встроенные блоки памяти позволяют экономить регистры. 3. Располагаться геометрически ? Какая Вам разница, в каком порядке они лежат на кристалле? Для компилятора это имеет некоторе значение, а для пользователя имеет значение только порты (30 downto 1) (30 downto 1) 4. Если очень хотите, то 30 на 30 бит это всего 900 регистров. В любой современной ПЛИС это поместится, даже в младших моделях циклона это всего 25% их объема. Запускаете Megawizard Plug-In Manager, выбираете закладку Memory Compiler, RAM - нужное число портов, на первой странице ставите "LCs" - вся память будет размещена в триггерах. Здравствуйте. То, что вы предлагаете, даст эмуляцию обычной линейной памяти на параллельной физической среде ПЛИС. Не так ли? Представим себе, что мне нужно выполнить простую операцию над двумя элементами такой памяти. Я должен выбрать из памяти первый элемент и сохранить его где-то. Затем выбрать второй элемент. Затем выполнить операцию. Опишите Вашу задачу, невозможно понять зачем Вы так усложняете. Возможно Вам нужно, чтобы все значения были доступны одновременно, без выборки с помощью адреса ?Именно это. Меня интересует возможность ПЛИС естественным образом хранить двумерную структуру данных и выполнять над этими данными вычислительные действия. Привожу синтетический пример. Нужно считать содержимое из триггера текущего LE, сложить его по OR со значением из левого LE, результат умножить по AND с верхним LE и поместить в правый LE. И это действие нужно одновременно (синхронно) выполнить для всех LE некоторой квадратной (прямоугольной) области ПЛИС. Такое возможно? Изменено 29 ноября, 2008 пользователем files Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 29 ноября, 2008 Опубликовано 29 ноября, 2008 · Жалоба Меня интересует возможность ПЛИС естественным образом хранить двумерную структуру данных и выполнять над этими данными вычислительные действия. Привожу синтетический пример. Нужно считать содержимое из триггера текущего LE, сложить его по OR со значением из левого LE, результат умножить по AND с верхним LE и поместить в правый LE. И это действие нужно одновременно (синхронно) выполнить для всех LE некоторой квадратной (прямоугольной) области ПЛИС. Такое возможно? ПРосто непонятно, какая разница между двумерной структурой регистров [7:0] rg [1:0] и одномерной [15:0] rg. Ведь по ресурсам это одно и тоже. какая разница, с каким битом проводиться манипуляция. Насчет одновременно - не знаю. А синхронно в конвейере (если принять этот двумерный массив за блок), наращивая количество блоков. пока ресурсов хватит - это да. Конечно можно закрепить тот или иной блок в той или иной области кристалла. Но делается это исключительно для повторяемости модуля и его работоспособности по заданным критериям уже при разводке кристалла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmel1 0 29 ноября, 2008 Опубликовано 29 ноября, 2008 · Жалоба Привожу синтетический пример. Нужно считать содержимое из триггера текущего LE, сложить его по OR со значением из левого LE, результат умножить по AND с верхним LE и поместить в правый LE. И это действие нужно одновременно (синхронно) выполнить для всех LE некоторой квадратной (прямоугольной) области ПЛИС. Такое возможно? Конечно возможно. Только нет необходимости добиваться именно геометрического расположения элементов. Напишите код на VHDL/Verilog и позвольте компилятору раложить его по ячейкам самому. Он достаточно компетентно рашает, что как надо расположить. Надо учитывать, что оптимальность подразумевает не только максимальную скорость работы вашей таблицы, но выполнение требований по быстродействию всего проекта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slog 0 29 ноября, 2008 Опубликовано 29 ноября, 2008 · Жалоба Нужно считать содержимое из триггера текущего LE, сложить его по OR со значением из левого LE, результат умножить по AND с верхним LE и поместить в правый LE. И это действие нужно одновременно (синхронно) выполнить для всех LE некоторой квадратной (прямоугольной) области ПЛИС. Такое возможно? Возможно всё. Память может быть двух или даже трёх портовая, соответственно можешь выбирать одновременно несколько элементов за один такт и тут же производить с ними операции. Если это не годится, то из триггеров и мультиплексоров можно нагородить что угодно, любой размерности. Когда говорят про LE, обычно имеется ввиду Logic Elements из которых состоит FPGA. Где они окажутся после route & place слева или справа, тебя не должно волновать. Тем более физически это будет не квадратная или прямоугольная область в FPGA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться