最近研究了MIG,针对产生的ucf约束文件的管角分配修改有一些体会。
MIG是Xilinx内嵌在ISE中用来生成各种IP核的软件工具,可以用它来直接生成DDR2控制器设计模块,模块包含可自由修改的HDL源代码和约束文件。用户可以在MIG的GUI图形界面根据所选的存储器件选择对应模板、总线宽度和速度级别,并设置CAS延迟、突发长度、引脚分配等关键参数。如果所选器件与MIG所列模板不相符,可在代码生成后灵活修改这些代码。
对于MIG2.0版本,针对项目需要,需要重新配置管脚,相关的设置也都需要更改。参考Xilinx的Answer Record 29313,首先用1.73版的MIG生成一个ucf,或者自己写一个简化的约束文件,主要包括管脚分配,电平和时钟timing等。然后利用Answer Record 29313里边给的一个脚本mig20_ucf_rev.pl来做,生成了两个文件:<output_file_name>.ucf和<output_file_name>_hdl_params.txt,把ucf文件里的关联约束copy到管脚约束后边,作为新的约束文件来用。<output_file_name>_hdl_params.txt 文件里有两个参数:
parameter DQS_IO_COL = 16'b * ,
//I/O column location of DQS groups (=0, left; =1 center, =2 right)
Parameter DQ_IO_MS = 64'b * , // Master/Slave location of DQ I/O (=0 slave)
这两个参数是与特定的管脚分配有关的(specific to your pinout)。在工程顶层rtl文件里有这两个参数,在根据自己板子的管脚分配而修改了ucf文件后,需要对顶层文件里这两个参数修改。
针对mig20_ucf_rev.pl具体的操作如下:在windows环境中,要安装Activeperl,之后,“开始”,“运行”,输入“cmd“,然后用cd命令进入你所要运行的pl文件的文件夹,输入格式举例如下:- perl mig20_ucf_rev.pl my_mig173.ucf xc5vlx220ff1760 267 my_out,其中:
- Pre-MIG 2.0 UCF file: my_mig173.ucf
- Target device: xc5vlx220ff1760
- Target frequency: 267MHz
我采用得是ISE10.1 MIG2.3来产生运行在V5上的ddr2控制核。
对于MIG2.3,可以自动完成约束更新。首先注意banks的选择与你的管脚一致,打开MIG向导,选择updata,选择刚刚建立example_design directory下的.prj工程,自己建立一个只需包含管脚分配的UCF文件,并选择这个文件,最后Generate就可以了。顶层文件的C_DQS_IO_COL and C_DQ_IO_MS MHS也会自动修改好的。
最后提一下对于IDELAYCTRL我是手动更新的,在这里把方法介绍一下。对于频率达667Mbps的DDR2存储借口,V5采用IODELAY解决数据周期的要求。DDR2中的DQS用到了IDELAY模块,也就需要相应的IDELAYCTRL。但在改变约束文件里的IO loction时,它的位置约束要手动更改。
我是利用planahead来确定IDELAYCTRL的loction的。在device的视图中,找到约束文件中所定义的IDELAY的位置,就是下图橙色的方块。在它的附近找到IDELAYCTRL,图中白色的矩形,读出它的位置信息,再添到你的约束文件里就好了。我的DDR2总共要3个IDELAYCTRL。格式如下:
INST "u_iodelay_ctrl/u_idelayctrl_#" LOC = IDELAYCTRL_X_Y_;
学习中用到的一些资料在
http://share.eepw.com.cn/share/download/id/48456
省的大家再去找了
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。