Перейти к содержанию
    

Плата захвата

имеем поток 16-ти разрядных слов частотой 50 МГц

Необходимо по получению некой команды "захватить" эти данные во внутренний буфер, из которого потом эти данные надо будет как-то считать (при считывании скорость некритична).

"Захват" данных продолжается в течении 1 с, из чего путём несложных вычислений заключаем, что требуемый объём буфера 100 мегабайт.

Как бы это всё покрасивее организовать?

 

Пока думаю поставить две микросхемы 16-ти разрядной SDRAM-памяти. Сначала пишем полную страницу в первую микросхему (1024 слова), потом - пишем полную страницу во вторую, а для первой в это время выдаём команды подзарядки, обновления ACTIVATE, затем то же - со второй и т.д.

 

какие есть ещё решения?

с SDRAM-памятью раньше не работал, поэтому весьма слабо представляю, что ещё можно придумать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно для какой памяти проводился расчет? По-моему, можно обойтись и одной.

 

Память MT48LC32M16A2TG-75 - тактовая 133 Мгц

а какой вариант предлагаете Вы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне кажется что достаточно и одной микросхемы которая будет 16 разрядной.

А использование внутреннего FIFO буфера позволит сгладить время на командах.

Что даст непрерывный поток данных.

Fifo должен быть с отдельным тактированием входа и выхода.

Quartus позволяет строить с помощью MEGAWIZARD строить этот FIFO

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Память MT48LC32M16A2TG-75 - тактовая 133 Мгц

а какой вариант предлагаете Вы?

Например, MT47H64M16BT-37E - 267 МГц. И конечно буфер FIFO.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для этой цели использую FIFO для буферирования входного потока, SDRAM как память данных, и FIFO для буферирования выходного потока.

Работа с SDRAM производится в мультиплексном пакетном режиме.

FIFO входного потока при записи блока данных дает запрос контроллеру SDRAM на запись блока.

FIFO выходных данных дает запрос на разрешение чтения блока контроллеру SDRAM при выдаче предпоследнего блока.

 

SDRAM нужно выбирать исходя из необходимой пропускной способности.

50MHZ+ тактовая частота выходных данных = требуемая рабочая частота

SDRAM.

SDRAM можно разбить на два буфера. В один писать а из другого читать. Так можно одновременно записывать и выдавать данные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SDRAM можно разбить на два буфера. В один писать а из другого читать. Так можно одновременно записывать и выдавать данные.

 

Поясните что вы имели ввиду. SDRAM это однопортовая память в которую в один момент времени можно либо писать либо читать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот какие варианты решения задачи пришли в голову:

 

1. Если требуется все реализовать на опорной частоте входного потока (т. е. 50МГц), тогда ставим два микросхемы SDRAM. Поочередно пишем то в одну, то в другую. Пока в одну пишем, другую регенерируем и наоборот. При этом не обязательно переключаться на другую микросхему после записи одной страницы. Главное здесь не превысить максимально допустимое время между последовательными регенерациями. Например, можем писать в одну до истечения максимально допустимого времени между циклами регенерации, параллельно циклически (непрерывно) производим полную регенерацию (всех строк всех банков) другой микросхемы. Еще лучше: делим максимально допустимый период регенерации для данного типа микросхемы (часто 64ms) на общее количество строк в микросхеме. Получаем время, через которое будем переключать между микросхемами и выполнять команду регенерации. Т. е. цикл доступа к одной микросхеме будет состоять из (к примеру): открываем все банки, последовательно пишем данные (в разные банки и разные строки), далее закрытие всех банков (PrechargeAll), далее команда регенерации (AutoRefresh). Смена микросхемы происходит перед закрытием всех банков текущей микросхемы. Вообщем, управление микросхемами осуществляется с наложением команд. Параллельно с принятием потока, можно умудряться еще и читать из микросхемы, в которую в данный момент не идет запись входного потока (разумеется, каналы управления и данных микросхем разделены). Схема хороша с точки зрения экономии энергии и не требует никаких буферов FIFO. Кстати, пока микросхема не используется ее можно еще и в SelfRefresh загнать. Данные храняться и энергия экономиться.

2. Если использовать одну микросхему, то придется поднимать тактовую частоту и ставить буфера FIFO. Проще сделать 100МГц и синхронно к опорной, тогда не придется мудрить с полностью асинхронными буферами FIFO. Можно найти и время для параллельного чтения, но потребуется механизм арбитража. Сложность управления памятью соответственно возрастет. Потребление схемы будет выше.

 

Вот. Удачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SDRAM можно разбить на два буфера. В один писать а из другого читать. Так можно одновременно записывать и выдавать данные.

 

Поясните что вы имели ввиду. SDRAM это однопортовая память в которую в один момент времени можно либо писать либо читать.

 

 

 

Не правильно выразился. Имел в виду последовательно читать и писать используя одну микросхему SDRAM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если дальнейшая обработка будет производиться в ПЭВМ, то можно сделать плату ввода в конструктиве PCI: данные закачать в память ЭВМ по протоколу BUS-master, а память на плате потребуется только для буфера данных (FIFO не более 64кБайт). Хотя скорость ввода близка к предельной для PCI 32бита/33МГц, но такой вариант вполне реален.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ставим два микросхемы SDRAM. Поочередно пишем то в одну, то в другую. Пока в одну пишем, другую регенерируем и наоборот.

 

Если писать по адресам подряд, может регенерить и совсем не надо.

Смысл регенерации в обращении по всем адресам в одном направлении.

Или что то изменилось?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если писать по адресам подряд, может регенерить и совсем не надо.

Смысл регенерации в обращении по всем адресам в одном направлении.

Или что то изменилось?

 

А как же пресловутые 64мс? Хотя ещё есть такой параметр: Auto Refresh Modes. Вы как раз его имеете ввиду?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...