您的位置 首页 技术

以Spartan3系列为例 详解FPGA DCM

以Spartan3系列为例 详解FPGA DCM-FPGA看上去就是一个四方形。最边缘是IO Pad了。除去IO Pad,内部还是一个四方形。四个角上各趴着一个DCM。上边缘和下边缘中间则各趴着一个全局Buffer的MUX。这样的好处是四个DCM的输出可以直接连接到全局Buffer的入口。

DCM主要功用

1. 分频倍频:DCM能够将输入时钟进行MulTIply或许Divide,然后得到新的输出时钟

2. 去Skew:DCM还能够消除Clock的Skew,所谓Skew便是因为传输引起的同一时钟抵达不同地址的推迟差。

3. 相移:DCM还能够完结对输入时钟的相移输出,这个相移一般是时钟周期的一个分数。

4. 大局时钟:DCM和FPGA内部的大局时钟分配网络紧密结合,因而功用优异。

5. 电平转化:经过DCM,能够输出不同电平规范的时钟。

DCM的特色与才能(Spartan-3系列为例)

数量:4 DCM / FPGA(也有破例)

— 应该够用了

数字频率归纳器输入(CLKIN):1-280MHz

推迟锁相环输入(CLKIN):18-280MHz

时钟输入源(CLKIN):

Global Buffer Input Pad

Global Buffer Output

General-Purpose I/O (No Deskew)

Internal Logic (No Deskew)

— 上面最终两个分别是外部的一般IO口和内部的逻辑,没有Deskew,所以时钟质量不会很好。

频率归纳器输出(CLKFX、CLKFX180):是CLKIN的M/D倍,其间

M=2..32

D=1..32

— 这样看来最大能倍频32倍,最小能16分频。

时钟Dividor输出(CLKDV):是CLKIN的下列分频

1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 9, 10, 11, 12, 13, 14, 15, Or 16

— 发现没有,最大的分频也是16。不过能支撑半分频,比用频率归纳器便利。

倍频输出(CLK2X、CLK2X180):CLKIN的2倍频

时钟CondiTIoning、占空比调整:这个对一切时钟输出都施加,占空比为50%。

1/4周期相移输出(CLK0/90/180/270):是CLKIN的1/4周期相移输出。

半周期相移输出(CLK0/180、CLK2X/180、CLKFX/180):相差为180度的成对时钟输出。

相移精度:最高精度为时钟周期的1/256。

时钟输出:9个

到大局时钟网的时钟输出:最多9个中的4个

到General Purpose互联:最多9个

到输出脚:最多9个

— 可见9个时钟输出能够随意链接内部信号或许外部输出,可是进入大局时钟网的途径最多只需4个。

DCM的方位在哪?

咱们以Spartan3系列为例。

FPGA看上去便是一个四方形。最边际是IO Pad了。除掉IO Pad,内部仍是一个四方形。四个角上各趴着一个DCM。上边际和下边际中心则各趴着一个大局Buffer的MUX。这样的优点是四个DCM的输出能够直接衔接到大局Buffer的进口。

下面是手绘简图,很丑是吧,呵呵。

以Spartan3系列为例 详解FPGA DCM

以Spartan3系列为例 详解FPGA DCM

DCM是大局时钟网络可选的一部分

一般,时钟经过一个“大局输入Buffer”和“大局时钟Buffer” 进入大局时钟网络。如下所示

GCLK —》( IBUFG —》 BUFG) —》 Low Skew Global Clock Network

在需求的时分,DCM也成为大局时钟网络的一环。

以Spartan3系列为例 详解FPGA DCM

以Spartan3系列为例 详解FPGA DCM

DCM 内部构成一览

1. DLL 推迟确定环

说是推迟确定环,可是我觉得叫做推迟补偿环愈加恰当。因为DLL的主要功用是消除输入时钟和输出时钟之间的推迟,使得输入输出在外部看来是通明衔接。

完结这种功用的原理是:DLL经过输出时钟CLK0或许CLK2X调查实践的线路推迟,然后在内部进行补偿。

一句话,DLL的中心功用是无推迟。

DLL的输出是CLK0, CLK90, CLK180, CLK270, CLK2X, CLK2X180, 和 CLKDV。

2. DFS 数字频率归纳

DFS的主要功用是运用CLKIN组成新的频率。

组成的参数是:M(MulTIplier)和 D(Divisor)。经过MD的组合完结各种倍频和分频。

假如不运用DLL,则DFS的组成频率和CLKIN就不具有相位联系,因为没有推迟补偿,相位就不再同步。

3. PS 相位偏移

留意这个相位偏移不是DLL中输出CLK90/180/270用的。这个PS能够令DCM的一切9个输出信号都进行相位的偏移。偏移的单位是CLKIN的一个分数。

也能够在运转中进行动态偏移调整,调整的单位是时钟的1/256。

这个功用咱们平常不常用。

4. 状况逻辑

这个部分由 LOCKED 信号和 STATUS[2:0] 构成。LOCKED信号指示输出是否和CLKIN同步(同相)。STATUS则指示DLL和PS的状况。

DCM_BASE

DCM_BASE是根本数字时钟办理模块的缩写,是相位和频率可装备的数字锁相环电路,常用于FPGA体系中杂乱的时钟办理。假如需求频率和相位动态重装备,则能够选用DCM_ADV原语;假如需求相位动态偏移,可运用DCM_PS原语。DCM系列原语的RTL结构如图3-8所示。

模块接口信号的阐明如表3-8所列。

以Spartan3系列为例 详解FPGA DCM

DCM_BASE组件能够经过Xilinx的IP Wizard导游发生,也能够直接经过下面的例化代码直接运用。其Verilog的例化代码模板为:

// DCM_BASE: 根本数字时钟办理电路(Base Digital Clock Manager Circuit)

// 适用芯片:Virtex-4/5

// Xilinx HDL库导游版别,ISE 9.1

DCM_BASE #(

.CLKDV_DIVIDE(2.0),

// CLKDV分频比能够设置为: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5

// 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 Or 16.0

.CLKFX_DIVIDE(1), // Can Be Any Integer From 1 To 32

// CLKFX信号的分频比,可为1到32之间的恣意整数

.CLKFX_MULTIPLY(4),

// CLKFX信号的倍频比,可为2到32之间的恣意整数

.CLKIN_DIVIDE_BY_2(“FALSE”),

// 输入信号2分频的使能信号,可设置为TRUE/FALSE

.CLKIN_PERIOD(10.0),

// 指定输入时钟的周期,单位为Ns,数值规模为1.25~1000.00。

.CLKOUT_PHASE_SHIFT(“NONE”),

// 指定移相形式,可设置为NONE或FIXED

.CLK_FEEDBACK(“1X”),

// 指定反应时钟的频率,可设置为NONE、1X或2X。相应的频率联系都是针对CLK0而言的。

.DCM_PERFORMANCE_MODE(“MAX_SPEED”),

// DCM模块功用形式,可设置为 MAX_SPEED 或 MAX_RANGE

.DESKEW_ADJUST(“SYSTEM_SYNCHRONOUS”),

// 颤动调整,可设置为源同步、体系同步或0~15之间的恣意整数

.DFS_FREQUENCY_MODE(“LOW”),

// 数字频率组成形式,可设置为LOW或HIGH 两种频率形式

.DLL_FREQUENCY_MODE(“LOW”),

// DLL的频率形式,可设置为LOW、HIGH或HIGH_SER

.DUTY_CYCLE_CORRECTION(“TRUE”),

// 设置是否选用双周期校对,可设为TRUE或FALSE

.FACTORY_JF(16‘’Hf0f0),

// 16比特的JF因子参数

.PHASE_SHIFT(0),

// 固定相移的数值,可设置为 -255 ~ 1023之间的恣意整数

.STARTUP_WAIT(“FALSE”)

// 等DCM锁相后再推迟装备DONE管脚,可设置为TRUE/FALSE

) DCM_BASE_inst (

.CLK0(CLK0), // 0度移相的DCM时钟输出

.CLK180(CLK180), // 180度移相的DCM时钟输出

.CLK270(CLK270), // 270度移相的DCM时钟输出

.CLK2X(CLK2X), // DCM模块的2倍频输出

.CLK2X180(CLK2X180), // 经过180度相移的DCM模块2倍频输出

.CLK90(CLK90), // 90度移相的DCM时钟输出

.CLKDV(CLKDV), // DCM模块的分频输出,分频比为CLKDV_DIVIDE

.CLKFX(CLKFX), // DCM组成时钟输出,分频比为(M/D)

.CLKFX180(CLKFX180), // 180度移相的DCM组成时钟输出

.LOCKED(LOCKED), // DCM锁相状况输出信号

.CLKFB(CLKFB), // DCM模块的反应时钟信号

.CLKIN(CLKIN), // DCM模块的时钟输入信号

.RST(RST) // DCM 模块的异步复位信号

);

// 完毕DCM_BASE模块的例化进程

在归纳成果剖析时,DCM系列原语的RTL结构如图3-36所示。

以Spartan3系列为例 详解FPGA DCM

图3-36 DCM模块的RTL级结构示意图

Spartan-3 DCM的兼容性

S3 的DCM和 Virtex-II 以及Pro的DCM 功用根本相同。可是S3 DCM的技能归于3代技能,因而在抗噪功用、相移才能方面有进一步进步。(客观的说,对咱们的一般运用,不是特别重要。)

可是和Spartan-2系列比较,有很大改善。S2系列不叫DCM叫DLL,可见DFS和PS等功用完全是新参加的,所以S2系列其实除了二倍频几乎没有倍频和分频才能。从这点来讲,S3真的是用起来很爽了。

DCM 输入时钟的约束

和一切物理器材相同,DCM的工作规模也是受限的。因为DLL和DFS的要求各不相同,因而DCM的输入频率的约束也视乎是否一起运用DLL和DFS仍是独自运用其间之一。假如一起运用,则取约束较严厉者作为整个DCM体系的约束。咱们来看两者的独立约束。

以Spartan3系列为例 详解FPGA DCM

呵呵,这部分内容不必记哦,需求的时分查一下软件或许手册就能够了。只需理解“CLKIN输入频率有约束,并且DLL、DFS一起运用时取其严厉者” 这些道理就能够了。

除了时钟约束之外,关于时钟的质量也有必定约束,主要有3个:

1. CLKIN Cycle-To-Cycle Jitter:约束了前后两个CLKIN周期的差异;

2. CLKIN Period Jitter:约束了100万个Cycle中最大周期和最小周期之间的差异;

3. CLKFB Path Delay Variation:约束了从外部进来的反应回路的推迟动摇,这种推迟动摇在概念上其实和Jitter千篇一律。

详细数值请查手册,知道有这么回事就能够了。

LOCKED信号的行为方法

LOCKED信号用于指示整个DCM体系现已和CLKIN同步,从LOCKED信号有用开端,输出时钟才能够运用,在此之前,输出时钟可能会处于各种杂乱的不安稳状况。咱们来看一下LOCKED信号的行为状况机。

FPGA装备:

If (CLKIN现已安稳) Next_state = 判别同步;

Else Next_state = RST_DCM;

判别同步:

If (现已同步) Next_state = 判别同步;

Else Next_state = 同步失利;

同步失利: Next_state = RST_DCM;

RST_DCM: Next_state = FPGA装备;

现在来看看各个状况下的输出。

Case (State)

FPGA装备: LOCKED = 0;

判别同步: LOCKED = 1;

同步失利: LOCKED = 0;

RST_DCM:LOCKED = 0;

Endcase

RST 信号——重启确定

RST信号用于在时钟不安稳或许失掉确守时,将DCM的相关功用重置,然后重新发动确定追寻。

作为一个输入信号,RST无法被DCM本身置位,因而需求咱们的运用规划来操控这个RST信号,不然需将其接地。

置位RST会将推迟Tap的方方位0,因而可能会发生Glitch或许是Duty Cycle 发生变化,别的相位偏移也会重置回到默许值。

DCM 生成导游

安装了ISE就能得到一系列Accessories。运用其间的Architecture Wizard 咱们能够生成DCM模块。生成的DCM将发生3种输出:

1. 一个例化了DCM的逻辑归纳文件(选用生产商特定格局的VHDL / Verilog)

2. 一个UCF文件操控特定完结

3. 一切其他用户设置都保存到XAW(Xilinx Architecture Wizard)文件中。

接下来描绘一下导游运用进程。

1. 从ISE或许Arch Wizard中发动界面;

2. 第一个页面做根本装备:途径、XAW文件名、VHDL / Verilog挑选、归纳东西、FPGA类型;

3. 进行General Setup,一看就理解,不细说,留意一下几点:

– CLKIN Source 假如选 External 则 DCM 的 CLKIN 会主动衔接到 IBUFG。

– Feedback假如选 Internal 则反应来自 BUFG。

4. 高档设置

– 挑选FPGA的装备进程是否包括DCM的确定,假如是,则装备完结信号DONE将在LOCKED信号有用后方能有用。

– 挑选CLKIN是否要除2。因为DCM的输入频率有限,关于过高的输入时钟经过除2使之可用。

– Deskew调整,这个选项主张在咨询Xilinx工程师后再运用。

5. 时钟输出口 Buffer 设置

– 默许情况下一切输出口都链接 BUFG 大局时钟网络进口

– 因为大局时钟网络的进口有限,用户能够定制时钟输出口衔接到其他类型的Buffer

– Global Buffer:进入大局时钟网络的进口Buffer,共有4个,简称BUFG

– Enabled Buffer:仍是上面的4个大局时钟Buffer,可是装备为有使能信号操控,简称BUFGCE

– Clock MUX:仍是上面的4个大局时钟Buffer,可是装备为 2-To-1 MUX类型,由S信号操控选出,简称BUFGMUX

– Low Skew Line:没有Buffer了,只能运用 Skew 比较小的连线

– Local Routing:连到本地,Skew的要求不是很严厉

– None:制止输出

– 关于Enabled Buffer类型和Clock Mux类型,需求指定En口的姓名

– 需求为输出时钟信号指定姓名或许运用默许

6. 设置DFS

– 设置方针输出频率,然后按Calculate,主动生成 M/D 值和 Jitter 值

– 或许手动设置 M/D 值,然后按Calculate,主动生成频率和 Jitter 值

7. 最终输出所需的3种文件。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/338795.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部