文章可知网下载阅读,该论文设计了一种 PC 到光纤模块(基于Aurora的光纤传输)的数据通路,成功完成了Aurora 以及 DDR 等模块的功能验证。
学习内容:
本次主要学习了Pcie高速串行总线协议、Aurora高速串行总线协议、DDR相关的基础知识,并结合实际应用进行简单记录。
Pcie相关笔记:
1、Pcie采用端到端的传输方式,比如从PC—FPGA。其拓扑结构如下:
其中Switch 相当于有互联选择作用,由于一条链路只能挂接一个 Endpoint,所以若想让几个 Endpoint 挂接在一链路上用,就需要通过Switch 进行选择。
其中EP指具体的设备,比如FPGA,其可以作为请求者,也可作为完成者。
2、端到端的两个设备,即是发送设备也是接收设备。所以不管是发送设备还是接收设备都同时含有收发逻辑,两个设备之间通过若干导线连接在一起形成数据通道。
一条数据通路可包含多条链路lane,比如说PCcie X8即有8Lane,每个lane都有发送和接收,从而可以同时收发。具体采用几lane在IP中可配置。
3、收发均以包的形式进行,发送相当于不断组包,接收相当于不断拆包。
如下是发送不断组包的过程,如在事务层,给数据加ECRC,在数据链路层加序列号以及LCRC……
拆包则相反,即从外到内删减
4、Pcie的分层结构:
如下包含事务层、数据链路层、物理层,真正使用的时候,重点关心事务层。
事务层主要就是把软件下发的数据,组装成事务层数据报文TLP格式
5、下面简单了解TLP数据包格式:
首先是TLP包头,包头决定了对应报文的格式,有两种格式,一种长度为 3 DW,一种长度为 4 DW,其中的 DW 是双字的意思,大小等于 4 字节。
下图显示了包头中的字段,其中标记为“R”的字段为保留字段,默认为 0,每个字段代表不同含义,干不同的事儿,这里具体不具体介绍。另外可以重点理解一下字节使能部分,即可DW BE。
Aurora相关笔记:
1、该部分vivado也有对应的IP,因此我们重点放在用户应用程序部分即可。
2、同样理解链路lane以及通道channel的概念
3、实际运用时,首先确保lane和channel 建立后,进行数据的传输。
4、在实际传输中,由于协议引擎和收发器流水线延迟的缘故,使得主机和从机在通信过程中(发送和接收过程中)存在延迟。
仿真测试时可以一个aurora自回环,也可以两个aurora进行回环测试。
DDR相关笔记:
1、DDR读写控制采用MIG IP核。
如下图所示,MIG 配置完成后,我们重点关注用户控制逻辑部分,即用户接口。
物理接口部分注意引脚分配即可。
2、MIG 用户接口仍基于AXI总线协议握手机制。另外在具体应用时,我们首先要等待DDR初始化完成,完成之后才可进行DDR读写操作。其中初始化完成通过init_calib_complete信号指示。
3、对于DDR写操作,首先写操作包含三种类型,即写命令超前于写数据,同步于写数据,滞后于写数据,但一般采用写命令和写数据同步的方式:
下图可知,主要包含命令以及数据相关端口,同时还是基于AXI握手进行传输,不再赘诉。
4、读操作时,我们仅需要给出读命令以及读地址,之后经过一段时间的延迟,读数据出现在总线上。
该论文主要是一些基础的操作
DDR读写测试的方式:写入一定数据后等待一个周期,后将写入数据读出的方式。
Aurora测试:回环