基于ZYNQ的PCIE高速数据采集卡的设计(二)总体设计与上位机

采集卡总体设计及相关技术
2.1 引言
本课题是来源于雷达辐射源识别项目,需要对雷达辐射源中频信号进行采集传输
和存储。本章基于项目需求,介绍采集卡的总体设计方案。采集卡设计包括硬件设计
和软件设计。首先对采集卡的性能和指标进行分析,接着提出硬件的总体设计,在硬
件设计基础上提出软件的总体设计,最后对用到的相关协议与关键技术进行说明。
2.2 总体设计概述
2.2.1
采集系统指标分析
本项目中雷达辐射源中频信号频带为 760MHz 1060MHz ,该雷达信号是一种带
通信号。采用带通采样定理,可以使采样率降低,进而降低数据传输速率。使得硬件
和软件更容易实现。
就可以从采样值恢复出原始信号
。其中, m 是一个不超过
的最大整数。
由公式 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) 保存数据并形成文件的功能。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx使用

Nginx 常用命令: nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。 nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。 nginx -s reload 因改变了Nginx相关配置…

华清远见作业第三十九天——Qt(第一天)

思维导图&#xff1a; 登录界面&#xff1a; 代码&#xff1a; #include "mainwindow.h" #include<QToolBar> #include<QPushButton> MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {this->resize(600,400);this->setFixedSize…

32单片机基础:对射式红外传感器计次

接线如下图&#xff1a; 在HardWare建立两个文件&#xff1a;如图 COuntSensor.c 如何配置外部中断,根据下面图&#xff0c;我们需要把外部中断从GPIO到NVIC这一路出现的外设模块都配置好。把这条信号打通就OK了。 1.配置RCC:把我们这里涉及的外设时钟都打开&#xff0c;不打…

算法沉淀——动态规划之简单多状态 dp 问题(上)(leetcode真题剖析)

算法沉淀——动态规划之简单多状态 dp 问题上 01.按摩师02.打家劫舍 II03.删除并获得点数04.粉刷房子 01.按摩师 题目链接&#xff1a;https://leetcode.cn/problems/the-masseuse-lcci/ 一个有名的按摩师会收到源源不断的预约请求&#xff0c;每个预约都可以选择接或不接。在…

【数据结构(顺序表)】

一、什么是数据结构? 数据结构是由“数据”和“结构”两词组合而来。 什么是数据&#xff1f;常见的数值1、2、3、4.....、教务系统里保存的用户信息&#xff08;姓名、性别、年龄、学历等等&#xff09;、网页里肉眼可以看到的信息&#xff08;文字、图片、视频等等&#xff…

二分算法(c++版)

二分的本质是什么&#xff1f; 很多人会认为单调性是二分的本质&#xff0c;但其实其本质并非单调性&#xff0c;只是说&#xff0c;有单调性的可以进行二分&#xff0c;但是有些题目没有单调性我们也可以进行二分。其本质其实是一个边界问题&#xff0c;给定一个条件&#xf…

第九届大数据与计算国际会议 (ICBDC 2024) 即将召开!

2024年第九届大数据与计算国际会议&#xff08;ICBDC 2024&#xff09;将于2024年5月24至26日在泰国曼谷举行。本次会议由朱拉隆功大学工程学院工业工程系主办。ICBDC 2024的宗旨是展示大数据和计算主题相关科学家的最新研究和成果&#xff0c;为来自不同地区的专家代表们提供一…

【MySQL】连接查询和自连接的学习和总结

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-x4sPmqTXA4yupW1n {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

从零开始学IO_FILE的堆利用:理解IO_FILE之fwrite

​ 要学习基于IO_FILE的堆利用就得了解它的本质&#xff0c;以下会介绍几个主要的IO函数&#xff0c;结合源码和动态调试去学习。 调试环境搭建可参考环境从零开始配置pwn环境&#xff1a;从零开始配置pwn环境&#xff1a;优化pwn虚拟机配置支持libc等指令-CSDN博客 1.在开始上…

【嵌入式实践】【芝麻】【目录】从0到1给电动车添加指纹锁

0. 前言 该项目是基于stm32F103和指纹模块做了一个通过指纹锁控制电动车的小工具。支持添加指纹、删除指纹&#xff0c;电动车进入P档等待时计时&#xff0c;计时超过5min则自动锁车&#xff0c;计时过程中按刹车可中断P档状态&#xff0c;同时中断锁车计时。改项目我称之为“芝…

FlinkCDC详解

1、FlinkCDC是什么 1.1 CDC是什么 CDC是Chanage Data Capture&#xff08;数据变更捕获&#xff09;的简称。其核心原理就是监测并捕获数据库的变动&#xff08;例如增删改&#xff09;&#xff0c;将这些变更按照发生顺序捕获&#xff0c;将捕获到的数据&#xff0c;写入数据…

ThreeJS 几何体顶点position、法向量normal及uv坐标 | UV映射 - 法向量 - 包围盒

文章目录 几何体的顶点position、法向量normal及uv坐标UV映射UV坐标系UV坐标与顶点坐标设置UV坐标案例1&#xff1a;使用PlaneGeometry创建平面缓存几何体案例2&#xff1a;使用BufferGeometry创建平面缓存几何体 法向量 - 顶点法向量光照计算案例1&#xff1a;不设置顶点法向量…

从故宫修建看「软件物料清单」的重要性 @安全历史01

故宫&#xff0c;这座中国传统文化的重要代表和象征性建筑已屹立近600年&#xff0c;是世界上现存规模最大、保存最为完整的木质结构古建筑之一。 故宫之所以能至今保存完好&#xff0c;除持续保护和修缮外&#xff0c;其使用的木材和砖石等材料也经过了精挑细选&#xff0c;保…

数据库增删改查

DDL: 数据定义语言&#xff0c;用来定义数据库对象&#xff08;数据库、表、字段&#xff09;DML: 数据操作语言&#xff0c;用来对数据库表中的数据进行增删改DQL: 数据查询语言&#xff0c;用来查询数据库中表的记录DCL: 数据控制语言&#xff0c;用来创建数据库用户、控制数…

c语言字符函数和字符串函数

目录 1. 字符分类函数2. 字符转换函数3. strlen的使用和模拟实现4. strcpy的使用和模拟实现5. strcat的使用和模拟实现6. strcmp的使用和模拟实现7. strncpy函数的使用8. strncat函数的使用9. strncmp函数的使用10. strstr的使用和模拟实现11. strtok函数的使用12. strerror函数…

设计模式-创建型模式-建造者模式

建造者模式&#xff08;Builder Pattern&#xff09;&#xff1a;将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。 建造者模式一步一步地创建一个复杂的对象&#xff0c;它允许用户只通过指定复杂对象…

Linux-基础知识(黑马学习笔记)

硬件和软件 我们所熟知的计算机是由&#xff1a;硬件和软件组成。 硬件&#xff1a;计算机系统中电子&#xff0c;机械和光电元件等组成的各种物理装置的总称。 软件&#xff1a;是用户和计算机硬件之间的接口和桥梁&#xff0c;用户通过软件与计算机进行交流。 而操作系统…

gensim 实现 TF-IDF

目录 介绍 代码 介绍 TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09; 含义&#xff1a; TF (Term Frequency): 词频&#xff0c;是指一个词语在当前文档中出现的次数。它衡量的是词语在文档内部的重要性&#xff0c;直观上讲&#xff0c;一个词…

【机器学习科学库】全md文档笔记:Jupyter Notebook和Matplotlib使用(已分享,附代码)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论人工智能相关知识。主要内容包括&#xff0c;了解机器学习定义以及应用场景&#xff0c;掌握机器学习基础环境的安装和使用&#xff0c;掌握利用常用的科学计算库对数据进行展示、分析&#xff0c;学会使用jupyter note…

完美解决ubuntu+windows双系统下时间不正确问题

在同一台电脑上安装ubuntuwindows双系统时&#xff0c;会出现某个系统的时间不正确的问题&#xff0c;而由于windows同步时间实在是太慢了&#xff0c;如果不去解决&#xff0c;windows上的时间大概率一直都是不对的。 原因分析 windows采用LocalTime机制设置时间&#xff0c…