PCIE xilinx v5 IP核使用前的研究

 外带一个月前啃的一个星期,加本星期心无旁骛,啃出些心得,广惠后人。但愿有用。

    trn信号是数据链路层的信号 TLP包是数据链路层传给transaction层的包 解包需要一个transaction的协议,所有req信号都是属于transaction层的信号,都是从包内数据解得的 

    数据链路层中trn_rd是传输TLP包的数据线 其他线都是辅助trn_rd传输数据的。比如起始结束 数据掩膜之类的。

    header的叫法只属于transaction,header,payload,digist组成tlp数据包,payload专指有效数据。transaction层中的req_td 是用来表示crc校验用的。

 req_rid和req_tag信号是 在接到tlp包后rx_engine进行拆包,得到的requester_id和request_tag信号 该信号传给tx_engine并回传给主机 告诉主机req_rid的请求已经收到,这两个信号与数据位mask(BE)合并于tlp包头的第三帧回传。

    虽然pcie只有两根线传数据,但是需要数据链路层一个协议以及tlp解包协议。这主要因为1.数据链路层的协议可以使两端点pcie设备顺利传输数据,在物理层面上保证时序不错位。(电路人来做)2.包协议 更虚构的协议 告诉收发包者各个位都表示什么意思,进行bits align(计算机人关心)。 所以两个协议一个不能少。

    non-posted和posted传输方式 修改trn_tbuf_av寄存器实现配置不同方式。 non-posted需要completer传给requester completion包,有时如果requester需要completer读数据 数据包含在completion包里。 posted传输方式 requester总是认为completer能够稳稳收包 不需要completion包应答而且posted request不一定在request tlp包里含有数据。

completion帧协议有变化,|completer_id(16bits)|000|0|byte_count(12bits)|     在此处出数据

http://note.youdao.com/share/?id=c595747071f2a744e6e48c2058f53722&type=note 带图版本;

以上为精髓

下面就是浩如烟海的文档中本人筛选出来的比较有用的文档

pcie_slot_to_pc.pdf

xcell26_678.pdf

PCIE总线的FPGA设计方法.pdf

PCIe-8622H.pdf

基于PCI+Express总线的高性能嵌入式系统研究_1357727089890.pdf

ug197.pdf

重点看ug197.pdf与两篇中文论文对着看

接下来就是实际操作一下xilinx的ip核

看完这些也就是刚刚能知道如何使用ip核,即transaction层和application层的接口。至于数据链路层的设计和Ghz pcb设计就不要想了。

转载:https://blog.csdn.net/jahero/article/details/13994907?locationNum=7

原文地址:https://www.cnblogs.com/chengqi521/p/8717705.html