本发明涉及电气设备领域,特别是涉及一种基于多fpga互联的收发信号恢复方法、系统以及终端。
背景技术:
在用fpga验证soc样机阶段,logicip规模非常庞大,特别是图像和视频相关的ip,一个fpga资源无法实现,需要多个fpga才能实现。基于fpga的emulator系统,同样需要把整个dut分割到多个fpga上运行,rtl规模变大,而且大量运行在一个singleclkdomian,为了保证rtl验证的一致性,多个fpga上的逻辑必须跑在一个同频的clk。
现有技术中,一般的多个fpga内部的逻辑运行在异步模式,rtl分割点一般选择具有ready/valid或者req/ack边界处,常称为逻辑代码的异步边界。这种方案无法实现同频(singleclkdomain)大型rtl逻辑在多个fpga的之间协调工作。
技术实现要素:
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种提供一种基于多fpga互联的收发信号恢复方法、系统以及终端,用于解决现有技术中大型同频(singleclkdomain)rtl逻辑在多个fpga上验证难点。
为实现上述目的及其他相关目的,本发明提供一种基于多fpga互联的收发信号恢复方法,应用应用多fpga多个selectio互联的系统,所述方法包括:收发双方fpga均使用由本地dutclk的上升沿产生的strobe信号进行收发管理。
于本发明的一实施例中,所述方法包括:将每个本地dutclk时钟信号的上升沿分别做一个strobe信号作为发送或接收开始,并基于封包结构,依次在每个fpga的selectio的pll0_clkout0时钟信号上升沿,发送端selectio按照节拍发送rtl的分割边界信号,接受端selectio按照pll0_clkout0的节拍查找起始start、恢复payload以及检查结束end。
于本发明的一实施例中,所述封包结构包括:起始start、可多个中间payload区域d0~dn和结束end。
于本发明的一实施例中,所述方法包括:所述收发双发的fpga根据各自的dutclk,使用各自fpga产生selectio的pll0_clkout0上升沿采样,逻辑处理出一个pll0_clkout0脉冲宽度strobe信号,作为发送开始,此strobe信号后发送端fpga内的selectio按节拍采样发送rtl逻辑分割后边界的信号状态值记录到封包结构的payloadd0~dn中,以令接受端fpga内的selectio按节拍查找恢复出信号。
于本发明的一实施例中,所述方法包括:所述收发双发的fpga根据各自的dutclk,使用各自fpga产生selectio的pll0_clkout0上升沿采样,逻辑处理出一个pll0_clkout0脉冲宽度strobe信号,作为接收开始,并基于和发送端约定的封包结构,开始在每个pll0_clkout0cycle时钟信号上升沿查找start,恢复d0~dn,检查结束end。
为实现上述目的及其他相关目的,本发明提供一种基于多fpga互联的收发信号恢复系统,应用于多fpga多个selectio互联的系统,所述收发信号恢复系统所述收发信号恢复系统包括:收发信号恢复模块,用于收发双方fpga均使用由本地dutclk的上升沿产生的strobe信号进行收发管理。
于本发明的一实施例中,所述收发信号恢复模块用于将每个本地dutclk时钟信号的上升沿分别做一个strobe信号作为发送或接收开始,并基于封包结构,依次在每个fpga的selectio的pll0_clkout0时钟信号上升沿,发送端selectio按照节拍发送rtl的分割边界信号,接受端selectio按照pll0_clkout0的节拍查找起始start、恢复payload以及检查结束end。
于本发明的一实施例中,所述封包结构包括:起始start、可多个中间payload区域d0~dn和结束end
为实现上述目的及其他相关目的,本发明提供一种基于多fpga互联的收发信号恢复终端,包括:基于fpga的验证平台,应用于大型rtl验证和开发;基于fpga开发的大型应用系统,用于执行所述的基于多fpga互联的收发信号恢复方法。
如上所述,本发明的一种基于多fpga互联的收发信号恢复方法、系统以及终端,具有以下有益效果:对大型同频rtl的分割到多个fpga上实现可以任意边界分割,原型功能等比例实现。fpgaselectio数量多,可以复用发送的信号量大。工作稳定,抗干扰能力强,易于fpga工程实现,运行速度快。
附图说明
图1显示为本发明一实施例中的基于多fpga互联的收发信号恢复方法的流程示意图。
图2显示为本发明一实施例中的从125mhz的txdata_nrxdata_n中找到恢复出收发信号的示意图。
图3显示为本发明一实施例中的发送端selectio的逻辑控制方法的流程示意图。
图4显示为本发明一实施例中的接收端selectio的逻辑控制方法的流程示意图。
图5显示为本发明一实施例中的基于多fpga互联的收发信号恢复系统的结构示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,在下述描述中,参考附图,附图描述了本发明的若干实施例。应当理解,还可使用其他实施例,并且可以在不背离本发明的精神和范围的情况下进行机械组成、结构、电气以及操作上的改变。下面的详细描述不应该被认为是限制性的,并且本发明的实施例的范围仅由公布的专利的权利要求书所限定。这里使用的术语仅是为了描述特定实施例,而并非旨在限制本发明。空间相关的术语,例如“上”、“下”、“左”、“右”、“下面”、“下方”、““下部”、“上方”、“上部”等,可在文中使用以便于说明图中所示的一个元件或特征与另一元件或特征的关系。
在通篇说明书中,当说某部分与另一部分“连接”时,这不仅包括“直接连接”的情形,也包括在其中间把其它元件置于其间而“间接连接”的情形。另外,当说某种部分“包括”某种构成要素时,只要没有特别相反的记载,则并非将其它构成要素,排除在外,而是意味着可以还包括其它构成要素。
其中提到的第一、第二及第三等术语是为了说明多样的部分、成份、区域、层及/或段而使用的,但并非限定于此。这些术语只用于把某部分、成份、区域、层或段区别于其它部分、成份、区域、层或段。因此,以下叙述的第一部分、成份、区域、层或段在不超出本发明范围的范围内,可以言及到第二部分、成份、区域、层或段。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“a、b或c”或者“a、b和/或c”意味着“以下任一个:a;b;c;a和b;a和c;b和c;a、b和c”。仅当元件、功能或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
本发明实施例中提供一种基于多fpga互联的收发信号恢复方法,解决了现有技术中现有大型同步rtl逻辑在多个fpga中验证问题。
下面以附图为参考,针对本发明的实施例进行详细说明,以便本发明所述技术领域的技术人员能够容易地实施。本发明可以以多种不同形态体现,并不限于此处说明的实施例。
本发明采用fpga的selectio作为底层串并转换基础,基于selectio的差分收发机制,可以保证几百个差分对可靠有效稳定长距离传输。
如图1所示,展示本发明实施例中的基于多fpga互联的收发信号恢复方法的流程示意图。应用多fpga多个selectio互联的系统。
所述接收端(rx)为fpga的selectio配置为接收模式,发送端为fpga(tx)的selectio配置为发送模式,2个fpga的发送和接受selectio成对互联,完成n个信号从一个fpga的发送和另一个fpga中对n个信号的恢复。
所述方法包括:
收发双方fpga均使用由本地dutclk的上升沿产生的strobe信号进行收发管理。
可选的,所述方法包括:将每个本地dutclk时钟信号的上升沿分别做一个strobe信号作为发送开始,并基于封包结构,依次在每个fpga的selectio的pll0_clkout0时钟信号上升沿,发送端selectio按照节拍发送rtl的分割边界信号,接受端selectio按照pll0_clkout0的节拍查找起始start、恢复payload以及检查结束end。
可选的,对于发送端selectio的实现方式:收发双发的fpga,根据各自的dutclk,使用各自fpga产生的selectio模块的pll0_clkout0上升沿采样,逻辑处理出一个pll0_clkout0脉冲宽度strobe信号,作为发送开始,此strobe信号后发送端fpga内的selectio按节拍采样发送rtl逻辑分割后边界的信号状态值记录到封包结构的payloadd0~dn中,以令接受端fpga内的selectio按节拍查找恢复出信号。
可选的,对于接受端selectio的实现方式:接受端selectio按照tx端产生strobe信号的方法,产生本地strobe信号,作为接收开始,并基于和发送端约定的封包结构,开始在每个pll0_clkout0cycle时钟信号上升沿查找start,恢复d0~dn,检查end。从strobe信号有效开始,就开始计数pll0_clkout0cycle值,如果在规定的pll0_clkout0cyclecycle数内,没有能找到start,则接受恢复数据无效;
可选的,所述封包结构包括:起始start、一或多个中间playload(d0~dn)以及结束end。
举例来说,封包结构为start d0~d7 end。但不限于此封包格式,中间的payload可是d0~dn。
需要注意的是,整个封包结构由pll0_clkout0/dut_clk决定。如果约定收发端fpga的selectio以1gbps通信,那pll0_clkout0应该是1gbps/8=125mhz,如果每个fpga内的rtl逻辑希望运行在5mhz,那么pll0_clkout0/dut_clk=25,理想情况start d0~dn end不能超过23,因为在dutclk上升沿来后,产生strobe信号还会消耗掉2个pll0_clkout0cycle。如果不考虑channel传输的physicallatency,封包结构可以是start区域、d0~d20区域、end区域。可以发送21*8个rtl分割后的边界信号。
另外,还需要考虑硬件设计fpga直接距离以及selectio穿并行转换过程中的physicallatency。举例来说,若硬件设计fpga直接距离非常远,physicallatency偏大,则中间payload区域的个数选择偏少一点。目前针对pll0_clkout0/dut_clk=25这种倍率关系,我们使用的是start d0~d7 end封包结构进行后续描述。
可选的,对于发送端来说,在fpga发送芯片的每个dutclk的上升沿,以strobe信号作为开始,发送rtl逻辑分割后边界signal的状态值,第一个cycle发送一固定字节长度的起始(strart),然后第二个cycle发送d0,第三个cycle发送d1,…发到第n个cycle发送最后一个dn-1,最后发送end,在一个dutclk周期内,还有多余的pll0_clkout0cycle将全部发送end,直到下一个strobe信号到来。
可选的,对于接受端来说,在一个dutclk周期内,根据pll0_clkout0cycle/dutclk比率关系,例如是25,那么strobe消耗2个pll0_clkout0cycle,实际约定封包是start d0~d7 end结构,需要10个pll0_clkout0cycle,rx端必须在strobe信号有效后(25-2-10=13)个pll0_clkout0cycle内找到start标记,否则恢复数据无效。
可选的,所述fpga可以为任一类型,在本申请中不作限定。优选的,所述fpga为xilinxfpga。
以下结合具体实施例来说明基于多fpga互联的收发信号恢复方法。
实施例1:基于多fpga互联的收发信号恢复方法,如图2所示从125mhz的txdata_nrxdata_n中找到恢复出收发信号示意图。
应用于进行互联的fpga的一或多个selectio,所述方法包括:
发送端selectio(rx)按照固定顺序发送一个dutclk上升延后rtl逻辑分割边界信号的高低状态值。按照start、d0~d7区域、end区域封包结构为例,在strobe信号为高后,第一个pll0_clkout0上升沿发送start(特殊字符),第二个pll0_clkout0上升沿发送分割rtl边界signal0~signal7的值;第三个pll0_clkout0上升沿发送分割rtl边界signal8~signal15的值;以此发送下去,直到第九个pll0_clkout0上升沿发送分割rtl边界的signal56~signal63的值;第十个pll0_clkout0上升沿发送end(特殊字符),如图3所示。一个dutclk周期内后续多余的pll0_clkout0cycle时间,都固定发送end。直到下一次dutclk再来上升沿再产生发送的strobe信号再启动一轮signal0~signal63更新后值的发送。接收端selectio(tx)按照固定封包格式按节拍有序恢复数据,从接受端的dutclk上升沿开始,产生一个strobe信号,接受状态机就开始在每个pll0_clkout0的上升沿检测selectio收到的值,如果收到start,后续第一个pll0_clkout0的上升收到的就是signal0~signal7值,第二个pll0_clkout0的上升沿收到的就是signal8~signal15值,以此下去,第八个pll0_clkout0的上升沿收到的就是signal56~signal63值,第九个pll0_clkout0的上升沿收到的就是end区域,表示本次dutclk内signal0~signal63全部恢复完成,如图4所示。后续等待下一次dutclk上升沿再产生strobe信号再开始一轮新的信号数据恢复。当然也可以更改封包结构和降低dutclk频率,能处理更加多的边界分割signal复用传输。此例以及后续都按照selectio跑1gbps,pll0_clkout0为125mhz,dutclk为5mhz来举例,确定的比率25(但不限与此,selectio可以运行在1.6gpbs等各自支持的速度,pll0_clkout0为selectio速度/8,dutclk可以修改频率速度)。一个selctio线可以完成64个rtl分割产生的边界signal的传输和恢复。fpga,有上千个selectio,可以处理几万signal的发送和恢复。
与上述实施例原理相似的是,本发明提供一种基于多fpga互联的收发信号恢复系统。
以下结合附图提供具体实施例:
如图5展示本发明实施例中的一种基于多fpga互联的收发信号恢复方法的系统的结构示意图。
应用多fpga多个selectio互联的系统。所述收发信号恢复系统包括:
收发信号恢复模块51,用于收发双方fpga均使用由本地dutclk的上升沿产生的strobe信号进行收发管理。
可选的,所述收发信号恢复模块51用于将每个本地dutclk时钟信号的上升沿分别做一个strobe信号作为发送开始,并基于封包结构,依次在每个fpga的selectio的pll0_clkout0时钟信号上升沿,发送端selectio按照节拍发送rtl的分割边界信号,接受端selectio按照pll0_clkout0的节拍查找起始start、恢复payload以及检查结束end。
可选的,所述收发信号恢复模51包括:发送端selectio模块511,用于收发双发的fpga根据各自的dutclk,使用各自fpga产生的selectio模块的pll0_clkout0上升沿采样,逻辑处理出一个pll0_clkout0脉冲宽度strobe信号,作为发送和接受开始,此strobe信号后发送端fpga内的selectio按节拍采样发送rtl逻辑分割后边界的信号状态值记录到封包结构的payloadd0~dn中,以令接受端fpga内的selectio按节拍查找恢复出信号。
可选的,所述收发信号恢复模块51还包括:接受端selectio模块512,用于接受端selectio按照tx端产生strobe信号的方法,产生本地strobe信号,作为接收开始,并基于和发送端约定的封包结构,开始在每个pll0_clkout0cycle时钟信号上升沿查找start,恢复d0~dn,检查end。从strobe信号有效开始,就开始计数pll0_clkout0cycle值,如果在规定的pll0_clkout0cyclecycle数内,没有能找到start,则接受恢复数据无效。
可选的,所述发送端selectio模块511用于在fpga发送芯片的每个dutclk的上升沿,以strobe信号作为开始,发送rtl逻辑分割后边界signal的状态值,第一个cycle发送一固定字节长度的起始(strart),然后第二个cycle发送d0,第三个cycle发送d1,…发到第n个cycle发送最后一个dn-1,最后发送end,在一个dutclk周期内,还有多余的pll0_clkout0cycle将全部发送end,直到下一个strobe信号到来。
可选的,所述接受端selectio模块512用于在一个dutclk周期内,根据pll0_clkout0cycle/dutclk比率关系,例如是25,那么strobe消耗2个pll0_clkout0cycle,实际约定封包是start d0~d7 end结构,需要10个pll0_clkout0cycle,rx端必须在strobe信号有效后(25-2-10=13)个pll0_clkout0cycle内找到start标记,否则恢复数据无效。
本发明实施例中提供一种基于多fpga互联的收发信号恢复终端。
所述基于多fpga互联的收发信号恢复终端包括:
基于fpga的soc验证平台,应用于大型rtl验证和开发;
基于fpga开发的大型应用系统,用于执行如图1所述的基于多fpga互联的收发信号恢复方法。
综上所述,本发明基于多fpga互联的收发信号恢复方法、系统以及终端,用于解决了解决现有技术中大型同频(singleclkdomain)rtl逻辑在多个fpga上验证难点。本发明对大型同频rtl的分割到多个fpga上实现可以任意边界分割,原型功能等比例实现。fpgaselectio数量多,可以复用发送的信号量大。工作稳定,抗干扰能力强,易于fpga工程实现,运行速度快。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅示例性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,但凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
1.一种基于多fpga互联的收发信号恢复方法,其特征在于,应用多fpga多个selectio互联的系统,所述方法包括:
收发双方fpga均使用由本地dutclk的上升沿产生的strobe信号进行收发管理。
2.根据权利要求1中所述的基于多fpga互联的收发信号恢复方法,其特征在于,所述方法包括:将每个本地dutclk时钟信号的上升沿分别做一个strobe信号作为发送或接收开始,并基于封包结构,依次在每个fpga的selectio的pll0_clkout0时钟信号上升沿,发送端selectio按照节拍发送rtl的分割边界信号,接受端selectio按照pll0_clkout0的节拍查找起始start、恢复payload以及检查结束end。
3.根据权利要求2中所述的基于多fpga互联的收发信号恢复方法,其特征在于,所述封包结构包括:起始start、可多个中间payload区域d0~dn和结束end。
4.根据权利要求3中所述的基于多fpga互联的收发信号恢复方法,其特征在于,所述方法包括:所述收发双发的fpga根据各自的dutclk,使用各自fpga产生selectio的pll0_clkout0上升沿采样,逻辑处理出一个pll0_clkout0脉冲宽度strobe信号,作为发送开始,此strobe信号后发送端fpga内的selectio按节拍采样发送rtl逻辑分割后边界的信号状态值记录到封包结构的payloadd0~dn中,以令接受端fpga内的selectio按节拍查找恢复出信号。
5.根据权利要求3中所述的基于多fpga互联的收发信号恢复方法,其特征在于,所述方法包括:所述收发双发的fpga根据各自的dutclk,使用各自fpga产生selectio的pll0_clkout0上升沿采样,逻辑处理出一个pll0_clkout0脉冲宽度strobe信号,作为接收开始,并基于和发送端约定的封包结构,开始在每个pll0_clkout0cycle时钟信号上升沿查找start,恢复d0~dn,检查结束end。
6.一种基于多fpga互联的收发信号恢复系统,其特征在于,应用多fpga多selectio互联系统,所述收发信号恢复系统包括:
收发信号恢复模块,用于收发双方fpga均使用由本地dutclk的上升沿产生的strobe信号进行收发管理。
7.根据权利要求6中所述的基于多fpga互联的收发信号恢复系统,其特征在于,所述收发信号恢复模块用于将每个本地dutclk时钟信号的上升沿分别做一个strobe信号作为发送或接收开始,并基于封包结构,依次在每个fpga的selectio的pll0_clkout0时钟信号上升沿,发送端selectio按照节拍发送rtl的分割边界信号,接受端selectio按照pll0_clkout0的节拍查找起始start、恢复payload以及检查结束end。
8.根据权利要求7中所述的基于多fpga互联的收发信号恢复系统,其特征在于,所述封包结构包括:起始start、可多个中间payload区域d0~dn和结束end。
9.一种基于多fpga互联的收发信号恢复终端,其特征在于,包括:
基于fpga的soc验证平台,应用于大型rtl验证和开发;
基于fpga开发的大型应用系统,用于执行如权利要求1至5任一项所述的基于多fpga互联的收发信号恢复方法。
技术总结