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

Возник вопрос по 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 мс.

 

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

 

 

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


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

Лучше читать с первоисточника. Читайте лучше даташит к вашей микросхеме памяти и апноты.

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


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

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

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

 

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

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

Хотя в реальности чип держит данные без регенерации гораздо дольше чем 64мс.

 

Вот эта фраза совсем непонятна

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

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


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

Лучше читать с первоисточника. Читайте лучше даташит к вашей микросхеме памяти и апноты.

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

Смысл команды мне ясен - подзарядить конденсаторы. А вот как это правильно делать я не понял. Просто в datashit'е есть картинка как это делать.

REFRESH.png

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

 

 

 

 

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

 

 

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

Хотя в реальности чип держит данные без регенерации гораздо дольше чем 64мс.

 

 

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

Меня вот это вот и смущает

то период регенерации должен быть <= 64мс/8192.

Как я понял, регенерация происходит построчно. В этом случае при таком периоде у нас получиться, что как только мы подзаридили последнюю строку у нас прошло 64 мс. И настало время снова регенирировать первую строку. Тогда зачем дана картинка ? (выложил сообщением ранее).

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


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

Как я понял, регенерация происходит построчно. В этом случае при таком периоде у нас получиться, что как только мы подзаридили последнюю строку у нас прошло 64 мс. И настало время снова регенирировать первую строку. Тогда зачем дана картинка ? (выложил сообщением ранее).

64 мс (или менее) должно быть не между последней строкой и первой, а между первой и снова первой (в след. цикле регенерации). За 64мс все строки должны быть регенерированы.

А зачем Вам это надо? Контроллер SDRAM разрабатываете?

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


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

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

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


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

Период регенерации каждой строки расположенному по конкретному адресу получается 64 мs. Как я понял надо каждые 64мс/8192 выдавать сигнал регенерации. А встроенный контроллер уже сам будет выбирать строки. Так опять же накой фиг нужна картинка, выложенная мной ? Или она говорит лишь о минимальном времени регенерации и о том как должна выглядеть команда авто-регенерации ?

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

 

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

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

А ещё можно использовать Self Refresh.

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


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

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

 

 

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

А ещё можно использовать Self Refresh.

А можно поподробнее поведать про режим пакетной регенерации в двух словах ?

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


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

А можно поподробнее поведать про режим пакетной регенерации в двух словах ?

Один раз за период не более 64мс делаете NR (NR - число строк) последовательных чтений с шагом, определяемым организацией карты адресов чипа.

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

 

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

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


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

Один раз за период не более 64мс делаете NR (NR - число строк) последовательных чтений с шагом, определяемым организацией карты адресов чипа.

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

 

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

Спасибо !

PS. Я честно искал информацию по работе с SDRAM памятью. Но нарыл информации недостаточно, чтобы получить ответы на свои вопросы. То что я нарыл почти всё на английском. У меня с ним беда (надеюсь временная). Поэтому обратился за помощью к знающим людям.

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


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

Прикладываю сюда достаточно хорошие доки по операциям SDRAM. Они конечно на англ. Но вроде и на русском встречал много инфы по SDRAM в сети.

SDRAM_timing.pdf sdram_operation_timing.pdf

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


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

PS. Я честно искал информацию по работе с SDRAM памятью. Но нарыл информации недостаточно, чтобы получить ответы на свои вопросы. То что я нарыл почти всё на английском. У меня с ним беда (надеюсь временная). Поэтому обратился за помощью к знающим людям.

Я думаю, что это просто треп ленивого...

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

 

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


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

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

Согласен. Набираешь в гугле - и кучу ссылок даёт, только отсеивай. В том числе и на русском.

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


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

Я думаю, что это просто треп ленивого...

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

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

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

Вот и приходится всё изучать с нуля самому в свободное от работы время.

Изменено пользователем Flip-fl0p

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


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

Да. Я пытаюсь сделать собственный SDRAM контроллер. Хочу организовать фреймбуфер для LVDS матрицы.
Я правильно понимаю, что ваш контролер будет постоянно сканировать SDRAM и выдывать ее содержимое в LVDS матрицу? Если это так, то регенерация вам возможно вообще не понадобится (если правильно расположить данные в SDRAM)

 

 

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


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

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

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

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

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

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

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

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

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

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