一种fpga片间低速并行异步通信方法及通信系统

文档序号:1908219 发布日期:2021-11-30 浏览:14次 >En<

阅读说明:本技术 一种fpga片间低速并行异步通信方法及通信系统 (Low-speed parallel asynchronous communication method and communication system between FPGA (field programmable Gate array) chips ) 是由 刘国成 顾大晔 王秋实 周乐 于 2021-09-01 设计创作,主要内容包括:本发明提出一种FPGA片间低速并行异步通信方法及通信系统,对发送端工作时钟clk1进行n分频处理,得到发送端分频时钟clk-div1;发送端与接收端进行数据传输前进行链路同步,在完成链路同步后,发送端将clk1时钟域的大位宽数据,转换成低频的clk-div1时钟域的小位宽数据,再逐个发送出去,接收端再用接收端工作时钟clk2采样接收到的clk-div1时钟域的数据,将数据恢复到clk2时钟域。本发明采用FPGA片间低速并行异步通信,在待传输数据位宽很大且信号跳变频率较小的情况下,完成不同片间/板间FPGA之间的异步通信和数据传输。(The invention provides a low-speed parallel asynchronous communication method and a communication system among FPGA chips, which are used for carrying out n frequency division processing on a transmitting end working clock clk1 to obtain a transmitting end frequency division clock clk _ div 1; the method comprises the steps that link synchronization is carried out before data transmission is carried out between a sending end and a receiving end, after the link synchronization is completed, the sending end converts large-bit-width data of a clk1 clock domain into small-bit-width data of a clk _ div1 clock domain with low frequency, the small-bit-width data are sent out one by one, the receiving end samples the received data of the clk _ div1 clock domain through a receiving end working clock clk2, and the data are restored to the clk2 clock domain. The invention adopts low-speed parallel asynchronous communication among FPGA chips, and completes the asynchronous communication and data transmission among the FPGA chips/boards under the conditions that the bit width of the data to be transmitted is large and the signal hopping frequency is small.)

一种FPGA片间低速并行异步通信方法及通信系统

技术领域

本发明涉及芯片验证技术领域,尤其是一种用于芯片验证的FPGA片间低速并行异步通信方法及通信系统。

背景技术

在芯片设计规模日益增大,芯片应用越来越广泛的今天,保证芯片设计的正确性是每一位芯片设计者必须考虑的大事。在芯片流片前进行充分验证,是提高芯片设计质量,保证芯片设计正确性的重要措施之一。

目前的芯片验证方法有很多,其中基于FPGA的原型验证,由于相较于服务器软件仿真有巨大的速度优势,在芯片设计领域有着非常广泛的应用。然而,随着芯片设计规模的不断增大,即使是当前容量最大的FPGA,也不足以完整地放下整个芯片设计,这就必然需要将整个芯片的设计分布式地放置在一个板卡内的多片FPGA,甚至多个板卡间的多片FPGA内来实现。因此,FPGA片间各种不同的互联通信和数据传输便成了整个验证平台系统非常重要的一部分。

现有的片间互联多采用信号直连或者提高通信时钟频率的时分复用方式。由于FPGA的GPIO端口资源有限,其所能支持的时钟频率也有上限,因此,在很多情况下,这两种方式难以实现,即便得以实现,通信速率也会非常低。

发明内容

针对现有芯片验证中存在的技术问题,本发明提出一种FPGA片间低速并行异步通信方法及通信系统,在待传输数据位宽很大且信号跳变频率较小的情况下,采用低时钟频率的时分复用通信方法,仅需使用少量GPIO端口,无需提高片间通信时钟频率,便可以完成不同片间/板间FPGA之间的异步通信和数据传输。

本发明保护一种FPGA片间低速并行异步通信方法,对发送端工作时钟clk1进行n分频处理,得到发送端分频时钟clk_div1;发送端与接收端进行数据传输前进行链路同步,在完成链路同步后,发送端将clk1时钟域的大位宽数据,转换成低频的clk_div1时钟域的小位宽数据,再逐个发送出去,接收端再用接收端工作时钟clk2采样接收到的clk_div1时钟域的数据,将数据恢复到clk2时钟域。

进一步的,分频数根据结合相邻有效数据之间的传输等待时间确定的实际传输需要的有效带宽设置。

进一步的,链路同步包括以下步骤:

步骤A1,上电复位后,发送端和接收端均进入链路同步状态,接收端采样位置计数器在0~2n-1范围内循环计数;

步骤A2,接收端将同步信号sync拉低,发送至发送端;

步骤A3,发送端在clk_div1时钟域下,向接收端发送同步字f0f0f0f0;

步骤A4,接收端接收到同步字数字序列后,按照当前采样位置计数器的数值对同步字进行间隔采样,找到同步字;

步骤A5,连续t次在同一采样点位置找到同步字,则认为链路同步完成;

步骤A6,接收端将同步信号sync拉高,发送端和接收端均跳出链路同步状态,发送端进入等待数据状态,接收端进入包头检测状态。

进一步的,数据传输包括以下步骤:

步骤B1,发送端检测到有效数据跳变,将该数据写入fifo数据缓存中,等待发送;

步骤B2,发送端处于等待数据状态,若fifo数据缓存不为空,则将数据读出,加上包头发送至接收端;

步骤B3,接收端按照链路同步阶段确定的采样位置,对发送端发送过来的数据进行采样,若检测到包头,则拉高包头有效标志,进入有效数据接收状态,依次采样得到有效数据;

步骤B4,有效数据接收完毕后,拉高数据接收完毕信号,并输出有效数据。

本发明还保护一种FPGA片间低速并行异步通信系统,采用上述FPGA片间低速并行异步通信方法,包括发送端和接收端,发送端配置有数据缓存单元、数据编码单元和发送链路同步单元,接收端配置有数据解码单元和接收链路同步单元;

所述发送链路同步单元,在上电复位后,直接进入链路同步状态,接收到接收端发送的拉低的同步信号sync后,发出同步字;并在链路同步完成后,跳出链路同步状态;

所述数据缓存单元,将大位宽且低跳变频率的待发送数据送到fifo中缓存;

所述数据编码单元,将fifo缓存中大位宽的待发送数据读出,转换成小位宽的低频数据,加上包头发送至接收端;

所述接收链路同步单元,在上电复位后,直接进入链路同步状态,向发送端发出拉低的同步信号sync;接收发送端的同步字,当检测到稳定的同步字后,将同步信号sync拉高,与发送端一起跳出链路同步状态,使得所述数据解析单元进入到有效数据接收状态;

所述数据解析单元,根据包头解析出有效数据,将小位宽的低频数据转换成大位宽且低跳变频率的数据。

本发明采用FPGA片间低速并行异步通信,在待传输数据位宽很大且信号跳变频率较小的情况下,完成不同片间/板间FPGA之间的异步通信和数据传输;通过有效带宽计算和匹配,避免大量无效带宽消耗,显著降低GPIO端口资源的使用量和片间的通信时钟频率,提高通信的稳定性。

附图说明

图1为系统应用场景示意图。

图2为FPGA片间低速并行异步通信解决方案的整体结构框图;

图3发送端状态转移图;

图4接收端状态转移图;

图5接收端同步训练过程;

图6发送端数据打包格式;

图7接收端数据解析格式。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

实施例1

在图1设定的应用场景中,需要在FPGA1-6之间实现数据传输,而这些FPGA分布于多个板卡上。在跨板的情况下,两片FPGA芯片的参考时钟是异步的,并且可能存在一定的频差。如何解决此应用场景下的FPGA片间通信,正是本发明探讨的问题。

本发明提供的FPGA片间低速并行异步通信解决方案的整体结构框图如图2所示,包括发送端和接收端,发送端配置有数据缓存单元、数据编码单元和发送链路同步单元,接收端配置有数据解码单元和接收链路同步单元。

对于AXI4标准总线,本实施例直接采用Xilinx提供的CHIP2CHIP的IP,将AXI总线接口转成高速serdes接口,FPGA片间直接使用serdes互联,serdes链路速率可达到8Gpbs。对于其他的一些控制信号,信号线通常会非常多,而其信号跳变频率通常都很低,即需要传递的有效控制信息并不多。因此,本发明采用一种低速并行异步通信解决方案,在待传输数据位宽很大且信号跳变频率较小的情况下,采用一种低时钟频率的时分复用方通信法,仅使用少量GPIO端口,无需提高通信时钟频率,便可以完成不同片间/板间FPGA之间的异步通信和数据传输。

针对发送端:所述发送链路同步单元,在上电复位后,直接进入链路同步状态,接收到接收端发送的拉低的同步信号sync后,发出同步字;并在链路同步完成后,跳出链路同步状态;所述数据缓存单元,将大位宽且低跳变频率的待发送数据送到fifo中缓存;所述数据编码单元,将fifo缓存中大位宽的待发送数据读出,转换成小位宽的低频数据,加上包头发送至接收端。

针对接收端:所述接收链路同步单元,在上电复位后,直接进入链路同步状态,向发送端发出拉低的同步信号sync;接收发送端的同步字,当检测到稳定的同步字后,将同步信号sync拉高,与发送端一起跳出链路同步状态,使得所述数据解析单元进入到有效数据接收状态;所述数据解析单元,根据包头解析出有效数据,将小位宽的低频数据转换成大位宽且低跳变频率的数据。

将数据从大位宽高频时钟域转到小位宽低频时钟域,首先需要确定分频数。此处的分频数根据结合相邻有效数据之间的传输等待时间确定的实际传输需要的有效带宽设置。

例如clk1时钟为100MHz,待传输控制信号位宽为500比特位,则其理论上需要的传输带宽为50Gbps,若片间可用信号线只有4条线,传输50Gbps的数据需要时钟高达12.5GHz,这在GPIO端口是不可能实现的。经过分析发现,实际应用中,控制信号在传输一次有效信号之后,会长时间保持不变,下一次再传输有效信号可能要等到10us以后,即其有效跳变频率大概只在100KHz的水平,如此推算,实际传输需要的有限带宽仅为50Mbps,结合片间4条信号线传输,其通信时钟只需要12.5MHz即可满足需求。通过这样的带宽匹配计算,便可以把这一通信模块做成一个参数化的标准模块。

本发明采用的FPGA片间低速并行异步通信方法,对发送端工作时钟clk1进行n分频处理,得到发送端分频时钟clk_div1,clk_div1根据实际传输需要的有效带宽推算得出。发送端与接收端进行数据传输前进行链路同步,在完成链路同步后,发送端将clk1时钟域的大位宽数据,转换成低频的clk_div1时钟域的小位宽数据,再逐个发送出去,接收端再用接收端工作时钟clk2采样接收到的clk_div1时钟域的数据,将数据恢复到clk2时钟域。如此操作主要是以时间换空间,节省GPIO口资源,提高异步通信的稳定性。发送端和接收端的状态转移如图3、图4所示。从中可以看到,片间异步通信的第一步,即是要建立链路同步。

上电复位后,发送端和接收端均进入到链路同步状态,接收端将同步信号sync拉低,发送至发送端,发送端开始连续地发送同步字f0f0f0f0……

以对clk1进行3分频为例,因为发送端发送出去的数据是在3分频的低频时钟域,而接收端采样数据是在高频时钟域,理想情况下高频时钟域采样得到的同步字数据序列应该是fff000fff000fff000……

然而,由于clk1和clk2之间可能存在相位差和频率差,接收端可能采样到的同步字数据序列有fff000fff0000……/ff0000ff0000……/ffff00ffff00……等情况。只有从采样到的同步字数据序列中还原出同步字,才能保证后续有效数据的获取,因此,链路同步至关重要。

本实施例采用的链路同步方法包括以下步骤:

1、上电复位后,发送端和接收端均进入链路同步状态,接收端采样位置计数器bit_cnt在0~5范围内循环计数。之所以在0~5范围内循环计数,是因为对于8bit同步字f0,接收端理想情况下采样得到的同步字数据序列为fff000,存在6个采样位置。

2、接收端将同步信号sync拉低,发送至发送端;发送端在clk_div1时钟域下,向接收端发送同步字f0f0f0……

3、接收端接收到同步字数据序列后,按照当前采样位置计数器的数值对同步字进行间隔采样,找到同步字。以接收到同步字数据序列为ff0000ff0000ff0000为例,取值bit_cnt=3,则可以稳定地采样到0f0f0f序列,具体原理如下表1所示。从表1可以看到,采样的起始位是从bit_cnt=3开始的。

F F 0 0 0 0 F F 0 0 0 0 F F 0 0 0 0 F F 0 0 0 0
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
0 F 0 F 0 F 0

表1

4、连续在同一采样点位置找到同步字的次数超过设定阈值后,则认为链路同步完成。

5、接收端将同步信号sync拉高,发送端和接收端均跳出链路同步状态,发送端进入等待数据状态,接收端进入包头检测状态。

下面以传输有效数据0x12345678为例,对基于本发明FPGA片间低速并行异步通信方法的数据传输流程进行描述。图6、图7分别为发送端、接收端数据打包格式。

1、发送端检测到有效数据跳变,将数据0x12345678写入fifo数据缓存中,等待发送。

2、发送端处于等待数据状态,若fifo数据缓存不为空,则将数据0x12345678读出,加上包头发送至接收端,首先发送包头数据ffff0000,然后接着发送有效数据0x1、0x2、0x3、0x4、0x5、0x6、0x7、0x8。

3、接收端按照链路同步阶段确定的采样位置,对发送端发送过来的数据进行采样,若检测到ffff0000的包头,则拉高包头有效标志frm_header_vld,进入有效数据接收状态,依次采样得到有效数据0x1、0x2、0x3、0x4、0x5、0x6、0x7、0x8。

4、有效数据接收完毕后,拉高数据接收完毕信号data_out_vld,并输出有效数据。

显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域及相关领域的普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于传送多比特位数据的传送器

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!