dimka76 62 25 августа, 2009 Опубликовано 25 августа, 2009 · Жалоба Вот еще пара ссылок, может пригодится ;) http://www.ixbt.com/mainboard/sdram.html http://ru.wikipedia.org/wiki/SDRAM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 25 августа, 2009 Опубликовано 25 августа, 2009 · Жалоба Алгоритм мне видится такой - последовательно активировать ряды. При необходимости прочесть что-то запоминаем место, последнего регенерированого ряда, возвращаемся назад к чтению, читаем, закрываем, возвращаемся к запомненной позиции и продолжаем регенерировать. Благо читать мне надо по 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, раз в вопросах раскуривания даташита наблюдается плавание ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 25 августа, 2009 Опубликовано 25 августа, 2009 · Жалоба Что не ясно? Пока все ясно. Следующий этап - спаять макетку. Хочу лишь спросить, реально ли написать управляющий код на С, не боясь что компилятор его изгадит ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 25 августа, 2009 Опубликовано 25 августа, 2009 · Жалоба Хочу лишь спросить, реально ли написать управляющий код на С, не боясь что компилятор его изгадит ? Неа. Только на честном слове. Посему, я бы рекомендовал Вам этот пяток процедур (регенерация, запись байта, чтение полотенца, инициализация и может еще чего) написать на асме. А остальное, понятное дело, на C. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 25 августа, 2009 Опубликовано 25 августа, 2009 · Жалоба ОК, буду разводить плату пока, и по ходу дела освежу в памяти начальные знания по асму. Спасибо, I'll be back как говорится... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 1 сентября, 2009 Опубликовано 1 сентября, 2009 · Жалоба Вопрос: параметр CAS значает количество тактов, необходимое для появления данных на выходе. А он рассчитан для максимальной частоты, на которой работает микросххема, или именно количество тактов является принципиальным независиимо от скорости? Поясню частота чипа памяти 133 МГц А я с ним общаюсь на частоте 8 МГЦ. Мне все равно придется выжидать 3 такта? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mempfis_ 0 1 сентября, 2009 Опубликовано 1 сентября, 2009 (изменено) · Жалоба Вопрос: параметр CAS значает количество тактов, необходимое для появления данных на выходе. А он рассчитан для максимальной частоты, на которой работает микросххема, или именно количество тактов является принципиальным независиимо от скорости? Поясню частота чипа памяти 133 МГц А я с ним общаюсь на частоте 8 МГЦ. Мне все равно придется выжидать 3 такта? В принципе CAS-latency настраивается при инициализации памяти. Но диапазон настроек неширок. Для памяти samsung с которой я работал миниму было 2, на 133 рекомендовалось 3. Точно не помню (надо смотреть в даташитс) но меньше 2х настроить не сможете. Изменено 1 сентября, 2009 пользователем mempfis_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 1 сентября, 2009 Опубликовано 1 сентября, 2009 · Жалоба или именно количество тактов является принципиальным независиимо от скорости? Именно так. При инициализации настраивается, 2 или 3. Вам достаточно двух. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 22 сентября, 2009 Опубликовано 22 сентября, 2009 (изменено) · Жалоба Наконец-то я вышел в отпуск! Теперь спокойно займусь освоением SDRAM. Рисую платку. Практически удалось развести все дорожки в двух слоях. СЛожности возникают пока в разведении питания - 2 VDD и 1 VSS пока так и не удалось прицепить. МОжно ли их оставить в воздухе? Они ведь внутри микросхемы все равно соединены... Тот же самый вопрос про Mega128 - до 21 ножки с VCC так и не смог добраться (другой VCC подключен). МОжно ли ее оставить в воздухе? Прежде чем вникать в детали программирования хочется правильнро прицепить к микросхеме памяти CLK. Мне помнится говорили, что нужно запустить один из таймеров на частоту равную частоте проца и соединить его выход с CLK памяти. У меня ATMega128. Какой таймер и какой из его выходов правильнее всего использовать для CLK ? Спасибо. Изменено 22 сентября, 2009 пользователем zheka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 22 сентября, 2009 Опубликовано 22 сентября, 2009 · Жалоба Рисую платку. Практически удалось развести все дорожки в двух слоях. СЛожности возникают пока в разведении питания - 2 VDD и 1 VSS пока так и не удалось прицепить. МОжно ли их оставить в воздухе? Непонятно, какие могут быть проблемы с разводкой в 2х слоях. Вот пример (правда, тут LPC): Какой таймер и какой из его выходов правильнее всего использовать для CLK ? Любой удобный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 22 сентября, 2009 Опубликовано 22 сентября, 2009 · Жалоба Непонятно, какие могут быть проблемы с разводкой в 2х слоях. Вот пример (правда, тут LPC) У Вас LPC, А у меня Mega128 и плата диаметром 60 мм. И контроллер и SDRAM можно разместить только в центре, а стало быть на разных сторонах. Нет, я не спорю, есть еще на плате место для маневров, но там еще много чего нужно развести, вот я и спрашиваю - можно ли пару ножек в воздухе оставить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 22 сентября, 2009 Опубликовано 22 сентября, 2009 · Жалоба У Вас LPC, А у меня Mega128 Тем более, что Mega128 - там порты прямо разведены, не сравнить c LPC. Вы зря так все закрутили. можно ли пару ножек в воздухе оставить. Нельзя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 22 сентября, 2009 Опубликовано 22 сентября, 2009 (изменено) · Жалоба Зря не зря, а адресная шина и младший байт данных разведены прямо. НА старший байт наплевать, буду его корежить в компьютере при создании файла. МОжет будут еще какие-нибудь замечания общего плана по разводке? На частоте 8МГц не возникнет проблемы "гонки сигналов" из-за разной длины дорожек? OC3A - нигде мне больше не нужен. Это выход таймера, я правильно понял? Подойдет для CLK? Изменено 22 сентября, 2009 пользователем zheka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 22 сентября, 2009 Опубликовано 22 сентября, 2009 · Жалоба МОжет будут еще какие-нибудь замечания общего плана по разводке? Да. Очень мало места для земляного полигона - сравните с моей разводкой. Там токи импульсные у SDRAM - ужоснах. На частоте 8МГц не возникнет проблемы "гонки сигналов" из-за разной длины дорожек? Нет конечно. OC3A - нигде мне больше не нужен. Это выход таймера, я правильно понял? Подойдет для CLK? Я думаю - вполне. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 22 сентября, 2009 Опубликовано 22 сентября, 2009 · Жалоба Да. Очень мало места для земляного полигона - сравните с моей разводкой. Там токи импульсные у SDRAM - ужоснах. Ну я думаю, на столь низкой частоте проблем не будет? По возможности окружу всю эту площадку землей. Кстати, ножка только одна осталась в воздухе висеть, думаю и для нее сейчас место освободится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться