Mikrodenetleyici ile çoklu gigabayt DRAM modüllerini kullanmak mümkün müdür?


20

Yükseltme yaparken MacBook Pro'mdan kaldırdığım iki adet 2GB RAM modülüm var. Sadece bunların bir Arduino ile kullanılabilir olup olmadığını merak ediyordum. Aslında bunu şimdi yapmaya çalışmak için çok acemi olurdum, ama bunun mümkün olup olmadığını ya da bir mikrodenetleyicinin ele alması için çok fazla bellek olup olmadığını merak ediyorum.


1
muhtemelen bunu yapmak için bir şeyler hazırlayabilirsiniz, ancak arayüz devresi muhtemelen ortaya çıkan sistemin en karmaşık kısmı olacaktır ve sonuçta çok az pratik değer olacaktır.
JustJeff

Harika cevaplar için teşekkürler! Çok ilginç. Yavaş yavaş parçaların birbirine nasıl oturduğunu öğreniyorum. Teşekkürler.
johndeo

ARM9 ve ARM11 platformları DDR2 denetleyicilerini barındırır, ancak daha sonra mikro denetleyicilerden değil, mikroişlemcilerden bahsediyorsunuz. FPGA da onunla arayüz oluşturabilir. Tüm görev oldukça karmaşık. Bir arduino sadece 8 bit, bu yüzden eldeki büyük adresleme işini yapamaz.
Hans

Hans'ın söyledikleri - bu tür RAM'leri kullanmak için yeterince güçlü herhangi bir mikro yerleşik bir DDR kontrol cihazına sahip olacak. DDR kontrolünün iç işleyişine yakından bakmadım, ancak bunu yapmak için özel bir donanıma ihtiyacınız olduğu gerçeği size anlatıyor bir şey ... eski modüller, eski lazer yazıcılardan gelen şeyler vb. daha kullanışlı olabilir.
John U

Yanıtlar:


24

Hayır diyeceğim: en temel uyumsuzluk, bu modüller üzerinde çok fazla pin olması ve onu bir Arduino'ya fiziksel olarak bağlayabilmesidir. Benzer küçük mikrodenetleyiciler için aynen. Bir ARM Cortex M3 yaklaşıyor, ancak bunlardan çok azı RAM'i böyle bir şekilde arayüzlemek için gerekli harici veri yoluna sahip (sanırım).

Ama daha ileriye gideceğim. Çipi Arduino'ya bağlayabileceğinizi varsayarsak, bir başka temel elektriksel uyumluluk sorunu gerekli voltajlardır. Bu RAM modüllerinin 2.2V gibi garip bir şey kullandığını düşünüyorum - bir vanilya Arduino kartında veya gerçekten başka bir hobi mikrodenetleyicide mevcut değil.

Bu durumda halledildiğini varsayarsak, çip Arduino'ya herhangi bir harici bellek gibi çalışır. Bu gerçekten her zaman yapılır - insanlar, web sunucusu günlüklerinin ve benzerlerinin depolanması için önemli sabitleri veya SD / MMC kartlarını saklamak için harici EEPROM ekler. Tabii ki, bu bağlamda RAM modülleri Arduino'ya gerçek bir fayda sağlamaz. Ana özelliği hızdır ve Arduino (ve evet, diğer hobi mikrodenetleyicileri) genellikle saat hızında 25MHz'i kırmaz. Hızı önemsemeyecek kadar yavaşlar. SD / MMC kart ile arayüz oluşturmak oldukça kolay olduğundan ve oynayabileceğiniz kadar alan sağladığından depolama boyutu büyük bir sorun değildir.

Bu yüzden mümkün olsa bile, gerçekten tavsiye edilmez.


İtiraf etmeliyim ki bazı eski DIP DRAM'ımı arduinoma bağlamayı düşündüm, sadece fer larfs. (ancak 4164 dönemi önemsiz olan bir breadboard üzerinde bile yapılabilir). başka türlü, tamamen katılıyorum.
JustJeff

1
Bu adım adım varsayımları kullanarak ve son koşula ulaşarak kaliteli bir cevaptır. İyi iş!
LeanerRocky

2
Yenileme sorunlarını göz ardı etmeyin. "Komut tabanlı" flaşın başka bir nedeni, bir denetleyicinin faresi hafızalı bir kamyonu sürmeye çalışırken muhtemelen daha iyi bir eşleşmedir.
Chris Stratton

Soruyla birlikte bir yorum yazdım, ama sanırım buraya gerçekten koymalıyım. Cevabınız için çok teşekkür ederim. Yığın değişimi süper bir kaynaktır ve hepsi kaliteli cevaplar vermek için zaman alan insanlar nedeniyle.
johndeo

8

Hayır diyebilirim, aralarında iyi büyüklükte (pin sayısı) bir fpga yapıştırmadan, fpga belleğe ve mikrodenetleyici bir çağrı şeması kullanarak fpga ile konuşur.


Benim de düşüncem. FPGA'nın şeffaf bir yenileme denetleyicisi olmasını sağlayın. Ama gerçekten ... küçük bir ARM sisteminde yazılımda bir arduino taklit etmek daha basit ve daha ucuz olmaz mıydı ?
Chris Stratton

1
Ne kadar eğlenceli ya da eğitici olsa da DDR basit değildir ve yeni başlayanlar için değildir. Bu belleği takmak için başka bir dizüstü bilgisayar veya anakart bulun ve biraz yanda bir fpga değerlendirme panosu veya belki bir beagleboard veya benzeri bir şey söyleyerek DDR hakkında bilgi edinin. İlk sorun pim sayımı, ikincisi sinyaller, zamanlama, vb. Kendi pcboardunuzu yaptığınızda çalışmasını sağlamak zordur. Bir lcd arayüzü ya da bir mikrodenetleyiciye breadboard yapabileceğiniz gibi bir şey değildir.
old_timer

7

Arduino gibi bir şeyin 32 bit adres üretmesine izin vermek için mandallama sistemini kullanabilirsiniz ve muhtemelen yenileme döngülerini oluşturmak için bazı şemalar tasarlayabilirsiniz, ancak teknik olarak hariç, bunun neredeyse hiçbir anlamı yoktur. egzersiz yapmak.

Arayüz devresi muhtemelen ortaya çıkan sistemin en karmaşık kısmı olacaktır ve sonuçta çok az pratik değer olacaktır; arduino, RAM'den kod yürütemez, depolama uçucu olur ve muhtemelen arduino'dan daha fazla güç tüketir. Veri depolamak istiyorsanız, bir SPI EEPROM muhtemelen çok daha iyi bir çözümdür.


1
Bir AVR her koşulda RAM'den kod yürütebilir mi?
Nick T

@Nick T - Dolaylı olarak bu tür senaryoların olabileceğini öne sürmüyordum; Ben edildi doğrudan durumda birileri RAM bu tür arabirim düşünüyordum söyleyerek, bunların bu şekilde kullanabilirsin düşünmek yanlış olacaktır.
JustJeff

1
Seri Flash veya SRAM genellikle EEPROM'dan daha hızlıdır. Çok sayıda kalıcı veriye ihtiyacınız varsa (uzaktan kod kullanım durumu), Flash muhtemelen daha iyi bir seçimdir. Büyük tamponlar için SRAM kullanın; EEPROM'dan çok daha hızlı. Bağımsız olarak değiştirilmesi gereken birkaç yapılandırma bitiniz varsa, bu gerçekten EEPROM'lar için kalan tek niş.
Kevin Vermeer

@reemrevnivek - iyi bir nokta, yorumunuzu + 1'ledim. Etrafta birkaç düzine yapılandırma ayarı tutuyorsanız, EEPROM. Video karelerini saklamak istiyorsanız, SRAM.
JustJeff

7

DRAM çip veri sayfalarına hiç bakarsanız, DDR2 için 50MHz + gibi minimum bir saat hızı vardır. Yani hayır, onlarla bir mikrodenetleyici ile arayüz kuramayacaksınız (dahili donanım desteği yoksa).


Hafızayı oldukça sık yenilemeniz gerektiğinden bahsetmiyorum bile! Arduino tüm zamanını bellek kontrol hatlarını kullanarak geçirmekle meşgul olacaktı!
Oyuncak Yapımcısı

6

Kısa cevap hayır.

Arduino, DDR veya DDR2 bellek arayüzünü kullanamaz. FPGA ile SPI arabirimine sahip bir DDR / DDR2 denetleyicisi yapabilirsiniz, ancak bu önemli bir girişimdir.


6

Düşük voltajlı bir sürücüye (SSTL) ve yaklaşık 100 kanalı (her bir diferansiyel, yani yaklaşık 200 pim.

Çoğu DRAM, düşük bit hata oranına sahip olmak için en az 1kHz ve muhtemelen daha fazla yenilenmelidir. Bu daha sonra büyük bir arka plan görevi oluşturacak ve Arduino'nun prcoessing gücünün çoğunu kullanacak, eğer hafızayı böyle bir hızda yenilemek mümkünse.

Yine de, PIC24F / H / dsPIC33F gibi bazı mikro denetleyicilerle bakabileceğiniz şey, bazı paralel SRAM türlerine erişilmesine izin veren paralel bir ana veri yolu arabirimini destekler. C ile bile destek var, çünkü bu harici bellek birkaç kod değişkeninde ve hatta hem dahili hem de harici bellekleri birleştiren bloklarda eşlenebilir. Harici bellek bazı PMB kodu yazmanızı gerektirir. Bununla birlikte sadece 1 MB'a kadar adresleme yapabilirsiniz.


AFAIK DDR, LVDS yerine
SSTL

@mazurnification, Evet, haklısın (benim hatam.) Yine de, bir Arduino'dan kontrol etmek için bir kabus.
Thomas O

O zaman cevabınızı düzeltin!
Kevin Vermeer

@reemrevnivek, tamam. Düzeltildi. Ancak, bunun pratik olmadığını belirtiyordum. Hangi sinyal formatı kullanılırsa kullanılsın.
Thomas O

2

Hayır, bellek ve MCU arasında bir tür çağrı arabirimi olmadan değil. AVR MCU'ların bazılarında aslında dahili bir harici bellek arabirimi bulunur - örneğin Atmega2560 (ATmega640 / 1280/1281/2560/2561 veri sayfasının 8. bölümüne bakın). Ancak adres alanı Gigabayt değil Kilobayt olarak ölçülür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.