|
Вопрос по регенерации в SDRAM |
|
|
|
Jan 13 2014, 12:29
|
Группа: Новичок
Сообщений: 4
Регистрация: 13-01-14
Пользователь №: 80 008

|
Здравствуйте, Так ли необходимо проводить циклы автоматической регенерации строк SDRAM каждые 64мс если система гарантирует корректное обращение к каждой строке (по записи или чтению) за меньшее время ? Помнится, для FP DRAM такой вопрос не стоял. Достаточно было простого перебора строк (RoR). В документации на микросхему предписывается обязательное проведение циклов регенерации.
Поясню ситуацию. Делаю кольцевой буфер на SDRAM от Micron. Эти приборы поддерживают независимую работу всех 4 банков (не закрывая банк можно активировать другие). Частота следования данных - 100 МГц, частота SDRAM - 100 МГц. При условии чередования банков и длине burst 4, можно обеспечить запись информации в каждом такте. Причем, каждый burst будет направлен в следующую строку.
Все замечательно, но циклы REFRESH портят всю картину. Придется увеличивать частоту SDRAM (задействовать еще 1 PLL), городить FIFO, да и управляющий автомат усложнится в разы.
Спасибо заранее.
|
|
|
|
|
Jan 14 2014, 08:13
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(des00 @ Jan 14 2014, 06:32)  Вопро тоже интересен, всегда считал что чтение из памяти разрушающее (разряжаются емкости затворов транзиторов) и их перезаряжают как раз при акивации банка. Если посмотреть на электрическую схему ячейки классической DRAM, их перезаряжают именно при чтении - считывание совмещается с последующей записью того, что считалось. PRECHARGE по электрической схеме классической DRAM - заряжает емкости всех линии выборки строк в состояние "лог.1" - получается состояние "ни одна не выбрана", активация - разряжает в "0" емкость нужной линии выборки строк из предварительно заряженных по precharge, но ни чтение, ни запись (и вообще линии выборки столбцов) не активируются. так что я еще поверю, что регенерация не нужна, если в пределах этих 64 мс (tREFI) происходит чтение ВСЕХ ЯЧЕЕК, или запись ВСЕХ ЯЧЕЕК, но вот в то, что precharge или активация регенерирует, я не верю.
|
|
|
|
|
Jan 15 2014, 07:51
|
Группа: Новичок
Сообщений: 4
Регистрация: 13-01-14
Пользователь №: 80 008

|
Спасибо за обнадеживающие ответы. Буду пробовать в железе. По итогам отпишусь.
Смущают, конечно, слова "must refresh every 64 ms" в даташите.
|
|
|
|
|
Jan 16 2014, 05:03
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(SM @ Jan 14 2014, 03:13)  Если посмотреть на электрическую схему ячейки классической DRAM, их перезаряжают именно при чтении - считывание совмещается с последующей записью того, что считалось. PRECHARGE по электрической схеме классической DRAM - заряжает емкости всех линии выборки строк в состояние "лог.1" - получается состояние "ни одна не выбрана", активация - разряжает в "0" емкость нужной линии выборки строк из предварительно заряженных по precharge, но ни чтение, ни запись (и вообще линии выборки столбцов) не активируются.
так что я еще поверю, что регенерация не нужна, если в пределах этих 64 мс (tREFI) происходит чтение ВСЕХ ЯЧЕЕК, или запись ВСЕХ ЯЧЕЕК, но вот в то, что precharge или активация регенерирует, я не верю. Может быть у современной памяти другая конструкция. Что касается SDR SDRAM, у меня сложилось мнение что регенерируется сразу вся строка и при активации банка вся эта строка читается в специальный буфер (Read Data Latches) и регенерация происходит именно при активации банка. Что интересно длительность периода refresh подозрительно совпадает с длительностью последовательности команд act + pre.
--------------------
|
|
|
|
|
Jan 16 2014, 07:31
|
Группа: Новичок
Сообщений: 4
Регистрация: 13-01-14
Пользователь №: 80 008

|
Память 100MHz, поток - 100MHz. Нужно писать каждый такт. Рефреш съест 4 такта, поток прервется. За то и бьемся. Чтоб пропуска не было нужно вводить FIFO и поднимать частоту памяти.
|
|
|
|
|
Jan 16 2014, 10:19
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Цитата(Bad0512 @ Jan 16 2014, 11:45)  Не получится без фифо. Там ещё других накладных уйма.И рефреш тут - не самое страшное зло. Получится - я еще в 1999 году что-то похожее делал на max128. Типа цифрового осциллографа - быстрая потоковая запись оцифрованных данных в SDRAM, а затем медленное вычитывание через LPT порт. Открываем строку в банке (с autoprecharge) - пишем burst 4-8 слов - пока пишем открываем следующую строку в другом банке - закончили писать burst (строка закрылась автоматом) начали писать burst в следующий открытый банк ... и так конвейером по всем банкам/строкам. Ну а при медленном чтении естественно делался refresh. 2 SM, des00 Увы может и был неправ, давно это было вот и подзабыл - но то что без закрытия строки не обойтись помню точно. Успехов! Rob.
|
|
|
|
|
Jan 16 2014, 11:29
|
Группа: Новичок
Сообщений: 4
Регистрация: 13-01-14
Пользователь №: 80 008

|
Цитата(RobFPGA @ Jan 16 2014, 14:19)  Приветствую!
Получится - я еще в 1999 году что-то похожее делал на max128. Типа цифрового осциллографа - быстрая потоковая запись оцифрованных данных в SDRAM, а затем медленное вычитывание через LPT порт. Открываем строку в банке (с autoprecharge) - пишем burst 4-8 слов - пока пишем открываем следующую строку в другом банке - закончили писать burst (строка закрылась автоматом) начали писать burst в следующий открытый банк ... и так конвейером по всем банкам/строкам. Ну а при медленном чтении естественно делался refresh.
2 SM, des00 Увы может и был неправ, давно это было вот и подзабыл - но то что без закрытия строки не обойтись помню точно.
Успехов! Rob. Спасибо, Rob на добром слове! Думаю - должно получиться. Память поддерживает работу со всеми 4 банками одновременно. Пока пишется burst в первый банк, активируется второй. Первый закрывается и ждет Twr - во втором начинается активация. И т.д. Причем, строка+банк - в младших разрядах. Вначале перебираются банки и строки, потом столбцы. Следовательно, гарантировать перебор строк можно.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|