在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8278|回复: 17

[求助] DDR3 multi-controller on ML605

[复制链接]
发表于 2012-7-10 09:36:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
大家好! 我现在在使用MIG IPCore控制DDR3,板子是赛灵思公司的Virtex-6 ML605,我发现IP核的GUI提供multi-controller选项,如下图所示,用户手册(UG406 March 1, 2011)上没详细介绍这个选项,我想知道这个multi-controller有什么作用?
我现在想使用板子上的DDR3做乒乓操作,但是板子上只有一块DDR3芯片,我不知道是否可行,和这个multi-controller有没有关系。麻烦各位大侠指点!小女子先谢过啦!
QQ截图20120710091400.png
发表于 2012-7-10 22:09:27 | 显示全部楼层
这个multi core应该是 一次 生成 多个ddr3 ipcore。跟乒乓 操作 没有关系 。

一个ddr3做乒乓 操作?是做bank间的乒乓?
 楼主| 发表于 2012-7-11 11:26:33 | 显示全部楼层
回复 2# tiangua


    那multi-controller生成的多个控制器控制的是一块DDR芯片呢还是多块DDR芯片,一般板子上只集成一块芯片呢。

可以划分bank做乒乓么?还是地址复用什么的。。在内存这一块我还是菜鸟。。导师是要求求证可不可以做乒乓以提高速度,但我觉得可行性似乎不大。
发表于 2012-7-11 17:08:27 | 显示全部楼层
那个选项是指生成多少个内存控制器的。

ML605板子上的DDR3是 SODIMM封装的吧,是标准的SO-DIMM接口哦,貌似只能用一个控制器去控制。

你要做乒乓,要看看你的写入和读出的带宽是多少哦,这个其实就是DDR3恨重要的一个读写效率问题。因为DDR内存的读写是按命令操作的,控制命令是一个一个被内存颗粒执行的。如果一直写,或者一直读的情况下,DDR3内存效率是很高的,但是读写要不停的切换的话,效率会降低非常多。大概想象下一个 V 字形,左右两边是单纯写或者单纯读的时候的效率,中间就是读写频繁切换时候的效率,很低的。你可以去MICRON查查资料,看看他们家DDR3的效率曲线图就知道。

用DDR乒乓,其实读写也是串行进行的,只不过如果相对于你的设计要求来说DDR效率足够高,你可以看做是并行的。其实就是看你的设计对读写效率有多高的要求。如果不高,倒是可行。
发表于 2012-7-12 22:05:26 | 显示全部楼层
楼上说的比较清楚,
 楼主| 发表于 2012-7-14 17:12:03 | 显示全部楼层
回复 4# catcat_2


    之前在另一个关于MIG控制器的帖子了看到你,久仰大名啊~

你说写入和读出的带宽,这个是可以改变的么,DDR3的数据线是64位宽,是可以分开使用么?
如果做bank的乒乓,bank该怎么选择分配呢?
我已将数据写入DDR3中,但是UI的地址app_addr和DDR3的ddr3_ba和ddr3_addr是怎样对应的呢?我写入数据后ddr3_ba的值始终是3'b000,是因为我写入数据不多所以只用到bank0么?什么时候会用到bank1,bank2……呢?
 楼主| 发表于 2012-7-14 17:15:48 | 显示全部楼层
回复 5# tiangua


    谢谢!同样的问题也问问你:

写入和读出的带宽,这个是可以改变的么,DDR3的数据线是64位宽,是可以分开使用么?
如果做bank的乒乓,bank该怎么选择分配呢?
我已将数据写入DDR3中,但是UI的地址app_addr和DDR3的ddr3_ba和ddr3_addr是怎样对应的呢?我写入数据后ddr3_ba的值始终是3'b000,是因为我写入数据不多所以只用到bank0么?什么时候会用到bank1,bank2……呢?
发表于 2012-7-15 19:41:42 | 显示全部楼层
可以参考一下DDRIII的内部状态机。这个状态机的跳转一定要了解 。
DDRIII的数据位宽是64bit,这个应该是多个颗粒拼位宽的。然后需要看一下DDRIII的控制线和地址线是独立的还是共用的。
如果是独立的,就可以生成多组控制器,在控制器之间做乒乓。这个时间比较简单,不过需要注意控制器数据之间的同步。
如果是公用的,那就只能在不同bank之间做乒乓操作。参考DDRIII的状态机,就可以知道,bank与bank之间的状态是不冲突的(除了REFRESH ALL指令,当然这个指令也可以用其他的方法实现,比较复杂,一搬用不到),在设计指令调度过程中只需要注意指令总线的占用和数据总线的占用就可以了。这种方法实现起来比较复杂。需要自己实现DDRIII控制器,最好使用厂家带的PHY。

BANK乒乓就是利用了BANK之间状态机可以独立运行。在一个BANK等待的过程操作另外一个BANK。

你的bank比较少,只用到了bank0,那你可以把你的数据分成两半,一半在bank0,一半在bank1啊。
这样你就可以在两个bank间乒乓了。
发表于 2012-7-16 09:09:49 | 显示全部楼层
回复 6# recorner


    你说写入和读出的带宽,这个是可以改变的么,DDR3的数据线是64位宽,是可以分开使用么?

       带宽,不是数据线的位宽。概念要分清楚。是数据线的采样时钟X数据线位宽,这个是要知道你写入、读出数据的速率。DDR3的数据线位宽64bit,是不能分开使用的。

如果做bank的乒乓,bank该怎么选择分配呢?

       如果你真的是要用ML605,那这块板子上的DDR3是SODIMM封装的,就是跟笔记本内存条那样的,标准的SODIMM接口。所以,你用多个控制器去乒乓,和用一个控制器去做BANK乒乓,其实最后操作的对象都是同一块内存条。意思就是,不管你怎控制器UI接口那边怎么操作,最后你的读写命令在DDR3 SDRAM这侧都是串行执行的,跟一个控制器去BANK乒乓是一个效果。而且,你只有一个SODIMM接口,你的多个控制器怎么连到一个SODIMM上面?按我的理解应该是不行的。多控制器乒乓,应该是多个控制器分别操作不同的片外DDR3 SDRAM,控制器到DDR3的物理连线都是分开的,这样才可行。所以,你可能只能考虑考虑BANK乒乓。

       BANK乒乓的时候,你要访问不同的BANK,只需要变化一下ddr3_addr里面的BANK地址那一段就可以了。但是有一点,你必须要考虑到。DDR3 SDRAM在做BANK激活的时候,它是每8个BANK轮询激活的,也就是说任意时刻,都有8个BANK是被激活的。然后,问题就出来了,你在做BANK乒乓的时候,BANK切换如果发生在已经被激活的两个BANK之间,那是没有问题的,切换时间也相对较短,效率降低不大。但是如果发生在一个已经激活和一个没有被激活的BANK之间,那就麻烦了,激活和预加电一个BANK需要的时间是很长的,宏观来看就会造成读写效率大幅降低。

       说了半天,其实就是让你仔细考虑你自己的设计在做乒乓的时候,对DDR3的效率要求是怎么样的。你可以自己算一下,你在UI侧写入效率和读出的效率。然后在算下,读写切换的频率。最后计算下你的DDR3的理论效率。如果在50%-60%,是可以的,如果到70%以上,你就要仔细掂量掂量了。如果到90%。。。 姑娘,放弃吧。90%只有在一直写入(或者一直读出),没有命令切换,然后依次访问ddr3 每个column, 每个raw,每个bank的时候才达得到。这个效率测试,我在ML605上面做过。

       我猜你的导师让你做这个实验,就是让你搞清楚DDR3的效率问题。这个几乎是每个用到DDR3的场合都要考虑,但都不容易考虑清楚的问题,也就是做项目的时候大家扯皮的地方之一。

我已将数据写入DDR3中,但是UI的地址app_addr和DDR3的ddr3_ba和ddr3_addr是怎样对应的呢?我写入数据后ddr3_ba的值始终是3'b000,是因为我写入数据不多所以只用到bank0么?什么时候会用到bank1,bank2……呢?

       UI的app_addr的地址编排模式在你生成MIG的时候会让你自己设置的,是RANK+BANK+RAW+COL还是RANK+RAW+BANK+COL,你要自己去看一下。你用的是SODIMM,你在MIG里面是要选SODIMM的封装模式的,然后你可以看到自己的地址是怎么分配的。
      ddr3_ba,这个是bank address吧,是mig顶层分出来的,就是app_addr对应的那几位。bank切换,你只要改变对应的BANK地址就可以了。
发表于 2012-11-29 18:32:30 | 显示全部楼层
楼上说的比较清楚,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-27 15:34 , Processed in 0.024298 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表