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

Можно ли в LPC3250 использовать два типа RAM одновременно

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

 

Есть контроллер LPC3250, хотелось бы узнать: я сейчас использую DDR RAM, помимо этого нужно использовать внешнюю шину для защелки в регистр, как мне кажется лучше всего для этого подходит интерфейс SDRAM (пишу по определенному адресу что то, это что то выставляется на шине данных, к которой подключен регистр защелка, а защелкиваться будет по сигналам OE и WE), правильно ли я рассуждаю, или есть подводные камни?

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


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

Только это все же SRAM. А так - правильно. Главное, чтобы были свободные чип-селекты.

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


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

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

 

Есть контроллер LPC3250, хотелось бы узнать: я сейчас использую DDR RAM, помимо этого нужно использовать внешнюю шину для защелки в регистр, как мне кажется лучше всего для этого подходит интерфейс SDRAM (пишу по определенному адресу что то, это что то выставляется на шине данных, к которой подключен регистр защелка, а защелкиваться будет по сигналам OE и WE), правильно ли я рассуждаю, или есть подводные камни?

 

Я бы не рисковал. Там вроде есть проблемы при переключении работы с одного контроллера памяти на другой.

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

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


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

Я бы не рисковал. Там вроде есть проблемы при переключении работы с одного контроллера памяти на другой.

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

 

 

А если использовать контроллер DDR, только DDR настоящая у меня висит на EMC_DYCS0 (т.е. CS идет с адреса 0X8000 0000), а регистр я подключу к EMC_DYCS1, потом записывая данные в адрес 0xA000 0000, я по идее должен эти данные получить на шине данных, с которой мой регистр будет защелкивать эти данные, единственно, что настораживает, это то, что я не нашел диаграмм работы с памятью DDR, там же как то пишутся данные не так как в SRAM?

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


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

Как раз изучаю этот вопрос.

Хотим используя SDRAM и SRAM обойти проблему, описанную в Errata sheet LPC3250 rev.9: "3.6 LCD.1: Low throughput when LCD controller accesses DDR/SDRAM".

Явных противопоказаний нет, адресные пространства SDRAM и SRAM разные, доступ настраивается независимо...

Читаю бамажки.

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


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

Сделал подключение через буферы 74LVC573 на шину данных, при этом младшие 8 бит повесил. как восьмиразрядную шину данных, а на биты 8-11 повесил управление и когда записываю short по адресу 0xE0000000 (т .к. чип селект взял CS0 от static RAM), то все нормально работает. Но решил пойти дальше, т.к. мне нужна шестнадцати разрядная шина данных, то я данных повесил на D0-D15 (через буферы 74LVC573), а адресную шину A0-A3 тоже через эти буферы завел на управляющие ножки (так же взяв чип селект от CS0 static RAM). Сконфигурировал контроллер в регистре EMCStaticConfig0, как 16 битную шину. Проблема в том, что когда я пишу по адресу 0xE0000001, что то , то A0 передергивается, а когда пишу по адресу 0xE0000002, то A1 не дергается. Еще не совсем понятна эта фраза из USER мануала When using a system that implements 16-bit static memory,address signals A[23:1] are right-justified by one bit and outputon the physical address pins A[22:0]. Address signal A0 is not necessary because all transactions occur on half-word boundaries. Address pin A23 is not used because the address space available for each CSn is 16 MB. This is done automatically by hardware in the EMC controller when the value of MW is set to 0x1. Адреса сдвигаются автоматически, т.е. если я запишу в адрес 0xE0000002, то установится A0 или A1? и вообще что я делаю не так, как добиться работоспособности этой схемы, а то я уже мозг весь сломал?

 

 

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


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

При использовании 16-битной шины нулевой разряд адреса рояли не играет, память адресуется кусочками по два байта. При записи в память используемые в цикле байты шины данных задаются сигналами EMC_BLSn. Запись 16-битного слова по адресу 0xE0000001 вызовет два цикла записи во внешнюю память по адресам [22.0] 0x0 и 0x1, в первом цикле будет активен сигнал EMC_BLS1, во втором, соответственно EMC_BLS0. Ну, это моё понимание. Про запись 16-битного слова на невыровненный адрес - так, для примера, ибо не знаю, позволяет ли ARM9 невыровненное обращение.

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


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

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

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

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

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

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

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

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

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

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