Dec 11

Port MPMC to Custom Board 不指定

RickySu , 20:26 , 技术经验 , 评论(6) , 引用(0) , 阅读(1575) , Via 本站原创 | |
[Background]
- 几乎所有的嵌入式系统都需要用外部存储器
- 最终的设计不可能用Demo Board,肯定都要重新画PCB
- DDR Memory Controller是一个挺复杂的系统,移植起来比较麻烦

[Question]

怎样移植现有设计的Memroy Controller到定制PCB板上?

[Solution]
- 此文针对EDK 10.1SP3 MPMC 4.03 MIG2.3
- MPMC提供两种PHY - MIG PHY 和 STATIC PHY。 MIG PHY可以达到比较高的 performance,移植也相对困难。STATIC PHY使用DCM PHASE SHIFT功能来调校时序,调校一次后可以把数值固定下来以后就不必调了,缺点是速度只能达到100-125MHz。
- Port的经验主要参考MPMC Datasheet P43 Memory Interface Generator (MIG) Based PHY Interface 和 P47 Converting MIG UCF to MPMCv.4 UCF,另外AR29221虽然AR是针对Spartan3的,但是Virtex系列也很有参考意义。
- 使用MIG PHY需要遵循特定的管脚分配规则。 - 参考UG086 - Section VI. Memory Implementation Guidelines
- 自己调整过的管脚分配需要在MIG中Verify。
- MPMC提供perl语言将MIG的UCF根据MHS中MPMC的引脚名字转换成相应的UCF, Virtex-5 DDR2 PHY需要设置C_MEM_DQS_IO_COL和C_MEM_DQ_IO_MS
- 调整MPMC的Parameter,比如C_MEM_PARTNO等
- MIG PHY不需要任何软件设置,自动会做Calibration。如果过不了Memory Test或读写不正常,那么首先把MPMC_InitDone引到LED上观察初始化有没有完成。

- 如果MIG PHY初始化不能自动完成,可以参考UG086 Section V. DDR2 Debug Guide的debug flow来查找关键信号,比如calib_start, calib_done等。或者试用STATIC PHY
- STATIC PHY的用法在MPMC datasheet中有详细介绍。主要步骤为:
0. 在UCF中定义好管脚位置。
1. MPMC PARAMETER C_USE_STATIC_PHY = 1
2. 取消MPMC_Clk_200MHz PORT的连接
3. 根据Datasheet中Static PHY Implementation --> DCM Phase Adjust Port的说明修改MHS文件,添加一个DCM,连接 MPMC_DCM_PSINCDEC,MPMC_Clk0, MPMC_Clk_Mem等信号并调整LOCKED信号。
4. 将MPMC_CTRL Bus连接到系统的PLB46总线上。这个总线用于控制Static PHY的控制寄存器。
5. 根据Datasheet中Static PHY Implementation --> Timing Constraints 在UCF中添加时序约束。
6. 添加一个SW Application,内容为\sw\XilinxProcessorIPLib\drivers\mpmc_v2_00_a\examples\mpmc_calibration_example.c,放在BRAM中,所需空间大约为10K。
7. 这个calibration example会自动找到所需设置的phase shift值,记下来并填在DCM的C_PHASE_SHIFT参数中。

- 如果还是有问题,仔细查看ngdbuild/map/par report的warning,从中查找信息。通常static phy都是可以用的。

- 我犯过的一个错误:在UCF编辑管脚的时候,把CAS管脚写成了CS管脚,结果有一个CS管脚的定义被overwrite,怎么都不能完成calibrate,XMD mrd读取同一个地址的的数据永远都不一样。通过检查ngdbuild report发现这个warning,于是通过static phy,也通过了MIG PHY。

- 另一个错误:V5 DDR2 Place报错
引用
Place:292 - The components u_system/mpmc_0/mpmc_0/mpmc_core_0/gen_v5_ddr2_phy.mpmc_phy_if_0/u_phy_i
o_0/gen_dq[28].u_iob_dq/stg3b_out_fall and
u_system/mpmc_0/mpmc_0/mpmc_core_0/gen_v5_ddr2_phy.mpmc_phy_if_0/u_phy_io_0/gen_dq[29].u_iob_dq/stg3b_out_fall seem to be placed / locked to the same site   SLICE_X0Y138

是由于没有设置C_MEM_DQS_IO_COL和C_MEM_DQ_IO_MS引起的。

- MIG太复杂,通常来讲不推荐自己改代码。因此感觉就算查了MIG PHY的关键信号帮助也不太大。绝望时仔细查查Answer Record,试一试Static PHY。

[参考资料]
- MPMC Datasheet
- UG086 - MIG Datasheet
- AR #29221 - 10.1 EDK, MPMC v4.00a - Spartan-3 MIG PHY Usage Guidelines
Tags: , ,
游客
2009/10/19 23:05
还有DDR SDRAM的寄存器配置是在哪儿做的呀?比如模式设置、CL还有Burst Length的设置是在什么地方修改的?
希望博主能提供点帮助,多谢啦!
游客
2009/10/19 21:59
我也用staticPHY配置了ddr sdram,根据博主的方法配置,最后下载bit文件:
Starting the Calibration Example


ERROR: Could not calibrate.
我想请教博主几个问题行吗?
1、MPMC_CTRL分配多大的地址啊?
2、我用的V4的芯片,然后再软件mpmc_calibration_example.c中有什么需要改的吗?我看程序内有:
#define MPMC_MIN_TAPS      -90
#define MPMC_MAX_TAPS      90
#define MPMC_EDGE_TAPS      20
#define MPMC_NUMBER_TAPS    MPMC_MAX_TAPS - MPMC_MIN_TAPS
提示需要根据情况改变,请问哪儿可以查到具体用什么数值?这个会对对结果有影响吗?
shaory
2009/09/28 19:56
偶然的一次机会,发现开发板上的SD卡没插好,现在好了,感谢博主
shaory
2009/09/15 22:38
你好!
我在ML507上测试DDR2(因为重装了电脑,用以前跑通的程序来测试下软件)出现这样的错误:
首先,内存测试通不过;
然后,我利用相位校准程序算最佳相位,但是也没通过,终端输出这样的结果

Starting the Calibration Example


ERROR: Could not calibrate.
我想问下,这个错误该怎么解决?
嗯,谢谢啊!
RickySu 回复于 2009/09/17 17:00
如果是同一个bit文件,以前可以用,现在不好用,我感觉是不是硬件问题了,有机会的话吧bit文件放到另一块板子上试试看。
jevei01
2009/07/17 15:28
你好,我想在xupv2p开发板上使用DDR SDRAM,但是没有拿到EDK中推荐的那些SDRAM类型,因此我的内存条现在无法使用(无法通过Memory Test)。我用的是KVR400x64c3a/512。我想问下,xupv2p这块板子可以使用这块内存吗?如果能,如何在MPMC中设置正确的参数呢?(custom模式)
另外,对MPMC中那些参数都不是很懂,我的邮箱zhanxn@gmail.com
QQ:79482298,如果有好的建议和方法,请联系我一下,呵呵,谢谢啊
另外,以后也会经常关注你的主页的,感觉内容蛮丰富的
RickySu 回复于 2009/07/18 08:35
不知道你有没有用http://www.xilinx.com/univ/xupv2p.html 页面提供的文件用BSB Wizard来建工程或者直接跑Demo Design?
XUPV2P的板子上的DDR布线好像和MPMC要求的不一样,可能比较难配置。
关于MPMC参数,还是要看datasheet。MPMC 的 Datasheet 很详细。
游客
2009/04/10 16:15
谢谢!
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]