У меня есть два оставшихся модуля оперативной памяти по 2 ГБ, которые я удалил из своего MacBook Pro при обновлении. Мне просто интересно, можно ли их использовать, например, с Arduino. В любом случае, я был бы слишком новичком, чтобы попытаться сделать это сейчас, но мне любопытно, возможно ли это вообще, или это слишком много памяти для микроконтроллера.
Я собираюсь сказать нет: самая основная несовместимость заключается в том, что на этих модулях слишком много контактов, даже чтобы физически связать их с Arduino. То же самое для аналогичных небольших микроконтроллеров. ARM Cortex M3 приближается, но немногие из них на самом деле имеют внешнюю шину, необходимую для такого взаимодействия с ОЗУ (я думаю).
Но я подыграю и пойду дальше. Предполагая, что вы можете каким-то образом подключить чип к Arduino, еще одна основная проблема электрической совместимости — это требуемые напряжения. Я думаю, что эти модули оперативной памяти используют что-то странное, например, 2,2 В, чего нет ни на ванильной плате Arduino, ни на любом другом базовом микроконтроллере для любителей.
Предполагая, что об этом позаботились, чип будет работать как любая другая внешняя память для Arduino. Это действительно делается все время - люди добавляют внешнюю EEPROM для хранения важных констант или карты SD / MMC для хранения журналов веб-сервера и тому подобного. Конечно, в этом контексте модули оперативной памяти не представляют реальной пользы для Arduino. Его главной особенностью является скорость, и Arduino (и да, другие микроконтроллеры для любителей) обычно не превышают тактовую частоту 25 МГц. Они слишком медленные, чтобы заботиться о скорости. И размер хранилища не является большой проблемой, поскольку интерфейс с картой SD/MMC значительно проще и предоставляет столько же места для игры.
Так что даже если бы это было возможно, это было бы нецелесообразно.
Я бы сказал нет, не без вставления fpga хорошего размера (количество выводов) между ними, fpga общается с памятью, а микроконтроллер общается с fpga, используя схему подкачки.
Возможно, вы могли бы использовать систему защелок, чтобы позволить чему-то вроде Arduino генерировать 32-битный адрес, и вы, вероятно, могли бы разработать какую-то схему для генерации циклов обновления, но в этом не было бы почти никакого смысла, кроме как с технической точки зрения. упражнение.
Схема интерфейса, вероятно, будет самой сложной частью полученной системы, и результат будет иметь небольшую практическую ценность; Arduino не сможет выполнять код из ОЗУ, хранилище будет энергозависимым и, вероятно, будет потреблять больше энергии, чем Arduino. Если вы хотите хранить данные, SPI EEPROM, вероятно, будет лучшим решением.
Если вы когда-нибудь заглянете в таблицы данных чипов DRAM, то увидите, что минимальная тактовая частота для DDR2 составляет около 50 МГц+. Так что нет, вы не сможете взаимодействовать с ними с помощью микроконтроллера (если только он не имеет встроенной аппаратной поддержки).
Короткий ответ: нет.
Arduino не может управлять интерфейсом памяти DDR или DDR2. Вы могли бы сделать контроллер DDR/DDR2 с интерфейсом SPI с FPGA, но это важное мероприятие.
Вам понадобится драйвер низкого напряжения (SSTL) и какой-то способ управления примерно 100 каналами (каждый дифференциал, то есть около 200 контактов. Думаю, BGA).
Большая часть DRAM должна обновляться с частотой не менее 1 кГц и, возможно, больше, чтобы иметь низкий уровень битовых ошибок. Затем это сформирует основную фоновую задачу и израсходует большую часть вычислительной мощности Arduino, если вообще возможно обновлять память с такой скоростью.
На что вы можете обратить внимание, так это на то, что некоторые микроконтроллеры, например PIC24F/H/dsPIC33F, поддерживают интерфейс параллельной главной шины, что позволяет получить доступ к некоторым типам параллельной SRAM. Существует даже поддержка C, поскольку эта внешняя память может быть отображена на несколько переменных в коде и даже на блоки, которые объединяют внутреннюю и внешнюю память. Внешняя память требует, чтобы вы написали некоторый код PMB. Однако с этим вы сможете адресовать только до 1 МБ.
Нет, не без пейджингового интерфейса какого-то между памятью и MCU. Некоторые микроконтроллеры AVR действительно имеют встроенный интерфейс внешней памяти — например, Atmega2560 (см. раздел 8 технического описания ATmega640/1280/1281/2560/2561). Но адресное пространство измеряется в килобайтах, а не в гигабайтах.
ДжастДжефф
Джондео
Ганс
Джон Ю