原创 两片FPGA之间的数据传输

2011-2-9 21:56 9368 10 16 分类: FPGA/CPLD

两片FPGA之间的数据传输


         在工程实践中,常常需要涉及多个主芯片间的数据传输。尤其在多个FPGA级联的系统中,不同吞吐量的数据传输可以采取不同的接口方式来实现。但是,采取什么样的方式能够让他们相互间的数据传输可靠、稳定,并且满足吞吐量的需求呢?通信方式有很多,慢点可以用UART、IIC,快的可以用SPI、LVDS、并行总线等方式,这里要介绍的是并行总线方式。它的优点是接口简单,常见的3.3V LVTTL电平即可,无需额外的辅助电压,并且只要FPGA分别给出一组IO口连接即可。缺点也很显而易见,耗费的IO管脚数较多。


         先来看看示意图,图1中的两个FPGA,数据传输是单向的。TX FPGA有一个专用的FIFO用于缓存待发送的数据,RX FPGA也有一个专用的FIFO用于缓存接收到的数据。而他们接口的信号为时钟信号tx_clk、发送数据有效信号tx_en、发送数据总线tx_db、请求数据发送信号rx_req和复位信号clr。



5ae6aee6-2366-4600-a0e1-ad19fbb68b32.jpg


图1


         这种接口的工作方式是有请求才有数据,通常rx_req置位后,TX FPGA发出一组(固定数据流,需要在TX FPGA的逻辑中设置)数据,这组数据以时钟周期(tx_clk)为单位进行发送。在接收端(RX_FPGA)通过tx_clk的上升沿锁存数据,有效数据对应的数据有效信号tx_en是使能的。RX FPGA的复位输出clr用于复位TX FPGA的缓存FIFO。


         在硬件连接上,有讲究,由于tx_clk是PLL输出的,因此最好能够分配到TX FPGA的专用PLL输出时钟管脚上;此外,在RX FPGA端也一样,tx_clk要分配到专用全局时钟输入管脚上。其它的信号根据实际布局进行优化布线即可。


不是连接好FPGA或是写好逻辑就完事了,两片FPGA间的时序约定、约束以及收敛也是非常关键的。


下面通过特权同学模拟一个工程的情况来探讨这种两片FPGA通信的时序分析与约束。如图2对两片FPGA的接口与时序参数进行定义。两片FPGA间的接口也是寄存器到寄存器的时序路径,通常可以分为三部分时序路径:TX FPGA内、PCB板上和RX FPGA内。图2中给出的PCB走线长度参数是确定的,TX FPGA和RX FPGA内的路径延时值是假设的。



ee8c581e-05a0-4efc-9860-44b004c72090.jpg


图2


         RX FPGA发出的rx_req和clr信号时序要求均不高,可以简单的约束或者直接作为false路径。


         主要关注的时序是tx_clk/tx_en/tx_db,他们必须满足如图3所示的关系。即希望能用tx_clk的上升沿采样到稳定的tx_en/tx_db信号。也就是说,tx_clk的上升沿最好能够对准tx_en/tx_db的有效信号窗口中央。



950442a1-2c57-415b-839c-d0836d672da9.jpg


图3


         从寄存器级来看tx_clk与tx_en/tx_db之间的关系,大体可以如图4所示。其实这也是一个比较典型的源同步接口。无论对于时钟信号还是数据信号,他们的源节点到宿节点之间所经过的延时都分为三部分,即在TX FPGA内部的路径延时、在PCB板上走线的延时、在RX FPGA内部的路径延时(当然确切的说,可能应该再加上一些不确定时间)。而在PCB板上的延时是固定的,分别在两片FPGA器件内部的路径延时则是需要进行约束和分析的,并且通过他们的实际情况来调整作为RX FPGA输入时钟的相位,以确保尽可能的符合图3所示的时序要求。



71c0f527-32ba-451f-af43-44179366ec31.jpg


图4


         图2其实已经大体标注出了实际的一个大致延时范围。其实我们的这个范围圈定以及实际情况的不断校准,最终是希望能够计算出一个比较合适的tx_clk相位偏移。


         按图5的方式来定义clk和data总线的路径延时,那么 clk总的路径延时为Tc1+Tc2+Tc3(每一个值可能都有一个取值范围,不是固定的),data总的路径延时为Td1+Td2+Td3。如图我们取Tc1+Tc2+Tc3的最大值为Tcmax,最小值为Tcmin,并且取Td1+Td2+Td3的最大值为Tdmax,最小值为Tdmin。



3188d689-ccc9-4756-84a2-e8277ed8eb2f.jpg


图5


         再来看图6所示的波形,其中sysclk是图4的TX FPGA内部时钟,也是源寄存器时钟;data即输出到TX FPGA的数据总线tx_db(包括tx_en信号);outclk是从PLL输出的时钟波形,inclk则是最终到达目的寄存器的时钟波形。



fe8ef301-5beb-4cdb-bf7a-a01a8f9a251d.jpg


图6


         从图6所示的一些时间关系中,不难理出一个Tshift取值的公式。如下:


1.       令Data总线的有效数据窗口为(Tdv1,Tdv2),则:


Tdv1 = Tdmax,Tdv2 = Tclk + Tdmin,中间值为Tdv = (Tdmax + Tclk + Tdmin)/2


2.       令clk信号的上升沿有效窗口为(Tcv1,Tcv2),则:


Tcv1 = Tshift + Tcmin,Tcv2 = Tshift + Tcmax,中间值为Tcv = Tshift+(Tcmin+Tcmax)/2


3.       若要得到最佳的采样结果,则:Tdv = Tcv,即(Tdmax + Tclk + Tdmin)/2 = Tshift+(Tcmin+Tcmax)/2,也就是要满足:Tshift = (Tclk + Tdmax + Tdmin – Tcmin - Tcmax)/2


图2通过约束得到了一些参数值,即Tclk = 20ns,Tdmin = 10ns,Tdmax = 15.5ns,Tcmin = 1ns,Tcmax = 3.5ns。所以可以算得Tshift = 20.5ns,因为Tclk = 20ns,所以去Tshift = 0.5ns。


 


 

PARTNER CONTENT

文章评论6条评论)

登录后参与讨论

用户1001924 2011-7-10 11:41

确实是Tdv = (Tdmax + Tclk + Tdmin)/2 的。完整的应该是这样的 Tdv=Tdmax+(Tclk-Tdmax+Tdmin)/2

用户1000403 2011-5-11 13:01

1. 令Data总线的有效数据窗口为(Tdv1,Tdv2),则: Tdv1 = Tdmax,Tdv2 = Tclk + Tdmin,中间值为Tdv = (Tdmax + Tclk + Tdmin)/2 应改为: Tdv = (Tdmax + Tdmin)/2 + Tclk 您认为呢?

用户253961 2011-3-11 12:04

怎么插入图片的?我想插入图片到文章,好像不行。

用户1603360 2011-2-25 10:31

正好用到这个,

用户308760 2011-2-13 23:12

学习了

fuxiao123_401762695 2011-2-11 13:52

楼主研究的很深入,学习了
相关推荐阅读
特权ilove314 2016-06-30 21:16
例说FPGA连载6:FPGA开发所需的技能
例说FPGA连载6:FPGA开发所需的技能 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   前面的文字已经做了很多铺垫,相信读...
特权ilove314 2016-06-28 21:09
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-28 21:05
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-26 22:11
例说FPGA连载4:FPGA语言与厂商介绍
例说FPGA连载4:FPGA语言与厂商介绍 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   Verilog与VHDL 说到FP...
特权ilove314 2016-06-23 21:26
例说FPGA连载3:FPGA与其它主流芯片的比较
例说FPGA连载3:FPGA与其它主流芯片的比较 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   FPGA、ASIC和ASSP...
特权ilove314 2016-06-21 20:32
例说FPGA连载2:FPGA是什么
例说FPGA连载2:FPGA是什么 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   2015年伊始,Intel欲出资百亿美金收...
我要评论
6
10
关闭 站长推荐上一条 /4 下一条