《两片FPGA之间的数据传输.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《两片FPGA之间的数据传输

两片FPGA之间的数据传输 两片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。 图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内的路径延时值是假设的。 图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的有效信号窗口中央。 图3 ???????? 从寄存器级来看tx_clk与tx_en/tx_db之间的关系,大体可以如图4所示。其实这也是一个比较典型的源同步接口。无论对于时钟信号还是数据信号,他们的源节点到宿节点之间所经过的延时都分为三部分,即在TX FPGA内部的路径延时、在PCB板上走线的延时、在RX FPGA内部的路径延时(当然确切的说,可能应该再加上一些不确定时间)。而在PCB板上的延时是固定的,分别在两片FPGA器件内部的路径延时则是需要进行约束和分析的,并且通过他们的实际情况来调整作为RX FPGA输入时钟的相位,以确保尽可能的符合图3所示的时序要求。 图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。 图5 ???????? 再来看图6所示的波形,其中sysclk是图4的TX FPGA内部时钟,也是源寄存器时钟;data即输出到TX FPGA的数据总线tx_db(包括tx_en信号);outclk是从PLL输出的时钟波形,inclk则是最终到达目的寄存器的时钟波形。 图6 ???????? 从图6所示的一些时间关系中,不难理出一个Tshift取值的公式。如下: 1.?????? 令Data总线的有效数据窗口为(Tdv1,Tdv2),则: Tdv1 = Tdmax,Tdv2 = Tclk + Tdmin,中间值为Tdv = (T

文档评论(0)

lunwen1978 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档