Чи можливо використовувати багато гігабайтні DRAM-модулі з мікроконтролером?


20

У мене є два модулі оперативної пам’яті, що залишилися 2 Гб, які я видалив із MacBook Pro під час оновлення. Мені було просто цікаво, чи можна їх використовувати, наприклад, з Arduino. Я був би занадто великим початківцем, щоб насправді намагатися зробити це зараз у будь-якому випадку, але мені цікаво, чи це взагалі можливо, або якщо це просто занадто багато пам'яті для мікроконтролера.


1
Ви, мабуть, могли б щось зробити, щоб зробити це, але схема інтерфейсу, ймовірно, була б найскладнішою частиною отриманої системи, і в результаті було б мало практичного значення.
JustJeff

Дякую за чудові відповіді! Дуже цікаво. Я поступово дізнаюся про те, як шматки підходять один до одного. Спасибі.
johndeo

На платформах ARM9 та ARM11 розміщуються контролери DDR2, але тоді ви говорите не про мікроконтролери, а про мікропроцесори. FPGA може також взаємодіяти з ним. Вся задача досить складна. Ардуїно є лише 8-бітним, тому він просто не може виконати масштабну роботу з адресацією.
Ганс

Що сказав Ганс - будь-який мікро досить потужний для використання такого типу оперативної пам’яті матиме вбудований контролер DDR. Я не придивився уважно до внутрішніх функцій управління DDR, але те, що для цього вам потрібно спеціально обладнане, говорить вам щось ... старі модулі, речі зі старих лазерних принтерів тощо можуть бути кориснішими.
Джон У

Відповіді:


24

Я скажу «ні»: найпростіша несумісність полягає в тому, що на цих модулях є занадто багато штифтів, щоб вони навіть могли фізично взаємодіяти з Arduino. Діто для подібних невеликих мікроконтролерів. ARM Cortex M3 все ближче, але мало хто з них насправді має зовнішню шину, необхідну для інтерфейсу оперативної пам’яті таким чином (я думаю).

Але я буду грати по ходу далі. Якщо припустити, що ви могли інтерфейсом мікросхема Arduino якось ще однією основною проблемою електричної сумісності є необхідні напруги. Я думаю, що ці модулі оперативної пам’яті використовують щось дивне на зразок 2.2V - немає на ванільній Arduino платі чи справді, будь-який інший базовий мікроконтролер.

Якщо припустити, що тоді піклувався чіп, він би спрацював, як і будь-яка інша зовнішня пам'ять для Arduino. Це дійсно робиться весь час - люди додають зовнішній EEPROM для зберігання важливих констант або SD / MMC-карт для зберігання журналів веб-серверів тощо. Звичайно, в цьому контексті модулі оперативної пам’яті не представляють ніякої користі для Arduino. Його головна особливість - швидкість, і Arduino (і так, інші хобі-мікроконтролери), як правило, не розбиває тактову частоту 25 МГц. Вони занадто повільні, щоб піклуватися про швидкість. І розмір пам’яті не є великою проблемою, оскільки взаємозв’язок із SD / MMC-карткою значно простіший і забезпечує стільки місця для гри.

Тож навіть якби це було можливо, це було б не доцільно.


доведеться зізнатися, я думав про те, щоб поєднати стару DIP DRAM з моєю ардуїно, просто фельдфальбом. (але це було б можливо, навіть на макетній дошці, з мотлоху ери ери). otherise, я повністю згоден.
JustJeff

1
Це якісна відповідь, використовуючи покрокові припущення та доходячи до кінця умови. Хороша робота!
LeanerRocky

2
Не забувайте про проблеми оновлення. Ще одна причина спалаху на основі команд - це, мабуть, краща відповідність, коли миша контролера намагається керувати мак-вантажівкою пам'яті.
Кріс Страттон

Я ставлю коментар вище, із запитанням, але, мабуть, я мусив би його справді поставити тут. Дуже дякую за відповідь. Обмін стеками - це супер ресурс, і все це через те, що люди потребують часу, щоб надати якісні відповіді.
johndeo

8

Я б сказав, що ні, не не вставляючи між собою хороший розмір (pin count) fpga, fpga розмовляє з пам'яттю, а мікроконтролер розмовляє з fpga за допомогою схеми підкачки.


Моя думка також. І FPGA має прозорий контролер оновлення. Але насправді ... хіба не було б простіше та дешевше наслідувати ардуїно в програмному забезпеченні на невеликій системі ARM?
Кріс Страттон

1
Як би весело чи навчально це не було, DDR не є простим, і не для початківців. Знайдіть інший ноутбук або материнську плату, щоб помістити цю пам’ять і дізнатися про DDR, використовуючи скажімо плату fpga eval, яка має трохи збоку або, можливо, бігборд чи щось подібне. Перша проблема - кількість підключень, друга - сигнали, терміни тощо. Важко змусити його працювати, коли ви виготовляєте власну дошку. Інтерфейс LCD або подібний інтерфейс не схожий на те, що ви можете перенести мікроконтролер.
old_timer

7

Можна, можливо, використовувати систему засувок, щоб дозволити щось на зразок ардуїно генерувати 32 біти адреси, і ви, напевно, могли розробити якусь схему для генерації циклів оновлення, але робити це майже не має сенсу, крім технічного вправа.

Інтерфейсна схема, мабуть, була б найскладнішою частиною результатної системи, і в результаті мало би практичного значення; arduino не зможе виконати код з оперативної пам’яті, сховище буде мінливим і, ймовірно, буде споживати більше енергії, ніж arduino також. Якщо ви хочете зберігати дані, SPI EEPROM - це, мабуть, набагато краще рішення.


1
Чи може AVR виконувати код з ОЗУ за будь-яких обставин?
Нік Т

@ Nick T - я не опосередковано припускав, що існують такі сценарії, де це могло б; Я прямо говорив, що у випадку, якщо хтось думає про взаємодію з таким видом оперативної пам’яті, було б помилково думати, що вони можуть цим скористатися.
JustJeff

1
Послідовний Flash або SRAM, як правило, набагато швидше, ніж EEPROM. Якщо вам потрібно багато енергонезалежних даних (випадок використання віддаленого коду), Flash, мабуть, кращий вибір. Для великих буферів використовуйте SRAM; це набагато швидше, ніж EEPROM. Якщо у вас є кілька бітів конфігурації, які потрібно перемикати самостійно, це дійсно єдина ніша, що залишилася для EEPROM.
Кевін Вермер

@reemrevnivek - хороший момент, я поставив +1 вашому коментарю. Якщо ви зберігаєте кілька десятків налаштувань конфігурації навколо, EEPROM. Якщо ви хочете зберегти кадри відео, SRAM.
JustJeff

7

Якщо ви коли-небудь дивитесь на таблиці даних мікросхем DRAM, існує мінімальна тактова частота приблизно на зразок 50 МГц + для DDR2. Тому ні, ви не зможете взаємодіяти з ними за допомогою мікроконтролера (якщо тільки у нього немає вбудованої апаратної підтримки).


Не кажучи вже про те, що вам потрібно також часто оновлювати пам'ять! 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. Деякі MCU-модулі AVR насправді мають вбудований інтерфейс зовнішньої пам’яті - Atmega2560, наприклад (див. Розділ 8 аркуша даних ATmega640 / 1280/1281/2560/2561). Але адресний простір вимірюється в кілобайтах, а не в гігабайтах.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.