赞
踩
上一章是个引子,涉及到GTP的少之又少,这章算是正式踏上我们对GTP的征途。本章的主要解决如下三个问题
第一部分:为什么!为什么?接口信号那么多???
看下图是我对GTP核的例化,为了不让截图太长,我中间还隐藏了些,大概有100多行吧。而且啊,这还只是一通道,我们可以最多例化四通道呢,那代码长度可想而知。
我上章说了,直接控制6个信号就可以实现数据收发了,为什么要整这么多?因为通用和特制是一对矛盾。我们在写代码的时候也应该有过这样的经验,如果一个模块不具备通用性,那么可以写得很精简,如果要考虑诸多场合,具备广泛的适用性,那么就会加很多内容来满足需求。这原本就是一堆矛盾,问题就在于如何取舍。
GTP核就是在追求极致的通用性,具有广泛的适用性。因为通用,所以繁杂。它就好比一块猪肉,原汁原味的呈现给你,你可以红烧、可以炒菜、可以卤肉、可以腌制,随你之心,如你所愿,怎么着都行。GTP也是,你可以自定义协议直接用它,也可以在它基础上开发PCIE、开发SRIO、开发SATA等等等。所以还是那句话,因为通用,所以繁杂。
另外,我们在开发一个功能模块时候,接口会有什么信号呢?时钟、复位、配置、状态监测、数据的输入输出。GTP亦是如此,那么多的信号无外乎这几种,而之所以多,也是因为他并不是如ram那般一个简单的核,它要做的事是实现高速串行通讯,是在并行通讯遇到瓶颈后新的解决方案,是提高数据吞吐量的依靠,其复杂程度可不一个串并转换可以概况的。
综上,一个兼复杂与通用与一身的核,自然接口显得不友好,但只要静下心来去研究,就会发现,眼睛欺骗了你。
第二部分:GTP的硬核长什么模样?
第一部分有用没用的扯了一堆,接下来就说一下GTP的硬核。一般我们把IP核分为软核、固核和硬核,硬核可以说嵌入在FPGA内部的ASIC,我们对他的使用是不占用查找表、触发器等逻辑资源的,而且有专门的资源统计,如下图所示,我用的芯片是ZYNQ系列的7015,一共有4个GT,就是四路串行高速接口,这我用了一个,故资源占用25%。
当然,硬核不占用其它资源不代表GTP这个IP核不占用其它资源,芯片厂家会对这个硬核封装,封装是耗费资源的。如下图所示,其中左1是一个整体,包括了4个名为左2的“GTPE2_CHANNEL”,右1是左1图中间的那部分,叫做“GTPE2_COMMON”。
我们再放大看引脚可以发现,那四个“GTPE2_CHANNEL”是高速串行收发引脚,“GTPE2_COMMON”两组时钟,称之为“QPLL”,这就是xilinx的GTP硬核的组织形式,我们把这一组称之为一个“Quad” ,这在我们画原理图时也会有所体现。
但这样做的目的是什么呢?我认为这样做的目的是“好聚好散”,极大的提高应用的灵活性,对于PCIE、SRIO等协议,可能就是多通道,这样实现起来就更方便更灵活,因为我们不是说用四个就需要例化四个这样的IP核,他们是当做一组形成一个IP核。接下来看IP核的程序结构就可以发现这个现象。
第三部分 GTP核的程序是个什么样的架构?
这个就需要看程序了,可以打开我提供的例程看一下。
以上就是简单的了解下GTP核的内容,由于我例化了一个GTP,如果例化多个的话,上述的4和5就会呈现多个,这也有第二部分所说吻合,如下图所示就是用了四个。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。