Можно ли использовать мультигигабайтные модули DRAM с микроконтроллером?


20

У меня есть два оставшихся 2 ГБ ОЗУ, которые я удалил из своего MacBook Pro при обновлении. Мне просто интересно, можно ли их использовать, например, с Arduino. Я был бы слишком новичком, чтобы действительно пытаться сделать это сейчас так или иначе, но мне любопытно, если это вообще возможно, или если это просто слишком много памяти для микроконтроллера для решения.


1
Вы, вероятно, могли бы сделать что-то для этого, но схема интерфейса, вероятно, была бы самой сложной частью получившейся системы, и в результате было бы мало практической пользы.
JustJeff

Спасибо за отличные ответы! Очень интересно. Я постепенно учусь тому, как части соединяются. Благодарю.
Джонде

На платформах ARM9 и ARM11 размещаются контроллеры DDR2, но речь идет не о микроконтроллерах, а о микропроцессорах. ПЛИС также может взаимодействовать с ним. Вся задача довольно сложная. Arduino является только 8-битным, поэтому он просто не может выполнять массовую работу по адресации в руках.
Ганс

То, что сказал Ганс, - любой микро, достаточно мощный, чтобы использовать ОЗУ такого типа, будет иметь встроенный контроллер DDR. Я не очень внимательно изучил внутреннюю работу управления DDR, но тот факт, что для этого требуется специальное оборудование, говорит вам что-то ... старые модули, вещи из старых лазерных принтеров и т. д. может быть более полезным.
Джон У

Ответы:


24

Я собираюсь сказать нет: самая основная несовместимость заключается в том, что слишком много выводов на этих модулях даже могут быть физически связаны с Arduino. То же самое для подобных небольших микроконтроллеров. ARM Cortex M3 приближается, но лишь немногие из них на самом деле имеют внешнюю шину, необходимую для взаимодействия ОЗУ таким образом (я думаю).

Но я буду играть дальше и идти дальше. Предполагая, что вы можете каким-то образом подключить чип к Arduino, еще одной основной проблемой электрической совместимости является требуемое напряжение. Я думаю, что эти модули оперативной памяти используют что-то странное, например, 2,2 В - отсутствует на ванильной плате Arduino или на самом деле, в любом другом простом микроконтроллере для любителей.

Предполагая, что об этом позаботятся, тогда чип будет работать почти как любая другая внешняя память для Arduino. Это действительно делается постоянно - люди добавляют внешнюю EEPROM для хранения важных констант или SD / MMC-карт для хранения логов веб-сервера и тому подобного. Конечно, в этом контексте модули оперативной памяти не приносят Arduino никакой реальной пользы. Его главная особенность - скорость, и Arduino (и да, другие любительские микроконтроллеры) обычно не разгоняются до 25 МГц по тактовой частоте. Они слишком медленные, чтобы заботиться о скорости. И размер хранилища не является большой проблемой, так как интерфейс к SD / MMC карте значительно проще и обеспечивает больше места для игры.

Так что даже если бы это было возможно, это не было бы действительно целесообразно.


Должен признаться, я думал о том, чтобы связать какую-то старую DIP-DRAM с моим arduino, только пароли. (но это было бы выполнимо, даже на макете, с мусором эры 4164 года). иначе я полностью согласен.
JustJeff

1
Это качественный ответ, использующий пошаговые предположения и достигающий конечного условия. Хорошая работа!
LeanerRocky

2
Не забывайте о проблемах с обновлением. Другая причина, по которой «основанная на командах» вспышка, вероятно, лучше подходит, когда мышь контроллера пытается управлять машиной памяти.
Крис Страттон

Я положил комментарий выше, с вопросом, но я думаю, что я действительно должен поставить его здесь. Большое спасибо за ответ. Обмен стеками - это супер ресурс, и все из-за того, что люди тратят время на качественные ответы.
Джонде

8

Я бы сказал, что нет, не вставляя между ними fpga хорошего размера (число пинов), fpga взаимодействует с памятью, а микроконтроллер взаимодействует с fpga по схеме пейджинга.


Моя мысль тоже. И пусть FPGA будет прозрачным контроллером обновления. Но на самом деле ... не будет ли проще и дешевле эмулировать Arduino в программном обеспечении в небольшой системе ARM?
Крис Страттон

1
Какой бы веселой или образовательной она ни была, DDR - это не просто и не новичок. Найдите другой ноутбук или материнскую плату для размещения этой памяти и узнайте о DDR, используя, например, плату fpga eval, которая немного сбоку, или, возможно, плату beagle или что-то в этом роде. Первая проблема - это количество выводов, вторая - это сигналы, синхронизация и т. Д. Трудно заставить его работать, когда вы делаете свою собственную печатную плату. Это не похоже на интерфейс lcd или что-то в этом роде, которое вы можете использовать в микроконтроллере.
old_timer

7

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

Схема интерфейса, вероятно, будет самой сложной частью получившейся системы, и в результате будет мало практической пользы; Arduino не сможет выполнять код из ОЗУ, хранилище будет нестабильным и, вероятно, будет потреблять больше энергии, чем Arduino. Если вы хотите хранить данные, возможно, SPI EEPROM является гораздо лучшим решением.


1
Может ли AVR выполнять код из ОЗУ при любых обстоятельствах?
Ник Т

@ Ник Т - я не косвенно предполагал, что есть такие сценарии, где это возможно; Я прямо говорил, что если кто-то думает о взаимодействии с такого рода ОЗУ, было бы ошибочно думать, что он может использовать его таким образом.
JustJeff

1
Serial Flash или SRAM обычно намного быстрее, чем EEPROM. Если вам нужно много энергонезависимых данных (вариант использования удаленного кода), вероятно, Flash - лучший выбор. Для больших буферов используйте SRAM; это намного быстрее, чем EEPROM. Если у вас есть несколько битов конфигурации, которые нужно переключать независимо, это действительно единственная ниша, оставленная для EEPROM.
Кевин Вермеер

@reemrevnivek - хороший момент, я +1 твой комментарий. Если вы сохраняете несколько десятков параметров конфигурации, EEPROM. Если вы хотите сохранить кадры видео, SRAM.
JustJeff

7

Если вы когда-нибудь посмотрите таблицы данных микросхем DRAM, то для DDR2 минимальная тактовая частота будет примерно 50 МГц +. Поэтому нет, вы не сможете взаимодействовать с ними с помощью микроконтроллера (если у него нет встроенной аппаратной поддержки).


Не говоря уже о том, что вам нужно обновлять память довольно часто! Arduino будет занят, проводя все свое время за рулем линий управления памятью!
Toybuilder

6

Краткий ответ: нет.

Arduino не может управлять интерфейсом памяти DDR или DDR2. Вы могли бы создать контроллер DDR / DDR2 с интерфейсом SPI с FPGA, но это важное начинание.


6

Вам понадобится драйвер низкого напряжения (SSTL) и какой-нибудь способ управления примерно 100 каналами (каждый дифференциал, то есть около 200 контактов. Подумайте, BGA.)

Большая часть DRAM должна обновляться с частотой не менее 1 кГц и, возможно, большей, чтобы иметь низкий уровень ошибок по битам. Это тогда сформирует основную фоновую задачу и израсходует большую часть мощности Arduino, если возможно даже обновить память с такой скоростью.

Хотя вы можете взглянуть на некоторые микроконтроллеры, например, PIC24F / H / dsPIC33F, они поддерживают интерфейс параллельной главной шины, который обеспечивает доступ к некоторым типам параллельной SRAM. Есть даже поддержка с C, так как эта внешняя память может быть отображена на несколько переменных кода и даже блоков, которые объединяют как внутреннюю, так и внешнюю память. Внешняя память требует от вас написания некоторого кода PMB. Вы сможете использовать только до 1 МБ.


AFAIK DDR использует SSTL, а не LVDS
мазернизация

@mazurnification, да, вы правы (моя ошибка.) Тем не менее, кошмар, чтобы контролировать от Arduino.
Томас О

Тогда исправь свой ответ!
Кевин Вермеер

@reemrevnivek, хорошо. Исправленный. Однако я просто указывал, что это нецелесообразно. Независимо от того, какой формат сигнализации используется.
Томас О

2

Нет, не без пейджингового интерфейса между памятью и MCU. Некоторые из микроконтроллеров AVR действительно имеют встроенный интерфейс внешней памяти - например, Atmega2560 (см. Раздел 8 спецификации ATmega640 / 1280/1281/2560/2561). Но адресное пространство измеряется в килобайтах, а не в гигабайтах.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.