マイクロコントローラでマルチギガバイトのDRAMモジュールを使用できますか?


20

アップグレード時にMacBook Proから取り外した2 GBのRAMモジュールが2つあります。これらは、たとえばArduinoで使用できるのかと思っていました。とにかくこれを実際に試してみるには初心者が多すぎますが、それが可能なのか、それともマイクロコントローラーが対処するにはメモリが多すぎるのか興味があります。


1
おそらくそれを行うために何かをリグできますが、インターフェイス回路はおそらく結果のシステムの最も複雑な部分であり、結果にはほとんど実用的な価値はありません。
ジャストジェフ

すばらしい回答をありがとう!とても興味深い。ピースがどのように組み合わされるかについて徐々に学習しています。ありがとう。
ジョンデオ

ARM9およびARM11プラットフォームはDDR2コントローラーをホストしますが、マイクロコントローラーではなくマイクロプロセッサーについて話しています。FPGAも同様にインターフェイスできます。全体のタスクは非常に複雑です。arduinoは8ビットのみであるため、大規模なアドレス指定作業を行うことができません。
ハンス

Hansが言ったこと-その種のRAMを使用するのに十分強力なマイクロにはDDRコントローラーが組み込まれています。DDRコントロールの内部動作を詳しく見ていないが、それを行うために専用ハードウェアが必要であるという事実何か...古いモジュール、古いレーザープリンターなどからのものがより使いやすいかもしれません。
ジョンU

回答:


24

私はノーと言います:最も基本的な非互換性は、それらのモジュールのピンが多すぎて物理的にArduinoに接続できないことです。同様の小さなマイクロコントローラにも同じ。ARM Cortex M3は近づいてきていますが、実際にはそのような方法でRAMをインターフェースするのに必要な外部バスを持っているものはほとんどありません(私は思う)。

しかし、私はさらに進んでいきます。チップをArduinoに接続できると仮定すると、別の基本的な電気的互換性の問題は、必要な電圧です。これらのRAMモジュールは2.2Vのような奇妙なものを使用すると思います-バニラArduinoボードや実際には他の基本的な愛好家のマイクロコントローラには存在しません。

それが処理されたと仮定すると、チップはArduinoの他の外部メモリとほとんど同じように機能します。これは実際に常に行われます。外部EEPROMを追加して、Webサーバーログなどの保存用の重要な定数またはSD / MMCカードを保存します。もちろん、このコンテキスト内では、RAMモジュールはArduinoにとって実質的な利点はありません。その主な機能は速度であり、Arduino(およびはい、他の愛好家のマイクロコントローラー)は通常、クロック速度で25MHzを壊しません。速度が気にならないほど遅すぎます。また、SD / MMCカードとのインターフェースは明らかに簡単であり、使用できるスペースが大きいため、ストレージサイズは大きな問題ではありません。

したがって、たとえ可能であっても、実際にはお勧めできません。


私はいくつかの古いDIP DRAMを自分のarduinoに接続することを考えてきたことを告白しなければなりません。(しかし、それはブレッドボード上でも実行可能です、w / 4164時代のジャンク)。その他、私は完全に同意します。
ジャストジェフ

1
それは質の高い答えであり、段階的な仮定を使用して終了条件に到達します。良くやった!
LeanerRocky

2
更新の問題を見落とさないでください。「コマンドベース」フラッシュのもう1つの理由は、おそらくコントローラーのマウスがメモリーのマックトラックを運転しようとしている場合の方が適しています。
クリスストラットン

上記の質問にコメントを入れましたが、本当にここに置くべきだと思います。答えてくれてありがとう。スタック交換はスーパーリソースであり、それはすべて、人々が質の高い回答を提供するために時間をかけているためです。
ジョンデオ

8

良いサイズ(ピンカウント)のfpgaを間に挟まない限り、fpgaはメモリと通信し、マイクロコントローラーはページングスキームを使用してfpgaと通信します。


私の考えも。また、FPGAを透過的なリフレッシュコントローラーにします。しかし、本当に... 小さなARMシステムのソフトウェアarduinoエミュレートする方が簡単で安価ではないでしょうか?
クリスストラットン

1
DDRは簡単ではなく、初心者向けでもないかもしれません。このメモリを入れる別のラップトップまたはマザーボードを見つけて、少し側面にあるfpga evalボードまたはビーグルボードなどを使用してDDRについて学習します。最初の問題はピン数、2つ目は信号、タイミングなどです。独自のPCBを作成する際に動作させるのは困難です。それは、液晶インターフェースや、マイクロコントローラにブレッドボードできるようなものではありません。
old_timer

7

Arduinoのようなものが32ビットのアドレスを生成できるようにラッチのシステムを使用することも考えられます。おそらく、リフレッシュサイクルを生成するためのスキームを考案することもできますが、技術的な場合を除いて、ほとんど意味がありません。運動。

インターフェイス回路はおそらく、結果として得られるシステムの最も複雑な部分であり、結果にはほとんど実用的な価値はありません。arduinoはRAMからコードを実行できず、ストレージは揮発性であり、おそらくarduinoよりも多くの電力を消費します。データを保存する場合は、おそらくSPI EEPROMがはるかに優れたソリューションです。


1
AVRはどんな状況でもRAMからコードを実行できますか?
ニックT

@Nick T-そのようなシナリオがある可能性があることを間接的に示唆していませんでした。私がして、直接誰かがRAMのこの種のインターフェースを考えていた場合には、彼らはこのようにそれを使用できると思いますし誤解されるだろうと述べました。
ジャストジェフ

1
通常、シリアルフラッシュまたはSRAMはEEPROMよりもかなり高速です。大量の不揮発性データが必要な場合(リモートコードのユースケース)、おそらくFlashの方が適しています。大きなバッファには、SRAMを使用します。EEPROMよりもはるかに高速です。個別に切り替える必要のあるいくつかの構成ビットがある場合、それは本当にEEPROMに残っている唯一のニッチです。
ケビンフェルメール

@reemrevnivek-良い点、私はあなたのコメントを+1します。数十個の構成設定を保持している場合、EEPROM。ビデオのフレームを保持する場合は、SRAM。
ジャストジェフ

7

DRAMチップのデータシートを見ると、DDR2の場合は50MHz以上の最小クロック速度があります。そのため、(ハードウェアサポートが組み込まれていない限り)マイクロコントローラーとインターフェイスすることはできません。


むしろ頻繁にメモリを更新する必要があることは言うまでもありません!Arduinoは、メモリ制御ラインの駆動にすべての時間を費やすことに忙しいでしょう!
トイビルダー

6

短い答えはノーです。

ArduinoはDDRまたはDDR2メモリインターフェイスを駆動できません。FPGAとのSPIインターフェイスを備えたDDR / DDR2コントローラーを作成することもできますが、それは重要な取り組みです。


6

低電圧ドライバ(SSTL)と、約100チャネル(各差動、約200ピン。BGAを考えてください。)を制御する何らかの方法が必要です。

ほとんどのDRAMは、少なくとも1kHzでリフレッシュする必要があります。おそらく、ビットエラーレートを低くするにはさらに高くする必要があります。これは主要なバックグラウンドタスクを形成し、Arduinoの処理能力のほとんどを使用します(そのような速度でメモリを更新することさえ可能であれば)。

ただし、PIC24F / H / dsPIC33Fなどの一部のマイクロコントローラーでは、パラレルマスターバスインターフェイスをサポートしているため、一部のタイプのパラレルSRAMにアクセスできます。この外部メモリは、複数のコード変数や、内部メモリと外部メモリの両方を組み合わせたブロックにマッピングできるため、Cでのサポートもあります。外部メモリには、PMBコードを記述する必要があります。ただし、これで対処できるのは約1 MBまでです。


AFAIK DDRはLVDSではなくSSTLを使用しています
マズリフィケーション

@mazurnification、ええ、あなたは正しいです(私のエラーです)。それでも、Arduinoからコントロールするのは悪夢です。
トーマスO

その後、答えを修正してください!
ケビンフェルメール

@reemrevnivek、わかりました。修正しました。しかし、私は単にそれが非実用的であることを指摘していました。使用されるシグナリング形式に関係なく。
トーマスO

2

いいえ、メモリとMCUの間に何らかの種類のページングインターフェイスがないわけではありません。一部のAVR MCUには、実際には外部メモリインターフェイスが組み込まれています-たとえば、Atmega2560(ATmega640 / 1280/1281/2560/2561データシートのセクション8を参照)。ただし、アドレス空間はギガバイトではなくキロバイトで測定されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.