一种FPGA及其时序收敛方法与流程

文档序号:20031375发布日期:2020-02-28 10:25阅读:324来源:国知局
一种FPGA及其时序收敛方法与流程

本发明涉及一种fpga及其的时序收敛方法,属于fpga及嵌入式开发技术领域。



背景技术:

传统的fpga与从芯片的接口通信有两种同步方式,一种是系统同步方式,一种是源同步方式,其中,系统同步方式下的接口通信原理如图1所示,晶振的时钟分成两路,分别给fpga及从芯片提供系统时钟,针对系统同步方式,fpga开发工具有成熟的时序约束及收敛方法。另外一种源同步方式下的接口通信原理如图2所示,时钟线和数据线都由数据发送端提供,当fpga发送数据时,fpga同时提供数据的同步接口(用于发送同步时钟),当接fpga的从芯片发送数据时,由从芯片提供数据和时钟,这种方式被称为源同步方式,针对这种方式,fpga开发工具也有成熟的时序约束及收敛方法。

如图3所示,是系统同步方式的时序收敛及约束的原理图,fpga开发工具默认的系统同步时序约束,分为输入约束和输出约束,输入约束用来约束从fpga管脚输入到fpga内部第一级输入寄存器的数据走线的长度,输出约束用来约束fpga的最后一级发送寄存器到输出管脚的数据走线长度。这两种约束值(即输入/输出管脚约束值)通过系统同步固有的公式将电路中的一些参数代入,可直接计算出其走线的最大延时长度和最小延时长度范围(走线延时正比于走线长度),将计算出的走线延时范围告诉fpga开发工具,fpga开发工具在布局布线时需要按照预先设定的值,满足其最大和最小的范围,如果fpga最终布局布线的范围满足预先设定,则实现了设计的时序收敛,如果不能满足,则不能实现时序收敛。传统的源同步的约束原理基本类似,不再做详细描述。

但是,目前相当一部分芯片,比如ad,da,phy,flash等芯片,其数字接口采用了类似spi的接口,其与fpga的接口方式如图4所示,其系统时钟由晶振外部提供,经过fpga内部同步及调整后输出给从芯片,作为与从芯片进行数据收发的同步时钟,这种接线方式不同于传统的时钟同步方法,因此定义为第三种时钟同步方式,fpga开发工具没有成熟的时序收敛方法及模型,需要开发者在完成fpga内部的布局布线后,通过人工计算外围电路及fpga内部路径及寄存器的各级延时后,得出时序参数,通过人工判断是否满足时序收敛。这种方法每次进行fpga的布局布线后都需要重新计算参数,不具备通用性,而且每次计算的时钟和数据延时都是不可预测,没有成熟的计算公式,最终无法自动实现时序收敛。



技术实现要素:

本发明的目的在于提供一种fpga及其时序收敛方法,用于解决现有第三种时钟同步方式无法实现时序收敛的问题。

本发明的一种fpga的时序收敛方法采用如下技术方案:

获取由晶振发送的基准时钟;

将所述基准时钟经过第一锁相环进行第一时钟偏移调节,再通过oddr模块输出工作时钟至从芯片;

将所述基准时钟经过第二锁相环进行第二时钟偏移调节,调节后的时钟作为输出数据寄存器的同步时钟;

根据第一时钟偏移、oddr模块的最大路径延时、从芯片时钟到数据输出的最大延时、fpga输入数据的路径最大延时、全局时钟偏斜与接收从芯片发送数据的建立时间的关系,计算得到fpga输入数据的路径最大延时范围;

根据第一时钟偏移、oddr模块的最小路径延时、从芯片时钟到数据输出的最小延时、fpga输入数据的路径最小延时、全局时钟偏斜与接收从芯片发送数据的保持时间的关系,计算得到fpga输入数据的路径最小延时范围;

根据第一时钟偏移、oddr模块的最小路径延时、第二时钟偏移、fpga输出数据的路径最大延时、从芯片接收数据的建立时间、全局时钟偏斜与向从芯片输出数据的建立时间的关系,计算得到fpga输出数据的路径最大延时范围;

根据第一时钟偏移、oddr模块的最大路径延时、第二时钟偏移、fpga输出数据的路径最小延时、从芯片接收数据的保持时间、全局时钟偏斜与向从芯片输出数据的保持时间的关系,计算得到fpga输出数据的路径最小延时范围;

调整所述第一时钟偏移和第二时钟偏移,使所述fpga输入数据的路径最大延时范围、路径最小延时范围,以及fpga输出数据的路径最大延时范围、路径最小延时范围均满足相应的设定范围。

基于上述目的,一种fpga的技术方案如下:

全局时钟资源模块,用于获取由晶振发送的基准时钟;

第一锁相环,用于将所述基准时钟进行第一时钟偏移调节;

oddr模块,用于转发进行第一时钟偏移调节后的时钟,输出工作时钟至从芯片;

第二锁相环,用于将所述基准时钟进行第二时钟偏移调节,调节后的时钟作为输出数据寄存器的同步时钟;

计算单元,用于根据第一时钟偏移、oddr模块的最大路径延时、从芯片时钟到数据输出的最大延时、fpga输入数据的路径最大延时、全局时钟偏斜与接收从芯片发送数据的建立时间的关系,计算得到fpga输入数据的路径最大延时范围;

以及,用于根据第一时钟偏移、oddr模块的最小路径延时、从芯片时钟到数据输出的最小延时、fpga输入数据的路径最小延时、全局时钟偏斜与接收从芯片发送数据的保持时间的关系,计算得到fpga输入数据的路径最小延时范围;

以及,用于根据第一时钟偏移、oddr模块的最小路径延时、第二时钟偏移、fpga输出数据的路径最大延时、从芯片接收数据的建立时间、全局时钟偏斜与向从芯片输出数据的建立时间的关系,计算得到fpga输出数据的路径最大延时范围;

以及,用于根据第一时钟偏移、oddr模块的最大路径延时、第二时钟偏移、fpga输出数据的路径最小延时、从芯片接收数据的保持时间、全局时钟偏斜与向从芯片输出数据的保持时间的关系,计算得到fpga输出数据的路径最小延时范围;

控制单元,用于在所述fpga输入数据的路径最大延时范围、路径最小延时范围,以及fpga输出数据的路径最大延时范围、路径最小延时范围不满足相应的设定范围时,控制所述第一锁相环和第二锁相环进行时钟偏移调节,直至满足所述相应的设定范围。

上述两个技术方案的有益效果是:

本发明的时序收敛方法采用oddr模块,使fpga内部同步采样时钟的路径固定,且走线延时可以预测,方便时序收敛的实现;并且,通过全局时钟资源模块获取晶振发送的基准时钟,对基准时钟进行两路锁相环的时钟偏移调节,用于调整时钟与数据走线的相位关系,通过调节合适的第一时钟偏移和第二时钟偏移,使在fpga输入数据的路径最大、最小延时范围,以及fpga输出数据的路径最大、最小延时范围均满足一定的条件,从而达到时序收敛。并且,本发明通过两次时钟偏移,分别确定了fpga输出至从芯片的工作时钟,以及输出数据寄存器的同步时钟,分别用于提升fpga的数据输入接口及数据输出接口的时序收敛余量(即数据输入/输出的建立和保持时间余量),以防止发送和接收公用系统时钟(即晶振发送的基准时钟)导致的时序冲突(发送数据和接收数据的相位不一致,且具有随机性,如果公用一个系统时钟进行数据采集,没法同时调节之间的相位关系,因此,发送时钟和接收时钟需要在系统时钟的基础上做不同的相位偏移)。

具体的,所述fpga输入数据的路径最小延时范围的计算关系式如下:

delay1+max_delay2+slave_clk_to_data_max_delay+fpga_data_in_max_delay+clk_skew<clk_period

其中,delay1为第一时钟偏移,max_delay2为oddr模块的最大路径延时,slave_clk_to_data_max_delay为从芯片时钟到数据输出的最大延时,fpga_data_in_max_delay为fpga输入数据的路径最大延时,clk_skew为全局时钟偏斜,clk_period为所述基准时钟的周期。

具体的,所述fpga输入数据的路径最小延时范围的计算关系式如下:

delay1+min_delay2+slave_clk_to_data_min_delay+fpga_data_in_min_delay-clk_skew>0

其中,delay1为第一时钟偏移,min_delay2为oddr模块的最小路径延时,slave_clk_to_data_min_delay为从芯片时钟到数据输出的最小延时,fpga_data_in_min_delay为fpga输入数据的路径最小延时,clk_skew为全局时钟偏斜。

具体的,所述fpga输出数据的路径最小延时范围的计算关系式如下:

delay3+fpga_data_out_max_delay+slave_set_up+clk_skew-(delay1+min_delay2)<clk_period

其中,delay3为第二时钟偏移,fpga_data_out_max_delay为fpga输出数据的路径最大延时,slave_set_up为从芯片接收数据的建立时间,clk_skew为全局时钟偏斜,delay1为第一时钟偏移,min_delay2为oddr模块的最小路径延时,clk_period为所述基准时钟的周期。

具体的,所述fpga输出数据的路径最小延时范围的计算关系式如下:

delay3+fpga_data_out_min_delay-slave_hold_on-clk_skew-(delay1+max_delay2)>0

其中,delay3为第二时钟偏移,fpga_data_out_min_delay为fpga输出数据的路径最小延时,slave_hold_on为从芯片接收数据的保持时间,clk_skew为全局时钟偏斜,delay1为第一时钟偏移,max_delay2为oddr模块的最大路径延时。

附图说明

图1是现有技术中系统同步方式下的接口通信原理图;

图2是现有技术中源同步方式下的接口通信原理图;

图3是现有技术中系统同步方式的时序收敛及约束的原理图;

图4是现有技术中第三种时钟同步方式的接口通信原理图;

图5是本发明的fpga内部的时钟及数据流向图;

图6是本发明的fpga内部信号的时序关系图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

如图4所示的第三种时钟同步方式,由于系统时钟经过fpga后再输出给从芯片,其在fpga内的走线延时存在不确定和不可预测性,因此无法预先计算其约束参数,也无法实现自动时序收敛。基于此,为了实现自动时序收敛,本发明提出了一种fpga及其时序收敛方法,以下结合实施例对本发明的特征和性能作进一步的详细描述。

fpga实施例:

本实施例的一种fpga,包括全局时钟资源模块bufg,第一锁相环,第二锁相环,oddr模块,计算单元和控制单元,其中,全局时钟资源模块bufg用于获取由晶振发送的基准时钟;第一锁相环,用于将基准时钟进行第一时钟偏移调节;oddr模块用于转发进行第一时钟偏移调节后的时钟,输出工作时钟至从芯片。第二锁相环用于将基准时钟进行第二时钟偏移调节,调节后的时钟作为输出数据寄存器的同步时钟。

计算单元,用于计算fpga输入数据的路径最大、最小延时范围,以及fpga输出数据的路径最大、最小延时范围。具体的实现过程如下:

1)根据第一时钟偏移、oddr模块的最大路径延时、从芯片时钟到数据输出的最大延时、fpga输入数据的路径最大延时、全局时钟偏斜与接收从芯片发送数据的建立时间的关系,计算得到fpga输入数据的路径最大延时范围;具体的,该路径最大延时需满足如下输入管脚约束的计算关系式:

delay1+max_delay2+slave_clk_to_data_max_delay+fpga_data_in_max_delay+clk_skew<clk_period

其中,delay1为第一时钟偏移,max_delay2为oddr模块的最大路径延时,slave_clk_to_data_max_delay为从芯片时钟到数据输出的最大延时,fpga_data_in_max_delay为fpga输入数据的路径最大延时,clk_skew为全局时钟偏斜,clk_period为基准时钟的周期。

2)根据第一时钟偏移、oddr模块的最小路径延时、从芯片时钟到数据输出的最小延时、fpga输入数据的路径最小延时、全局时钟偏斜与接收从芯片发送数据的保持时间的关系,计算得到fpga输入数据的路径最小延时范围;具体的,该路径最小延时需满足如下输入管脚约束的计算关系式:

delay1+min_delay2+slave_clk_to_data_min_delay+fpga_data_in_min_delay-clk_skew>0

其中,delay1为第一时钟偏移,min_delay2为oddr模块的最小路径延时,slave_clk_to_data_min_delay为从芯片时钟到数据输出的最小延时,fpga_data_in_min_delay为fpga输入数据的路径最小延时,clk_skew为全局时钟偏斜。

需要说明的是,上面两个计算关系式中,从芯片时钟到数据输出的最大和最小延时(slave_clk_to_data_max_delay、slave_clk_to_data_min_delay)由从芯片的参数决定,根据从芯片的数据手册获得;全局时钟偏斜clk_skew的最大值为1ns,按照最大值来设定;oddr模块的最大和最小路径延时(max_dealy2、min_dealy2)由fpga中oddr模块的特性决定;delay1是相位偏移值,可以为正偏移,也可以为负偏移。

3)根据第一时钟偏移、oddr模块的最小路径延时、第二时钟偏移、fpga输出数据的路径最大延时、从芯片接收数据的建立时间、全局时钟偏斜与向从芯片输出数据的建立时间的关系,计算得到fpga输出数据的路径最大延时范围;具体的,该路径最大延时需满足如下输出管脚约束的计算关系式:

delay3+fpga_data_out_max_delay+slave_set_up+clk_skew-(delay1+min_delay2)<clk_period

其中,delay3为第二时钟偏移,fpga_data_out_max_delay为fpga输出数据的路径最大延时,slave_set_up为从芯片接收数据的建立时间(即芯片管脚的建立时间),clk_skew为全局时钟偏斜,delay1为第一时钟偏移,min_delay2为oddr模块的最小路径延时,clk_period为基准时钟的周期。

4)用于根据第一时钟偏移、oddr模块的最大路径延时、第二时钟偏移、fpga输出数据的路径最小延时、从芯片接收数据的保持时间、全局时钟偏斜与向从芯片输出数据的保持时间的关系,计算得到fpga输出数据的路径最小延时范围;具体的,该路径最小延时需满足如下输出管脚约束的计算关系式:

delay3+fpga_data_out_min_delay-slave_hold_on-clk_skew-(delay1+max_delay2)>0

其中,delay3为第二时钟偏移,fpga_data_out_min_delay为fpga输出数据的路径最小延时,slave_hold_on为从芯片接收数据的保持时间(即芯片管脚的保持时间),clk_skew为全局时钟偏斜,delay1为第一时钟偏移,max_delay2为oddr模块的最大路径延时。

需要说明的是,上个两个计算关系式中,slave_set_up和slave_hold_on为从芯片的参数,根据从芯片的数据手册确定。

并且,上述过程中的序号1)-4)仅用于区分四个计算过程,并不是步骤的先后顺序,计算单元可以采用并行计算方式,也可以采用串行计算方式。

控制单元,用于在fpga输入数据的路径最大延时范围、路径最小延时范围,以及fpga输出数据的路径最大延时范围、路径最小延时范围不满足相应设定的范围时,控制所述第一锁相环和第二锁相环进行时钟偏移调节,调节第一时钟偏移和第二时钟偏移调节,直至满足相应设定的范围。

当满足相应设定的范围后,在最终确定的fpga输入数据的路径最大、最小延时范围,以及fpga输出数据的路径最大、最小延时范围内,确定出一组时序收敛参数,即fpga输入数据的路径最大、最小延时,以及fpga输出数据的路径最大、最小延时,按照这组时序收敛参数进行fpga内部各模块的布局布线即可,从而实现自动时序收敛。

本实施例中实现时序收敛的原理分析如下:

如图5所示,晶振给fpga提供时钟clk_in,进入fpga内部的全局时钟资源模块bufg,经过bufg后,输出的几路系统时钟(在图中显示为clk、clk)可以保证离散性小于1ns,clk_skew(全局时钟偏斜)这个参数保证了可预测性。将系统时钟作为基准时钟,设定相位为零,其中一路系统时钟通过dcm锁相环(即第二锁相环)进行相位调节后,偏移了delay3的相位,偏移后作为输出数据寄存器的同步时钟fpga_send_clk,用于调整输出数据与系统时钟之间的相位;另一路系统时钟通过dcm锁相环(即第一锁相环)调节了delay1的相位后,通过oddr模块作为fpga的输出时钟fpga_clk_out,给从芯片提供工作时钟,用于从芯片发送寄存器和从芯片接收寄存器。

本实施例中,系统时钟在fpga内部分别通过全局时钟资源模块bufg及oddr模块走线,减小时钟抖动的离散性,便于系统设计时序收敛的实现;采用oddr模块可以做到时钟输出路径延时的可控,delay2即为oddr模块的路径延时时间,其最大延时和最小延时可预测,最大延时为max_delay2,最小延时为min_delay2。之所以对发送同步时钟(即发送数据寄存器的同步时钟)和输出时钟(即输出数据寄存器的同步时钟)做相位的调节,是为了防止输入和输出回路公用相同的系统时钟,导致的时序收敛的冲突,提升输入和输出路径(走线)的建立和保持时间的余量,即通过fpga内部锁相环调整时钟偏移,改变delay1的参数,可以调节数据输入路径的建立和保持时间的余量;改变delay3的值,可以调节数据输出路径的建立和保持时间余量,并最终实现了所有时钟和数据走线资源的延时可预测及可控性。

图6为本发明的某具体应用的时序图。某以太网phy芯片的rmii接口的系统时钟周期为20ns,采用了本发明提到的第三种时钟同步方式。

以输入路径(fpga输入数据的路径)为例,首先分析输入路径的建立时间。根据fpga输入数据的路径最小延时范围的计算关系式(即建立时间的分析公式),delay1+max_delay2+slave_clk_to_data_max_delay+fpga_data_in_max_delay+clk_skew<clk_period。clk_period为系统时钟周期20ns;clk_skew为系统时钟的时钟偏斜,按照最大值设定为1ns;slave_clk_to_data_max_delay为phy芯片时钟到数据输出的最大延时为12.5ns;fpga_data_in_max_delay为fpga内部数据走线的最大延时。其中,先设定delay1为第一时钟偏移为-1.3ns,因为采用oddr模块输出,可以忽略输出时钟在fpga内部的走线延时,因此oddr模块的最大路径max_delay2可预测,最大延时为3.8ns,因此输出时钟对系统时钟的最大延时可以计算出为3.8-1.3=1.5ns。可以得出fpga_data_in_max_delay<20-12.5-1.5-1=5ns。fpga_data_in_max_delay<5ns,5ns是fpga内部数据走线的最大延时时间,也就是提供给fpga开发工具,实现建立时间时序收敛的具体参数。

然后对输入路径的保持时间进行分析,根据fpga输入数据的路径最小延时范围的计算关系式,delay1+min_delay2+slave_clk_to_data_min_delay+fpga_data_in_min_delay-clk_skew>0,由于oddr模块的最小延时min_delay2为1.8ns,phy芯片的时钟到数据的最小延时slave_clk_to_data_min_delay为2ns,fpga_data_in_min_delay>0-(delay1+min_delay2+slave_clk_to_data_min_delay)=0-(-1.3+1.8+2-1)=-1.5ns。fpga_data_in_min_delay>-1.5ns,1.5ns即fpga内部数据走线的最小延时时间,也就是提供给fpga开发工具实现保持时间时序收敛的具体参数。

这里的设定值delay1可以根据fpga开发工具的收敛情况进行调节,当fpga开发工具无法满足建立时间的收敛时,可以将delay1的值减小,则fpga_data_in_max_delay取值范围变大,则建立时间路径的冗余变大,以满足建立时间约束的要求。反之,如果保持时间的余量不足,则将delay1的值增大,fpga_data_in_min_delay取值范围变大,以满足保持时间的收敛要求。如图6所示,最终时间时序收敛的目的就是要使系统时钟的采样时钟落在数据有效的采样窗口中,采样保持和建立时间都留有足够的余量。

方法实施例:

基于图4中的fpga,本实施例提出一种fpga的时序收敛方法,包括以下步骤:

首先,利用全局时钟资源模块bufg获取由晶振发送的基准时钟;

将基准时钟经过第一锁相环进行第一时钟偏移调节,再通过oddr模块输出工作时钟至从芯片;并将基准时钟经过第二锁相环进行第二时钟偏移调节,调节后的时钟作为输出数据寄存器的同步时钟;

调节行第一时钟偏移和第二时钟偏移,使按照fpga实施例中的四个关系式计算出来的fpga输入数据的路径最大、最小延时范围,以及fpga输出数据的路径最大、最小延时范围满足相应设定的范围,以实现fpga的时序收敛。

由于本实施例中的时序收敛方法对应为fpga实施例中实现的时序收敛过程,且在该实施例中进行了清楚、完整的介绍,因此,本实施例不再赘述。

以上所述,仅为本发明的较佳实施例,并不用以限制本发明,本发明的专利保护范围以权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1