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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> 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
Den64
сообщение Sep 19 2016, 10:00
Сообщение #2


Знающий
****

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



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


Гуру
******

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



Цитата(Flip-fl0p @ Sep 19 2016, 15:07) *
Совсем непонятно что такое автоматическая регенерация, и когда её включать. Какие банки она регенерирует ? Какие строки ?

Чтобы её включить (если речь идёт о SDRAM подключенной к МК) достаточно в контроллере внешней памяти МК прописать период регенерации. Ну по-крайней мере для LPC1788 это справедливо. Ну и остальные параметры правильно проинитить. Дальше контроллер всё делает сам.

Цитата(Flip-fl0p @ Sep 19 2016, 15:07) *
Т.е каждые 64 мс мы запускаем регенерацию. Сначала одну строку, потом вторую .... и.т.д. Доходим до нуля, и снова регенерируем (Мне это напомнило движение единицы в кольцевом сдвиговом регистре). Или это не так ?

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

Цитата(Flip-fl0p @ Sep 19 2016, 15:07) *
Вот эта фраза совсем непонятна

А что непонятного? При чтении данных они одновременно и регенерируются. Т.е. - можно не включать автоматическую регенерацию силами контроллера памяти, а просто программно как минимум раз в 64мс считать данные из всех строк чипа. Именно поэтому в некоторых областях применения памяти автоматическую регенерацию не делают, например - для видеопамяти, так как она и так вся не менее чем раз за один кадр считывается.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 19 2016, 12:16
Сообщение #4


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

Группа: Свой
Сообщений: 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
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #6


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

Группа: Свой
Сообщений: 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
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #8


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

Группа: Свой
Сообщений: 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
jcxz
сообщение Sep 19 2016, 17:27
Сообщение #9


Гуру
******

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



Цитата(Flip-fl0p @ Sep 19 2016, 19:17) *
А можно поподробнее поведать про режим пакетной регенерации в двух словах ?

Один раз за период не более 64мс делаете NR (NR - число строк) последовательных чтений с шагом, определяемым организацией карты адресов чипа.
Но это для регенерации силами внешнего Bus Master-а, обращающегося к памяти через контроллер SDRAM. Если силами контроллера SDRAM, то лучше NR раз подать команду автоматической регенерации.

PS: Вы задаёте вопросы, ответы на которые очевидны. Значит не читали вообще никаких док по работе SDRAM. Поищите в инете - таких док полно и ознакомьтесь хотя-бы с базовыми понятиями.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 20 2016, 07:59
Сообщение #10


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

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



Цитата(jcxz @ Sep 19 2016, 20:27) *
Один раз за период не более 64мс делаете NR (NR - число строк) последовательных чтений с шагом, определяемым организацией карты адресов чипа.
Но это для регенерации силами внешнего Bus Master-а, обращающегося к памяти через контроллер SDRAM. Если силами контроллера SDRAM, то лучше NR раз подать команду автоматической регенерации.

PS: Вы задаёте вопросы, ответы на которые очевидны. Значит не читали вообще никаких док по работе SDRAM. Поищите в инете - таких док полно и ознакомьтесь хотя-бы с базовыми понятиями.

Спасибо !
PS. Я честно искал информацию по работе с SDRAM памятью. Но нарыл информации недостаточно, чтобы получить ответы на свои вопросы. То что я нарыл почти всё на английском. У меня с ним беда (надеюсь временная). Поэтому обратился за помощью к знающим людям.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 20 2016, 08:24
Сообщение #11


Гуру
******

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



Прикладываю сюда достаточно хорошие доки по операциям SDRAM. Они конечно на англ. Но вроде и на русском встречал много инфы по SDRAM в сети.
Прикрепленный файл  SDRAM_timing.pdf ( 531.68 килобайт ) Кол-во скачиваний: 249
Прикрепленный файл  sdram_operation_timing.pdf ( 686.25 килобайт ) Кол-во скачиваний: 143
Go to the top of the page
 
+Quote Post
iosifk
сообщение Sep 20 2016, 08:27
Сообщение #12


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Flip-fl0p @ Sep 20 2016, 10:59) *
PS. Я честно искал информацию по работе с SDRAM памятью. Но нарыл информации недостаточно, чтобы получить ответы на свои вопросы. То что я нарыл почти всё на английском. У меня с ним беда (надеюсь временная). Поэтому обратился за помощью к знающим людям.

Я думаю, что это просто треп ленивого...
Регенерацию динамической памяти можно найти в любом учебнике и студенты это должны учить... В конце концов можно взять описание любой отечественной микросхемы начиная с 30-ти летней давности...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 20 2016, 08:50
Сообщение #13


Гуру
******

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



Цитата(iosifk @ Sep 20 2016, 14:27) *
Регенерацию динамической памяти можно найти в любом учебнике и студенты это должны учить... В конце концов можно взять описание любой отечественной микросхемы начиная с 30-ти летней давности...

Согласен. Набираешь в гугле - и кучу ссылок даёт, только отсеивай. В том числе и на русском.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 20 2016, 10:26
Сообщение #14


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

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



Цитата(iosifk @ Sep 20 2016, 11:27) *
Я думаю, что это просто треп ленивого...
Регенерацию динамической памяти можно найти в любом учебнике и студенты это должны учить... В конце концов можно взять описание любой отечественной микросхемы начиная с 30-ти летней давности...

К моему большому сожалению Вы не правы. Студентов этому не учат(их вообще мало чему учат...) Я учился в достаточно хорошем институте (ГУАП). Даже окончил его с красным дипломом. Но к сожалению я понимаю, что по сути я почти за 5 лет учёбы практически ничему не научился, и по факту мой диплом ни о чем не говорит.
То, что я читаю в книгах по ПЛИС, схемотехнике, читаю на форумах, нам даже не говорили. Максимум что нам дали - это основы AHDL( совсем базовый уровень). Никаких интерфейсов, нам не давали за 5 лет обучения. Как ни странно, но большую часть учебного времени занимали гуманитарные предметы, хотя специальность техническая.
Вот и приходится всё изучать с нуля самому в свободное от работы время.

Сообщение отредактировал Flip-fl0p - Sep 20 2016, 10:27
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 20 2016, 10:28
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Flip-fl0p @ Sep 19 2016, 15:49) *
Да. Я пытаюсь сделать собственный SDRAM контроллер. Хочу организовать фреймбуфер для LVDS матрицы.
Я правильно понимаю, что ваш контролер будет постоянно сканировать SDRAM и выдывать ее содержимое в LVDS матрицу? Если это так, то регенерация вам возможно вообще не понадобится (если правильно расположить данные в SDRAM)

Go to the top of the page
 
+Quote Post

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

 


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


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