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

 
 
> SDR SDRAM память, Регенерация данных
Flip-fl0p
сообщение Sep 19 2016, 09:07
Сообщение #1


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Возник вопрос по SDR памяти в части регенерации.
Вот что нарыл по поводу регенерации( http://www.dsioffe.narod.ru/mysdram/MyMicronSDRAM.htm#top )

Цитата
Автоматическая регенерация используется во время нормальной работы SDRAM и аналогична регенерации CAS-BEFORE-RAS в обычной DRAM. Эта команда не постоянна, её надо подавать каждый раз, когда требуется регенерация. Перед её выполнением все активные банки должны быть деактивированы. Команда AUTO REFRESH должна быть подана не менее, чем за время tRP после команды PRECHARGE, как показано в разделе описания работы.
Адресация производится встроенным контроллером регенерации. Поэтому при автоматической регенерации состояние адресных входов безразлично.

64 Мб SDRAM требует 4096 циклов автоматической регенерации каждые 64 мс (tREF) независимо от ширины слова. Выполнение команды автоматической регенерации каждые 15625 мкс необходимо и достаточно для полной регенерации всех рядов. В качестве альтернативы 4096 команд автоматической регенерации могут выполняться одним пакетом с минимальным временем цикла tRC каждые 64 мс.


Совсем непонятно что такое автоматическая регенерация, и когда её включать. Какие банки она регенерирует ? Какие строки ?

Так-же неясна фраза

Цитата
64 Мб SDRAM требует 4096 циклов автоматической регенерации каждые 64 мс (tREF) независимо от ширины слова.
Т.е каждые 64 мс мы запускаем регенерацию. Сначала одну строку, потом вторую .... и.т.д. Доходим до нуля, и снова регенерируем (Мне это напомнило движение единицы в кольцевом сдвиговом регистре). Или это не так ?

Вот эта фраза совсем непонятна
Цитата
В качестве альтернативы 4096 команд автоматической регенерации могут выполняться одним пакетом с минимальным временем цикла tRC каждые 64 мс.


Можете помочь разобраться ?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Den64
сообщение Sep 19 2016, 10:00
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 584
Регистрация: 22-11-07
Из: Курская область
Пользователь №: 32 571



Лучше читать с первоисточника. Читайте лучше даташит к вашей микросхеме памяти и апноты.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 19 2016, 12:16
Сообщение #3


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Den64 @ Sep 19 2016, 13:00) *
Лучше читать с первоисточника. Читайте лучше даташит к вашей микросхеме памяти и апноты.

Да я читал первоисточник. Там то-же самое написано, только на английском. Мне бы разобраться с этими командами. Чтобы меня навели на мысль, подсказали, где я туплю.
Смысл команды мне ясен - подзарядить конденсаторы. А вот как это правильно делать я не понял. Просто в datashit'е есть картинка как это делать.

В то-же время есть другое требования что время обновления 4096 строк 64 мс. Вот я и пытаюсь понять как происходит рефреш. Зачем нужны эти два требования. Что будет если во время обновления строки туда писать/читать данные. В datashit'е я ответов на эти вопросы не увидел.




Цитата(jcxz @ Sep 19 2016, 14:55) *
Чтобы её включить (если речь идёт о SDRAM подключенной к МК) достаточно в контроллере внешней памяти МК прописать период регенерации. Ну по-крайней мере для LPC1788 это справедливо. Ну и остальные параметры правильно проинитить. Дальше контроллер всё делает сам.


Нет, не так. 64мс - это время, за которое весь чип должен быть регенерирован. Т.е. - если в чипе 8192 строк, то период регенерации должен быть <= 64мс/8192.
Хотя в реальности чип держит данные без регенерации гораздо дольше чем 64мс.


А что непонятного? При чтении данных они одновременно и регенерируются. Т.е. - можно не включать автоматическую регенерацию силами контроллера памяти, а просто программно как минимум раз в 64мс считать данные из всех строк чипа. Именно поэтому в некоторых областях применения памяти автоматическую регенерацию не делают, например - для видеопамяти, так как она и так вся не менее чем раз за один кадр считывается.

Меня вот это вот и смущает
Цитата
то период регенерации должен быть <= 64мс/8192.

Как я понял, регенерация происходит построчно. В этом случае при таком периоде у нас получиться, что как только мы подзаридили последнюю строку у нас прошло 64 мс. И настало время снова регенирировать первую строку. Тогда зачем дана картинка ? (выложил сообщением ранее).
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 19 2016, 12:28
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Flip-fl0p @ Sep 19 2016, 18:16) *
Как я понял, регенерация происходит построчно. В этом случае при таком периоде у нас получиться, что как только мы подзаридили последнюю строку у нас прошло 64 мс. И настало время снова регенирировать первую строку. Тогда зачем дана картинка ? (выложил сообщением ранее).

64 мс (или менее) должно быть не между последней строкой и первой, а между первой и снова первой (в след. цикле регенерации). За 64мс все строки должны быть регенерированы.
А зачем Вам это надо? Контроллер SDRAM разрабатываете?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 19 2016, 12:49
Сообщение #5


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(jcxz @ Sep 19 2016, 15:28) *
64 мс (или менее) должно быть не между последней строкой и первой, а между первой и снова первой (в след. цикле регенерации). За 64мс все строки должны быть регенерированы.
А зачем Вам это надо? Контроллер SDRAM разрабатываете?

Да. Я пытаюсь сделать собственный SDRAM контроллер. Хочу организовать фреймбуфер для LVDS матрицы. Знаю, что есть готовые варианты контроллеров. Но я хочу научиться , а не брать готовое.
Так у нас и получается что регенерация выглядит как-будто единица "бегает" по кольцевому сдвиговому регистру.
0001
0010
0100
1000
0001
Период регенерации каждой строки расположенному по конкретному адресу получается 64 мs. Как я понял надо каждые 64мс/8192 выдавать сигнал регенерации. А встроенный контроллер уже сам будет выбирать строки. Так опять же накой фиг нужна картинка, выложенная мной ? Или она говорит лишь о минимальном времени регенерации и о том как должна выглядеть команда авто-регенерации ?
Код
1. После команды PRECHARGE
2. Подождали  время TRP
3. Выдали команду AUTO REFRESH
4. Подождали время TRFC
5. Выдали команду AUTO REFRESH
6. Подождали время TRFC
7. Можно работать со строкой

И что делать если строка в которую я читаю\пишу данные выбрана контролером для регенерации. Как я узнаю, что контроллер в это время работает со строкой ?

Сообщение отредактировал Flip-fl0p - Sep 19 2016, 12:50
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 19 2016, 13:07
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Flip-fl0p @ Sep 19 2016, 18:49) *
Период регенерации каждой строки расположенному по конкретному адресу получается 64 мs. Как я понял надо каждые 64мс/8192 выдавать сигнал регенерации. А встроенный контроллер уже сам будет выбирать строки. Так опять же накой фиг нужна картинка, выложенная мной ? Или она говорит лишь о минимальном времени регенерации и о том как должна выглядеть команда авто-регенерации ?

Ну да - не более 64мс. Контроллер SDRAM просто выдаёт сигнал авторегенерации (определённый набор сигналов RAS,CAS,CS,WE,CKE). Номер регенерируемой строки SDRAM получает из внутреннего своего счётчика, который после инкрементируется.

Цитата(Flip-fl0p @ Sep 19 2016, 18:49) *
И что делать если строка в которую я читаю\пишу данные выбрана контролером для регенерации. Как я узнаю, что контроллер в это время работает со строкой ?

Что значит "я пишу"? Все операции производит контроллер SDRAM. Он и читает и пишет и сигналы авторегенерации выдаёт. Если процессор запрашивает доступ к SDRAM (через контроллер), то на это время все циклы авторегенерации могут например откладываться, накапливаясь где-то, а когда будет интервал простоя в запросах CPU, в это время контроллер может все эти задержанные авторефреши быстро и провести. А можно и не задерживать рефреши, а задерживать обслуживание запросов CPU на время авторефреша - тут воля Ваша как реализовать, раз Вы сами и делаете этот контроллер. Можете вообще пакетно один раз за 64 мс сразу все строки регенерировать, приостановив нормальный обмен на это время. Можно даже учесть алгоритм работы ПО с этой памятью и не обновлять те строки, которые явно должны быть считаны CPU за время 64мс - сэкономить таким образом на бюджете времени SDRAM.
А ещё можно использовать Self Refresh.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 19 2016, 13:17
Сообщение #7


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(jcxz @ Sep 19 2016, 16:07) *
Ну да - не более 64мс. Контроллер SDRAM просто выдаёт сигнал авторегенерации (определённый набор сигналов RAS,CAS,CS,WE,CKE). Номер регенерируемой строки SDRAM получает из внутреннего своего счётчика, который после инкрементируется.


Что значит "я пишу"? Все операции производит контроллер SDRAM. Он и читает и пишет и сигналы авторегенерации выдаёт. Если процессор запрашивает доступ к SDRAM (через контроллер), то на это время все циклы авторегенерации могут например откладываться, накапливаясь где-то, а когда будет интервал простоя в запросах CPU, в это время контроллер может все эти задержанные авторефреши быстро и провести. А можно и не задерживать рефреши, а задерживать обслуживание запросов CPU на время авторефреша - тут воля Ваша как реализовать, раз Вы сами и делаете этот контроллер. Можете вообще пакетно один раз за 64 мс сразу все строки регенерировать, приостановив нормальный обмен на это время. Можно даже учесть алгоритм работы ПО с этой памятью и не обновлять те строки, которые явно должны быть считаны CPU за время 64мс - сэкономить таким образом на бюджете времени SDRAM.
А ещё можно использовать Self Refresh.

А можно поподробнее поведать про режим пакетной регенерации в двух словах ?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Flip-fl0p   SDR SDRAM память   Sep 19 2016, 09:07
||- - jcxz   Цитата(Flip-fl0p @ Sep 19 2016, 19:1...   Sep 19 2016, 17:27
||- - Flip-fl0p   Цитата(jcxz @ Sep 19 2016, 20:27) Один ра...   Sep 20 2016, 07:59
||- - jcxz   Прикладываю сюда достаточно хорошие доки по операц...   Sep 20 2016, 08:24
||- - iosifk   Цитата(Flip-fl0p @ Sep 20 2016, 10:5...   Sep 20 2016, 08:27
||- - jcxz   Цитата(iosifk @ Sep 20 2016, 14:27) Реген...   Sep 20 2016, 08:50
||- - Flip-fl0p   Цитата(iosifk @ Sep 20 2016, 11:27) Я дум...   Sep 20 2016, 10:26
||- - iosifk   Цитата(iosifk @ Sep 20 2016, 11:27) Я дум...   Sep 20 2016, 12:04
||- - Flip-fl0p   Цитата(iosifk @ Sep 20 2016, 15:04) В про...   Sep 20 2016, 12:10
||- - iosifk   Цитата(Flip-fl0p @ Sep 20 2016, 15:1...   Sep 20 2016, 12:23
||- - jcxz   Интересно, что хоть и везде пишут про 64мс - необх...   Sep 20 2016, 13:31
|- - XVR   Цитата(Flip-fl0p @ Sep 19 2016, 15:4...   Sep 20 2016, 10:28
|- - Flip-fl0p   Цитата(XVR @ Sep 20 2016, 13:28) Я правил...   Sep 20 2016, 10:34
|- - XVR   Цитата(Flip-fl0p @ Sep 20 2016, 13:3...   Sep 20 2016, 10:43
|- - Flip-fl0p   Цитата(XVR @ Sep 20 2016, 13:43) Тогда во...   Sep 20 2016, 10:57
- - jcxz   Цитата(Flip-fl0p @ Sep 19 2016, 15:0...   Sep 19 2016, 11:55
- - Flip-fl0p   Моделирование памяти работает, но меня очень смуща...   Sep 29 2016, 11:06
- - Flip-fl0p   С проблемой моделирования разобрался. Судя по рабо...   Oct 4 2016, 07:52
- - Flip-fl0p   Поскольку задача вывода изображения на матрицу реш...   Nov 23 2016, 05:56


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

 


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


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