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

 
 
> Как лучше сделать доступ к множественной маленькой RAM?, концепция контроллера массива памяти на Spartan 3 или Virtex 5
count_enable
сообщение Oct 5 2013, 16:06
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Дано большое число (25-100) простых вычислительных блоков, у каждого блока есть свое маленькое ОЗУ на 10-100 8битных слов. Число слов одинаково на всех модулях (назвём их ВБ). Каждый ВБ только читает свою память, и есть один глобальный контроллер который читает и пишет эти памяти, адресуя их 16-битно как номерВБ в старшем байте смещение слова в младшем.
Я так понимаю что памяти будут синтезироваться из BRAM. Но смотрю я на схему CLB Spartan 3 и ломаю голову как минимализировать глобальную шину от контроллера до каждой памяти. Сделать локально махонький улавливатель адреса к каждой ОЗУ, который будет пропускать только запросы к своему адресу, или тянуть линии типа CS (chip select) от контроллера к каждой памяти? Запись-чтение будут выборочными и огромный daisy-chain не выбор. Так же возможен переход на Virtex 5, где уже будет несколько сот блоков.
Как сделать это "по-умному"? Скорость чтения-записи контроллером не имеет значения, доступ для ВБ минимальный - один такт.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
RobFPGA
сообщение Oct 6 2013, 09:00
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Если обмен не критичен по времени и число модулей ВБ велико то _pv правильно предлагает - реализация ВБ должна НЕЗАВИСИМА от внешнего CP : Последовательная шина на входе с дешифрацией адреса в ВБ, последовательная шина на выходе с 0 уровнем в неактивном состоянии, выходы объединяются OR. Внутрення память в ВБ выполняется на Distributed RAM.

Для синхронной шины (типа SPI) реализация в ВБ может быть очень простой. Для Spartan3 такой интерфейс без проблем запустить на 100-200 МHz а для Virtex5 и на 250-350. MHz. Ну и в дизайне это удобно так как при изменении структуры или количества блоков ВБ не надо будет трогать CP.

Большое число потребителей (fan_out) на шине решается разпаралеливанием источников (чаще всего триггеров) каждый из которых питает свою часть потребителей. Причем такое разпаралеливанием может выполнятся синтезатором (а иногда и мапером) как в автоматическом режиме так и в ручном - указанием специальных constraint синтеза для требуемых цепей.

Удачи! Rob.
Go to the top of the page
 
+Quote Post



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

 


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


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