首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

MIG的ucf更改心的

MIG的ucf更改心的

最近研究了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_;
返回列表