快速建立DDR控制器工程的方法

【时间:2013 年 11 月 15 日, 来源:本站原创, 作者:】

骏龙科技 汤学丰

很多用户在使用DDR控制器IP的时候,常出现一些问题,导致Fitter不能通过。根据处理这些问题的经验,特总结了一下快速建立DDR控制器工程的方法。本文从建立工程的步骤出发,列出易出现的问题以及处理办法,最后给出快速建立满足用户要求的DDR控制器工程的方法。

为了方便叙述,本文把用户可能遇到的问题以及解决办法以图文的方式展示。该例子是以EP4SGX110FF35C3N器件进行,例化DDR控制器(选用美光2G DDR3 MT41J128M16HA),见图1

1 例化DDR控制器

第一步,Fitter前运行TCL脚本(the Tcl Scripting chapter in volume 2 of theQuartus II Handbook)。生成IP后,选择好顶层文件,有些用户会在此时进行Fitter,那么肯定会报错,这些错误会根据用户对IO设置的电平标准不同而不同。此时只需要运行一个TCL脚本,就可以解决90%的错误,其他错误则需要在下面的几步中解决。TCL脚本可以从Tools->TCLScripts中调出,见图2所示的pin_assignments.tcl,点击run。这个脚本的主要用途就是把DDR控制器的pin脚布置好电平标准,大家可以在assignment Editor中查看具体添加的特性。

2 TCL脚本

第二步,把DQDQS以及DM放置到同一个mod中,且DQSDM的高低位对应于DQ的高低位。比如本工程是DQS[0]对应于DQ[7:0]DQS[1]对应于DQ[15:8]DM类似。是否是属于同一个mod可以查看plannerview下拉单(如图3所示),或者pin listexcel文档查看(如图4所示),DDR3一般都是x8/x9 mod。如果没有按照上面的要求布局管脚,则会报各种问题,比如图5所示错误,就是没有把DQ放置在同一个mode中导致的;图6所示错误就是没有把DQS放置在与相对应的DQ同一个mod中导致;图7所示错误跟图5是一样的报告,但是引起的原因不同,是由于DM没有放到同一个mode中。需要注意的是,器件不同也会引起不同的错误,比如DM不布置到同一个modecyclone CIV中有时候会报Can't place Top/Bottom or Left/Right PLL

 

3 Pin Planner查看mode

第三步,布置rdnrup管脚(在SV器件中,该管脚被改为oct_rz*),这两个管脚是必须布置在特定的管脚上面,即在pin listexcel表格中pin具有的特性。如果没有布置正确的话,就会报图8所示错误。需要额外注意的是,每个FPGA会有多对RUP/RDN管脚,可以任选一对,只需要保证这对管脚所在的IO bankVCCIODDR3管脚的VCCIO相同,这两个管脚不需要保证和DDR3接口信号在同一个bank,另外,DDR3所在bankVREF需要使用专用芯片供电,电压为VCCIO的一半,最好不用两个电阻分压所得。至此,其他的管脚一般都问题不大。

8 OCT的错误

综合以上的注意事项和步骤,如果需要快速建立工程,并且需要布局在固定的bank,那么就可以这样操作:把DQ[7:0]以及DQ[15:8]中的其中一位布置到两个要求bank中的Xn/Xn+1 mod上,运行脚本,之后Fitter,通过后,实行自动布局布线反标(见图9),就可以完成令人满意的工程。

9 自动布局布线反标