FPGA—DCM—数字时钟管理器

  • 格式:docx
  • 大小:205.76 KB
  • 文档页数:7

数字时钟管理器
一、设计目的
1、学习设计IPCore,并在使用中体会器便利性;
2、利用IPCore的方式设计一个数字时钟管理器(DigitalClockManager)。

二、设计原理
1、DCM概述
DCM提供了一个完整的可以供片内和片外使用的时钟发生器。

DCM使用完全数字延迟线技术,允许高精度地控制时钟的相位和频率;使用完全的数字反馈系统,可以动态补偿由于温度和电压偏移引起的时钟相位和频率的偏差。

DCM主要具有以下四项特点:数字时钟使同步、数字频率合成、数字相位移动、数字频谱调制。

2、Spartan-3E系列器件DCM模块的引出端口说明
Spartan-3E系列器件DCM模块,引出端示意如图1所示。

图1DCM的引出端
下面对DCM模块的信号作一些简要说明:
CLKIN:输入时钟,是DCM的基准时钟信号。

CLKFB:反馈时钟输入,必须是来自CLK0或CLK2X的时钟。

RST:复位信号。

DSSEN:数字扩频使能控制。

高电平允许。

PSCLK:动态相位移动时钟,只有在动态调相时才有用。

PSEN:动态相位移动使能控制。

高电平允许。

PSINCDEC:动态相位移动增加或减小控制。

高电平,增加相位移动,低电平减小相位移动。

CLK0、CLK90、CLKl80、CLK270:是DCM的输出时钟,它们与CLKIN 的相位差分别固定是0度、90度、180度、270度。

在低频模式下,这4个输出都有效;在高频模式下,只有CLKl80输出有效。

当DCM的属性DLL—FREQI 厄NCY_MODE设为HIGH,即为高频模式,设置为LOW即为低频模式。

CLK2X:DCM的输出时钟,频率是CLKIN的2倍频。

CLK2X180:DCM的输出时钟,与CLK2X同频率,相位差180度。

CLKDV:DCM的输出时钟,是CLK0的分频输出,分频倍数可以设置为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,16。

CLKFX:DCM频率合成器的输出,可以是CLKIN频率的任意倍频或分频。

CLKFXl80:DCM频率合成器的输出,与CLKFX的频率相同,相位差180度。

LOCKED:DCM输出的标志信号,当DCM的锁相环成功实现锁相后,LOCKED输出高电平。

只有在LOCKED=1时,DCM的所有输出时钟才是稳定可靠的。

STATUS[7:0]:DCM输出的状态标志信号。

当STATUS[0]=1,表示相位移动溢出;当STATUS[1]=1,表示CLKIN停止,STATUS[2:7]没用。

PSDONE:DCM的输出标志信号,表示动态调相完成。

对固定调相模式无用。

三、设计步骤
1、建立工程
建立名为DigitalClockManager的VHDL工程文件,如图:
图1建立工程
点击Next,然后点击Finish即可。

之后再建立名为DCM_Module的VHDL文件,以实现对IPCore的调用。

2、选择IPCore的类型及型号
(1)新建名为DCM的IP核文件,如图:
图2 建立IP核
(2)选择IP Core类型和型号
图3 选择IPCore类型
3、DCM参数设置
(1)打开IPCore的参数设置窗口的第一页,并进行参数选择。

图4 DCM参数设置页面1
(2)单击【Next】,进入参数设置页面2,进行时钟缓冲器的设置。

图5 DCM参数设置页面2
(3)单击【Next】,进入参数设置页面2。

图6 DCM参数设置页面3
4、在DCM_Module文件中编写DCM的调用代码,然后进行综合,综合无误后编写激励文件进行仿真并分析。

四、仿真结果
1、仿真分析
图7 仿真波形图
仿真波形图从上至下依次为:CLK_IN时钟,复位信号RST,反馈输入CLKIN_IBUFG,DCM的输出为CLK0,CLK90,CLK2X,CLKDV,CLKFX以及LOCKED 信号。

输入时钟CLKIN的频率是50MHz;当实现锁相后,LOCKED输出高电平,然后DCM的输出时钟才有效;所有的输出时钟相对输入时钟CLK_IN,相位移动(32/256)*20ns=2.5ns,可见PHASE_SHIFT的参数对所有输出时钟的影响是相同的;CLK2X的频率是100MHz,即是CLKIN频率的2倍;由于设置了CLKFX_MULTIPLY=4,CIKFX_DIVIDE=1,则CLKFX的频率是50*4=200MHz,即是CLK_IN的4倍;由于分频参数CLKDV_DIVIDE默认为2,所以CLKDV的频率是50/2=25MHz。

五、思考题
数字时钟管理器DCM,具有时钟使同步、频率合成、相位移动、频谱调制等功能。

“时钟使同步"可以用来减小FPGA片内以及片外的时钟延时偏差;频率合成器允许用较低频率的输入时钟产生高达420MHz的输出时钟,可以降低高速时钟在PCB板上走线造成的信号畸变;移相器可以产生高精度的固定或动态相位移动;数字扩频逻辑可以对1x输出时钟进行频谱调制。

所有这些功能都是数字可编程精确控制的,比传统的分立锁相环等方法更加方便、灵活、可靠。

使用IPCore的设计方法可以大大优化我们的程序设计,并且也比程序写出的分频代码更加的准确可靠。

六、代码
1、顶层代码:
`timescale 1ns / 1ps
module
DCM_module(CLK_IN,RST,CLKIN_IBUFG,CLK0,CLK90,CLK2X,CLKDV,CLKFX,LOCKED);
input CLK_IN,RST,CLKIN_IBUFG;
output CLK0,CLK90,CLK2X,CLKDV,CLKFX,LOCKED;
wire CLK0,CLK90,CLK2X,CLKDV,CLKFX,LOCKED;
DCM DCM(.CLKIN(CLK_IN),.RST(RST),.CLKFB(CLKIN_IBUFG),.CLK0(CLK0),.CLK90(CLK90), .CLK2X(CLK2X),.CLKDV(CLKDV),.CLKFX(CLKFX),.LOCKED(LOCKED));
endmodule
2、激励文件:
`timescale 1ns / 1ps
module DCM_test;
// Inputs
reg CLK_IN;
reg RST;
reg CLKIN_IBUFG;
// Outputs
wire CLK0;
wire CLK90;
wire CLK2X;
wire CLKDV;
wire CLKFX;
wire LOCKED;
// Instantiate the Unit Under Test (UUT)
DCM_moduleuut (
.CLK_IN(CLK_IN),
.RST(RST),
.CLKIN_IBUFG(CLKIN_IBUFG),
.CLK0(CLK0),
.CLK90(CLK90),
.CLK2X(CLK2X),
.CLKDV(CLKDV),
.CLKFX(CLKFX),
.LOCKED(LOCKED)
);
initial begin
CLK_IN = 0;
CLKIN_IBUFG = 0;
forever
begin
#10 CLK_IN = ~CLK_IN;
CLKIN_IBUFG = ~CLKIN_IBUFG;
end
end
initial begin
RST = 1;
#100 RST = 0;
end
endmodule。