基于FPGA片内锁相环的窗口时钟生成和动态配置方法转让专利

申请号 : CN201110050328.0

文献号 : CN102208911B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 殷晔王石记付旺超徐鹏程安佰岳杜影

申请人 : 北京航天测控技术有限公司

摘要 :

本发明提供一种基于FPGA片内锁相环的窗口时钟生成和动态配置方法,根据所需窗口时钟以及输入时钟频率,计算FPGA片内锁相环的配置参数;向FPGA发送锁相环配置参数,FPGA接收配置参数,在收到启动命令后开始片内锁相环动态重配置过程;FPGA片内锁相环输出多个时钟,每两个时钟通过FPGA内部处理合成所需窗口时钟并输出。本发明根据所需窗口时钟以及输入时钟的频率设置FPGA片内锁相环的配置参数,在FPGA内部合成窗口时钟,对外部配置的硬件要求少,提供的窗口时钟可控性高、电磁兼容性好。

权利要求 :

1.一种基于FPGA片内锁相环的窗口时钟生成和动态配置方法,其特征在于,具体步骤为:步骤一、在FPGA内部划分如下功能模块:锁相环重配置模块、片内锁相环以及窗口时钟合成模块;

步骤二、根据所需窗口时钟,设计合成所需窗口时钟的时钟信号;当需要一个窗口时钟时,则所述的时钟信号为一组C0和C1,当需要多个窗口时钟时,则所述的时钟信号为多组C0和C1;其中,C1的下降沿由所需窗口时钟的上升沿决定,C0的下降沿由所需窗口时钟的下降沿决定,且C1的上升沿超前于C0上升沿2ns;根据所述时钟信号以及输入时钟频率,计算片内锁相环的配置参数;其中所述配置参数包括前倍频数、后分频数、后分频高计数以及后分频低计数,每组时钟信号的配置参数的计算过程相同,如下:根据公式(1)计算所需窗口时钟上升沿、下降沿出现时刻的粗调分辨率step,单位为纳秒ns;

step=1/fvco (1)

其中,fvco为片内锁相环中的压控振荡器VCO输出频率;

利用公式(2)根据所需窗口时钟频率与输入时钟频率之比,计算锁相环前倍频数M和锁相环后分频数N的关系;

P=fwin/fin

P=M/N (2)

其中,fin为输入时钟频率,fwin为所需窗口时钟频率;

根据公式(3)和(4)计算时钟C0的后分频高计数H0和后分频低计数L0;

N=H0+L0 (3)H0=tdeass/step (4)其中,tdeass为所需窗口时钟的下降沿时刻;

根据公式(5)和(6)计算时钟C1的后分频高计数H1和后分频低计数L1;

N=H1+L1 (5)

H1=tass/step (6)

其中,tass为所需窗口时钟的上升沿时刻;

根据公式(7)计算压控振荡器VCO输出频率fvcofvco=fin×M (7)

步骤三:向FPGA发送配置参数,锁相环重配置模块接收配置参数,在收到启动命令后开始片内锁相环动态配置;

步骤四:当所需窗口时钟为一个时,片内锁相环输出一组时钟信号,当所需窗口时钟为多个时,片内锁相环输出多组时钟信号,每组时钟信号通过窗口时钟合成模块内部处理合成所需窗口时钟并输出;其中,所述处理合成为:每组的时钟信号C1取反后与C0做相与运算获得所需窗口时钟;

步骤五、当所需窗口时钟与前一时刻生成的窗口时钟不一致时,根据当前所需窗口时钟以及输入时钟频率,重新执行步骤二至四,实现对PFGA片内锁相环动态配置。

2.根据权利要求1所述的基于FPGA片内锁相环的窗口时钟生成和动态配置方法,其特征在于,所述的启动命令为输入时钟,该输入时钟是外部直接输入到FPGA片内锁相环上,或者是通过锁相环重配置模块传输给片内锁相环。

3.根据权利要求1所述的基于FPGA片内锁相环的窗口时钟生成和动态配置方法,其特征在于,所述FPGA选取Altera公司的Stratix Ⅱ系列的FPGA;所述配置参数进一步包括相位参数,该相位参数包括相位调整方向dir、相位调整次数cnt和相位调整使能en;每组时钟信号的相位参数的计算过程相同,如下:根据公式(9)计算C0的相位调整次数cnt0cnt0=∣(tass-step×H0)/stepf| (9)根据公式(10)计算C1的相位调整次数cnt1cnt1=∣(tdeass-step×H1)/stepf| (10)其中,stepf=step/8为细调分辨率,上述“∣∣”为绝对值运算符;

根据下述方法设置C0的相位调整方向参数;

当(tass-step×H0)小于0时,dir0=0;

当(tass-step×H0)大于0时,dir0=1;

根据下述方法设置C1的相位调整方向参数;

当(tdeass-step×H1)小于0时,dir1=0;

当(tdeass-step×H1)大于0时,dir1=1;

根据下述方法设置C0的相位调整使能参数;

当(tass-step×H0)等于0时,en0=0;

当(tass-step×H0)不等于0时,en0=1;

根据下述方法设置C1的相位调整使能参数;

当(tdeass-step×H1)等于0时,en1=0;

当(tdeass-step×H1)不等于0时,en1=1;

在所述步骤三中的动态配置的过程中进一步包括对相位参数进行配置。

说明书 :

基于FPGA片内锁相环的窗口时钟生成和动态配置方法

技术领域

[0001] 本发明属于时钟信号处理技术领域,具体涉及一种基于FPGA片内锁相环的窗口时钟生成和动态配置方法。

背景技术

[0002] 时钟信号在所有电子电路中都是必不可少的,而窗口时钟则是一种比较特殊的时钟信号。窗口时钟在自动测试领域应用较多,可用于一些需要产生脉冲宽度、相位可调信号并对调整分辨率有很高要求的设备;或是可用于一些需要对电路信号进行时序调整或分析的设备,比如一些数字I/O、时序测量仪器。现有的窗口时钟生成装置通常采用外部电路配合专用的时钟处理芯片来产生窗口时钟,因此对装置外部的硬件设备要求较高;同时由于外部硬件设备复杂,在工作的过程中可靠性低,电磁兼容性较差。

发明内容

[0003] 本发明的目的是提供一种基于FPGA片内锁相环的窗口时钟生成和动态配置方法,根据所需窗口时钟的需求设置FPGA片内锁相环的参数,在FPGA内部合成所需窗口时钟,对外部配置的硬件要求少,提供的窗口时钟可控性高。本发明是通过如下方案实现的:
[0004] 一种基于FPGA片内锁相环的窗口时钟生成和动态配置方法,具体步骤为:
[0005] 步骤一、在FPGA内部划分如下功能模块:锁相环重配置模块、片内锁相环以及窗口时钟合成模块;
[0006] 步骤二、根据所需窗口时钟,设计合成所需窗口时钟的时钟信号;当需要一个窗口时钟时,则所述的时钟信号为一组C0和C1,当需要多个窗口时钟时,则所述的时钟信号为多组C0和C1;其中,C1的下降沿由所需窗口时钟的上升沿决定,C0的下降沿由所需窗口时钟的下降沿决定,且C1的上升沿超前于C0上升沿2ns;根据所述时钟信号以及输入时钟频率,计算片内锁相环的配置参数;其中所述配置参数包括前倍频数、后分频数、后分频高计数以及后分频低计数,每组时钟信号的配置参数的计算过程相同,如下:
[0007] 根据公式(1)计算所需窗口时钟上升沿、下降沿出现时刻的粗调分辨率step,单位为纳秒ns;
[0008] step=1/fvco (1)
[0009] 其中,fvco为片内锁相环中的压控振荡器VCO输出频率;
[0010] 利用公式(2)根据所需窗口时钟频率与输入时钟频率之比,计算锁相环前倍频数M和锁相环后分频数N的关系;
[0011] P=fwin/fin
[0012] P=M/N (2)
[0013] 其中,fin为输入时钟频率,fwin为所需窗口时钟频率;
[0014] 根据公式(3)和(4)计算时钟C0的后分频高计数H0和后分频低计数L0;
[0015] N=H0+L0 (3)
[0016] H0=tdeass/step (4)
[0017] 其中,tdeass为所需窗口时钟的下降沿时刻;
[0018] 根据公式(5)和(6)计算时钟C1的后分频高计数H1和后分频低计数L1;
[0019] N=H1+L1 (5)
[0020] H1=tass/step (6)
[0021] 其中,tass为所需窗口时钟的上升沿时刻;
[0022] 根据公式(7)计算压控振荡器VCO输出频率fvco
[0023] fvco=fin×M (7)
[0024] 步骤三:向FPGA发送配置参数,锁相环重配置模块接收配置参数,在收到启动命令后开始片内锁相环动态配置;
[0025] 步骤四:当所需窗口时钟为一个时,片内锁相环输出一组时钟信号,当所需窗口时钟为多个时,片内锁相环输出多组时钟信号,每组时钟信号通过窗口时钟合成模块内部处理合成所需窗口时钟并输出;其中,所述处理合成为:每组的时钟信号C1取反后与C0做相与运算获得所需窗口时钟;
[0026] 步骤五、当所需窗口时钟与前一时刻生成的窗口时钟不一致时,根据当前所需窗口时钟以及输入时钟频率,重新执行步骤二至四,实现对PFGA片内锁相环动态配置。
[0027] 本发明所述FPGA选取Altera公司的Stratix II系列的FPGA;所述配置参数进一步包括相位参数,该相位参数包括相位调整方向dir、相位调整次数cnt和相位调整使能en;每组时钟信号的相位参数的计算过程相同,如下:
[0028] 根据公式(9)计算C0的相位调整次数cnt0。
[0029] cnt0=|(tass-step×H0)/stepf| (9)
[0030] 根据公式(10)计算C1的相位调整次数cnt1。
[0031] cnt1=|(tdeass-step×H1)/stepf | (10)
[0032] 其中,stepf=step/8为细调分辨率,上述“||”为绝对值运算符;
[0033] 根据下述方法设置C0的相位调整方向参数;
[0034] 当(tass-step×H0)小于0时,dir0=0;
[0035] 当(tass-step×H0)大于0时,dir0=1;
[0036] 根据下述方法设置C1的相位调整方向参数;
[0037] 当(tdeass-step×H1)小于0时,dir1=0;
[0038] 当(tdeass-step×H1)大于0时,dir1=1;
[0039] 根据下述方法设置C0的相位调整使能参数;
[0040] 当(tass-step×H0)等于0时,en0=0;
[0041] 当(tass-step×H0)不等于0时,en0=1;
[0042] 根据下述方法设置C1的相位调整使能参数;
[0043] 当(tdeass-step×H1)等于0时,en1=0;
[0044] 当(tdeass-step×H1)不等于0时,en1=1;
[0045] 在所述步骤三中的动态配置的过程中进一步包括对相位参数进行配置。
[0046] 有益效果
[0047] 本发明根据所需窗口时钟以及输入时钟的频率设置FPGA片内锁相环的配置参数,在FPGA内部通过窗口时钟合成模块合成窗口时钟,对外部配置的硬件要求少,提供的窗口时钟可控性高、电磁兼容性好。
[0048] 其次,在所需窗口时钟发生变化时,可以对FPGA中片内锁相环的参数进行重新配置,以满足输出不同窗口时钟的需求。
[0049] 再次,选用选取Altera公司的Stratix II系列FPGA,其具有功耗低、集成度高、使用灵活以及性能好等优点,使得合成的窗口时钟稳定性好

附图说明

[0050] 图1为本发明窗口时钟生成和动态配置方法的流程图。
[0051] 图2为本发明窗口时钟生成和动态配置方法的总体结构示意图。
[0052] 图3为本发明中窗口时钟合成示意图。
[0053] 图4为本发明中窗口时钟示意图。

具体实施方式

[0054] 下面结合附图与具体实施方式对本发明作进一步详细说明。
[0055] 由于现有窗口时钟生成装置通常采用外部电路配合专用的时钟处理芯片来实现,因此对外部电路要求高,且由于电路上硬件之间的相互影响,生成窗口时钟的电磁兼容性较差、可靠性低,因此寻求一种直接在芯片内合成窗口时钟方法以降低外部配合电路的要求,是解决现有窗口时钟电磁兼容性差以及可靠性低的关键技术。
[0056] 如图1所示,该图为基于FPGA片内锁相环的窗口时钟生成和动态配置方法,具体步骤为:
[0057] 步骤一、在FPGA内部划分如下功能模块:锁相环重配置模块、片内锁相环以及窗口时钟合成模块;
[0058] 步骤二:根据所需窗口时钟以及输入时钟频率,计算FPGA片内锁相环的配置参数;所述配置参数包括前倍频数、后分频数、后分频高计数、后分频低计数以及相位参数。
[0059] 由于一个窗口时钟可通过两个时钟进行合成,如图3所示,例如本实施例中选择时钟C1和时钟C0合成所需窗口时钟;其中所述合成为:时钟C1取反后与时钟C0做相与(&)运算即可得到窗口时钟,窗口时钟上升沿时刻tass由C1的下降沿决定,窗口时钟下降沿时刻tdeass由C0的下降沿决定。同时,C1比C0超前,这种处理方式可以有效的消除窗口时钟合成过程中出现的毛刺,C1超前C0的时间在2ns左右即可确保窗口时钟不出现毛刺。同一个片内锁相环对于所有输出时钟的调整分辨率step、前倍频数M和后分频数N值是相等的。
[0060] 计算FPGA片内锁相环的相关参数,其中片内锁相环是FPGA内部的一个核,当需要对利用其功能获取所需的时钟信号,只需对一些配置参数进行设定,具体配置参数计算过程如下:
[0061] 根据公式(1)计算所需窗口时钟上升沿、下降沿出现时刻的粗调分辨率step,单位为纳秒ns;
[0062] step=1/fvco (1)
[0063] 其中,fvco为锁相环压控振荡器VCO输出频率。
[0064] 根据公式(2)根据所需窗口时钟频率与输入时钟频率之比,计算锁相环前倍频数M和锁相环后分频数N的关系;
[0065] P=fwin/fin
[0066] P=M/N (2)
[0067] 其中,fin为输入时钟频率,fwin为所需窗口时钟频率。
[0068] 根据公式(3)和(4)计算时钟C0的后分频高计数H0和后分频低计数L0;
[0069] N=H0+L0 (3)
[0070] H0=t/step (4)
[0071] 其中,t=tdeass为所需窗口时钟的下降沿时刻。
[0072] 根据公式(5)和(6)计算时钟C1的后分频高计数H1和后分频低计数L1;
[0073] N=H1+L1 (5)
[0074] H1=t/step (6)
[0075] 其中,t=tass为所需窗口时钟的上升沿时刻。
[0076] 根据公式(7)计算压控振荡器VCO输出频率fvco
[0077] fvco=fin*M (7)
[0078] M、N、H、P和L必须是大于0的整数,其中H的值根据计算结果进行四舍五入。
[0079] 其中,在计算过程中,M和N参数只要符合公式(2)的约束即可,并不能计算出确切的值。可以在片内锁相环性能允许的条件下取M的最大值,根据公式(7)和公式(1),当M值最大时,fvco最大,step最小,窗口参数的调整分辨率也最高。在本发明中,M可以根据需要取值,取最大值并不是必须的。
[0080] 利用本发明生成窗口时钟的过程中,在不对片内锁相环进行相位参数的配置时,其窗口时钟各参数的调整步进可达到1ns左右。为了进一步使窗口时钟各参数的调整步进更小,本发明进一步对对片内锁相环进行相位参数的配置,其窗口时钟各参数的调整步进可达到100ps左右。
[0081] 移相操作的步进比粗调分辨率更小,本发明中将移相的步进称为细调分辨率。细调分辨率以及相位参数的计算方法与FPGA的型号和生产厂商相关,使用不同型号和厂商的FPGA,计算方法也会有所不同。
[0082] 本发明选取Altera公司的Stratix II系列FPGA,其具有功耗低、集成度高、使用灵活以及性能好等优点。下面对其相位参数的计算方法进行说明。相位参数包括相位调整方向dir、相位调整次数cnt和相位调整使能en。细调分辨率stepf为VCO输出时钟的周期的八分之一,其计算公式如式(8)。
[0083] stepf=step/8 (8)
[0084] 根据公式(9)计算C0的相位调整次数cnt0。
[0085] cnt0=|(tass-step×H0)/stepf | (9)
[0086] 根据公式(10)计算C1的相位调整次数cnt1。
[0087] cnt1=|(tdeass-step×H1)/stepf | (10)
[0088] 其中,stepf=step/8为细调分辨率,上述“||”为绝对值运算符;
[0089] 根据下述方法设置C0的相位调整方向参数;
[0090] 当(tass-step×H0)小于0时,dir0=0;
[0091] 当(tass-step×H0)大于0时,dir0=1;
[0092] 根据下述方法设置C1的相位调整方向参数;
[0093] 当(tdeass-step×H1)小于0时,dir1=0;
[0094] 当(tdeass-step×H1)大于0时,dir1=1;
[0095] 根据下述方法设置C0的相位调整使能参数;
[0096] 当(tass-step×H0)等于0时,en0=0;
[0097] 当(tass-step×H0)不等于0时,en0=1;
[0098] 根据下述方法设置C1的相位调整使能参数;
[0099] 当(tdeass-step×H1)等于0时,en1=0;
[0100] 当(tdeass-step×H1)不等于0时,en1=1。
[0101] 步骤三:完成参数计算后,向FPGA发送锁相环配置参数,锁相环重配置模块接收配置参数,在收到启动命令后开始片内锁相环动态重配置过程。如图2所示,FPGA中锁相环重配置模块接收配置参数并进行转换,生成片内锁相环可以识别的形式并传输给片内锁相环;片内锁相环根据配置参数以及外部输入的配置命令对其调整分辨率、前倍频数、后分频数、后分频高计数、后分频低计数以及相位参数进行配置,其中所述的启动命令为输入时钟,该输入时钟可以是外部直接输入到FPGA片内锁相环上,也可以通过锁相环重配置模块将外部输入的时钟传输给片内锁相环。
[0102] 步骤四:FPGA片内锁相环输出时钟C0和时钟C1给窗口时钟合成模块,FPGA中窗口时钟合成模块将输出的时钟C1和时钟C0合成窗口时钟。具体的过程为:C1取反后与C0做与(&)运算即可得到窗口时钟,如图3所示。C1比C0超前,这种处理方式可以有效的消除窗口时钟合成过程中出现的毛刺,C1超前C0的时间在2ns左右即可确保窗口时钟不出现毛刺。
[0103] 本发明基于FPGA片内锁相环的窗口时钟生成和动态配置方法,根据输出时钟的需要对片内锁相环的参数进行配置,使其输出的满足在不同时刻输出不同的窗口时钟。如图4所示,该图为本发明所述窗口时钟示意图。图中T为窗口时钟的一个整周期,T1为窗口时钟上升沿的出现时刻,T2为下降沿的出现时刻。虚线部分为窗口移动后形成的窗口时钟,即对片内锁相环进行重新配置后的窗口时钟,T3为重新配置后窗口时钟的上升沿出现时刻,T4为重新配置后窗口时钟的下降沿出现时刻。本发明在不使用片内锁相环的移相功能时,窗口时钟各参数的调整步进可达到1ns左右,使用移相功能后,窗口时钟各参数的调整步进可达到100ps左右。
[0104] 步骤五:当所需窗口时钟与前一时刻生成的窗口时钟不一致时,根据当前所需窗口时钟以及输入时钟频率,重新执行步骤二至四,实现对PFGA片内锁相环动态配置。