|
|
  |
Плата захвата, как лучше сделать? |
|
|
|
May 18 2005, 20:12
|

Участник

Группа: Свой
Сообщений: 46
Регистрация: 26-09-04
Пользователь №: 721

|
имеем поток 16-ти разрядных слов частотой 50 МГц Необходимо по получению некой команды "захватить" эти данные во внутренний буфер, из которого потом эти данные надо будет как-то считать (при считывании скорость некритична). "Захват" данных продолжается в течении 1 с, из чего путём несложных вычислений заключаем, что требуемый объём буфера 100 мегабайт. Как бы это всё покрасивее организовать?
Пока думаю поставить две микросхемы 16-ти разрядной SDRAM-памяти. Сначала пишем полную страницу в первую микросхему (1024 слова), потом - пишем полную страницу во вторую, а для первой в это время выдаём команды подзарядки, обновления ACTIVATE, затем то же - со второй и т.д.
какие есть ещё решения? с SDRAM-памятью раньше не работал, поэтому весьма слабо представляю, что ещё можно придумать
|
|
|
|
|
May 19 2005, 06:24
|

Участник

Группа: Свой
Сообщений: 46
Регистрация: 26-09-04
Пользователь №: 721

|
Цитата(tonjo @ May 19 2005, 09:06) Интересно для какой памяти проводился расчет? По-моему, можно обойтись и одной. Память MT48LC32M16A2TG-75 - тактовая 133 Мгц а какой вариант предлагаете Вы?
|
|
|
|
|
May 19 2005, 07:07
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 22-11-04
Пользователь №: 1 190

|
Цитата(Vincent Vega @ May 19 2005, 09:24) Память MT48LC32M16A2TG-75 - тактовая 133 Мгц а какой вариант предлагаете Вы? Например, MT47H64M16BT-37E - 267 МГц. И конечно буфер FIFO.
|
|
|
|
|
May 19 2005, 15:00
|
Местный
  
Группа: Свой
Сообщений: 265
Регистрация: 15-03-05
Из: Москва
Пользователь №: 3 367

|
Вот какие варианты решения задачи пришли в голову:
1. Если требуется все реализовать на опорной частоте входного потока (т. е. 50МГц), тогда ставим два микросхемы SDRAM. Поочередно пишем то в одну, то в другую. Пока в одну пишем, другую регенерируем и наоборот. При этом не обязательно переключаться на другую микросхему после записи одной страницы. Главное здесь не превысить максимально допустимое время между последовательными регенерациями. Например, можем писать в одну до истечения максимально допустимого времени между циклами регенерации, параллельно циклически (непрерывно) производим полную регенерацию (всех строк всех банков) другой микросхемы. Еще лучше: делим максимально допустимый период регенерации для данного типа микросхемы (часто 64ms) на общее количество строк в микросхеме. Получаем время, через которое будем переключать между микросхемами и выполнять команду регенерации. Т. е. цикл доступа к одной микросхеме будет состоять из (к примеру): открываем все банки, последовательно пишем данные (в разные банки и разные строки), далее закрытие всех банков (PrechargeAll), далее команда регенерации (AutoRefresh). Смена микросхемы происходит перед закрытием всех банков текущей микросхемы. Вообщем, управление микросхемами осуществляется с наложением команд. Параллельно с принятием потока, можно умудряться еще и читать из микросхемы, в которую в данный момент не идет запись входного потока (разумеется, каналы управления и данных микросхем разделены). Схема хороша с точки зрения экономии энергии и не требует никаких буферов FIFO. Кстати, пока микросхема не используется ее можно еще и в SelfRefresh загнать. Данные храняться и энергия экономиться. 2. Если использовать одну микросхему, то придется поднимать тактовую частоту и ставить буфера FIFO. Проще сделать 100МГц и синхронно к опорной, тогда не придется мудрить с полностью асинхронными буферами FIFO. Можно найти и время для параллельного чтения, но потребуется механизм арбитража. Сложность управления памятью соответственно возрастет. Потребление схемы будет выше.
Вот. Удачи.
|
|
|
|
|
May 19 2005, 16:16
|
Местный
  
Группа: Свой
Сообщений: 284
Регистрация: 21-01-05
Пользователь №: 2 104

|
Цитата(Serega Doc @ May 19 2005, 17:51) Цитата SDRAM можно разбить на два буфера. В один писать а из другого читать. Так можно одновременно записывать и выдавать данные. Поясните что вы имели ввиду. SDRAM это однопортовая память в которую в один момент времени можно либо писать либо читать. Не правильно выразился. Имел в виду последовательно читать и писать используя одну микросхему SDRAM.
|
|
|
|
|
May 19 2005, 18:28
|
Участник

Группа: Свой
Сообщений: 48
Регистрация: 14-04-05
Пользователь №: 4 146

|
Если дальнейшая обработка будет производиться в ПЭВМ, то можно сделать плату ввода в конструктиве PCI: данные закачать в память ЭВМ по протоколу BUS-master, а память на плате потребуется только для буфера данных (FIFO не более 64кБайт). Хотя скорость ввода близка к предельной для PCI 32бита/33МГц, но такой вариант вполне реален.
|
|
|
|
|
May 20 2005, 09:53
|
Местный
  
Группа: Свой
Сообщений: 420
Регистрация: 22-12-04
Пользователь №: 1 608

|
Цитата(oval @ May 19 2005, 08:00) ставим два микросхемы SDRAM. Поочередно пишем то в одну, то в другую. Пока в одну пишем, другую регенерируем и наоборот. Если писать по адресам подряд, может регенерить и совсем не надо. Смысл регенерации в обращении по всем адресам в одном направлении. Или что то изменилось?
|
|
|
|
|
May 20 2005, 10:36
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 22-11-04
Пользователь №: 1 190

|
Цитата(alexf @ May 20 2005, 12:53) Если писать по адресам подряд, может регенерить и совсем не надо. Смысл регенерации в обращении по всем адресам в одном направлении. Или что то изменилось? А как же пресловутые 64мс? Хотя ещё есть такой параметр: Auto Refresh Modes. Вы как раз его имеете ввиду?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|