Cyclone V开发板试用笔记二 DDR3的软核和硬核控制器

guoyuboy   2012-11-13 15:31 楼主
在第一篇试用帖子里从宏观谈了谈Cyclone V的优点,接下来的帖子我将具体到某一方面的功能来介绍Cyclone V器件的使用。这次涉及到DDR3,使用AlteraUniPHY控制器,采用软核和硬核两种模式。
我的DDR3控制器是例化在Qsys里的,除了它之外还有Nios II处理器,On-chip RAMJTAG-UART等等常用的外设。首先看看软核和硬核控制器的资源占用:
采用软核控制器的资源:
                               smc_resource.png
采用硬核控制器的资源:
hmc_resource.png
从上图可以看出,软核的资源使用量大约是硬核的4倍。
在时序上,Altera官方给出的DDR3软核和硬核的频率上限分别为300Mhz400MHz,当然速度等级为C8的器件频率会低一些。
当选用软核控制器,工作在Half Rate模式下,DDR3频率设定为400MHz时,时序分析显示DDR3控制器的setup时间违规。如下图所示:
smc_sta.png
下面说一说软核的例化。
基本参数
Quartus version QuartusII v12.0sp2
FPGA 5CGXFC7D6F31C7ES
Kit Cyclone V GX FPGA Development Kit
Memory device DDR3 SDRAM (Micron MT41J128M16LA-15E)
Memory speed 667 MHz
Memory topology X32-bit,2 DDR3 SDRAM components withT-topology(这里不使用ECC
IP used DDR3 SDRAM Controller with UniPHY IP
例化步骤
1. 设定速度等级为7
2. 在右侧的内存预设中选择Micron MT41J128M16LA-15E,点击Apply
3. 设定PLL参考时钟为125 MHz
4. 选择 half-rate
5. 进入Memory Parameter,修改interface width32
6. 进入Controller Settings,选中Generate power of 2 data bus width for Qsys
7. 选中Enable Avalon MM byte enable signal
硬核与软核的设计基本相同,不同之处是要选择Enable Hard External Memory Interface,将速率改为full rate ControllerSettings中将MPFEport0宽度改为64.
DDR3控制器例化完成后要进行IO的设置,包括位置的分配和属性的添加。位置的分配可以自己写TCL来完成,属性的添加利用控制器IP自带的pin assignment TCL来完成。需要注意的是名称的统一。分配完在Pin Planner里看一下,确认是否分配正确。
时序约束方面,生成的IP会自动添加SDCTimeQuest中,如果发现没有,检查Files路径中是不是没有包含QsysQIP。自带的SDC完成了大量的工作,包括DDR的时钟,clock groupfalse pathmulti-cycle等等约束。我们自己需要写的SDC则比较简单,约束一下晶振输入,derive一下PLL,设定一下IO的延迟即可。首次STA结果可能有很多Clock域的交叠,需要修改SDC来隔开。顺利的话反复几次就可以完成约束。
总结一下:
DDR3在越来越多的系统中扮演着重要的角色,高速、高效的控制器至关重要。Altera这些年在降低DDR2DDR3设计的门槛上做了大量的工作,从HPCHPC II,现在的趋势是使用UniPHY。包括在License授权方面,Altera也放开了很多,只要是订购版的Quartus II用户,就有各种自带的内存控制器的授权。最新推出的硬核内存控制器,极大地方便了用户的设计。就我个人而言,它简化了DDR3管脚的分配。有过硬件设计经验的工程师,十有八九都在FPGA的内存管脚分配问题上费过不少脑筋。

回复评论 (8)

学习了
一个为理想不懈前进的人,一个永不言败人! http://shop57496282.taobao.com/ 欢迎光临网上店铺!
点赞  2012-11-13 21:13
哪来的软核?发来看看吧
点赞  2012-11-14 23:36
看你的截图,report ddr中似乎有时序问题啊,这个问题可以忽略吗?
点赞  2015-2-9 15:17
请教一下,controller settings中,Generate power of 2 data bus width for Qsys or SOPC builder您说选中,是用于什么的?另外Maximum Avalon-MM burst length的选择依据是什么?谢谢您
点赞  2015-11-4 13:59
引用: melody804 发表于 2015-11-4 13:59
请教一下,controller settings中,Generate power of 2 data bus width for Qsys or SOPC builder您说选中 ...

单独发帖吧
加油!在电子行业默默贡献自己的力量!:)
点赞  2015-11-4 17:58
请教一个问题,FPGA手册里面写着只有一个硬核,这一个硬核是限制了我不能例化两个UniPHY吗?还是说如果我选择了硬核,那就只能用单端口?请大神指点。
点赞  2015-11-10 17:10
引用: bysg312 发表于 2015-11-10 17:10
请教一个问题,FPGA手册里面写着只有一个硬核,这一个硬核是限制了我不能例化两个UniPHY吗?还是说如果我选 ...

是的,是这样子的。
点赞  2016-7-6 13:23
>十有八九都在FPGA的内存管脚分配问题上费过不少脑筋
这个不叫

手册说FPGA里面有几个硬核,就是几个
顶层例话比手册多,map是肯定过不去的。

多以用到了特殊硬核的时候,一定要写dummy RTL,
让硬核hold住,然后跑mapping,跑时序,有条件的要借板子跑
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-7-6 21:49
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复