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

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

Можно пояснить смысл высказывания? Лично мне непонятно.

Два банка памяти,один SDRAM, второй SRAM. На втором вместо памяти, висят те самые выходные регистры. Обслуживает сию пересылку память-память DMA.

Конечно, можно найти подходящий камень, но он будет очень избыточен во всех отношениях

Ну и что?

(и в собственной цене, и, наверняка, BGA со всеми вытекающими), соответственно в партиях 50-100 штук выходных девайсов решение будет золотым.

Порядок цен я назвал, ну пусть будет жуткая розница и из того, что под руку попало.. Ну тогода 399руб

Все это по любому в этой наколенной конструкции утонет в цене светодиодов, которых с одной стороы слишком много, а с другой стороны слишком мало для покупки контейнера в Китае.

Так если и на ARM'е оптимально будет ногами шевелить, то зачем он?

Решить эту "задачу" за сутки и занятся другм.

Не проще ли использовать более знакомый кирпич?

Для того, кто, как Вы предполагаете, будет сложно освоить АРМ, осваивать тонкости неведомой выпаянной SDRAM, выпиливать контроллер оной софтом на AVR при этом попутно разрешая проблемы с записью в эту память и какие-то еще задачи - это нормально? А что такое собственно в этом контексте освоение ARM? Узнать,так или иначе, что такое SDRM, сообветственно настроть контроллер оной и узнать по какому адресу писать чего-нибудь для ногодрыгания? (даже DMA можно вынести за скобки) Ну это, конечно, при условии, что c 'C' более-менее.

Нет, я бы понял, когда за плечами есть практический опыт, светит дивная серийнось и очень важно! есть четкое представление о том, что делаешь (имею 99,9% увереность, что заказчик в данном случае сам имеет только самое общее представление о желаемой моргалке и может чего-нибудь с легкостью необычайной добавить) то оно конечно можно исхитряться.

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


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

Rst7

Объяснит мне еще одну вещь, которую я никак не могу понять. Я собираюсь читать данные, заполняющие практически весь объем микросхемы последовательно от нулевого адреса до конечного. Ну допустим, буду читать их командой, которая после чтения регенерирует их. Но ведь время, через котороя недо регенерировать, если я правильно понял - 12 мкс, а микросхему я буду читать с толком и расстановкой в течение 30 миллисекунд, а то и больше. За это время вся информация умрет. А включать режим самообновления, насколько я понял целесообразно, если к микросхеме долго нет обращения. Как лучше организовать обновление данных?

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

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


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

Два банка памяти,один SDRAM, второй SRAM. На втором вместо памяти, висят те самые выходные регистры. Обслуживает сию пересылку память-память DMA.

 

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

 

Решить эту "задачу" за сутки и занятся другм.

 

Да по любому она за сутки не решится. И дело не в "тонкостях неведомой выпаянной SDRAM" (во-первых, по банальной причине - они все одинаковые, во-вторых - даташит ищется за 5 минут, в-третьих я, считайте, на готовый проект под нужды топикстартера дал ссылку).

 

Нет, я бы понял, когда за плечами есть практический опыт, ... и ... есть четкое представление о том, что делаешь

 

Понял, мне можно, другим низзя :biggrin:

 

Ладно, уговорили, больше я тут ничего советовать не буду. Пусть человек плывет по мейнстриму...

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


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

Ладно, уговорили, больше я тут ничего советовать не буду.

Надеюсь это относится к подбору камней, а не к консультациям по работе SDRAM.

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


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

Но ведь время, через котороя недо регенерировать, если я правильно понял - 12 мкс, а микросхему я буду читать с толком и расстановкой в течение 30 миллисекунд, а то и больше. За это время вся информация умрет.

Не умрет, регенерация происходит одновременно по всем столбцам (или строкам, забыл уже). То есть, перебрав младшие разряды, даже при неизменных старших, память регенерируется.

 

Что значит - не раскрыта? Информация в драйвера попадает по последовательным интерфейсам. SPI, грубо говоря. Тут их сразу 8 эмулируется - данные из SDRAM на каждом клоке обновляются. Предложите способ без особой обвязки решить это на подходящем ARM'е, используя встроенную в камень периферию. Я вижу 2 способа - либо полноценный DMA (см. выше), либо 8 штук SPI-интерфейсов с неким аналогом DMA (например, PDC в AT91).

...

Ну картинка, я так понимаю, меняется очень медленно.

...

Так если и на ARM'е оптимально будет ногами шевелить, то зачем он? Не проще ли использовать более знакомый кирпич?

1. Есть решение, масштабируемое по быстродействию в СОТНИ раз - контроллер дисплея в LPC2478, абсолютно не требующий ресурсов (ну разве что полосы пропускания шины).

8 SPI - это требование автора. Мне кажется (точно не считал), что 2 SPI в ARM будут работать быстрее, чем 8 каналов чтения SDRAM.

 

2. Учитывая, что автор плавает в клоках и длины посылки не назвал, у меня есть сомнения, что он успеет обновить экран с помощью AVR своими 4МБ-ми памяти, которые медленно, или немедленно, но меняются.

В цикл чтения SDRAM входит проверка конечного адреса, после которого нужно сформировать строб параллельного занесения, и прочие мелкие подзадачи тоже время отнимают.

ARM по крайней мере это будет делать быстрее даже в режиме ногодрыгалки.

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


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

Не умрет, регенерация происходит одновременно по всем столбцам (или строкам, забыл уже). То есть, перебрав младшие разряды, даже при неизменных старших, память регенерируется.

 

И эти люди запрещают нам ковыряться в носу - читай, работать с SDRAM не готовым контроллером :biggrin:

 

Перебирать надо старшие разряды - они же row (ряды/строки).

 

Но ведь время, через котороя недо регенерировать, если я правильно понял - 12 мкс, а микросхему я буду читать с толком и расстановкой в течение 30 миллисекунд, а то и больше.

 

Обычное время, за которое надо регенерировать все данные - это 64мс. Если за это время Вы успеваете перебрать все нужные вам ряды, то с информацией ничего не станется.

 

Только Вы бы обратили внимание на одну неприятность. SDRAM - он трехвольтовый. Так что если использовать AVR, то максимальная тактовая частота будет 8МГц. Т.к. чтение будет происходить за 2 такта процессора, то 120 байт будет передано за 30мкс.

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


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

Обычное время, за которое надо регенерировать все данные - это 64мс.

 

То есть это период, за который нужно хотя бы один раз регенерировать все данные, так?

Можно смело читать 120 байт в течение 24 мкс, забывать про память на период от 127 мкс до 5 мс и вновь читать следующие 120 байт. При этом можно безболезненно не думать о регенерации и включать ее лишь тогда, когда простой свыше 64 мс. Я правильно понял?

 

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

 

Спасибо.

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


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

То есть это период, за который нужно хотя бы один раз регенерировать все данные, так?

 

К каждому используемому ряду (row) Вы должны обратиться не реже, чем раз в 64мс.

 

Можно смело читать 120 байт в течение 24 мкс,

 

Не получится читать 120 байт за 24мкс. Получится за 30. См. выше про питание 3.3 вольта.

 

Еще вопрос - я так и не понял тайминг - это характеристика конкретной микросхемы или ее настройка?

 

И характеристика, и настройка. Возьмите же наконец даташит, например, на микроновскую MT48LC8M8A2 - там все написано, как зависит настройка CAS Latency от частоты.

 

Например, LPC24XX.

 

Завтра гляну даташит какой-нибудь. Щас лень.

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


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

Не получится читать 120 байт за 24мкс. Получится за 30. См. выше про питание 3.3 вольта.

 

ну пусть за 30, у меня запас большой.

Обычное время, за которое надо регенерировать все данные - это 64мс. Если за это время Вы успеваете перебрать все нужные вам ряды, то с информацией ничего не станется.

 

А если не успеваю? Допустим придется включить режим саморегенерации. Насколько я знаю при этом работает внутреннее тактирование. С какой скоростью идет регенерация? допустим у нас 8048 строк - сколько для этого потребуется времени? Нигде не нашел - саморегенерация идет по всем банкам одновременно или по очереди?

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

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


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

А если не успеваю?

 

Тогда надо просто вручную выполнить циклы регенерации (не self-refresh, а auto-refresh). Принудительно.

 

Цитата с микроновского даташита:

Alternatively, 4,096 AUTO REFRESH commands can be issued in a burst at the minimum cycle rate (tRFC), once every 64ms (commercial and industrial) or 16ms (automotive).

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


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

то есть 4096 тактов - и информация обновлена. на 8 МГЦ это 256 мкс. Правильно?

А если запустить self-refresh - сколько времени это занимает? Ну нигдешеньки я не нашел этой информации и этот вопрос здесь упорно игнорируется.

 

Саморегенерация происходит одновременно во всех банках?

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

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


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

то есть 4096 тактов - и информация обновлена. на 8 МГЦ это 256 мкс. Правильно?

 

Нет. Надо еще учитывать tRFC.

 

А если запустить self-refresh - сколько времени это занимает? Ну нигдешеньки я не нашел этой информации и этот вопрос здесь упорно игнорируется.

 

Обычно он устроен так, чтобы был некоторый запас. Дело в том, что внутренний счетчик используется один и тот же для auto-refresh и self-refresh. Подумайте сами, какую частоту self-refresh нужно организовать, чтобы при произвольном переходе в обычный режим с принудительным исполнением команды auto-refresh раз в 15мкс и обратно в среднем все ряды прощелкивались в течении 64мс. Логично, что время на один ряд для self-refresh должно быть немного меньше, чем 15мкс.

 

Саморегенерация происходит одновременно во всех банках?

 

Да.

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


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

И эти люди запрещают нам ковыряться в носу - читай, работать с SDRAM не готовым контроллером :biggrin:

Да, давненько было :)

Ровно 20 лет назад. Дисплей с загружаемым знакогенератором на 8080.

Поэтому и отговариваю. "В то время, когда космические корабли ..."

 

Да, помогите автору рассчитать времянку. Меня он не слушает, хотя я уже намекал на то, что в цикл перебора памяти должен быть включен анализ адреса, то есть скорость считывания из памяти получится существенно меньше.

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


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

Блоху подковать можно. Это научный факт.

Но вот целесообразность этого действия лучше всего объясняют психиатры.

 

Чисто по деньгам. Поинтересуйтесь, почем разъем для втыкания вашей памяти в плату.

Насколько я припоминаю он маленько дороже какого-нибудь арма средней руки вместе с памятью а придачу...

 

---

Кстати, если вы только паттерны гонять собираетесь - возьмите SD. 1 мегабайт в секунду получить можно.

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

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


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

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

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

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

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

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

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

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

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

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