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

Помогите определиться с памятью - SRAM или DRAM

Вот еще пара ссылок, может пригодится ;)

 

http://www.ixbt.com/mainboard/sdram.html

http://ru.wikipedia.org/wiki/SDRAM

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


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

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

 

Для подачи команды регенерации не нужно запоминать номер ряда, для него внутри SDRAM специальный счетчик есть. Делается так:

 

1. Заводится таймер на 15мкс. В прерывании по таймеру выполняется подача команды на регенерацию. Для простоты желательно отвести 2 регистра процессора под хранение команды NOP и AUTOREFRESH и в результате код прерывания будет примерно такой:

SBIC PINx,SDRAM_CLK
RJMP $+2
OUT PORTy,Rautorefresh
NOP
OUT PORTy,Rnop
RETI

 

Первые 2 команды - для синхронизации тактов (если тактовая SDRAM суть половина тактовой процессора). Даже SREG не надо сохранять.

 

Если же тактовая проца и тактовая SDRAM совпадают, то код будет примерно таким

OUT PORTy,Rautorefresh
OUT PORTy,Rnop
RETI

 

2. При чтении пачки (30мкс) регенерация не выполняется (прерывания запрещаются), а после PRECHARGE выполняется принудительная подача одной команды регенерации и разрешаются прерывания. Т.к. за 30мкс флаг прерываний уже установлен, то выполняется принудительная регенерация еще раз. И дальше опять по таймеру. Т.е. в среднем имеем 15мкс.

 

3. При записи запрещаем прерывания, надрыгиваем цикл записи (ACTIVE,WRITE,PRECHARGE) и разрешаем прерывания. Если за это время пришло прерывание от таймера, то оно выполнится (и произойдет очередная регенерация).

 

Что не ясно?

 

Вот теперь понятно. А какой камень-то?

 

Например, LPC24XX.

 

Курнул ман. Не возражаю, работать будет, спору нет. На месте автора я бы все-же пересмотрел дизайн в сторону перехода на такой LPC, раз в вопросах раскуривания даташита наблюдается плавание ;)

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


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

Что не ясно?

 

Пока все ясно. Следующий этап - спаять макетку.

 

Хочу лишь спросить, реально ли написать управляющий код на С, не боясь что компилятор его изгадит ?

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


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

Хочу лишь спросить, реально ли написать управляющий код на С, не боясь что компилятор его изгадит ?

 

Неа. Только на честном слове. Посему, я бы рекомендовал Вам этот пяток процедур (регенерация, запись байта, чтение полотенца, инициализация и может еще чего) написать на асме. А остальное, понятное дело, на C.

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


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

ОК, буду разводить плату пока, и по ходу дела освежу в памяти начальные знания по асму.

Спасибо, I'll be back как говорится...

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


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

Вопрос: параметр CAS значает количество тактов, необходимое для появления данных на выходе. А он рассчитан для максимальной частоты, на которой работает микросххема, или именно количество тактов является принципиальным независиимо от скорости? Поясню частота чипа памяти 133 МГц А я с ним общаюсь на частоте 8 МГЦ. Мне все равно придется выжидать 3 такта?

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


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

Вопрос: параметр CAS значает количество тактов, необходимое для появления данных на выходе. А он рассчитан для максимальной частоты, на которой работает микросххема, или именно количество тактов является принципиальным независиимо от скорости? Поясню частота чипа памяти 133 МГц А я с ним общаюсь на частоте 8 МГЦ. Мне все равно придется выжидать 3 такта?

 

В принципе CAS-latency настраивается при инициализации памяти.

Но диапазон настроек неширок. Для памяти samsung с которой я работал миниму было 2, на 133 рекомендовалось 3.

Точно не помню (надо смотреть в даташитс) но меньше 2х настроить не сможете.

Изменено пользователем mempfis_

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


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

или именно количество тактов является принципиальным независиимо от скорости?

 

Именно так. При инициализации настраивается, 2 или 3. Вам достаточно двух.

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


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

Наконец-то я вышел в отпуск! Теперь спокойно займусь освоением SDRAM. Рисую платку. Практически удалось развести все дорожки в двух слоях. СЛожности возникают пока в разведении питания - 2 VDD и 1 VSS пока так и не удалось прицепить. МОжно ли их оставить в воздухе? Они ведь внутри микросхемы все равно соединены... Тот же самый вопрос про Mega128 - до 21 ножки с VCC так и не смог добраться (другой VCC подключен). МОжно ли ее оставить в воздухе?

Прежде чем вникать в детали программирования хочется правильнро прицепить к микросхеме памяти CLK. Мне помнится говорили, что нужно запустить один из таймеров на частоту равную частоте проца и соединить его выход с CLK памяти. У меня ATMega128. Какой таймер и какой из его выходов правильнее всего использовать для CLK ?

Спасибо.

Изменено пользователем zheka

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


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

Рисую платку. Практически удалось развести все дорожки в двух слоях. СЛожности возникают пока в разведении питания - 2 VDD и 1 VSS пока так и не удалось прицепить. МОжно ли их оставить в воздухе?

 

Непонятно, какие могут быть проблемы с разводкой в 2х слоях. Вот пример (правда, тут LPC):

post-6610-1253600292_thumb.png

 

Какой таймер и какой из его выходов правильнее всего использовать для CLK ?

 

Любой удобный.

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


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

Непонятно, какие могут быть проблемы с разводкой в 2х слоях. Вот пример (правда, тут LPC)

 

У Вас LPC, А у меня Mega128 и плата диаметром 60 мм. И контроллер и SDRAM можно разместить только в центре, а стало быть на разных сторонах.

Нет, я не спорю, есть еще на плате место для маневров, но там еще много чего нужно развести, вот я и спрашиваю - можно ли пару ножек в воздухе оставить.

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


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

У Вас LPC, А у меня Mega128

 

Тем более, что Mega128 - там порты прямо разведены, не сравнить c LPC. Вы зря так все закрутили.

 

можно ли пару ножек в воздухе оставить.

 

Нельзя.

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


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

Зря не зря, а адресная шина и младший байт данных разведены прямо. НА старший байт наплевать, буду его корежить в компьютере при создании файла.

МОжет будут еще какие-нибудь замечания общего плана по разводке? На частоте 8МГц не возникнет проблемы "гонки сигналов" из-за разной длины дорожек?

 

OC3A - нигде мне больше не нужен. Это выход таймера, я правильно понял? Подойдет для CLK?

Изменено пользователем zheka

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


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

МОжет будут еще какие-нибудь замечания общего плана по разводке?

 

Да. Очень мало места для земляного полигона - сравните с моей разводкой. Там токи импульсные у SDRAM - ужоснах.

 

На частоте 8МГц не возникнет проблемы "гонки сигналов" из-за разной длины дорожек?

 

Нет конечно.

 

OC3A - нигде мне больше не нужен. Это выход таймера, я правильно понял? Подойдет для CLK?

 

Я думаю - вполне.

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


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

Да. Очень мало места для земляного полигона - сравните с моей разводкой. Там токи импульсные у SDRAM - ужоснах.

 

 

Ну я думаю, на столь низкой частоте проблем не будет? По возможности окружу всю эту площадку землей. Кстати, ножка только одна осталась в воздухе висеть, думаю и для нее сейчас место освободится.

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


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

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

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

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

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

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

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

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

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

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