基于ZYNQ的PCIE高速数据采集卡的设计(四)软件设计,Aurora 协议逻辑设计

news2024/10/5 16:29:53
系统软件设计
4.1 引言
本章基于第二章的分析结论,进行系统软件设计。软件设计包括逻辑设计、嵌入
式软件设计和上位机软件设计。在逻辑设计中,对 ADC 模块、 Aurora 模块、 DDR3
SDRAM 模块和 PCIE 模块进行分析和设计,在 Vivado 软件提供的 IP 核的基础上进
行各模块的逻辑代码的编写,并解决各个模块之间数据连接的问题;嵌入式设计是对
系统和内核的移植,并在 Zynq PS 内核实现系统的启动;在上位机设计中,首先
介绍驱动开发工具,再介绍上位机的整体设计。
4.2 逻辑软件设计
由于载卡的 FMC 接口数据与接入的子卡类型有关,根据接入的子卡类型选择
ADC 模块或 Aurora 模块,当选择 AD 子卡时,使能 ADC 模块,当选择光纤子卡时,
使能 Aurora 模块。对应的模块数据经 DDR3 SDRAM 缓存后,再由 PCIE 接口发送至
PC 机,数据流向如图 4.1 所示。
其中, ADC 模块是 AD 子卡的驱动程序,可提供 1Gsa/s 的采样率,数据分辨率
12bit Aurora 模块是光纤子卡的驱动程序,采用 Aurora 协议, 4 通道,单通道速
率为 10Gbps ,总速率为 40Gbps PCIE 接口采用 PCIE2.0 协议, x8 模式,单通道速
率为 5.0Gbps ,总速率为 40Gbps DDR3 SDRAM 模块用来实现对 Aurora 数据或 ADC
数据进行缓存。 Vivado 软件内提供 Aurora PCIE MIG IP 核,分别为 Aurora
议、 PCIE 协议和 DDR3 SDRAM 提供接口解决方案,下面对各个模块进行详细设计。
4.2.2
ADC 模块逻辑设计
AD 子卡的 ADC 芯片采样率最大为 1.6Gbps 。而在第二章指标分析中, ADC
采样率不得低于 706.6Msa/s ,在本次设计中,设置 ADC 的采样率为 1Gsa/s
ADC
片工作在双边沿采样的模式,这样采样率可以是采样时钟的两倍。需要产生 500MHz
的差分时钟信号,用 Zynq 芯片内部的 MMCM 资源可产生 500MHz 的单端时钟,再
利用 Xilinx 提供的 OBUFDS 原语把单端时钟转换成差分时钟输出。
由于 ADC 工作在双边沿采样,需要拉高 ADC 芯片的 DES 引脚;信号耦合方式
是交流耦合,需要设置 VCMO 引脚为低电平。在双边沿工作模式下, ADC 芯片可以
选择多路复用模式,多路复用模式可以实现数据线的复用,多路复用模式的时序图如
4.2 所示 [25]
图中, CLK+/- 是采样时钟信号, DQd Did DQ DI ADC 的数据线, DCLKI+/-
是通道 I 的数据同步输出时钟。由图可知, ADC 工作在双边沿采样模式,多路复用模
式时,完成 4 次转换后,数据依次轮流输出至 DQd Did DQ DI 。同时在 DCLK+/-
上输出一个转换时钟二分频的信号,这里为 250MHz
由于数据位宽是 12bit ,但是 DDR3 SDRAM 模块的 FIFO 宽度为 256bit ,两者不
成整数倍关系。这里解决办法是把各个数据通道的 12bit 扩展成 16bit ,然后分别保存
至小的 FIFO 里,再用一个 FIFO 输出 256bit 的数据宽度。数据流缓存框图如图 4.3
示。其中, FIFO1~FIFO4 是读写位宽都为 16bit 的同步 FIFO FIFO 时钟为 ADC 芯片
出来的 DCLK+/- 时钟,经差分转单端后的时钟, 4 FIFO 输出的数据写入至 FIFO5
里面, FIFO5 是写数据位宽为 64bit ,读数据位宽为 256bit 的异步 FIFO ,可以直接与
DDR3 SDRAM 模块连接。
光纤接口采用 Aurora 协议,有 4 个通道,单通道速率为 10Gbps ,总速率为 40Gbps
光纤接口的数据传输时基于 Vivado 软件提供的 Aurora 协议的 IP 核实现,该 IP 核有
8B/10B 64B/66B 两种,分别对应相应的编码方式。本设计采用 64B/66B 编码,增
加了带宽利用率。核例化过程如图 4.4 所示。
例化核时,首先指定传输速率,这里设置为 10Gbps 。根据硬件电路设计,这里
的参考时钟设置为 125MHz ,传输采用全双工流模式,方便设计和使用。然后指定通
道在芯片上的映射关系。
例化后的核如图 4.5 所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1469642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UI风格汇:扁平化风格来龙去脉,特征与未来趋势

Hello,我是大千UI工场,设计风格是我们新开辟的栏目,主要讲解各类UI风格特征、辨识方法、应用场景、运用方法等,本次带来的扁平化风格的解读,有设计需求,我们也可以接单。 一、什么是扁平化风格 扁平化风格…

全球最受欢迎的DAWFL Studio 21.2.3.4004 中文破解版强悍来袭

1997年是一个「古老」的年代,那时人们还在用「猫」上网,微信、QQ的江湖被ICQ统治,音乐编辑领域 Cool Edit 如日中天。这一年 ,FL Studio 的前身 FruityLoops 在比利时问世,26年来,FL已成长为全球最受欢迎的…

LabVIEW变压器振动信号数据采集与分析

LabVIEW变压器振动信号数据采集与分析 随着电力系统的快速发展,对变压器的安全监控和故障诊断需求日益增加。设计了一套基于LabVIEW的变压器振动信号数据采集与分析系统,提高变压器的运行安全性和可靠性,实现对变压器振动信号的实时监测和故…

uniapp上传文件到腾讯云

官方API地址 javaScript_SDK 下载cos npm i cos-js-sdk-v5 --save 生成签名 获取secretId和secretKey let cos new COS({SecretId: *******************************,SecretKey: ******************************,}) 参考文章:腾讯云如何获取secretId和secret…

一台台式电脑的耗电量有多少瓦?你知道吗?

核实后将予以处理。 感谢您为社区和谐做出的贡献。 一般来说,大多数台式电脑的功率在250W左右,也就是每4小时耗一度电。 一般有每小时100W左右的低功耗计算机,也有每小时1000W左右的高功耗计算机。 对于笔记本电脑来说,每小时约为…

手撕Transformer(三)| 基础Transformer整体结构代码解析,从宏观到微观

文章目录 1 理解重点2 背景介绍 假设3 过程及重要组件3.1 嵌入层和加入位置编码3.2 编码器 Encoder3.3.1 EncoderLayer编码层3.3.2 LayerNorm归一化层 3.3 解码器 Decoder3.4 整合连接Encoder和Decoder 4 完整可运行代码 1 理解重点 在之前一节我们已经介绍了Transformer的位置…

精品基于springboot的线上辅导班系统的开发与设计-课程报名

《[含文档PPT源码等]精品基于springboot的线上辅导班系统的开发与设计[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: Java——涉及技术: 前端使用技术&#…

[嵌入式系统-33]:RT-Thread -18- 新手指南:三种不同的版本、三阶段学习路径

目录 前言:学习路径:入门学习-》进阶段学习》应用开发 一、RT-Thread版本 1.1 标准版 1.2 Nano 1.3 Smart版本 1.4 初学者制定学习路线 1.5 RT-Thread在线文档中心目录结构 1.6 学习和使用RT-Thread的三种场景 二、入门学习阶段:内…

Semaphore实现原理全面解析

简介 Semaphore(信号量)是一个同步工具类,通过Semaphore可以控制同时访问共享资源的线程个数。 应用场景 Semaphore的主要应用场景: 资源并发控制:Semaphore可以限制对资源的并发访问。如:管理数据库连…

蛇形矩阵2

题目描述 把数1,2,3,4,5,…,按照“蛇形2”放入N*N矩阵的左三角形中,输出结果。 下面是N6的蛇形2的图示 输入格式 第一行1个正整数:N,范围在[1,100]。 输出格式 N行&a…

HuggingFists系统功能介绍(3)--流程管理

流程管理 下面我们进入流程管理。流程管理用于定义及管理我们采用低代码方式开发的各种ETL以及数据分析流程。 流程列表 界面的左侧部分为流程的分组树,当定义的流程逐渐变多或者多人协同使用系统时,可以通过分组对流程进行更有序的管理。点中分组&#…

C#与VisionPro联合开发——TCP/IP通信

TCP/IP(传输控制协议/互联网协议)是一组用于在网络上进行通信的通信协议。它是互联网和许多局域网的基础,为计算机之间的数据传输提供了可靠性、有序性和错误检测。在软件开发中,TCP/IP 通信通常用于实现网络应用程序之间的数据交…

预训练-微调范式在人工智能领域的深远影响

预训练-微调范式的出现是人工智能领域的一大里程碑,它深刻改变了深度学习模型的训练方式和应用模式,并对整个行业产生了多方面的深远影响: 数据效率提升: 通过在大规模无标注数据上进行预训练,模型能够学习到丰富的语言…

Python算法题集_实现 Trie [前缀树]

Python算法题集_实现 Trie [前缀树] 题208:实现 Trie (前缀树)1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【定义数据类默认字典】2) 改进版一【初始化字典无额外类】3) 改进版二【字典保存结尾信息无额外类】 4. 最优算法5. 相关…

实战一个 Jenkins 构建 CI/CD流水线 的简单配置过程哈

引言:上一期我们讲述了gitlabCI/CD工具的介绍,工具之争,本期我们介绍Jenkins CI/CD 目录 一、Jenkins介绍 1、Jenkins概念 2、Jenkins目的 3、特性 4、产品发布流程 二、安装Jenkins 1、安装JDK 2、安装Jenkins 1、上传压缩包 2、…

Python入门必学:单引号、双引号与三引号的差异与应用

Python入门必学:单引号、双引号与三引号的差异与应用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得…

神经网络系列---激活函数

文章目录 激活函数Sigmoid 激活函数Tanh激活函数ReLU激活函数Leaky ReLU激活函数Parametric ReLU激活函数 (自适应Leaky ReLU激活函数)ELU激活函数SeLU激活函数Softmax 激活函数Swish 激活函数Maxout激活函数Softplus激活函数 激活函数 一般来说&#xf…

Tomcat线程池原理(上篇:初始化原理)

文章目录 前言正文一、从启动脚本开始分析二、ProtocolHandler 的启动原理三、AbstractEndPoint 的启动原理四、创建默认线程池五、参数配置原理5.1 常规的参数配置5.2 自定义线程池5.3 测试自定义线程 前言 在Java Web的开发过程中,Tomcat常用的web容器。SpringBo…

SpringBoot -【BeanPostProcessor】基础使用及应用场景

BeanPostProcessor应用与优化 1. 引言 在现代软件开发中,企业开发面临着越来越复杂的系统架构和业务需求。随着项目规模的扩大和技术栈的增多,需要更高效的工具来应对这些挑战,并确保代码的可维护性和扩展性。 在这样的背景下,Be…

Linux之项目部署与发布

目录 一、Nginx配置安装(自启动) 1.一键安装4个依赖 2. 下载并解压安装包 3. 安装Nginx 4. 启动 nginx 服务 5. 对外开放端口 6. 配置开机自启动 7.修改/etc/rc.d/rc.local的权限 二、后端部署tomcat负载均衡 1. 准备2个tomcat 2. 修改端口 3…