Apakah mungkin menggunakan modul DRAM multi gigabyte dengan mikrokontroler?

20

Saya memiliki dua modul RAM 2GB yang tersisa yang saya hapus dari MacBook Pro saya ketika melakukan peningkatan. Saya hanya ingin tahu apakah ini dapat digunakan, misalnya, dengan Arduino. Saya akan terlalu pemula untuk benar-benar mencoba melakukan ini sekarang, tapi saya ingin tahu apakah itu mungkin, atau jika itu terlalu banyak memori untuk ditangani oleh mikrokontroler.

Johndeo
sumber
1
Anda mungkin bisa rig sesuatu untuk melakukannya, tetapi sirkuit antarmuka mungkin akan menjadi bagian paling kompleks dari sistem yang dihasilkan, dan akan ada sedikit nilai praktis dalam hasilnya.
JustJeff
Terima kasih atas jawaban Anda! Sangat menarik. Saya secara bertahap belajar tentang bagaimana potongan-potongan itu cocok bersama. Terima kasih.
johndeo
Platform ARM9 dan ARM11 menjadi tuan rumah pengendali DDR2, tetapi Anda tidak berbicara tentang mikrokontroler tetapi tentang mikroprosesor. FPGA dapat berinteraksi dengannya. Seluruh tugasnya cukup kompleks. Arduino hanya 8-bit, jadi itu tidak bisa melakukan pekerjaan pengalamatan besar di tangan.
Hans
Apa yang dikatakan Hans - setiap mikro yang cukup kuat untuk menggunakan RAM semacam itu akan memiliki pengontrol DDR bawaan. Saya belum melihat dengan seksama cara kerja kontrol DDR, tetapi kenyataan bahwa Anda memerlukan perangkat keras khusus untuk melakukannya memberitahu Anda sesuatu ... modul yang lebih lama, barang-barang dari printer laser tua dll. mungkin lebih bermanfaat.
John U

Jawaban:

24

Saya akan mengatakan tidak: ketidakcocokan paling mendasar adalah bahwa ada terlalu banyak pin pada modul-modul itu bahkan dapat menghubungkannya secara fisik ke Arduino. Ditto untuk mikrokontroler kecil yang serupa. ARM Cortex M3 semakin dekat, tetapi beberapa dari mereka sebenarnya memiliki bus eksternal yang diperlukan untuk antarmuka RAM sedemikian rupa (saya pikir).

Tapi saya akan bermain lebih jauh. Dengan asumsi Anda bisa menghubungkan chip ke Arduino, entah bagaimana masalah kompatibilitas listrik dasar lainnya adalah voltase yang diperlukan. Saya pikir modul-modul RAM ini menggunakan sesuatu yang aneh seperti 2.2V - tidak ada di papan vanilla Arduino atau benar-benar, mikrokontroler penghobi dasar lainnya.

Dengan asumsi bahwa diurus maka chip akan cukup banyak bekerja seperti memori eksternal lainnya ke Arduino. Ini benar-benar dilakukan setiap saat - orang menambahkan EEPROM eksternal untuk menyimpan konstanta penting atau kartu SD / MMC untuk penyimpanan log server web dan semacamnya. Tentu saja, dalam konteks ini modul-modul RAM tidak memberikan manfaat nyata bagi Arduino. Fitur utamanya adalah kecepatan dan Arduino (dan ya, mikrokontroler hobi lain) biasanya tidak merusak 25MHz dalam kecepatan clock. Mereka terlalu lambat untuk peduli dengan kecepatan. Dan ukuran penyimpanan bukanlah masalah besar karena berinteraksi dengan kartu SD / MMC jelas lebih mudah dan memberikan banyak ruang untuk bermain.

Jadi, bahkan jika itu mungkin, itu tidak akan benar-benar disarankan.

AngryEE
sumber
harus mengakui saya sudah berpikir tentang menghubungkan beberapa DRAM DIP lama ke Arduino saya, hanya fer larfs. (Tapi, itu bisa dilakukan, bahkan di papan tempat memotong roti, w / 4164 era sampah). selain itu, saya sepenuhnya setuju.
JustJeff
1
Itu jawaban yang berkualitas, menggunakan asumsi langkah demi langkah dan sampai pada kondisi akhir. Pekerjaan yang baik!
LeanerRocky
2
Jangan mengabaikan masalah penyegaran. Alasan lain "flash berbasis perintah" mungkin lebih cocok ketika mouse controller mencoba mengemudikan truk memori.
Chris Stratton
Saya memberi komentar di atas, dengan pertanyaan, tapi saya rasa saya harus benar-benar meletakkannya di sini. Terima kasih banyak atas jawabannya. Pertukaran tumpukan adalah sumber daya super, dan itu semua karena orang meluangkan waktu untuk memberikan jawaban yang berkualitas.
johndeo
8

Saya akan mengatakan tidak, bukan tanpa menempelkan fpga (pin count) berukuran bagus di antaranya, fpga berbicara ke memori dan pembicaraan mikrokontroler ke fpga menggunakan skema paging.

old_timer
sumber
Pikiranku juga. Dan memiliki FPGA menjadi pengendali penyegaran transparan. Tapi sungguh ... bukankah lebih mudah dan lebih murah untuk meniru Arduino dalam perangkat lunak pada sistem ARM kecil?
Chris Stratton
1
Namun menyenangkan atau mendidik itu mungkin DDR tidak sederhana, dan bukan hal pemula. Cari laptop atau motherboard lain untuk memasukkan memori ini dan belajar tentang DDR menggunakan katakanlah papan FPGA yang memiliki sedikit di samping atau mungkin papan pengumuman atau sesuatu seperti itu. Masalah pertama adalah jumlah pin, kedua adalah sinyal, waktu, dll. Sulit untuk membuatnya bekerja ketika Anda membuat pcboard Anda sendiri. Ini tidak seperti antarmuka lcd atau sesuatu seperti itu yang bisa Anda letakkan di atas papan mikrokontroler.
old_timer
7

Anda dapat menggunakan sistem kait untuk memungkinkan sesuatu seperti arduino menghasilkan 32 bit alamat, dan Anda mungkin bisa merancang beberapa skema untuk menghasilkan siklus penyegaran, tetapi hampir tidak ada gunanya melakukannya, kecuali sebagai teknis olahraga.

Sirkuit antarmuka mungkin merupakan bagian paling kompleks dari sistem yang dihasilkan, dan akan ada sedikit nilai praktis dalam hasilnya; Arduino tidak akan dapat mengeksekusi kode keluar dari RAM, penyimpanan akan berubah-ubah, dan mungkin akan mengkonsumsi lebih banyak daya daripada Arduino juga. Jika Anda ingin menyimpan data, EEPROM SPI mungkin merupakan solusi yang jauh lebih baik.

JustJeff
sumber
1
Bisakah AVR mengeksekusi kode dari RAM dalam keadaan apa pun?
Nick T
@Nick T - Saya tidak secara tidak langsung menyarankan bahwa ada skenario seperti itu di mana ia bisa; Saya langsung mengatakan bahwa jika seseorang berpikir untuk berinteraksi dengan RAM semacam ini, akan keliru jika berpikir mereka bisa menggunakannya.
JustJeff
1
Serial Flash atau SRAM biasanya jauh lebih cepat daripada EEPROM. Jika Anda membutuhkan banyak data yang tidak mudah menguap (kasus penggunaan kode jarak jauh), Flash mungkin merupakan pilihan yang lebih baik. Untuk buffer besar, gunakan SRAM; ini jauh lebih cepat daripada EEPROM. Jika Anda memiliki beberapa bit konfigurasi yang perlu diaktifkan secara independen, itu adalah satu-satunya ceruk yang tersisa untuk EEPROMs.
Kevin Vermeer
@reemrevnivek - poin bagus, saya memberi +1 pada komentar Anda. Jika Anda menyimpan beberapa lusin pengaturan konfigurasi, EEPROM. Jika Anda ingin menyimpan frame video, SRAM.
JustJeff
7

Jika Anda pernah melihat lembar data chip DRAM, ada kecepatan clock minimum sekitar 50MHz + untuk DDR2. Jadi tidak, Anda tidak akan dapat berinteraksi dengan mereka dengan mikrokontroler (kecuali ia memiliki dukungan perangkat keras bawaan).

allanw
sumber
Belum lagi Anda perlu menyegarkan ingatan lebih sering juga! Arduino akan sibuk menghabiskan waktu mengendarai jalur kontrol memori!
Toybuilder
6

Jawaban singkatnya adalah tidak.

Arduino tidak dapat menggerakkan antarmuka memori DDR atau DDR2. Anda bisa membuat pengontrol DDR / DDR2 dengan antarmuka SPI dengan FPGA, tapi itu adalah usaha yang signifikan.

akohlsmith
sumber
6

Anda memerlukan driver tegangan rendah (SSTL), dan beberapa cara untuk mengontrol sekitar 100 saluran (masing-masing diferensial, jadi sekitar 200 pin. Pikirkan BGA.)

Sebagian besar DRAM harus di-refresh setidaknya 1kHz dan mungkin lebih memiliki tingkat kesalahan bit yang rendah. Ini kemudian akan membentuk tugas latar belakang utama dan menggunakan sebagian besar kekuatan prcoessing dari Arduino, jika itu bahkan mungkin untuk menyegarkan memori pada tingkat seperti itu.

Apa yang dapat Anda lihat adalah dengan beberapa mikrokontroler, misalnya PIC24F / H / dsPIC33F, mereka mendukung antarmuka master bus paralel, yang memungkinkan beberapa jenis SRAM paralel dapat diakses. Bahkan ada dukungan dengan C, karena memori eksternal ini dapat dipetakan ke beberapa variabel kode dan bahkan blok yang menggabungkan memori internal dan eksternal. Memori eksternal mengharuskan Anda untuk menulis beberapa kode PMB. Anda hanya dapat mengatasi hingga sekitar 1 MB dengan ini.

Thomas O
sumber
AFAIK DDR menggunakan SSTL bukan LVDS
mazurnifikasi
@mazurnification, Ya, Anda benar (kesalahan saya.) Namun, mimpi buruk untuk dikendalikan dari Arduino.
Thomas O
Kemudian perbaiki jawaban Anda!
Kevin Vermeer
@reemrevnivek, oke. Dikoreksi. Namun, saya hanya menunjukkan bahwa itu tidak praktis. Tidak peduli format pensinyalan mana yang digunakan.
Thomas O
2

Tidak, tidak tanpa antarmuka paging dari beberapa jenis antara memori dan MCU. Beberapa MCU AVR sebenarnya memiliki antarmuka memori eksternal bawaan - Atmega2560, misalnya (lihat bagian 8 lembar data ATmega640 / 1280/1281/2560/2561). Tetapi ruang alamat diukur dalam Kilobyte, bukan Gigabytes.

JRobert
sumber