微控制器是否可以使用数千兆字节的DRAM模块?


20

升级时,我有两个剩余的2GB RAM模块从MacBook Pro中删除。我只是想知道它们是否可以与Arduino一起使用。我真是个初学者太多了,无论如何现在都不能尝试这样做,但是我很好奇这是否有可能,或者这是否是微控制器无法解决的太多内存。


1
您可能会做一些事情来做,但是接口电路可能是结果系统中最复杂的部分,结果几乎没有实用价值。
JustJeff 2011年

感谢您的精彩回答!很有意思。我正在逐步了解各个部分如何组合在一起。谢谢。
johndeo 2011年

ARM9和ARM11平台托管DDR2控制器,但是您不是在谈论微控制器,而是在谈论微处理器。FPGA也可以与其接口。整个任务非常复杂。arduino只有8位,因此它无法完成大量的寻址工作。
汉斯,

汉斯所说的话-任何足够强大的微处理机都可以内置DDR控制器。东西……旧模块,旧激光打印机中的东西等等可能会更有用。
约翰·U

Answers:


24

我要说的不是:最基本的不兼容性是那些模块上的引脚太多,甚至无法将其物理连接到Arduino。同样适用于类似的小型微控制器。ARM Cortex M3越来越近了,但是实际上很少有外部总线以这种方式连接RAM所必需的(我认为)。

但我会继续前进。假设您可以通过某种方式将芯片连接到Arduino,则另一个基本的电气兼容性问题是所需的电压。我认为这些RAM模块使用的是2.2V之类的奇数-在普通的Arduino板上甚至其他基本的业余爱好者微控制器中都没有。

假设一切都已完成,那么芯片将像Arduino的任何其他外部存储器一样工作。实际上,这一直都是做到的-人们添加外部EEPROM来存储重要的常数,或者添加SD / MMC卡来存储Web服务器日志等。当然,在这种情况下,RAM模块不会给Arduino带来真正的好处。它的主要特征是速度,而Arduino(也是,其他业余爱好者微控制器)通常不会以25MHz的速度打破时钟。他们太慢了,根本不在乎速度。而且,存储容量并不是大问题,因为与SD / MMC卡的接口非常容易,并且提供了足够的播放空间。

因此,即使有可能也不是明智的选择。


必须承认我已经考虑过将一些旧的DIP DRAM连接到我的arduino,只是幼虫。(但是,即使在一块面包板,甚至是4164年代的垃圾上,这也是可行的)。其他,我完全同意。
JustJeff 2011年

1
使用逐步的假设并得出最终条件,这就是一个很好的答案。不错的工作!
LeanerRocky 2011年

2
不要忽视刷新问题。当控制器的鼠标试图驱动存储器的存储卡时,“基于命令”闪存的另一个原因可能是更好的匹配。
克里斯·斯特拉顿

我在上面的问题中加了一条评论,但我想我应该把它真正放在这里。非常感谢您的回答。堆栈交换是一种超级资源,这全都是因为人们花时间来提供高质量的答案。
johndeo 2011年

8

我会说不,并非在两者之间都没有插入大小合适的(引脚数)fpga,fpga与内存对话,而微控制器则使用分页方案与fpga对话。


我的想法也是。并且让FPGA成为透明的刷新控制器。但是,实际上…… 在小型ARM系统上用软件模拟arduino会不会更简单,更便宜?
克里斯·斯特拉顿

1
DDR既有趣又有教育意义,这并不简单,而且不是初学者。找到另一台笔记本电脑或主板来放置此内存,并使用侧面有一点点的fpga评估板或beagleboard或类似的东西来了解DDR。第一个问题是引脚数,第二个是信号,时序等。当您制作自己的pcboard时,很难使其工作。它不像LCD界面或类似的东西,您可以面包到微控制器。
old_timer 2011年

7

可以想象,您可以使用闩锁系统来允许诸如arduino之类的东西生成32位地址,并且您可以设计出一些方案来生成刷新周期,但是这样做几乎没有意义,除非是作为一种技术。行使。

接口电路可能是结果系统中最复杂的部分,结果几乎没有实用价值。arduino将无法从RAM中执行代码,存储将是易失的,并且可能比arduino消耗更多的电量。如果要存储数据,则SPI EEPROM可能是更好的解决方案。


1
在任何情况下,AVR都能从RAM执行代码吗?
尼克T

@Nick T-我不是间接暗示有任何可能的情况;我直接说的是,如果有人正在考虑与这种RAM接口,那么认为他们可以使用它就错了。
JustJeff 2011年

1
串行闪存或SRAM通常比EEPROM快很多。如果您需要大量非易失性数据(远程代码用例),则Flash可能是更好的选择。对于大缓冲区,请使用SRAM;否则,请使用SRAM。它比EEPROM快得多。如果您有一些需要独立切换的配置位,那实际上就是EEPROM剩下的唯一利基市场。
凯文·维米尔

@reemrevnivek-好的,我+1您的评论。如果要保留几十个配置设置,则为EEPROM。如果要保留视频帧,请使用SRAM。
JustJeff

7

如果您查看DRAM芯片数据表,则DDR2的最低时钟速度约为50MHz +。因此,不能,您将无法通过微控制器与它们进行交互(除非它具有内置的硬件支持)。


更不用说您还需要经常刷新内存!Arduino会花所有的时间来驱动内存控制线!
Toybuilder 2011年

6

最简洁的答案是不。

Arduino无法驱动DDR或DDR2内存接口。您可以使用带有SPI接口和FPGA的DDR / DDR2控制器,但这是一项艰巨的任务。


6

您需要一个低压驱动器(SSTL),并需要某种方式来控制大约100个通道(每个差分通道,大约200个引脚。请考虑使用BGA。)

大多数DRAM必须至少刷新1kHz,并且可能要刷新得更多,才能降低误码率。然后,这将构成一项主要的后台任务,并用尽Arduino的大部分处理能力,甚至有可能以这种速率刷新内存。

不过,您可以看到某些微控制器(例如PIC24F / H / dsPIC33F)支持并行主总线接口,该接口允许访问某些类型的并行SRAM。甚至支持C语言,因为此外部存储器可以映射到多个代码变量中,甚至可以将内部和外部存储器组合在一起的块。外部存储器要求您编写一些PMB代码。但是,您最多只能处理1 MB。


AFAIK DDR使用SSTL而不是LVDS
mazurnification 2011年

@mazurnification,是的,您是正确的(我的错。)尽管如此,从Arduino控制的噩梦。
Thomas O

然后更正您的答案!
凯文·维米尔

@reemrevnivek,好的。已更正。但是,我只是指出这是不切实际的。无论使用哪种信令格式。
Thomas O

2

不,不是在内存和MCU之间没有某种分页接口。实际上,某些AVR MCU确实具有内置的外部存储器接口-例如Atmega2560(请参阅ATmega640 / 1280/1281/2560/2561数据表的第8节)。但是地址空间的单位是千字节,而不是千兆字节。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.