Xilinx IP核及Core Generator
spartan6_MCB使用详解

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 ResourcesUG382(v1.4)August24,2010本人技术有限,不足之处请指正,请发到19861011lsf@,也欢迎讨论,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的操作是相同的,配置同上;Next11、Next;12、Next;13、进入FPGA选项,这里注意系统时钟的方式,根据实际情况选择单端还是差分,这里选择单端其他默认;14、Next,同上;15、Next;16、选择Next;17、Next;18、二、IP核内部文件详解该部分主要尝试描述MCB的时钟部分。
FPGA开发全攻略——IP核

FPGA开发全攻略——IP核5.7 FPGA设计的IP和算法应用基于IP的设计已成为目前FPGA设计的主流方法之一,本章首先给出IP的定义,然后以FFT IP核为例,介绍赛灵思IP核的应用。
5.7.1 IP核综述IP(Intelligent Property) 核是具有知识产权核的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。
到了SOC 阶段,IP核设计已成为ASIC电路设计公司和FPGA提供商的重要任务,也是其实力体现。
对于FPGA 开发软件,其提供的IP核越丰富,用户的设计就越方便,其市场占用率就越高。
目前,IP核已经变成系统设计的基本单元,并作为独立设计成果被交换、转让和销售。
从IP核的提供方式上,通常将其分为软核、硬核和固核这3类。
从完成IP核所花费的成本来讲,硬核代价最大;从使用灵活性来讲,软核的可复用使用性最高。
( 这部分内容前面已经阐述,这里再重申一下)软核(Soft IP Core)软核在EDA设计领域指的是综合之前的寄存器传输级(RTL) 模型;具体在FPGA设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。
软核只经过功能仿真,需要经过综合以及布局布线才能使用。
其优点是灵活性高、可移植性强,允许用户自配置;缺点是对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风险。
软核是IP 核应用最广泛的形式。
固核(Firm IP Core)固核在EDA设计领域指的是带有平面规划信息的网表;具体在FPGA设计中可以看做带有布局规划的软核,通常以RTL 代码和对应具体工艺网表的混合形式提供。
将RTL描述结合具体标准单元库进行综合优化设计,形成门级网表,再通过布局布线工具即可使用。
和软核相比,固核的设计灵活性稍差,但在可靠性上有较大提高。
目前,固核也是IP核的主流形式之一。
硬核(Hard IP Core)硬核在EDA 设计领域指经过验证的设计版图;具体在FPGA 设计中指布局和工艺固定、经过前端和后端验证的设计,设计人员不能对其修改。
IP核——精选推荐

1.IP核的应用4.2.3 Xilinx IP Core的使用1. Xilinx IP core基本操作IP Core就是预先设计好、经过严格测试和优化过的电路功能模块,如乘法器、FIR滤波器、PCI接口等,并且一般采用参数可配置的结构,方便用户根据实际情况来调用这些模块。
随着FPGA规模的增加,使用IP core完成设计成为发展趋势。
IP Core生成器(Core Generator)是Xilinx FPGA设计中的一个重要设计工具,提供了大量成熟的、高效的IP Core为用户所用,涵盖了汽车工业、基本单元、通信和网络、数字信号处理、FPGA特点和设计、数学函数、记忆和存储单元、标准总线接口等8大类,从简单的基本设计模块到复杂的处理器一应俱全。
配合Xilinx网站的IP中心使用,能够大幅度减轻设计人员的工作量,提高设计可靠性。
Core Generator最重要的配置文件的后缀是.xco,既可以是输出文件又可以是输入文件,包含了当前工程的属性和IP Core的参数信息。
启动Core Generato有两种方法,一种是在ISE中新建IP类型的源文件,另一种是双击运行[开始] [程序] [Xilinx ISE 9.1i] [Accessories] [Core Generator]。
限于篇幅,本节只以调用加法器IP Core为例来介绍第一种方法。
在工程管理区单击鼠标右键,在弹出的菜单中选择New Source,选中IP类型,在File Name 文本框中输入adder(注意:该名字不能出现英文的大写字母),然后点击Next按键,进入IP Core目录分类页面,如图4-13所示。
图4-13 IP Core目录分类页面下面以加法器模块为例介绍详细操作。
首先选中“Math Funcation Adder & Subtracter Adder Subtracter v7.0”,点击“Next”进入下一页,选择“Finish”完成配置。
XilinxVivado的使用详细介绍(3):使用IP核

XilinxVivado的使⽤详细介绍(3):使⽤IP核IP核(IP Core)Vivado中有很多IP核可以直接使⽤,例如数学运算(乘法器、除法器、浮点运算器等)、信号处理(FFT、DFT、DDS等)。
IP核类似编程中的函数库(例如C语⾔中的printf()函数),可以直接调⽤,⾮常⽅便,⼤⼤加快了开发速度。
使⽤Verilog调⽤IP核这⾥简单举⼀个乘法器的IP核使⽤实例,使⽤Verilog调⽤。
⾸先新建⼯程,新建demo.v顶层模块。
添加IP核点击Flow Navigator中的IP Catalog。
选择Math Functions下的Multiplier,即乘法器,并双击。
将弹出IP核的参数设置对话框。
点击左上⾓的Documentation,可以打开这个IP核的使⽤⼿册查阅。
这⾥直接设置输⼊信号A和B均为4位⽆符号型数据,其他均为默认值,点击OK。
稍后弹出的窗⼝,点击Generate。
调⽤IP核选择IP Sources,展开并选择mult_gen_0 - Instantiation Template - mult_gen_0.veo,可以打开实例化模板⽂件。
如图,这段代码就是使⽤Verilog调⽤这个IP核的⽰例代码。
将⽰例代码复制到demo.v⽂件中,并进⾏修改,最终如下。
代码中声明了⽆符号型的4位变量a和b,分别赋初值7、8,作为乘数使⽤;⽆符号型的8位变量p,⽤于保存计算结果。
clk为Testbench编写的周期20ns的时钟信号;mult_gen_0 mul(...)语句实例化了mult_gen_0类型的模块对象mul,并将clk、a、b、p作为参数传⼊。
1. module demo(2. );3.4. reg clk = 0;5. always #10 clk = ~clk;6.7. wire [3:0] a = 7;8. wire [3:0] b = 8;9. wire [7:0] p;10.11. mult_gen_0 mul (12. .CLK(clk), // input wire CLK13. .A(a), // input wire [3 : 0] A14. .B(b), // input wire [3 : 0] B15. .P(p) // output wire [7 : 0] P16. );17.18. endmodule⾏为仿真验证以demo为顶层模块,启动⾏为仿真,即可输出波形。
Xilinx可编程逻辑器件设计与开发(基础篇)连载32:Spartan

XiIinX可编程逻辑器件设计与开发(基础篇)连载32:Spartan双击【Xi1inxCoreGenerator],打开现有的IP核工程项目或者创建一个新的IP 核工程。
【Viewbyfunction]—[Debug&Verification]一[ChipScopePro],双击VIO。
弹出VIO配置界面,如图9T0所示。
图9T0V1o参数设置界面(1)[ComponentName]:输入组件名称。
(2)VIO ParameterS选项组:VIO参数选项组。
[Enab1eAsynchronousInputPort]:使能异步输入信号,最多可以设貉256个异步输入信号,VIO的异步输入用来监测设计中丽⅛模块的输出信号,它与时钟无关。
[Enab1eAsynchronousOutputPort]:使能异步输出信号,最多可以设珞256个异步输出信号,V1O的异步输出用来为待测试逻辑模块提供输入激励,它与时钟无关。
[Enab1eSynchronousInputPort]:使能同步输入信号,最多可以设貉256个同步输入信号,VIO的同步输入信号用于监测设计中待测试模块的输出信号,要求待测试信号与V1O核的C1K同步。
[Enab1eSynchronousOutputPort]:使能同步输出信号,最多可以设络256个同步输出信号,VK)的同步输出信号为待测试模块的输入提供激励,要求待测试信号与VIO核的C1K同步。
[InvertC1ockInput]:VIO核可以选择时钟信号翻转,即选择采用时钟的上升沿或者下降沿作为触发条件。
注意:只有使用同步输入和/或输出的时候,时钟信号翻转才有效。
9. 2.4ATC2属性双击【Xi1inxCoreGenerator],打开现有的IP核工程项目或者创建一个新的IP 核工程。
【Viewbyfunction]->[Debug&Verification]f [ChipScopePro]。
IP核生成文件:(XILINXALTERA

IP核生成文件:(Xilinx/Altera 同)IP核生成器生成ip 后有两个文件对我们比较有用,假设生成了一个asyn_fifo 的核,则asyn_fifo.veo 给出了例化该核方式(或者在Edit->Language Template->COREGEN 中找到verilog/VHDL 的例化方式)。
asyn_fifo.v 是该核的行为模型,主要调用了xilinx 行为模型库的模块,仿真时该文件也要加入工程。
(在ISE中点中该核,在对应的processes 窗口中运行“ View Verilog Functional Model ”即可查看该 .v 文件)。
如下图所示。
1.在ISE 集成环境中仿真IP核IP 核应该在新建的工程中进行仿真与例化;在原工程中可以例化使用,但好像不能直接对它加testbench 后进行仿真。
如下两图所示。
图1:直接在工程中对ip核加testbench 仿真时出错图2:新建工程单独对ip核仿真2.在modelsim中仿真ip 核a.在modelsim中编译库(Xiliinx)(1)在$Modeltech_6.0d/Xilinx_lib_tt下新建文件夹Xilinx_lib($代表安装盘符)(2)打开Modelsim->File->Change Diriectory,将路径指向刚才新建的文件夹Xilinx_lib,这样Xilinx 编译的所有库都将会在该文件夹下。
(3)编译Xilinx 库。
在$Xilinx->verilog->src 下有三个库“simprims”,“unisims”和“xilinxcorelib”。
在modelsim 的workpace 窗口Library 属性中点右键->new->library(或在File 菜单下new->libary),输入库名(自定义)如Xilinx_lib_tt,这样在workpace library 属性下就可看到Xilinx_lib_tt 了。
Xilinx常用IP核配置

Xilinx常⽤IP核配置ISE版本为14.71、时钟IP核(Clocking Wizard)第⼀页Clocking Features选项框中:(1)Frequency synthesis选项是允许输出与输⼊时钟不同频率的时钟。
(2)Phase alignment选项是相位锁定,也就是将输出始终的相位和⼀个参考时钟同步,⼤多是和输⼊时钟同步。
(3)Minimize power选项为降低功耗,也就是资源,取⽽代之的是相位、频率的偏差,对于对时钟要求不⾼、资源有限的情况下可以使⽤,⼀般不推荐选此选项。
(4)Dynamic Phase Shift该选项为提供动态相移功能,选上此选项之后,可以在输⼊端控制相移,并有相移完成之后的反馈,相移步进长度为固定的⼏个值。
Jitter Optimization选项框中:(1)Balanced就是在抖动优化时选择⽐较均衡的正确带宽。
(⼀般选这个)(2)Minimize output jitter:使输出时钟抖动最⼩,但是可能会增加功耗或资源,可能导致输出相位错误。
(3)Maximize input jitter filtering:该选项表⽰可使输⼊时钟抖动变⼤,但是可能会导致输出时钟抖动变⼤。
其他选项按照图中选择。
第⼆页选择输出CLK端⼝第三页可选端⼝,可根据实际应⽤选择,⼀般情况下reset,locked选上。
第四页第五页可对端⼝进⾏重命名。
2、FIFO IP核(FIFO Generator)fifo是⼀种先进先出的数据存储和缓冲器,其本质是RAM。
fifo的位宽就是每个数据的位宽,fifo 的深度简单来说是需要存多少个数据。
fifo有同步fifo和异步fifo两种,同步即读写时钟相同,异步fifo即读写时钟不同。
⼀般异步fifo⽤的较多,⽤来处理跨时钟域的问题。
第⼀页接⼝类型选择Native类型的,AXI4是与DMA或与其他有AXI4接⼝通信时使⽤的。
第⼆页(1)选择异步时钟,FIFO的主要功能就是⽤在异步时钟域作为缓存,所以选择独⽴时钟的模式使⽤范围更⼴。
PLL和DLL:都是锁相环,区别在哪里?

PLL和DLL:都是锁相环,区别在哪里?一般在altera公司的产品上出现PLL的多,而xilinux 公司的产品则更多的是DLL,开始本人也以为是两个公司的不同说法而已,后来在论坛上见到有人在问两者的不同,细看下,原来真是两个不一样的家伙。
DLL是基于数字抽样方式,在输入时钟和反馈时钟之间插入延迟,使输入时钟和反馈时钟的上升沿一致来实现的。
又称数字锁相环。
PLL使用了电压控制延迟,用VCO来实现和DLL中类试的延迟功能。
又称模拟锁相环。
功能上都可以实现倍频、分频、占空比调整,但是PLL调节范围更大,比如说:XILINX 使用DLL,只能够2、4倍频;ALTERA的PLL可以实现的倍频范围就更大毕竟一个是模拟的、一个是数字的。
两者之间的对比:对于PLL,用的晶振存在不稳定性,而且会累加相位错误,而DLL在这点上做的好一些,抗噪声的能力强些;但PLL在时钟的综合方面做得更好些。
总的来说PLL的应用多,DLL则在jitter power precision等方面优于PLL。
目前大多数FPGA厂商都在FPGA内部集成了硬的DLL (Delay-Locked Loop)或者PLL(Phase-Locked Loop),用以完成时钟的高精度、低抖动的倍频、分频、占空比调整移相等。
目前高端FPGA产品集成的DLL和PLL资源越来越丰富,功能越来越复杂,精度越来越高(一般在ps的数量级)。
Xilinx芯片主要集成的是DLL,而Altera芯片集成的是PLL。
Xilinx芯片DLL的模块名称为CLKDLL,在高端FPGA中,CLKDLL的增强型模块为DCM(Digital Clock Manager)。
Altera芯片的PLL模块也分为增强型PLL(Enhanced PLL)和高速(Fast PLL)等。
这些时钟模块的生成和配置方法一般分为两种,一种是在HDL代码和原理图中直接实例化,另一种方法是在IP核生成器中配置相关参数,自动生成IP。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Xilinx IP核的调用
By HYB,7.7.2013 调用IP核,有两种,一种是从ISE中为工程添加,另一种是使用Core Generator直接生成。
两种方法本质上是一样的。
一、ISE工程中添加IP核
建好一个test工程,并添加一个main.v文件。
图1ISE工程
利用IP CORE Generator & Architecture Wizard 添加一个FIFO的CORE:
图2添加IP Core
其保存路径在工程test\ipcore_dir目录下。
这个目下的文件如下图2所示:
图3ipcore_dir目录下的文件
此时,生成的IP核还需要例化才能添加到工程中:
图4例化IP Core
二、Core Generator生成IP核
利用Core Generator生成一个IP核,生成的目录和文件如下:
图5Core Generator生成的文件
这里终于得到验证:core generator生成的东西和ISE工程\ipcore_dir目录下是一样的。
三、总结
可见,两种方法实际上都是有Core Generator生成的,且生成的东西一样,本质上没有差别。
不过也有几点说明:
1,在ISE工程中添加IP Core很简洁,实际上最主要的就是使用了core generator生成的.xco文件,见图四。
2,Core Generator还生成了一个IP Core sub-project类型的子工程,可以直接打开子工程以便详细了解语言级的实现,不过有的IP核生成的这个子工程直接打开会有错
误。
关于这个子工程找到了比较好的解释:
When you add the .xco file, you are adding an IP core sub-project.
Project Navigator automatically accesses files from the core sub-project during the various flows according to project settings, the flow that is being run, and the designation of files in the IP core sub-project. That is, .xco can be replaced by .v 、.ngc file(其实就是说可用真正的源文件来替换,真正的源文件可以在sub-project中看到).
Typically, a re-declaration error is caused when a second declaration of a module is inadvertently sent to synthesis.
Recently, we've seen an issue with a few IP (including the Fifo) where a XXX_synth.v file was incorrectly generated and added for synthesis and simulation flows. If the file is deleted, the flows complete successfully.
按照第一句的说法,.xco也是通过sub-project来真正添加IP的,这就可以解释使用PCIe 的IP核时的情况了。
通过ISE添加IP核时,暂未例化的情况如下:
图6ISE添加PCIe核暂未例化
而这个核例化的模板如下,可见需要PCIe模块中的四大类接口(截图只是一部分):
图7PCIe核的例化模板
为了证明.xco例化时确实是IP Core sub-project,为此,打开ISE工程目录下的\ipcore_dir 子目录中的ipcore_pcie这个sub-project:
图8.xco等价于sub-project中的默认模块
从这里可以看出,.xco例化模板中使用的就是ipcore_pcie这个模块,正是sub-project 默认的这个模块。
.xco确实等价于sub-project。
总结就是最好就直接ISE中添加.xco形式的IP Core。
当然如果为了看IP核对应的例子,可以自行打开core generator生成的IP Core sub-project。
最后,有的硬核会在sub-project生成.ucf文件,但是作为一个ISE工程,顶层的.ucf文件会屏蔽掉这个IP core专用的ucf。
解决办法是拷贝:A UCF file may be generated along with some cores when the core is elaborated. The constraints in the file can be copied and pasted into the UCF file of an ISE® project.
更多内容,参考Xilinx ISE Help关于IP and Cores的描述。