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

 
 
 
Reply to this topicStart new topic
> Плата захвата, как лучше сделать?
Vincent Vega
сообщение May 18 2005, 20:12
Сообщение #1


Участник
*

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



имеем поток 16-ти разрядных слов частотой 50 МГц
Необходимо по получению некой команды "захватить" эти данные во внутренний буфер, из которого потом эти данные надо будет как-то считать (при считывании скорость некритична).
"Захват" данных продолжается в течении 1 с, из чего путём несложных вычислений заключаем, что требуемый объём буфера 100 мегабайт.
Как бы это всё покрасивее организовать?

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

какие есть ещё решения?
с SDRAM-памятью раньше не работал, поэтому весьма слабо представляю, что ещё можно придумать
Go to the top of the page
 
+Quote Post
tonjo
сообщение May 19 2005, 06:06
Сообщение #2


Местный
***

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



Интересно для какой памяти проводился расчет? По-моему, можно обойтись и одной.
Go to the top of the page
 
+Quote Post
Vincent Vega
сообщение May 19 2005, 06:24
Сообщение #3


Участник
*

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



Цитата(tonjo @ May 19 2005, 09:06)
Интересно для какой памяти проводился расчет? По-моему, можно обойтись и одной.
*


Память MT48LC32M16A2TG-75 - тактовая 133 Мгц
а какой вариант предлагаете Вы?
Go to the top of the page
 
+Quote Post
Serega Doc
сообщение May 19 2005, 07:02
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 267
Регистрация: 11-11-04
Из: Одесса
Пользователь №: 1 103



Мне кажется что достаточно и одной микросхемы которая будет 16 разрядной.
А использование внутреннего FIFO буфера позволит сгладить время на командах.
Что даст непрерывный поток данных.
Fifo должен быть с отдельным тактированием входа и выхода.
Quartus позволяет строить с помощью MEGAWIZARD строить этот FIFO
Go to the top of the page
 
+Quote Post
tonjo
сообщение May 19 2005, 07:07
Сообщение #5


Местный
***

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



Цитата(Vincent Vega @ May 19 2005, 09:24)
Память MT48LC32M16A2TG-75 - тактовая 133 Мгц
а какой вариант предлагаете Вы?
*

Например, MT47H64M16BT-37E - 267 МГц. И конечно буфер FIFO.
Go to the top of the page
 
+Quote Post
Volkov
сообщение May 19 2005, 13:22
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 284
Регистрация: 21-01-05
Пользователь №: 2 104



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

SDRAM нужно выбирать исходя из необходимой пропускной способности.
50MHZ+ тактовая частота выходных данных = требуемая рабочая частота
SDRAM.
SDRAM можно разбить на два буфера. В один писать а из другого читать. Так можно одновременно записывать и выдавать данные.
Go to the top of the page
 
+Quote Post
Serega Doc
сообщение May 19 2005, 13:51
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 267
Регистрация: 11-11-04
Из: Одесса
Пользователь №: 1 103



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


Поясните что вы имели ввиду. SDRAM это однопортовая память в которую в один момент времени можно либо писать либо читать.
Go to the top of the page
 
+Quote Post
oval
сообщение May 19 2005, 15:00
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 265
Регистрация: 15-03-05
Из: Москва
Пользователь №: 3 367



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

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

Вот. Удачи.
Go to the top of the page
 
+Quote Post
Volkov
сообщение May 19 2005, 16:16
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 284
Регистрация: 21-01-05
Пользователь №: 2 104



Цитата(Serega Doc @ May 19 2005, 17:51)
Цитата
SDRAM можно разбить на два буфера. В один писать а из другого читать. Так можно одновременно записывать и выдавать данные.


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





Не правильно выразился. Имел в виду последовательно читать и писать используя одну микросхему SDRAM.
Go to the top of the page
 
+Quote Post
Genn
сообщение May 19 2005, 18:28
Сообщение #10


Участник
*

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



Если дальнейшая обработка будет производиться в ПЭВМ, то можно сделать плату ввода в конструктиве PCI: данные закачать в память ЭВМ по протоколу BUS-master, а память на плате потребуется только для буфера данных (FIFO не более 64кБайт). Хотя скорость ввода близка к предельной для PCI 32бита/33МГц, но такой вариант вполне реален.
Go to the top of the page
 
+Quote Post
alexf
сообщение May 20 2005, 09:53
Сообщение #11


Местный
***

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



Цитата(oval @ May 19 2005, 08:00)
ставим два микросхемы SDRAM. Поочередно пишем то в одну, то в другую. Пока в одну пишем, другую регенерируем и наоборот.


Если писать по адресам подряд, может регенерить и совсем не надо.
Смысл регенерации в обращении по всем адресам в одном направлении.
Или что то изменилось?
Go to the top of the page
 
+Quote Post
tonjo
сообщение May 20 2005, 10:36
Сообщение #12


Местный
***

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



Цитата(alexf @ May 20 2005, 12:53)
Если писать по адресам подряд, может регенерить и совсем не надо.
Смысл регенерации в обращении по всем адресам в одном направлении.
Или что то изменилось?
*


А как же пресловутые 64мс? Хотя ещё есть такой параметр: Auto Refresh Modes. Вы как раз его имеете ввиду?
Go to the top of the page
 
+Quote Post

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

 


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


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