XILINX MCB使用详解
说明:本文档将详细讲述赛灵思的DDR2 IP 核的使用流程,目标芯片为Sparten6系列芯片xc6slx25-2fgg484,ISE版本为12.4,MCB版本为3.5。应用案例为FPGA芯片外带载两片DDR2芯片进行乒乓操作,目的是用一个PLL驱动两个MCB。
术语:ug382,Xilinx的User Guide,Sparten-6 FPGA Clocking Resources UG382(v1.4)August24,2010
本人技术有限,不足之处请指正,请发到 19861011lsf@sina.com,也欢迎讨论,QQ383997593,谢谢!
一、核的生成
1、 打开Xilinx CORE Generator工具,找到MCB核(MIG),
2、 选择版本,这里以3.5为例(尽量选择最新版本),进入Xilinx Memory Interface Generator界面,单击
Next,进入下一步;
3、 选择输出项,输入自定义模块名;
单击Next,注意:如果你是修改一个核而不是第一次生成核,会出现如下对话框,单击Yes,这时会覆盖掉一些文件,因此无论你在接下来的步骤中有没有对核的选项进行修改,最后必须点击Generator;
4、 单击Next,选择Memory Type;
注意到图中有个C1、C3,这是因为Xilinx的MCB有部分是属于硬核,引脚是固定的,分别存在于FPGA芯片的BANK1和BANK3,在代码中将看到很多的信号名是以C1_XXX和C3_XXX开头的,这很容易区分是哪个DDR芯片对应的信号名,注意与后面的端口(Port)混淆;
5、 单击Next,进入DDR2芯片选项模块,先选择存储器,再输入时钟;
这里的Memory Part 选择的是自定义的芯片,单击
,输入一个自定义的DDR2芯片名,
尽量输入芯片的实名而不是自定义名,这样有利于重复使用,不至于将来使用时不知所云,下面的参数可
以在你所选的DDR2芯片DATASHEET中找到,输入参数值,保存,这样就可以在
找到自定义的存储器了,单击Next; 6、 选择同上,单击Next; 7、 Next; 8、 Next;
9、 进入端口配置,
(1)选择配置模式,单向与双向的意思是指端口是可读、可写,还是既可读又可写,
将端口配置成一个读一个写,其他不用;
(2)选择存储器的地址映射方式,可根据自己程序设计方便选择,这里默认;
10、Next,这里由于对两个DDR2的操作是相同的,配置同上;Next 11、Next; 12、Next;
13、进入FPGA选项
实际情况选择单端还是差分,这里选择单端
,这里注意系统时钟的方式,根据
其他默认; 14、Next,同上; 15、Next;
16、选择 17、Next;
Next;
18、
二、IP核内部文件详解
该部分主要尝试描述MCB的时钟部分。
在Xilinx的MCB核中每一个MCB需要占用一个PLL,由于要求使用一个PLL,因此需要将两个PLL合并成一个。
1、 将生成的核文件导入工程中,尽量使用.v文件而不是.coe文件,这样便于修改。 2、 如果将所有.v文件导入后还有问号提示有一些AIX的文件未导入,不用管它。 3、 工程中IP核的顶层为;
该顶层目录下有以下文件:memc1_infrastrcture_inst.v、memc3_infrastrcture_inst.v,memc1_wrapper_inst.v、memc3_wrapper_inst.v,memc1_infrastrcture_inst.v、memc3_infrastrcture_inst.v描述的是每一个memory使用的PLL,将memc3_infrastrcture_inst.v删除,同时在这个模块
注
释
掉
,
最
后
MCB
将memc3_infrastructure_inst的模块如下:
4、双击memc1_infrastrcture_inst.v,可以看到该文件中主要有三个部分:u_pll_adv模块,实际上就是Xilinx的PLL核;BUFG模块,是Xilinx的全局缓冲器;BUFPLL_MCB,是专门用于MCB的BUFPLL,对于BUFPLL不清楚的地方可以查阅ug382,该文档详细描述了Sparten6的时钟以及各种BUF;另外还有一个generate循环体模块,该模块是针对单端还是差分输入时钟做不同的输入BUF处理;需要注意的是,这个模块的所有参数都会在外部顶层模块做重新定义。 4.1、generate模块:
假设C_INPUT_CLK_TYPE == \。若输入时钟已经上了全局时钟域,
那么
的修改PLL的输入时钟
需要注释掉,反之保留。注意,若注释掉,要相应
。
4.2、u_pll_adv模块:
如上所述,u_pll_adv模块就是Xilinx的PLL核,并没有什么特殊之处,而MCB只用了其中的4个时钟输出,其中一个还是提供给用户逻辑使用,因此完全可以对该PLL的3个时钟输出做自定义,这样可以减少系统所用PLL个数。
百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库spartan6_MCB使用详解在线全文阅读。
相关推荐: