基于恢复时钟的fpga芯片时钟域同步方法及相关设备
技术领域
本发明涉及FPGA芯片领域,特别涉及一种基于恢复时钟的FPGA芯片时钟域同步方法、系统及存储介质。
背景技术
随着金融科技的不断发展,金融领域对低延迟交易的需求日益强烈。基于传统软件加速技术所带来的延迟收益在毫秒级别,越来越难以满足各类交易处理和响应的需求。因此基于FPGA硬件并行加速的技术逐渐进入证券交易领域,成为金融科技领域的新趋势。
相关技术中,FPGA芯片内部的各模块相互独立,分别使用各自的时钟域进行数据传输,而模块之间则采用异步FIFO缓存进行时钟域转换。上述方式在进行每一次模块之间的数据传输时都需要时钟域转换,增加了片内的传输时延并降低了FPGA芯片整体的数据响应及处理效率,影响FPGA芯片在金融领域的低时延应用效果。
发明内容
本发明的目的是提供一种基于恢复时钟的FPGA芯片时钟域同步方法、系统及存储介质,可采用时钟选择模块统一FPGA芯片中的工作参考时钟,进而确保模块间数据传输时无需时钟域转换,最终可有效提升片内数据传输效率。
为解决上述技术问题,本发明提供一种基于恢复时钟的FPGA芯片时钟域同步方法,应用于FPGA芯片,所述FPGA芯片包括SerDes接收模块和时钟选择模块,所述方法包括:
所述SerDes接收模块从对端发送的数字信号中提取出恢复时钟,在确定所述恢复时钟稳定后,对所述恢复时钟进行时钟去抖及生成锁定信号,并将所述锁定信号及去抖的恢复时钟输出至所述时钟选择模块;
所述时钟选择模块在接收到所述锁定信号时,将接收到的恢复时钟设置为工作参考时钟,以使所述FPGA芯片中的其他模块利用所述工作参考时钟对所述数字信号进行片内数据传输。
可选地,所述FPGA芯片还包括SerDes发送模块,在将接收到的恢复时钟设置为工作参考时钟之后,还包括:
所述SerDes发送模块利用所述工作参考时钟将所述其他模块生成的数字信号发送至所述对端。
可选地,在所述SerDes接收模块从对端发送的数字信号中提取出恢复时钟之前,还包括:
在所述FPGA芯片上电时,所述时钟选择模块将所述FPGA芯片的默认参考时钟设置为初始化参考时钟,以使所述FPGA芯片中的各模块利用所述初始化参考时钟进行初始化;
所述SerDes接收模块在完成所述初始化后执行所述从对端发送的数字信号中提取出恢复时钟的步骤。
可选地,所述对所述恢复时钟进行时钟去抖,将去抖的恢复时钟输出至所述时钟选择模块,包括:
所述SerDes接收模块将所述恢复时钟输出至片外时钟芯片;
所述片外时钟芯片对所述恢复时钟进行所述时钟去抖,并将完成所述时钟去抖的恢复时钟输出至所述时钟选择模块。
可选地,所述时钟选择模块利用所述FPGA芯片的PLL模块或SerDes重配置接口实现。
本发明还提供一种基于恢复时钟的FPGA芯片时钟域同步系统,包括FPGA芯片,所述FPGA芯片包括SerDes接收模块和时钟选择模块,其中,
所述SerDes接收模块,用于从对端发送的数字信号中提取出恢复时钟,在确定所述恢复时钟稳定后,对所述恢复时钟进行时钟去抖及生成锁定信号,并将所述锁定信号及去抖的恢复时钟输出至所述时钟选择模块;
所述时钟选择模块,用于在接收到所述锁定信号时,将接收到的恢复时钟设置为工作参考时钟,以使所述FPGA芯片中的其他模块利用所述工作参考时钟对所述数字信号进行片内数据传输。
可选地,所述FPGA芯片还包括SerDes发送模块,其中,
所述SerDes发送模块,用于利用所述工作参考时钟将所述其他模块生成的数字信号发送至所述对端。
可选地,
所述时钟选择模块,还用于在所述FPGA芯片上电时,将所述FPGA芯片的默认参考时钟设置为初始化参考时钟,以使所述FPGA芯片中的各模块利用所述初始化参考时钟进行初始化;
所述SerDes接收模块,还用于在完成所述初始化后执行所述从对端发送的数字信号中提取出恢复时钟的步骤。
可选地,还包括:片外时钟芯片,其中,
所述SerDes接收模块,还用于将所述恢复时钟输出至所述片外时钟芯片;
所述片外时钟芯片,用于对所述恢复时钟进行时钟去抖,并将完成所述时钟去抖的恢复时钟输出至所述时钟选择模块。
本发明还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的基于恢复时钟的FPGA芯片时钟域同步方法的步骤。
本发明一种FPGA芯片时钟域同步方法,应用于FPGA芯片,所述FPGA芯片包括SerDes接收模块和时钟选择模块,所述方法包括:所述SerDes接收模块从对端发送的数字信号中提取出恢复时钟,并在确定所述恢复时钟稳定后,对所述恢复时钟进行时钟去抖及生成锁定信号,最后将所述锁定信号及去抖的恢复时钟输出至所述时钟选择模块;所述时钟选择模块在接收到所述锁定信号时,将接收到的恢复时钟设置为工作参考时钟,以使所述FPGA芯片中的其他模块利用所述工作参考时钟对所述数字信号进行片内数据传输。
可见,本方法首先采用时钟选择模块统一FPGA芯片中各模块的工作参考时钟,使得各模块的工作参考时钟同步,进而可确保模块间在进行数据传输时无需进行时钟域转换,能够有效避免相关技术中进行片内数据传输时存在的时钟域转换操作,降低了FPGA芯片内部的数据传输时延并提升数据传输效率;同时,本方法中的工作参考时钟从对端发送的数字信号中提取得到,不仅可确保该数字信号无需进行时钟域转换,便可被FPGA芯片接收并在片内进行数据传输,进而数字信号在片内的传输效率,同时也可以确保FPGA芯片直接依照对端的信号传输情况进行工作,进一步降低了FPGA芯片内部的数据传输时延并提片内数据传输效率,提升了FPGA芯片整体的数据的响应及处理效率,确保FPGA芯片更好地适应金融领域的低时延需求。本发明还提供一种基于恢复时钟的FPGA芯片时钟域同步系统及存储介质,具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的现有技术中一种FPGA时钟域设置的示意图;
图2为本发明实施例所提供的一种基于恢复时钟的FPGA芯片时钟域同步方法的流程图;
图3为本发明实施例所提供的一种FPGA时钟域设置的示意图;
图4为本发明实施例所提供的一种基于恢复时钟的FPGA芯片时钟域同步系统的结构框图;
图5为本发明实施例所提供的第二种基于恢复时钟的FPGA芯片时钟域同步系统的结构框图;
图6为本发明实施例所提供的第三种基于恢复时钟的FPGA芯片时钟域同步系统的结构框图;
图7为本发明实施例所提供的第四种基于恢复时钟的FPGA芯片时钟域同步系统的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中,FPGA芯片内部的各模块相互独立,分别使用各自的时钟域进行数据传输,而模块之间则采用异步FIFO缓存进行时钟域转换。请参考图1,图1为本发明实施例所提供的现有技术中一种FPGA时钟域设置的示意图。在该示例中,FPGA按照时钟域可以划分为4个部分,分别为业务逻辑部分、以太网mac、物理层接收部分、物理层发送部分,各部分在进行数据发送时参考时钟分别为clk_ref0、clk_ref1、clk_ref2、clk_ref3,在进行数据处理时使用的时钟分别为clk_sys、clk_mac、clk_serdes_rx、clk_serdes_tx;各部分之间设置有异步FIFO(First In First Out)缓存(发送缓存1、2,以及接收缓存1、2),该异步FIFO缓存用于进行时钟域转换,当业务逻辑需要发送数据时,要经过两级的跨时钟域处理,数据首先要由clk_sys时钟域经过发送缓存1跨越到clk_mac时钟域,mac内部处理完成后,再由clk_mac时钟域经过发送缓存2跨越到clk_serdes_tx时钟域,最后通过物理层发送输出;业务逻辑在接收数据时,也需要经过两级跨时钟域处理,物理层接收模块的数据首先要由clk_serdes_rx时钟域经过接收缓存1跨越到clk_mac时钟域,再由clk_mac时钟域通过接收缓存2跨越到clk_sys时钟域。上述方式在进行每一次模块之间的数据传输时都需要时钟域转换,进而降低模块之间的数据传输效率,进而降低了FPGA芯片整体的数据处理效率。有鉴于此,本发明提供一种FPGA芯片时钟域同步方法,可采用时钟选择模块统一FPGA芯片中的工作参考时钟,进而确保模块间数据传输时无需时钟域转换,最终可有效提升片内数据传输效率。请参考图2,图2为本发明实施例所提供的一种基于恢复时钟的FPGA芯片时钟域同步方法的流程图,该方法应用于FPGA芯片,FPGA芯片包括SerDes接收模块和时钟选择模块,可以包括:
S201、SerDes接收模块从对端发送的数字信号中提取出恢复时钟,在确定恢复时钟稳定后,对恢复时钟进行时钟去抖及生成锁定信号,并将锁定信号及去抖的恢复时钟输出至时钟选择模块。
可以理解的是,为了统一FPGA芯片内部用于数据传输的参考时钟,首先需要确定一个参考时钟源,进而才可将该参考时钟源设置为统一的参考时钟。在本发明实施例中,首先会从对端发送的数字信号中提取出恢复时钟,并将恢复时钟作为参考时钟源,这是由于SerDes接收模块(serdes_rx)在对数字信号进行处理之后,将会把恢复时钟作为数据传输的参考时钟,对处理后的数字信号进行输出,因此若将恢复时钟设置为统一的参考时钟,可确保数字信号在FPGA芯片内部无需时间域转换便可自由传输,进而可确保数字信号的片内传输效率;同时,由于恢复时钟是数字发送端在进行发送时嵌入在数字信号中的时钟信号,其波动状况不仅可以可反映数字发送端的发送情况,同时也可反映信道的传输情况,因此本发明采用恢复时钟作为统一的参考时钟,可确保FPGA芯片根据对端的发送情况及信道传输情况进行动态调整,进而可确保FPGA芯片与对端保持链路同步。
首先需要说明的是,与FPGA芯片进行数据传输的对端应当使用SerDes发送模块(serdes_tx)进行数据发送,这样才可确保对端与FPGA芯片之间采用相同的数据类型进行数据传输。除此之外,本发明实施例并不限定对端的其他硬件结构。需要说明的是,本发明实施例并不限定SerDes发送模块及SerDes接收模块各自的工作方式,可参考FPGA SerDes的相关技术;本发明实施例同样不限定SerDes发送模块嵌入恢复时钟,以及SerDes接收模块提取恢复时钟的具体方式及过程,具体可参考FPGA SerDes以及CDR电路的相关技术;本发明实施例也不限定SerDes接收模块确定恢复时钟稳定的具体方式,同样可参考FPGASerDes的相关技术。本发明也不限定恢复时钟的具体参数数值,可根据实际应用需求进行设置。
进一步,本发明实施例并不限定锁定信号的具体形式,例如可以为一个特定的高电平或低电平、一个特殊的标志位或是一小串代码串,可根据实际应用需求进行设置,只要可向时钟选择模块传达锁定恢复时钟的信息即可。
进一步,在本发明实施例中,时钟选择模块首先用于管理FPGA芯片内部的参考时钟,并向FPGA芯片内部各模块发送统一的参考时钟。需要说明的是,本发明实施例并不限定时钟选择模块的实现方式,例如可通过FPGA芯片内部的PLL模块进行实现,也可以利用SerDes重配置接口实现,其中PLL(Phase Locked Loop)表示锁相环电路,可用于管理多个输入时钟,并依照需求选择某个特定的输入时钟进行输出;SerDes重配置接口同样可实现上述功能。需要说明的是,本发明实施例并不限定具体的PLL模块及SerDes重配置接口,具体可参考PLL以及SerDes的相关技术。
在一种可能的情况中,时钟选择模块利用FPGA芯片的PLL模块或SerDes重配置接口实现。
进一步,可以理解的是,受信道及信号发送强度等因素的影响,利用数字信号提取出的恢复时钟可能存在信号质量不佳、抖动较多的问题,因此在SerDes接收模块得到恢复时钟之后,需要对恢复时钟进行时钟去抖之后,再输入至时钟选择模块。需要说明的是,本发明实施例并不限定时钟去抖的具体过程方式,具体可参考时钟去抖的相关技术。可以理解的是,SerDes接收模块可将时钟输出管脚与单独的时钟去抖装置连接,并使用单独的时钟去抖装置进行时钟去抖,换句话说,SerDes接收模块可将恢复时钟由时钟输出管脚输出至时钟去抖装置进行上述的时钟去抖。需要说明的是,本发明实施例并不限定时钟去抖装置的具体实现形式,例如可使用FPGA芯片中的PLL模块实现,当然也可以由独立于FPGA芯片的片外时钟芯片实现。由于片外时钟芯片可专用于时钟去抖,可获得更好的去抖效果,同时也不占用FPGA芯片的内部资源,因此在本发明实施例中,可使用片外时钟芯片实现时钟去抖。
在一种可能的情况中,对恢复时钟进行时钟去抖,将去抖的恢复时钟输出至时钟选择模块,可以包括:
步骤11:SerDes接收模块将恢复时钟输出至片外时钟芯片;
步骤12:片外时钟芯片对恢复时钟进行时钟去抖,并将完成时钟去抖的恢复时钟输出至时钟选择模块。
可以理解的是,片外时钟芯片可以将时钟输出管脚与时钟选择模块的时钟输入管脚相连,以将完成时钟去抖的恢复时钟输出至时钟选择模块。
S202、时钟选择模块在接收到锁定信号时,将接收到的恢复时钟设置为工作参考时钟,以使FPGA芯片中的其他模块利用工作参考时钟对数字信号进行片内数据传输。
需要说明的是,本发明实施例并不限定时钟选择模块将恢复时钟设置为工作参考时钟的具体过程,具体可参考PLL及SerDes重配置接口的相关技术。可以理解的是,时钟选择模块为了将工作参考时钟输送至FPGA芯片中的其他模块,应当与其他模块的时钟输入管脚相连。
进一步,本发明实施例并不限定FPGA芯片中的其他模块,例如可以包含实现具体业务功能的业务模块,也可以包含用于解析数据包的以太网mac模块,也可以包含用于将其他模块生成的数字信号输送至对端的SerDes发送模块,可根据实际应用需求进行设置。可以理解的是,上述模块均使用统一的工作参考时钟进行模块之间的数据传输;当模块为SerDes发送模块时,SerDes发送模块也可依照该工作参考时钟将数字信号发送至对端,具体的,可将该工作参考时钟嵌入至数字信号中进行发送,这样对端也可利用该工作参考时钟进行片内数据传输,可进一步提升两端之间的数据传输效率,确保链路同步。
在一种可能的情况中,FPGA芯片还包括SerDes发送模块,在将恢复时钟设置为工作参考时钟之后,还可以包括:
步骤21:SerDes发送模块利用工作参考时钟将其他模块生成的数字信号发送至对端。
最后,可以理解的是,在FPGA芯片刚上电时,其内部的芯片同样需要参考时钟以完成初始化。本发明实施例并不限定FPGA芯片内部各模块是否使用相同的初始化参考时钟进行初始化,可以为相同参考时钟,也可为不同参考时钟。为了提升初始化阶段的执行效率,避免初始化阶段的时钟域转换,在本发明实施例中,FPGA芯片内部各模块同样可使用相同的初始化参考时钟进行初始化。可以理解的是,由于初始化阶段并不涉及对端向该FPGA芯片传输数字信号,因此可利用FPGA芯片内部的默认参考时钟作为初始化参考时钟。需要说明的是,本发明实施例并不限定默认参考时钟的具体参数数值,可根据实际应用需求进行设置;本发明实施例也不限定默认参考时钟的生成方式,例如可利用FPGA芯片内部的PLL模块进行生成,也可利用片外时钟芯片进行生成,可根据实际应用需求进行设置。
在一种可能的情况中,在SerDes接收模块从对端发送的数字信号中提取出恢复时钟之前,还可以包括:
步骤31:在FPGA芯片上电时,时钟选择模块将FPGA芯片的默认参考时钟设置为初始化参考时钟,以使FPGA芯片中的各模块利用初始化参考时钟进行初始化;
步骤32:SerDes接收模块在完成初始化后执行从对端发送的数字信号中提取出恢复时钟的步骤。
基于上述实施例,本方法首先采用时钟选择模块统一FPGA芯片中各模块的工作参考时钟,使得各模块的工作参考时钟同步,进而可确保模块间在进行数据传输时无需进行时钟域转换,能够有效避免相关技术中进行片内数据传输时存在的时钟域转换操作,降低了FPGA芯片内部的数据传输时延并提升数据传输效率;同时,本方法中的工作参考时钟从对端发送的数字信号中提取得到,不仅可确保该数字信号无需进行时钟域转换,便可被FPGA芯片接收并在片内进行数据传输,进而数字信号在片内的传输效率,同时也可以确保FPGA芯片直接依照对端的信号传输情况进行工作,进一步降低了FPGA芯片内部的数据传输时延并提升片内数据传输效率,提升FPGA芯片整体的数据响应及处理效率,确保FPGA芯片更好地适应金融领域的低时延需求。
下面结合一个具体实例解释上述方法。请参考图3,图3为本发明实施例所提供的一种FPGA时钟域设置的示意图。在该图中,FPGA芯片时钟域同步系统包含了6个部分,分别为业务逻辑、以太网mac、物理层发送(SerDes发送模块)、物理层接收(SerDes接收模块)、时钟选择模块及时钟去抖装置,相较于图1所示的FPGA时钟域设置方式,在本系统中减少了模块之间的异步FIFO缓存。在系统上电时,FPGA芯片将会把默认参考时钟clk_ref0发送至时钟选择模块,时钟选择模块将会把clk_ref0设置为初始化参考时钟发送至业务逻辑、以太网mac、物理层发送(即serdes_tx,SerDes发送模块)及物理层接收(即serdes_rx,SerDes接收模块)模块进行初始化(即clk_ref=clk_ref0)。业务逻辑首先会利用初始化参考时钟clk_ref,将与对端连接的数据通过以太网mac及物理层发送模块发送至对端,以与对端建立数据连接;物理层接收模块在完成初始化后,将会接收对端发送的数字信号,并从数字信号中提取恢复时钟cdr_clk,并在确定cdr_clk稳定后,向时钟选择模块发送锁定标志,并把cdr_clk输入至时钟去抖装置,由时钟去抖装置完成时钟去抖。时钟去抖装置既可由FPGA芯片内部的PLL电路实现,也可由片外时钟芯片实现。在完成时钟去抖后,时钟去抖装置便将处理后的恢复时钟cdr_clk_clean发送至时钟选择模块。时钟选择模块在接收到锁定标志后,便将工作参考时钟设置为处理后的恢复时钟(即clk_ref=cdr_clk_clean),以使各模块利用统一的工作参考时钟进行片内数据传输。
下面对本发明实施例提供的基于恢复时钟的FPGA芯片时钟域同步系统及存储介质进行介绍,下文描述的基于恢复时钟的FPGA芯片时钟域同步系统及存储介质与上文描述的FPGA芯片时钟域同步方法可相互对应参照。
请参考图4,图4为本发明实施例所提供的一种基于恢复时钟的FPGA芯片时钟域同步系统的结构框图,包括FPGA芯片410,FPGA芯片包括SerDes接收模块411和时钟选择模块412,其中,
SerDes接收模块411,用于从对端发送的数字信号中提取出恢复时钟,在确定恢复时钟稳定后,对所述恢复时钟进行时钟去抖及生成锁定信号,并将锁定信号及去抖的恢复时钟输出至时钟选择模块412;
时钟选择模块412,用于在接收到锁定信号时,将接收到的恢复时钟设置为工作参考时钟,以使FPGA芯片中的其他模块利用工作参考时钟对数字信号进行片内数据传输。
可选地,请参考图5,图5为本发明实施例所提供的第二种基于恢复时钟的FPGA芯片时钟域同步系统的结构框图,FPGA芯片410还包括SerDes发送模块413,其中,
SerDes发送模块413,用于利用工作参考时钟将其他模块生成的数字信号发送至对端。
可选地,在该系统中:
时钟选择模块,还用于在FPGA芯片上电时,将FPGA芯片的默认参考时钟设置为初始化参考时钟,以使FPGA芯片中的各模块利用初始化参考时钟进行初始化;
SerDes接收模块411,还用于在完成初始化后执行从对端发送的数字信号中提取出恢复时钟的步骤。
可选地,请参考图6,图6为本发明实施例所提供的第三种基于恢复时钟的FPGA芯片时钟域同步系统的结构框图,系统还可以包括:片外时钟芯片420,其中,
SerDes接收模块411,还用于将恢复时钟输出至片外时钟芯片420;
片外时钟芯片420,用于对恢复时钟进行时钟去抖,并将完成时钟去抖的恢复时钟输出至时钟选择模块412。
当然,基于上述实施例,本发明还提供图7所示的基于恢复时钟的FPGA芯片时钟域同步系统。需要说明的是,本发明实施例并不限定FPGA芯片的具体的内部部件及结构;本发明实施例也不限定片外时钟芯片的具体内部部件及结构,只要能够完成上述功能即可。
本发明实施例还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的基于恢复时钟的FPGA芯片时钟域同步方法的步骤。
由于存储介质部分的实施例与FPGA芯片时钟域同步方法部分的实施例相互对应,因此存储介质部分的实施例请参见基于恢复时钟的FPGA芯片时钟域同步方法部分的实施例的描述,这里暂不赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的基于恢复时钟的FPGA芯片时钟域同步方法、系统及存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种基于物联网的视频分析和语义分析装置