【国产虚拟仪器】基于Zynq的雷达10Gbps高速PCIE数据采集卡方案(一)总体设计

news2024/11/24 19:56:25
2.1 引言
本课题是来源于雷达辐射源识别项目,需要对雷达辐射源中频信号进行采集传输
和存储。本章基于项目需求,介绍采集卡的总体设计方案。采集卡设计包括硬件设计
和软件设计。首先对采集卡的性能和指标进行分析,接着提出硬件的总体设计,在硬
件设计基础上提出软件的总体设计,最后对用到的相关协议与关键技术进行说明。
2.2 总体设计概述
2.2.1
采集系统指标分析
本项目中雷达辐射源中频信号频带为 760MHz 1060MHz ,该雷达信号是一种带
通信号。采用带通采样定理,可以使采样率降低,进而降低数据传输速率。使得硬件
和软件更容易实现。

由公式 2-1 得,雷达辐射源信号的采样率大于 706.6Msa/s 时,就可以从采样的数
据中恢复出原始信号。实际中由于滤波器的特性不很理想,如果信号采样率过低,会
引起频谱混叠现象,导致恢复出的信号质量过差。因此实际采样率要高于理论的采样
率,才能保证恢复出的信号质量。本次设计的 AD 子卡的最大采样率为 1.6Gsa/s ,采
样精度为 12 位,数据最大速率为 19.2Gbps ,可满足项目数据采集要求。
采样后的数据形成高速数据流通过高速接口进入处理器,需要高效稳定的处理器
和高速数据传输协议技术来完成数据的接收、处理和发送。 Zynq7000 系列 SoC 内部
集成了以 FPGA 为基础的 PL 部分和以 ARM 为核心的 PS 部分,可单芯片实现数据
采集和数据处理功能。本文设计提供的 AD 子卡可实现雷达模拟信号的 AD 转换,并
形成高速数据流传输至采集卡。
由于高速接口不同,协议和传输速率也不同,如果采取直连的方式,可能会有数
据丢失的现象发生,在某些情况下,需要一定量的数据才可以进行处理,这需要一种
数据缓存技术解决。一般采用 DDR3 SDRAM 芯片用做高速数据缓存,DDR3 SDRAM
可以在时钟的双边沿进行数据读写,目前 DDR3 SDRAM 芯片颗粒支持最高频率的工
作时钟为 800MHz ,若 DDR3 SDRAM 芯片的数据线宽度为 16 位,则单片 DDR3
SDRAM 读写速率理论上最大为 25.6Gbps 。实际使用中需多片 DDR3 芯片搭配使用,
即可以扩大数据容量和位宽,又可以使数据读写速度得到成倍的提升。本设计从小型
化方面考虑,在 Zynq 芯片的 PL 端和 PS 端分别采用 2 16 位的 DDR3 SDRAM
片组成 32 位宽的缓存器。
本设计的高速接口选用 PCIE 接口,为了满足雷达信号采样数据传输速率的要求,
PCIE 接口的速率应不低于 19.2Gbps 。经分析,选择 PCIE2.0 协议, x8 模式,可提供
40Gbps 的数据传输速率,能满足本项目的数据传输要求。
2.2.2
硬件总体设计
本节基于上一节的分析结果给出硬件总体设计。硬件设计及数据流向框图如图
2.1 所示:

 

为了灵活设计,采集系统采用载卡 + 子卡的方式,载卡和子卡之间用 FMC 接口
连接,可以满足不同子卡的数据传输。载卡的设计方式为核心板 + 底板,核心板为
Zynq7000 SoC 的最小系统,并经接插件引出芯片的接口至底板,底板主要是给核心
板供电和连接 Zynq7000 SoC 的外围接口。为了使采集系统适用于多种场合,采集系
统提供光纤子卡和 AD 子卡两种方式进行数据采集传输,其中,光纤子卡用来接收高
速数字信号, AD 子卡用来对辐射源信号进行模 -数转换,形成高速数据流,子卡输出
的高速数据经 FMC 接口进入 Zynq 芯片,再经 PCIE 接口传输至辐射源信号识别平台
进行后续处理。
AD 子卡的模拟信号输入采用 SMB 射频接头,采用 TI 公司的 ADC 芯片,型号
ADC12D800 。该 ADC 最大采样率为 1.6Gsa/s ,分辨率为 12bit AD 转换后的数据
线是以 12 路差分并行总线的形式输出的,支持 LVDS 电平。芯片可提供两路模拟信
号转换,支持双边沿采样。将 ADC 芯片的信号线引至 FMC 接口,以方便与采集卡
连接。光纤子卡将光纤接口的信号线连接至 FMC 接口,实现与采集卡的连接。
2.2.3
软件总体设计
采集卡系统软件设计包含两个部分,分别为底层逻辑设计、嵌入式软件设计和上
位机软件设计。底层逻辑设计主要完成各个模块的设计以及各模块之间的数据交互;
嵌入式设计是在虚拟机上完成 Zynq7000SoC 的内核移植;上位机软件完成 PCIE 设备
的检测和初始化,数据的接收,并以文件形式存储至硬盘,用来进行下一步处理。具
体设计如下。
1 )逻辑软件总体设计
本次逻辑设计开发是基于 Vivado2017.4 平台, Vivado 软件是 Xilinx 公司开发推
出的专为 7 系列提供的开发套件。软件内部含有 SDK 开发软件,可以实现 Zynq7000
系列 SoC 的嵌入式开发。
逻辑设计采用自顶而下的方法,本次设计需要用到的协议有 Aurora 协议、 DDR3
SDRAM 接口协议和 PCIE 协议,每种协议对应相应的模块。 Aurora 协议是光纤的传
输协议,用来实现光纤数据的接收和转发; DDR3 SDRAM 接口协议主要是对 DDR3
SDRAM 的初始化和读写操作,用来实现对高速数据的缓存; PCIE 模块完成采集卡
与辐射源信号识别平台之间的数据交互。 Vivado 软件提供丰富的 IP 核,可以为高速
数据接口协议和 DDR3 SDRAM 提供解决方案。
由于各个协议不同,需要分模块设计,各个协议单独为一个模块。数据在各个模
块之间传送,各个高速协议之间很难工作在同步状态,如果数据采取直连的方式,可
能导致丢失数据发生。解决方法是采用异步 FIFO 接口,异步 FIFO 接口的读写时钟
是独立的,并且读写位宽可以成倍数关系,使设计更为灵活。整个逻辑设计包含 5
模块,时钟、复位模块用来给各模块提供时钟和复位信号; DDR3 SDRAM 模块实现
了高速数据的缓存功能; PCIE 模块包含 PCIE 的驱动模块,实现了采集卡与 PC 机的
数据交互; Aurora 模块是光纤驱动模块,实现光纤数据的接收和转发; ADC 模块实
现了 ADC 芯片的配置和驱动,实现了雷达信号的模数转换并转发。除了时钟复位模
块,其他模块由各自的驱动模块和数据缓存模块组成,其中数据缓存模块为 FIFO 接口,方便各模块之间的连接。逻辑设计框图如图 2.2 所示。

为了满足雷达辐射源识别项目需求,高速数据传输速率应不小于 19.2Gbps FMC
接口支持的数据最大传输速率为 10Gbps ,为了实现高速率数据传输,光纤采用 4
道传输,单通道速率为 10Gbps ,总传输速率为 40Gbps ,为了与光纤速率保持同步,
PCIE 采用 2.0 协议,单通道 5.0Gbps x8 模式,总速率为 40Gbps ,与光纤速率相同。
传输速率能基本满足大多高速数据传输。
2 )嵌入式软件总体设计
嵌入式软件设计主要在 PS 端开发,是为将来的用户应用程序做准备。在完成 PL
部分的设计基础上,使用 Vivado 软件自带的 SDK 开发平台,在 Linux 系统的环境下
进行嵌入式的开发设计。本设计在 Ubuntu 下完成嵌入式软件设计,通过运行一系列
脚本文件进行系统编译、内核编译、生成镜像和烧写镜像等操作。
3 )上位机软件总体设计
上位机的功能应具有采集卡的识别、检测和初始化,此外还能接收来自 PCIE
口的数据,并可以把数据保存成文件。
PC 机上开发 PCIE 驱动需要使用驱动开发工具,本次设计的 PCIE 驱动开发
使用 WinDriver 开发工具。 WinDriver 软件是由 Jungo 公司开发的驱动开发平台,能
支持多种操作系统,软件提供了 windrvr.sys 内核,可用来与操作系统实现核心交互,
使开发者不用直接操作系统内核,只用通过函数库来实现与系统内核的通信,这样既
简化了驱动程序开发流程也提高了驱动开发效率。
上位机在 Visual Studio(VS) 开发平台上进行开发, VS 是微软公司推出的开发工
具,支持多种编程语言。上位机的设计是通过 WinDriver 提供的内核和函数库的调用,
实现 PCIE 设备的初始化和数据交互。由于不同的 PC CPU 处理能力不同,对中断
相应和数据处理的能力也有差别,一般采用 DMA 方式来传递数据。 DMA 长度在合
适的范围内 CPU 可以发挥最佳性能。 DMA 长度的设定既可以由逻辑设计设定也可以
由上位机设定,结合实际,由上位机设定 DMA 长度更方便,
结合以上分析,上位机需要有以下功能:
1) PCIE 设备的打开、关闭和初始化功能;
2) DMA 长度设定功能;
3) 保存数据并形成文件的功能。
2.3 相关协议与技术
2.3.1
PCIE 协议
1 PCIE 拓扑结构
典型 PCIE 通信链路由 Root Complex RC )、 Switch End Point EP )组成。 RC
可支持一个至多个 PCIE 端口,它可以配置总线相关管理的功能,如中断控制、逻辑
报告以及支持热插拔等功能, PCIE 节点的 ID 以及总线号、设备号、功能号均由 RC
分配并初始化。 Switch 可根据 ID 或者数据包优先级,完成 PCIE 数据包的交换,实
PCIE 数据包的转发。由于 PCIE PCI 兼容,因此在 PCIE 系统中,会包含一个
PCI Express-PCI Bridge ,以实现与 PCI 设备的通信。 PCIE 的拓扑结构如图 2.3 所示:
2 PCIE 协议结构及数据包格式
PCIE 协议是一个三层的分层结构,分别为事务层( Transaction Layer )、数据链路
层( Data Link Layer )和物理层( Physical Layer )。如图 2.4 所示:
事务层是 PCIE 的最高层,主要对事务类型进行定义。在设备的发送端,事务层
接收来自设备内核的数据信息,并封装成事务层包( TLP ),存放在缓存区,等待发送
给数据链路层;在设备的接收端,事务层接收数据链路层发送的数据包,并将包内信
息转换传输给设备。
数据链路层的主要功能是保证链路上数据包发送和接收的完整性。在设备的发送
端,数据链路层对事务层的 TLP 包添加部分信息进行重新打包,被称为 DLLP ,添加
的信息将在接收端接收 TLP 包时起到错误检查的作用。在设备接收端,数据链路层
对接收的报文进行错误检查,再发送至事务层。
物理层分为逻辑子层和电气子层两个部分。逻辑子层包括编码方式、链路训练等。
电气子层是连接到链路的物理层的模拟接口。在设备发送端,物理层对 TLP 进行解
码,从差分发送器中将信息发送出去。在设备接收端,物理层对 TLP 进行译码操作。
PCIE 1.0 2.0 版本的数据包结构如图 2.5 所示。其中起始和结束字节是由物理
层产生,序列和 LCRC 由链路层产生,头信息和 ECRC 由事务层产生。各个数据段
的字节数在下面一行显示。
由图 2.5 看出, TLP 包的头信息可以使 3DW 也可以是 4DW TLP 包可以不带有
效数据,有效数据载荷最大可达 1024DW。
3 PCIE 配置空间
配置空间用来存放设备信息,主机可以通过读取配置空间的信息来配置 PCIE
备,配置空间是 PCIE 设备实现即插即用功能的基础。 PCIE 协议是在 PCI 协议基础
上发展来的,在 PCI 的基础上,将 256B 的配置空间扩展成了 4KB 。因此 PCIE 设备
可以向下兼容 PCI 设备 [22] PCIE 配置空间如图 2.6 所示。其中设备 ID 、厂商 ID 、分
类代码、 Cache 长度等称为头标区。主要用来检测设备是否存在和获取设备属性;基
址寄存器保存设备的地址空间的基地址;扩充 ROM 基址寄存器的作用是记载一段程
序的基地址,这段程序会完成设备的基本初始化设置。

2.3.2
Aurora 协议
2002 年, Xilinx 公司首先提出 Aurora 总线协议,它是一种点对点、轻量级、可
裁剪的串行传输通信协议,针对 FPGA 之间的高速数据传输。 Aurora 协议的传输速度
灵活可配,以 Xilinx-V7 系列 FPGA 为例,支持的速度为 500Mbps~13.1Gbps
Aurora 总线有两种通信模式:全双工模式和单工模式,单工模式分为只收模式和
只发模式。 Aurora 的通信链路可包含一个至多个通道,可使用组合的方式 (x2 x4)
获得更高的数据传输速率。在发送端,用户通过接口(通常为 AXI 接口)与 Aurora
协议进行数据交互,传输用户自定义的协议数据;接收端通过解析协议数据包,提取
原始数据,按照 AXI 总线协议,提供给用户应用程序。由于 Aurora 对用户透明,故
它可以传输多种标准协议数据,如 TCP/IP UDP 协议等。
Aurora 协议支持任意偶数字节的包长度,如果数据长度是奇数,会对数据包进行
填充至偶数个,填充的字节为 0x9C 。之后,链路层进行打包、组帧操作,增加帧头
帧尾。 Aurora 协议数据包的帧头占 2 字节为 K28.2/K27.7
0x5CFB ),帧尾占 2 字节
K29.7/K30.7(0xFDFE)
Xilinx 提供的 Aurora IP 核有 8B/10B 64B/66B 两种编码方式,本设计采用
64/66B 的编码方式,带宽利用率更高。接口框图如图 2.7 所示。

Aurora 协议提供帧模式和流模式两种数据传输模式。帧模式接口符合链路接口
规范,而流模式传输数据不需要特殊的帧字符,使操作更简单,耗费资源更少。

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

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

相关文章

详解知识蒸馏原理和代码

目录 知识蒸馏原理概念技巧举例说明KL 散度及损失 KD训练代码导入包网络架构teacher网络student网络 teacher网络训练定义基本函数训练主函数 student网络训练(重点)理论部分定义kd的loss定义基本函数训练主函数 绘制结果teacher网络的暗知识softmax_t推…

使用dockerfile自定义Tomcat镜像

一:创建目录 mkdir /root/tomcat chmod 777 /root/ chmod 777 /root/tomcat 或者chmod -R 777 /root 这里的无效选项是因为我想递归修改root目录及root目录文件以下的权限 chmod :-R 递归修改指定目录下所有子目录和文件的权限 二:将jdk和apache压…

RPG游戏自动打怪之朝向判断

RPG游戏辅助想要做到自动打怪 获得到最近怪物信息以后 还需要面向怪物 否则背对怪物等等情况是没有办法攻击以及释放技能的 游戏设计的时候朝向是有很多种情况的 第一种 2D,2.5D老游戏,例如传奇 他的朝向一般是极为固定的4朝向或则8朝向 也就是不…

数组题目总结 -- 花式遍历

目录 一. 反转字符串中的单词思路和代码:I. 博主的做法II. 东哥的做法III. 其他做法1IV. 其他做法2 二. 旋转图像思路和代码:I. 博主的做法II. 东哥的做法 三. 旋转图像(逆时针旋转90)思路和代码:I. 博主和东哥的做法 …

SpringBoot2-基础入门(一)

SpringBoot2-基础入门(一) 文章目录 SpringBoot2-基础入门(一)1. 为什么学习SpringBoot1.1 SpringBoot的优点1.2 SpringBoot的缺点1.3 SpringBoot开发环境 2. 第一个SpringBoot程序2.1 添加依赖2.2 编写主程序类 -- 固定写法2.3 编…

SpringCloud(25):熔断降级实现

熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之…

硅谷新王登国会山,呼吁加强 AI 监管;马斯克任命推特新 CEO;数字媒体巨头申请破产;欧盟通过全球首个全面监管加密资产框架 | 经济学人第 21 周

1. 硅谷新王登国会山,呼吁加强 AI 监管 Sam Altman, the chief executive of OpenAI, the firm behind the ChatGPT chatbot, called for tighter regulation of rapidly developing generative artificial intelligence, such as by forcing disclosure on images …

【文件操作与IO】

目录 一、文件 1、文件的定义 2、File类 🍅File类中的常见属性 🍅File类中的构造方法 🍅File类中的常用方法 二、文件内容的读取-数据流 🍅InputStream概述 🍅FileInputStream 🍅OutputStream 概…

真题详解(汇总)-软件设计(八十三)

真题详解(include)-软件设计(八十二)https://blog.csdn.net/ke1ying/article/details/130828203 软件交付后进入维护阶段,采用专门的程序模块对文件或者数据中记录进行增加、删除和修改操作,属于? 解析&a…

Netty重试一定次数后调用System.exit(n)退出应用程序(二)

System.exit()方法 原型:System.exit(int status) 其功能主要是调用Runtime.getRuntime().exit(status); 作用是终止当前正在运行的Java虚拟机,这个status表示退出的状态码,非零表示异常终止。(可以返回给其他进程的调用者一个调用的返回码…

RES 新的数据集 Advancing Referring Expression Segmentation Beyond Single Image 论文笔记

RES 新的数据集 Advancing Referring Expression Segmentation Beyond Single Image 论文笔记 一、Abstract二、引言三、相关工作3.1 Referring Expression Segmentation (RES)3.2 CoSalient Object Detection (CoSOD) 四、提出的方法4.1 概述文本 & 图像编码器TQM & H…

OpenStreetMap实战

介绍 OpenStreetMap(OSM)是一个由志愿者创建并维护的免费和开源的地图数据库。其目的是为全球任何人提供可自由使用、编辑和分发的地图数据。OpenStreetMap数据库中的地理要素包括道路、建筑、河流、森林、山脉、公共设施等。由于OpenStreetMap是开放的…

数据结构初阶 —— 二叉树链式结构

目录 一,二叉树链式结构 二,二叉树的遍历(四种) 前序遍历 中序遍历 后序遍历 层序遍历 三,二叉树接口 四,试题 一,二叉树链式结构 普通二叉树的增删查改,意义不大&#xff1b…

JavaScript基础扫盲

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: JavaEE初阶 本篇文章为大家带来JavaScript的学习,一图胜千言~~~ 目录 文章目录 1.1 JavaScript (简称 JS) 1.2 JavaScript发展历史 1.3 JavaScript运行过程 二、JavaScript的基础语法 2.1 …

Linux内核源码分析-进程调度(五)-组调度

出现的背景 总结来说是希望不同分组的任务在高负载下能分配可控比例的CPU资源。为什么会有这个需求呢,假设多用户计算机系统每个用户的所有任务划分到一个分组中,A用户90个任务,而B用户只有10个任务(这100个任务假设都是优先级一…

物联网手势控制小车所遇问题与解决方案

LCD1602无法显示问题 问题描述:按照开源社区教程完成LCD1602驱动显示程序的编写,成功点亮屏幕,开启背光,但无法观察到显示数据。 分析过程与解决方案: 1.是否IIC地址不对 使用以下代码扫描IIC总线上的设备&#xf…

Go学习圣经:队列削峰+批量写入 超高并发原理和实操

说在前面: 本文是《Go学习圣经》 的第二部分。 第一部分请参见:Go学习圣经:0基础精通GO开发与高并发架构(1) 现在拿到offer超级难,甚至连面试电话,一个都搞不到。 尼恩的技术社群中&#xf…

K近邻算法实现红酒数据集分类

目录 1. 作者介绍2. K近邻算法介绍2.1 K基本原理2.2 算法优缺点 3. KNN红酒数据集分类实验3.1 获取红酒数据集3.2 KNN算法3.3 完整代码 4. 问题分析参考链接(可供参考的链接和引用文献) 1. 作者介绍 路治东,男,西安工程大学电子信…

面试问题汇总

最近面试了几家公司,对问到的问题汇总一下。 Unity 是左手坐标系还是右手坐标系? 这个题靠记忆答的答错了,是左手坐标系。 大拇指指的方向是X轴,食指指的方向是Y轴方向,中指指的方向Z轴方向。 场景中游戏物体Activity为false,G…

C语言字符串函数和内存函数的介绍与模拟实现

0.前言 C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者 字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数. 1.字符串函数介绍与模拟实现 C语言本身就带有一些库函数,所…