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

Вопросы по динамической памяти

cortex m8

ddr3

1) должна ли частота clock микросхемы ddr3 быть кратна частоте микроконтроллера?

если в приведенной схеме частота ddr3 400МГц, то частота микроконтроллера 800МГц?

 

2) операции чтения и записи из ddr памяти могут чередоваться как угодно или должна быть какая-то система?(например определенное колличество последовательных операций записи, а потом чтения)

 

3) не понимаю принцип двойной скорости передачи(два раза за период clock) т.е. по переднему фронту выдается 16бит данных по адресу условно addr, а по заднему фронту addr+1 ? не правильно?

 

4) регенерация заряда в ячейках памяти происходит целиком внутри микросхемы т.е. не нужно подавать каких-то внешних сигналов для этого? и процесс регенерации как-то нужно учитывать при подаче команд микросхеме?

 

5) обьясните простым языком зачем нужны выводы DQS1,DQSN1,DQS0,DQSN0,DQM1,DQM0 , что по ним передается, для чего они и как они должны быть синхронизированы с сигналами на других выводах.

 

6) предположим абсолютно все проводники между микроконтроллером и ddr не создают содержки, правильно ли это? т.е. при трассировке платы не нужно что б какие-то сигналы запаздывали? нужно что б задержка по всем проводникам была абсолютно одинакова?

 

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


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

 

Для начала почитайте:

 

http://kit-e.ru/articles/circuit/2010_9_135.php

 

http://compress.ru/article.aspx?id=18761

 

https://electronix.ru/forum/index.php?act=a...st&id=93850

 

Плюс доки по вашему камню, который Кортекс А8

И почему бы не воспользоваться доками на референсный дизайн? Они всегда есть у таких камней.

 

ЗЫ. Тема уже далеко не для начинающих..

 

должна ли частота clock микросхемы ddr3 быть кратна частоте микроконтроллера?

если в приведенной схеме частота ddr3 400МГц, то частота микроконтроллера 800МГц?

 

Возможно но нежелательно.

 

операции чтения и записи из ddr памяти могут чередоваться как угодно или должна быть какая-то система?(например определенное колличество последовательных операций записи, а потом чтения)

 

Как хотите, так и будет, но лучше последовательно, тогда контроллер активизирует Burst mode и скорость в разы выше.

 

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

 

Можете сами регенерировать, но лучше Self refresh.

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

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


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

Можете сами регенерировать, но лучше Self refresh.

 

Здравствуйте.

Также имеются ряд вопросов.

1. Как узнать, что микросхема находится в состоянии Self refresh?

2. Пока идет refresh ячейки для записи получаются не доступными. А если у меня имеются

данные для записи, что мне с ними делать ? А если на момент завершения refresh

мои данные окажутся просроченными ?

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


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

1. Как узнать, что микросхема находится в состоянии Self refresh?

 

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

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


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

Также имеются ряд вопросов.

1. Как узнать, что микросхема находится в состоянии Self refresh?

Зачем вам это знать? Это внутренние дела микросхемы дин. памяти.

2. Пока идет refresh ячейки для записи получаются не доступными. А если у меня имеются

данные для записи, что мне с ними делать ? А если на момент завершения refresh

мои данные окажутся просроченными ?

Нет, refresh - это периодическое чтение (да, именно чтение, а не запись, что кажется нелогичным) каждой страницы, а по сути просто периодическая активация одного транзистора (gate) на каждой странице, подпитывающего емкостные ячейки памяти. Этот процесс никак не мешает процессам чтения и записи в память.

А надеяться, что дин. память будет равномерно и четко писать данные не стоит, т. к. при переходе в другую страницу перед операциями чтения-записи выполняется её активация (precharge), что занимает какое-то время. Поэтому при работе с ней нужно обеспечить буферизацию (кэширование), чтобы не потерять данные.

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


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

А надеяться, что дин. память будет равномерно и четко писать данные не стоит,

 

Если память задействуется под видеобуфер, то это уже и есть регенерация.

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


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

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

С DDR я не работал, но для МК с SDRAM автоматически это не делается ни в одном контроллере SDRAM, с которыми я работал.

В них во всех это надо сделать вручную (программно), подав спец. последовательность команд через контроллер SDRAM (или ногодрыгом).

"Self refresh" полезен тем, что содержимое SDRAM сохраняется неопределённо долго при отсутствии активности со стороны контроллера SDRAM (например во сне МК).

 

Если память задействуется под видеобуфер, то это уже и есть регенерация.

Если только видеобуфер занимает весь объём памяти. В противном случае (что чаще всего), контроллер SDRAM (и думаю что и DDR) периодически выполняет циклы регенерации, вкрапляя их в штатный обмен по таймеру регенерации.

 

Зачем вам это знать? Это внутренние дела микросхемы дин. памяти.

Это не "внутренние дела". "Self refresh" можно активировать только принудительно, подачей спец. последовательности команд. И находясь в этом режиме, память не может осуществлять операции чтения/записи по интерфейсу. Она при этом вообще не реагирует ни на какие сигналы кроме сигнала CKE.

 

Этот процесс никак не мешает процессам чтения и записи в память.

Вообще-то немного мешает. Контроллер SDRAM должен периодически регенерировать те строки, которые не были регенерированы штатными операциями чтения/записи за период регенерации (либо вообще все строки). И это занимает некоторое время, приостанавливая выполнение штатных операций чтения/записи по интерфейсу.

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

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


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

С DDR я не работал, но для МК с SDRAM автоматически это не делается ни в одном контроллере SDRAM, с которыми я работал.

...............................

 

Спасибо большое !

Очень хорошо объяснили !

 

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


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

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

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

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

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

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

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

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

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

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