当前位置: 首页 > news >正文

基于FPGA的PCIe-Aurora 8/10音频数据协议转换系统设计阅读笔记

文章可知网下载阅读,该论文设计了一种 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测试:回环

http://www.lryc.cn/news/227198.html

相关文章:

  • stm32控制舵机sg90
  • state 和 props 有什么区别?
  • Unity 获取桌面路径的方法
  • 基于SSM的考研图书电子商务平台的设计与实现
  • 信息系统“好用”的标准探讨
  • vue elementui 实现从excel从复制多行多列后粘贴到前端界面el-table
  • C++学习 --类和对象之友元
  • Flutter笔记:使用Flutter构建响应式PC客户端/Web页面-案例
  • 聊聊LogbackMDCAdapter
  • spring命名空间注入和XML自动装配、引入外部配置文件
  • 【2024年11月份--2024精灵云校招C++笔试题】
  • Visual Studio 2019下编译OpenCV 4.7 与OpenCV 4.7 contrib
  • 【Linux网络】系统调优之聚合链路bonding,可以实现高可用和负载均衡
  • k8s持久化存储PV、PVC
  • CocosCreator3.8原生引擎源码研究
  • 高二英语上
  • JavaWeb Day10 案例 准备工作
  • Nginx:不同域名访问同一台机器的不同项目
  • C++(20):new数组时元素个数自动推到
  • 使用visualStudio发布可执行文件
  • yolo系列报错(持续补充ing)
  • Technology Strategy Patterns 学习笔记9 - bringing it all together
  • Redis(12)| 过期删除策略和内存淘汰策略
  • Go-服务注册和发现,负载均衡,配置中心
  • k8s-实验部署 1
  • Git的原理与使用(一)
  • 1204. 错误票据
  • uniapp中在组件中使用被遮挡或层级显示问题
  • windows下安装es及logstash、kibna
  • 华为ensp:rip宣告