Verilog/FPGA|LogiCORE IP Clocking Wizard 之 Core Architecture(时钟IP核的核架构介绍)
背景
之前写过一篇博文:Xilinx IP核专题之PLL IP核介绍,讲的是如何用ISE的CORE generator产生一个PLL核的实际实现过程,写的也比较仔细,里面的参数是根据数据手册了解的,自从那篇博文写完之后,我一直觉得这样的理解还比较浅显,于是有了今天的这篇博文,一起认识一下这个时钟核的架构。
The Clocking Wizard generates source code HDL to implement a clocking network. The generated clocking network typically consists of a clocking primitive (MMCME2_ADV or PLLE2_ADV) plus some additional circuitry which typically includes buffers and clock pins.时钟向导通过产生硬件描述语言(HDL)的源代码实现了一个时钟网络。这个产生的时钟网络包括一个时钟原语(MMCME2_ADV or PLLE2_ADV)和一些额外的电路,典型的包括一些buffers和时钟引脚(clock pins)。
The network is divided into segments as illustrated in Figure 3-2. Details of these segments are described in the following sections.这个时钟网络被分为一些部分,如下图示:
文章图片
下面讲述这些部分的一些细节问题:
注:看下面的细节之前一定要结合上面提到的那篇文章看,因为一些相关的Clocking Wizard参数配置是和构架的segment有关的。
- Input Clocks
Up to two input clocks are available for the clocking network. Buffers are optionally inserted on the input clock paths based on the buffer type that is selected.这个时钟网络最多有两个输入时钟,如果有两个不就是差分时钟输入吗?如果是差分时钟,那么输入时钟路径上的缓冲就是一个差分缓冲buff,例如:IBUFGDS。
时钟网络最多有两个输入时钟。 根据所选的缓冲区类型,可选择在输入时钟路径上插入缓冲区。
如果有一个时钟输入,自然就是非差分时钟了,也就是单端的时钟输入,此时输入时钟路径上用一个IBUFG就好了。
有关这方面的内容,看这篇博文:【FPGA】IBUFG、IBUFGDS、IBUFDS...(这些到底是啥?)(一个菜鸟的追问?),写的很不错的,虽然还不够太完美,如果有幸我会总结一篇更好的。
Primitive Instantiation
The primitive, either user or wizard selected, is instantiated into the network. Parameters on primitives are set by the wizard, and can be overridden by you. Unused input ports are tied to the appropriate values. Unused output ports are labeled as such.有关原语到底是什么?
原语,无论是用户选择的还是向导选择的,都被例化到网络中。原语的相关参数由向导设置,也可以由用户自己覆盖(也就是自己设置)。未使用的输入端口被固定为一个合适值。未使用的输出端口被标记出来(连接到交付的源代码中标记为未使用的信号)。
原语就是一个功能模块,例如上面的时钟网络中的Configured Clocking Primitive也是一个原语呀, 通过配置完成一定的功能。知道了原语就是完成特定功能的小模块后,我们就能了解通过配置原语就能实现一些功能。
下面这段话来自于:Xilinx公司原语的使用方法,我看了一眼,发现描述的还不错,贴出来一句看看。
原语,其英文名字为Primitive,是Xilinx针对其器件特征开发的一系列常用模块的名字,用户可以将其看成Xilinx公司为用户提供的库函数,类似于C++中的“cout”等关键字,是芯片中的基本元件,代表FPGA中实际拥有的硬件逻辑单元,如LUT,D触发器,RAM等,相当于软件中的机器语言。在实现过程中的翻译步骤时,要将所有的设计单元都转译为目标器件中的基本元件,否则就是不可实现的。原语在设计中可以直接例化使用,是最直接的代码输入方式,其和HDL语言的关系,类似于汇编语言和C语言的关系。
Xilinx器件原语
这个写的更简洁易懂。
Feedback(反馈)
If phase alignment is not selected, the feedback output port on the primitive is automatically tied to the feedback input port. If phase alignment with automatic feedback is selected, the connection is made, but the path delay is matched to that of CLK_OUT1. If user-controlled feedback is selected, the feedback ports are exposed.Output Clocks
如果未选择相位对齐,则原语上的反馈输出端口将自动连接到反馈输入端口。 如果选择了具有自动反馈的相位对齐,则同样建立连接,但路径延迟与CLK_OUT1的路径延迟匹配。 如果选择了用户控制的反馈,则会显示反馈端口。
Buffers that are user-selected are added to the output clock path, and these clocks are provided to the user.输出时钟和输入时钟一样,都会有一个buffer添加到输出时钟路径上,然后输出时钟提供给用户。这个buffer的作用呢有缓冲也有驱动的意思,至于驱动就是如果有多个时钟输出,就必须添加这个buffer来增加扇出能力。
I/O Signals
All ports are optional, with the exception that at least one input and one output clock are required. Availability of ports is controlled by user-selected parameters. For example, when Dynamic Reconfiguration is selected, only those ports related to Dynamic Reconfiguration are exposed to the user. Any port that is not exposed is either tied off or connected to a signal labeled unused in the delivered source code. Not all ports are available for all devices or primitives; for example, Dynamic Phase Shift is not available when Spread Spectrum is selected.所有端口都是可选的,但需要至少一个输入和一个输出时钟。 端口的可用性由用户选择的参数控制。 例如,选择“动态重新配置”时,只有与动态重新配置相关的端口才会向用户公开。 任何未公开的端口要么被绑定,要么连接到交付的源代码中标记为未使用的信号。 并非所有端口都适用于所有设备或原语; 例如,选择Spread Spectrum时,动态相移不可用。
【Verilog/FPGA|LogiCORE IP Clocking Wizard 之 Core Architecture(时钟IP核的核架构介绍)】
推荐阅读
- FPGA|DDR3原理总结
- FPGA开发--Quartus|FPGA开发--Quartus II常见警告说明及解决方案
- FPGA期末项目|FPGA期末项目 | 数字时钟
- verilog中assign和always@(*)两者描述组合逻辑时的差别
- Altera|Altera特殊管脚的使用(适用全系列Altera FPGA,MSEL区别除外)-来自altera论坛
- 笔记|FPGA里面的时钟管理
- verilog 时钟管理模块
- 关于PIC和FPGA
- FPGA学习笔记7-Quartus|FPGA学习笔记7-Quartus II其余的部分TCL指令(翻译)
- RGB转YUV的verilog实现和验证