Xilinx_SpartanIIE 内部锁相环(DLL)的使用.doc_第1页
Xilinx_SpartanIIE 内部锁相环(DLL)的使用.doc_第2页
Xilinx_SpartanIIE 内部锁相环(DLL)的使用.doc_第3页
Xilinx_SpartanIIE 内部锁相环(DLL)的使用.doc_第4页
Xilinx_SpartanIIE 内部锁相环(DLL)的使用.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SpartanIIE 内部锁相环(DLL)的使用以下是一个实验,讲述如何使用器件内部锁相环(DLL),很有实际意义,所以拿出来,大家一起学习,一起进步!实验 SpartanIIE 内部锁相环(DLL)的使用一、实验目的1 进一步熟悉FPGA 软硬件开发环境;2 了解FPGA 的内部结构;3 初步掌握DLL 的使用。二、设计任务FPGA 中的DLL 是一种很好的资源,特别是较高频率的时候,应用较广。它可以对时钟进行倍频、锁相等操作。通过设计掌握DLL 的各种应用:倍频,分频,锁相,以及移相的操作,编程演示,通过示波器观察和比较波形。下面先对DLL 做一个简单的介绍。1 概述XILINX 公司的Spartan-IIE 系列提供四个延迟锁相环(Delay-Locked Loop),分别位于芯片内部的四个脚。这些DLL 可以被用来实现一些电路以完善和简化系统级设计,比如提供零传播延迟,低时钟相位差和高级时钟区域控制等。随着FPGA 尺寸的增加,芯片上时钟的分布质量就变得越来越重要。时钟相位差和时钟延迟严重影响设备的性能,在大的设备中用传统的时钟网络控制时钟相位差和时钟延迟变得十分困难,XILINX 公司的Spartan-IIE 系列的四个延迟锁定环(Delay-Locked Loop)恰好解决了这个问题。每一个DLL 可以驱动两个全局时钟,全局时钟分布网络可以根据不同的负载,将时钟相位差最小化。通过观察一个DLL 输出时钟,它可以在网络中补偿延迟,有效的消除了设备内从外部输入端口到时钟装载的延迟。除了根据用户的原时钟信号提供零延迟,DLL 还可以提供原时钟信号的若干倍频段。DLL 可以使时钟加倍,二倍频或四倍频。还可以对时钟信号进行分频,1.5,2,2.5,3,4,5,8,16 分频。DLL 还可以提供固定相位差的时钟,如90、180、270,另外,DLL 可以被用作时钟镜像,通过驱动DLL 芯片外的输出,然后反馈,DLL 可以降低多个设备间的时钟相位差。2 基本原理如图4-1-1 所示,一个最简单的DLL 包括一个“variable delay line”和“control logic”. “variable delay line”产生一个输入信号CLKIN 延迟了的版本。时钟分布网络在所有内部寄存器时钟和CLKFB脚反馈时钟之间布线。“Control logic”.要检测输入时钟和反馈时钟好来调节延迟线。延迟线可以通过电压控制的延迟或一系列离散延迟成分建立。最适用于Virtex DLL 的性能的方法是使用一个离散的数字延迟线。一个DLL 的工作原理是:在输入时钟和反馈时钟中插入延迟,直到两个时钟上升沿相同,使得他们同步。在输入时钟和反馈时钟边沿在一条直线上后,DLL 锁存。电路直到DLL 锁存之后才开始初始,所以两个时钟无区别。所以DLL 的输出时钟补偿了时钟信号在网络的分布延迟,有效的消除了源时钟和负载之间的延迟。图片附件: 1.jpg (2005-9-25 22:39, 17.56 K)图4-1-2 所示是XILINX 公司一个简化了的DLL 宏符号,BUFGDLL 这个宏使用快速有效的方法在设备内部提供零传播延迟的系统时钟。图片附件: 2.jpg (2005-9-25 22:39, 27.83 K)使用BUFGDLL 这个宏,是最简单的由外部时钟产生芯片上的零传播延迟时钟的方法。这个宏使用了IBUFG,CLKDLL,BUFG 来实现最基本的DLL 应用。I 脚提供用户源时钟,DLL 对这个时钟进行操作。对BUFGDLL 输入的源时钟必须在数据表的低频段。时钟输出O 提供已经进行了延迟补偿的时钟。这个输出时钟占空比为1:1,如需要其他占空比,可在属性中对其进行修改。需要注意的是,这个宏符号并不能用于时钟加倍或时钟分频,也不提供 RESET , LOCKED 管脚。如果需要这些功能,必须使用下面的CLKDLL.CLKDLL 提供了DLL 完整的功能。当要用DLL 进行复杂应用时,通常使用CLKDLL。图片附件: 3.jpg (2005-9-25 22:40, 15.08 K)以下介绍各个管脚:源时钟输入-CLKIN: CLKIN 提供用户源时钟,CLKIN 的频率必须在数据表所列范围内。反馈时钟输入-CLKFB: DLL需要一个参考信号或反馈信号来提供延迟补偿输出。将DLL 的输出CLK0或CLK2X 连到反馈时钟输入CLKFB端,给DLL 提供必要的反馈。RESET RST:当RST 有效时,LOCKED 信号是源时钟信号无效。RST 高电平有效,必须连在热键或直接接地。二倍频输出-CLK2X: CLK2X 自动提供占空比为1:1 的倍频信号。分频输出-CLKDV:分频信号提供源信号的低频输出。CLKDV_DIVIDE 属性控制分频比,可以为1.5,2,2.5,3,4,5,8 和16。一倍信号输出 CLK0|90|180|270-CLK0 提供已经进行了延迟补偿的时钟,同时提供三个相移信号输出。输出锁存-LOCKED:为了完成锁存,DLL 可能要检测上千个时钟周期。当DLL 完成锁存之后,LOCKED有效。DLL 的输出特性如下图所示:图片附件: 4.jpg (2005-9-25 22:40, 56.3 K)注意:DLL 位置限制:器件的每个脚有一个DLL,使用时要对它进行分配。位置限制LOC 语句控制有哪个DLL 来工作。LOC 属性使用下面的形式:INST LOC = dll。这里 是0,1,2,3。例: INST MY_DLL LOC = dll1。3 DLL 使用的常见问题输入时钟的最小频率是多少?由实验知,最小频率取决于所使用的DLL。作为时钟分频,最小频率至少是15MHz,作为时钟倍频,最少为20MHz。我们从DLL 可以生成什么? 由XILINX 公司的APPLICATION NOTE 可知,DLL 可提供分频或倍频,以及90、180、270相移的时钟信号。并不推荐级联使用DLL! 由于DLL 对最低输入时钟频率有限制,所以多次倍频会产生高频信号,很可能导致执行工具失败。BUFG 是什么? BUFG 是与时钟分布网络相联的全局时钟缓冲器。如果需要发送三个时钟信号, 出现:ERROR:“ Place:1727 - Xilinx requires usinglocate constraints to preplace such connectedGCLK/GCLKIO/DLL components.”这种情况,你的UCF 文件必须清晰必须标明他们的位置。例如:INST dll0 LOC = DLL0;INST bg0 LOC = GCLKBUF0;INST bg1 LOC = GCLKBUF1;INST bg2 LOC = GCLKBUF2;其中dll0 时你的DLL 实例的名字,bg0,bg1,bg2 时你的BUFG 实例的名字。IBUFG 是什么? IBUFG 是与时钟管脚相连的出入时钟缓冲器。当DLL 锁存之后,为什么我们不能用DLLLOCK 信号RESET 系统?因为DLL 锁存之后,DLL LOCK 信号并不能保证随时都能插入LOCK 信号。DLL 还有其他的频率限制吗?这些频率限制是怎样发现的?这些限制是在仿真和硬件调试中发现的对时间仿真:i/p 频率=25 MHz.对硬件调试:时钟倍频i/p freq = 20 MHz时钟分频i/p freq = 15 MHz三、设计实现DLL 可以实现倍频,分频,锁相,以及移相等操作,下面分别介绍这些操作的设计实现。1 锁相DLL 的锁相用法就是DLL 的标准用法,其原理图如下所示:图片附件: 5.jpg (2005-9-25 22:40, 18.83 K)【DLL 标准用法源程序】dll_standard.v/*模块名称 dll_standard()模块功能 锁相输入输出CLKIN:输入时钟RESET:复位信号CLK0: 输出时钟LOCKED:输出锁存信号*/module dll_standard (CLKIN, RESET, CLK0, LOCKED);input CLKIN, RESET;output CLK0, LOCKED;wire CLKIN_w, RESET_w, CLK0_dll, LOCKED_dll;IBUFG clkpad (.I(CLKIN), .O(CLKIN_w);IBUF rstpad (.I(RESET), .O(RESET_w);CLKDLL dll (.CLKIN(CLKIN_w), .CLKFB(CLK0), .RST(RESET_w),.CLK0(CLK0_dll), .CLK90(), .CLK180(), .CLK270(),.CLK2X(), .CLKDV(), .LOCKED(LOCKED_dll);BUFG clkg (.I(CLK0_dll), .O(CLK0);OBUF lckpad (.I(LOCKED_dll), .O(LOCKED);Endmoduledll_standard.ucfNET CLKIN LOC = p80;NET CLK0 LOC = p205;NET LOCKED LOC = p147;NET RESET LOC=P3;INST dll LOC=DLL0;INST clkg LOC =GCLKBUF0;2 移相移相用法的原理图与倍频用法的原理图很类似,只用把CLK2X 输出端的输出缓存移到CLK90、CLK180 或者CLK270 端即可。这里给出的例子中输出时钟是移相90。【DLL 移相用法源程序】dll_phaseshift.v/*模块名称 dll_phaseshift()模块功能 移相输入输出CLKIN:输入时钟RESET:复位信号CLK90: 输出时钟LOCKED:输出锁存信号*/module dll_phaseshift(CLKIN, RESET, CLK0, CLK90, LOCKED);input CLKIN, RESET;output CLK0, CLK90, LOCKED;wire CLKIN_w, RESET_w, CLK0_dll, CLK90_dll, LOCKED_dll;IBUFG clkpad (.I(CLKIN), .O(CLKIN_w);IBUF rstpad (.I(RESET), .O(RESET_w);CLKDLL dll (.CLKIN(CLKIN_w), .CLKFB(CLK0), .RST(RESET_w),.CLK0(CLK0_dll), .CLK90(CLK90_dll), .CLK180(), .CLK270(),.CLK2X(), .CLKDV(), .LOCKED(LOCKED_dll);BUFG clkg (.I(CLK0_dll), .O(CLK0);BUFG clk90g (.I(CLK90_dll), .O(CLK90);OBUF lckpad (.I(LOCKED_dll), .O(LOCKED);endmoduledll_phaseshift.ucfNET CLKIN LOC = p80;NET CLK0 LOC = p201;NET CLK90 LOC = p205;NET LOCKED LOC = p145;NET RESET LOC=P3;INST dll LOC=DLL0;INST clkg LOC = GCLKBUF0;INST clk90g LOC = GCLKBUF1;3 倍频通过使用DLL 可以使源信号为50M 工作在100M。这一技术可以简化设计板的设计,因为板子上的时钟路径不用考虑高频信号。时钟加倍也提供了时域相乘的另一选择,每个时钟周期使用同一电路两次,比画两个相同电路少占面积。二倍频电路原理图如下图所示:图片附件: 6.jpg (2005-9-25 22:40, 20.48 K)【DLL 二倍频用法源程序】dll_freq_mul.v/*模块名称 dll_freq_mul()模块功能 二倍频输入输出CLKIN:输入时钟RESET:复位信号CLK2X: 输出时钟LOCKED:输出锁存信号*/module dll_standard (CLKIN, RESET, CLK0, CLK2X, LOCKED);input CLKIN, RESET;output CLK0, CLK2X, LOCKED;wire CLKIN_w, RESET_w, CLK0_dll, CLK2X_dll, LOCKED_dll;IBUFG clkpad (.I(CLKIN), .O(CLKIN_w);IBUF rstpad (.I(RESET), .O(RESET_w);CLKDLL dll (.CLKIN(CLKIN_w), .CLKFB(CLK0), .RST(RESET_w),.CLK0(CLK0_dll), .CLK90(), .CLK180(), .CLK270(),.CLK2X(CLK2X_dll), .CLKDV(), .LOCKED(LOCKED_dll);BUFG clkg (.I(CLK0_dll), .O(CLK0);BUFG clk2xg (.I(CLK2X_dll), .O(CLK2X);OBUF lckpad (.I(LOCKED_dll), .O(LOCKED);endmoduledll_freq_mul.ucfNET CLKIN LOC = p80;NET CLK0 LOC = p201;NET CLK2X LOC = p205;NET LOCKED LOC = p145;NET RESET LOC=P3;INST dll LOC=DLL0;INST clkg LOC = GCLKBUF0;INST clk2xg LOC = GCLKBUF1;通过将两个时钟加倍的DLL 串联,可以得到四倍后的时钟。其原理图如下所示:图片附件: 7.jpg (2005-9-25 22:41, 45.37 K)【DLL 四倍频用法源程序】dll_freq4x.v/*模块名称 dll_freq4x()模块功能 四倍频输入输出CLKIN:输入时钟RESET:复位信号CLK2X: 二倍频时钟输出CLK4X: 四倍频时钟输出LOCKED: 输出锁存信号*/module dll_standard (CLKIN, RESET, CLK2X, CLK4X, LOCKED);input CLKIN, RESET;output CLK2X, CLK4X, LOCKED;wire CLKIN_w, RESET_w, CLK2X_dll, CLK4X_dll, LOCKED2X;wire LOCKED2X_delay, RESET4X;wire logic1;assign logic1 = 1b1;IBUFG clkpad (.I(CLKIN), .O(CLKIN_w);IBUF rstpad (.I(RESET), .O(RESET_w);CLKDLL dll2x (.CLKIN(CLKIN_w), .CLKFB(CLK2X), .RST(RESET_w),.CLK0(), .CLK90(), .CLK180(), .CLK270(),.CLK2X(CLK2X_dll), .CLKDV(), .LOCKED(LOCKED2X);BUFG clk2xg (.I(CLK2X_dll), .O(CLK2X);SRL16 rstsrl (.D(LOCKED2X), .CLK(CLK2X), .Q(LOCKED2X_delay),.A3(logic1), .A2(logic1), .A1(logic1), .A0(logic1);assign RESET4X = !LOCKED2X_delay;CLKDLL dll4x (.CLKIN(CLK2X), .CLKFB(CLK4X), .RST(RESET4X),.CLK0(), .CLK90(), .CLK180(), .CLK270(),.CLK2X(CLK4X_dll), .CLKDV(), .LOCKED(LOCKED_dll);BUFG clk4xg (.I(CLK4X_dll), .O(CLK4X);OBUF lckpad (.I(LOCKED_dll), .O(LOCKED);endmoduledll_freq4x.ucfNET CLKIN LOC = P80;NET CLK2X LOC = P201;NET CLK4X LOC = P205;NET LOCKED LOC = P147;NET RESET LOC = P3;INST dll2X LOC = DLL0;INST dll4X LOC = DLL1;4 分频移相用法的原理图与倍频用法的原理图很类似,只用把CLK2X 输出端的输出缓存移到CLKDV 端即可。CLKDV_DIVIDE 属性控制分频比,可以为1.5,2,2.5,3,4,5,8 和16,其默认值是2。【DLL 分频用法源程序】dll_freq_div.v/*模块名称 dll_freq_div()模块功能 分频输入输出CLKIN:输入时钟RESET:复位信号CLK2X: 输出时钟LOCKED:输出锁存信号*/module dll_freq_div(CLKIN, RESET, CLK0, CLKDV, LOCKED);input CLKIN, RESET;output CLK0, CLKDV, LOCKED;wire CLKIN_w, RESET_w, CLK0_dll, CLKDV_dll, LOCKED_dll;IBUFG clkpad (.I(CLKIN), .O(CLKIN_w);IBUF rstpad (.I(RESET), .O(RESET_w);CLKDLL dll (.CLKIN(CLKIN_w), .CLKFB(CLK0), .RST(RESET_w),.CLK0(CLK0_dll), .CLK90(), .CLK180(), .CLK270(),.CLK2X(), .CLKDV(CLKDV_dll), .LOCKED(LOCKED_dll);BUFG clkg (.I(CLK0_dll), .O(CLK0);BUFG clkdvg (.I(CLKDV_dll), .O(CLKDV);OBUF lckpad (.I(LOCKED_dll), .O(LOCKED);endmoduledll_freq_div.ucfNET CLKIN LOC = p80;NET CLK0 LOC = p201;NET CLKDV LOC = p205;NET LOCKED LOC = p145;NET RESET LOC=P3;INST dll LOC=DLL0;INST clkg LOC = GCLKBUF0;INST clkdvg LOC = GCLKBUF1;四、实验仪器及设备1EITS2003 实验平

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论