基于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测试:回环
相关文章:
基于FPGA的PCIe-Aurora 8/10音频数据协议转换系统设计阅读笔记
文章可知网下载阅读,该论文设计了一种 PC 到光纤模块(基于Aurora的光纤传输)的数据通路,成功完成了Aurora 以及 DDR 等模块的功能验证。 学习内容: 本次主要学习了Pcie高速串行总线协议、Aurora高速串行总线协议、DDR相…...
stm32控制舵机sg90
一、sg90简介 首先介绍说一下什么是舵机。舵机是一种位置(角度)伺服的驱动器。适用于一些需要角度不断变化的,可以保持的控制系统。sg90就是舵机的一种。 舵机的工作原理比较简单。舵机内部有一个基准电压,单片机产生的PWM信号通…...
state 和 props 有什么区别?
一、state 一个组件的显示形态可以由数据状态和外部参数所决定,而数据状态就是 state,一般在 constructor 中初始化 当需要修改里面的值的状态需要通过调用 setState 来改变,从而达到更新组件内部数据的作用,并且重新调用组件 r…...
Unity 获取桌面路径的方法
在Unity中,当我们碰到以下一些情况时,可能需要桌面的路径。 1、文件操作:如果我们想在游戏中保存或读取文件到桌面,就可以使用桌面路径来指定文件的位置。 2、调试信息:在开发过程中,我们往往会将一些调试…...
基于SSM的考研图书电子商务平台的设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...
信息系统“好用”的标准探讨
数字化转型建设的关键不在建设信息系统。这是为了避免走信息化建设的老路——业务和信息化两张皮,寄希望信息系统解决业务问题。在数字化转型建设中,信息系统仍然是重要抓手和显性成果,是企业业务和数据的承载平台,也是IT厂商向客…...
vue elementui 实现从excel从复制多行多列后粘贴到前端界面el-table
1、效果图 可以全部复制粘贴,也可以单独对某行、某列进行复制粘贴 从excel复制粘贴到前端页面的table上 2、实现代码 html部分: <template><div><el-table:data"tableData"borderstyle"width: 100%":cell-class-…...
C++学习 --类和对象之友元
目录 1, 全局函数做友元 2, 类做友元 3, 成员函数做友元 友元可以让函数、成员函数、类, 访问另外一个类的私有变量 1, 全局函数做友元 在类中, 通过friend 数据类型 函数名()方式,将函数当…...
Flutter笔记:使用Flutter构建响应式PC客户端/Web页面-案例
Flutter笔记 使用Flutter构建响应式PC客户端/Web页面-案例 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/detai…...
聊聊LogbackMDCAdapter
序 本文主要研究一下LogbackMDCAdapter MDCAdapter org/slf4j/spi/MDCAdapter.java public interface MDCAdapter {/*** Put a context value (the <code>val</code> parameter) as identified with* the <code>key</code> parameter into the cur…...
spring命名空间注入和XML自动装配、引入外部配置文件
Spring p命名空间注入util命名空间注入基于XML的自动装配根据名称自动装配 Spring引入外部属性配置文件 p命名空间注入 作用:简化配置。 使用p命名空间注入的前提条件包括两个: ● 第一:在XML头部信息中添加p命名空间的配置信息:…...
【2024年11月份--2024精灵云校招C++笔试题】
考试形式 笔试考了三道算法题,笔试形式为阅读题目,然后用中文给出算法思路,最后给出算法例程,分数各占一半,简单,中等,复杂各一道题。我看9月份有人也是考这3道题,一模一样。 第…...
Visual Studio 2019下编译OpenCV 4.7 与OpenCV 4.7 contrib
一、环境 使用的环境是Win10,Visual Studio 2019,Cmake3.28,cdua 11.7,cudnn 8.5,如果只是在CPU环境下使用,则不用安装CUDA。要使用GPU处理,安装好CUDA之后,要测试安装的CUDA是否能用。不能正常使用的话,添加一下系统…...
【Linux网络】系统调优之聚合链路bonding,可以实现高可用和负载均衡
一、什么是多网卡绑定 二、聚合链路的工作模式 三、实操创建bonding设备(mode1) 1、实验 2、配置文件解读 3、查看bonding状态,验证bonding的高可用效果 三、nmcli实现bonding 一、什么是多网卡绑定 将多块网卡绑定同一IP地址对外提供服务…...
k8s持久化存储PV、PVC
容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动。其次&a…...
CocosCreator3.8原生引擎源码研究
1. Cocos Creator引擎架构图 2. 原始引擎源码流程图 下图中包含Android native层引擎到js适配层的启动和主循环的启用流程和必要说明,本猿比较懒,暂时不细述了,各位看官直接看图吧,还在细化扩充,后续逐渐更新。。。 版…...
高二英语上
unit 1 1.yarn三种意思 1.码; 2.庭院,天井; 3.花园;down**down 在这里是介词,也可以作副词,与 down 相对的是 up。请比较下列两句: 1.Look! Hes driving down the street . 2.Look! Hes driving up the street .这两例…...
JavaWeb Day10 案例 准备工作
目录 一、需求说明 二、环境搭建 (一)数据库 (二)后端 ①controller层 1.DeptController.java 2.EmpController.java ②mapper层 1.DeptMapper.java 2.EmpMapper.java ③pojo层 1.Dept.java 2.Emp.jav…...
Nginx:不同域名访问同一台机器的不同项目
Nginx很简单就可以解决同一台机器同时跑两个或者多个项目,而且都通过域名从80端口走。 以Windows环境下nginx服务为例,配置文件nginx.conf中,http中加上 include /setup/nginx-1.20.1/conf/conf.d/*.conf;删除server部分,完整如…...
C++(20):new数组时元素个数自动推到
C20在new数组时可以根据初始化列表,自动推到元素个数: #include <iostream> using namespace std;int main() {int *pd new int[]{1,2,3,4};for(auto i 0; i < 4; i){cout<<pd[i]<<endl;}return 0; }运行程序输出: 1…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 (TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...
React核心概念:State是什么?如何用useState管理组件自己的数据?
系列回顾: 在上一篇《React入门第一步》中,我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目,并修改了App.jsx组件,让页面显示出我们想要的文字。但是,那个页面是“死”的,它只是静态…...
