Структура SDRAM для Cortex-M7

Я изучаю возможность разработки пользовательской платы на основе Microchip / ATMEL SAM S70 или STM32F7 / STM32H7. SAMS S70 кажется самым дешевым вариантом и предлагает примерно столько же, сколько и конкуренты ST.

Сейчас я пытаюсь выяснить, сколько SDRAM я могу подключить к этим микроконтроллерам.

  1. В техническом описании S70 не указано, с каким типом SDRAM (DDR2, DDR3) и т. д. он может работать. Как узнать, какие микросхемы памяти совместимы?

  2. Просматривая digitec, я заметил, что почти все (?) чипы памяти 1G имеют 8 банков, что больше, чем может обработать SAM S70 (максимум 4 банка). И все чипы, которые я нашел, которые предлагают 1G на 4 банка, только DDR1. Количество данных на один банк как-то ограничено?

  3. Также я не уверен, сколько данных контроллер памяти на SAMS S70 может адресовать на банк (адреса строк/столбцов) и в целом. Если я правильно прочитал таблицу данных, самый большой адрес - это 13 бит адреса строки, 11 бит адреса столбца + 1 бит смещения байта + 2 бита адреса банка, то есть всего 27 бит адреса ... это будет 1/8 от 1G, то есть 128М?

  4. Какую роль в этом играет размер страницы?

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

Если у них есть эталонный дизайн, он покажет, какую память использовать.

Ответы (2)

Тип памяти, который вам нужен, — SDRAM . Это не то же самое, что DDR SDRAM. Я не думаю, что еще видел устройство Cortex-M, поддерживающее память DDR. Обычно вы выбираете семейство Cortex-A, если вам нужны такие возможности.

Вы можете легко найти чипы SDRAM на сайте digikey или любом другом дистрибьюторском сайте.

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

Оба чипа поддерживают 256 МБ оперативной памяти. Если вы посмотрите на ссылку digikey выше, самый большой объем в одном чипе составляет 512 Мбит (64 МБ). Здесь в игру вступает ширина шины данных. Вы можете видеть, что чипы на 512 Мб бывают трех конфигураций:

  • 16M x 32 бит
  • 32M x 16 бит
  • 64M x 8 бит

Один из способов увеличить объем памяти — использовать два устройства по 512 МБ в конфигурации 32M x 16 бит и соединить их, как показано в этом примечании к приложению Atmel , чтобы получить в общей сложности 128 МБ ОЗУ:

введите описание изображения здесь

Полностью с вами согласен насчет поддержки SDRAM, потратил много времени. Я не мог найти решения, кроме FPGA.
Спасибо за ответ. Если я прав, то невозможно увеличить объем памяти SAM S70 выше 256 МБ из-за ограниченной 16-битной шины данных, я прав?
На самом деле, я не совсем понимаю, как я могу присоединить даже 256 МБ. Для 8K строк, 2K столбцов, 4 банков и 16-битного пути данных я получаю всего 128 МБ?
@Xaser В примечании к приложению, которое я связал, утверждается, что MCU может обрабатывать четыре банка 32-битной SDRAM. S70 должен уметь делать то же самое. Либо так, либо спецификация является ошибкой копирования-вставки.
@ Армандас, да, но у микроконтроллера всего 16 физических строк данных, то есть 16-битная ширина? и несоответствие, по-видимому, заключается в самой таблице данных (в моих расчетах указано 128 МБ, но в таблице данных указано 256 МБ), странные вещи.
@Xaser Хотя это может не помочь вам с академической точки зрения, хорошая документация и поддержка дизайна так же важны (если не важнее), чем характеристики чипа. Если у вас возникли проблемы с пониманием того, как проектировать деталь Atmel, вы можете посмотреть на других производителей. В качестве альтернативы вы можете попробовать связаться со службой поддержки Atmel и посмотреть, смогут ли они прояснить проблему.

В даташите на первой странице написано:

16-битный контроллер статической памяти (SMC) с поддержкой SRAM, PSRAM, ЖК-модуля, флэш-памяти NOR и NAND со скремблированием на лету

̶ 16-битный контроллер SDRAM (SDRAMC) с интерфейсом до 256 МБ и скремблированием «на лету»

Напомним: SAM S70 поддерживает только 16-битную (внешнюю) шину. Я предпочитаю микроконтроллеры STM, которые также поддерживают 32-битные. Это важно для производительности: если вы позволяете выполнять выборку кода или используете 32-битные (int, float) или даже двойные слова (64-битные) - вы получаете только половину потенциальной пропускной способности. Смотря для чего и как часто вы используете внешнюю память (временные данные или основные данные и код там?). Проверьте также, предоставляет ли этот MCU кэши, например, это Cortex-M4/M7 с кэшами? Если это так, настройте MPU должным образом, чтобы использовать его. Я предпочитаю микроконтроллеры с кэшем, а также ITCM и DTCM, например, STM32F7 для высокопроизводительных встраиваемых систем. Внешнюю память я использую чаще просто как RAM-диск или для временных буферов, а не как основную память.

Кстати: вы также можете проверить, может ли быть достаточно использования SDIO (SD-карты). У вас может быть ГБ места там. Даже часто поддерживается выборка кода, просто она еще медленнее (например, 4-битная шина). Но гораздо проще подключить и создать печатную плату со слотом для SD-карты (или впаянным чипом eMMC).

Или: как насчет микросхем памяти SPI, например FRAM?

BTW2: настоящую память DDR (часто можно найти только на процессорах приложений Cortex-A, таких как LP-DDR2 или DDR3) очень сложно спроектировать в виде печатной платы: им требуется согласование длины дорожки на всех линиях, согласование импеданса, а также терминация на конце. конец. Непростая конструкция, как у Static-(S)RAM или Static-(S)DRAM.