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

news2024/11/18 17:39:42
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 模块连接。

4.2.3
Aurora 协议逻辑设计
光纤接口采用 Aurora 协议,有 4 个通道,单通道速率为 10Gbps ,总速率为 40Gbps
光纤接口的数据传输时基于 Vivado 软件提供的 Aurora 协议的 IP 核实现,该 IP 核有
8B/10B 64B/66B 两种,分别对应相应的编码方式。本设计采用 64B/66B 编码,增
加了带宽利用率。核例化过程如图 4.4 所示。

例化核时,首先指定传输速率,这里设置为 10Gbps 。根据硬件电路设计,这里
的参考时钟设置为 125MHz ,传输采用全双工流模式,方便设计和使用。然后指定通
道在芯片上的映射关系。
例化后的核如图 4.5 所示。
Aurora IP 核采用 AXI 总线协议接收和发送数据,读写时序符合 AXI 总线协议,
数据位宽为 256bit DRP 配置用来设置通道速率和配置参数, DEBUG 信号包含通道
状态和眼图测试等,可作为调试观察使用。
Aurora IP 核的 AXI 接口信号及功能如表 4.1 所示。
Aurora 的编码方式是 64b/66b 编码,单通道数据宽度为 64b ,因此 4 个通道数据
位宽为 256b ,传输方式是流模式,不需要帧结尾信号和有效字节信号,因此 AXI 接
口没有 _tkeep _tlast 信号。
Aurora IP AXI 接收和发送时序图如图 4.6 所示 [26] ,其中图(
a )是发送时序,
图(
b )是接收时序, n 是通道数,这里 n=4
在实际使用中, Aurora 的传输速率和参数一般固定不变,因此 DRP 不用配置,
IP 核里面有四组 DRP 端口,分别对应四个 Aurora 通道,以第一通道为例, DRP
端口的信号作用和配置如表 4.2 所示

Aurora 核包含控制和状态信号,控制信号用来设置回环、掉电等功能,状态信号
显示了通道连接状态、复位和软硬件错误等。控制信号和状态信号的作用如表 4.3
示。

 

Aurora 设计同样使用 FIFO 作为模块间的接口,由于 AXI 接口数据位宽为 256bit
FIFO 设计为 256bit 宽度,数据由上行 FIFO 进入至 Aurora 核,再经下行 FIFO 接入
至下游模块。
4.2.4
DDR3 SDRAM 逻辑设计
通常情况下 DDR3 SDRAM 用来作为数据缓存使用,基本原理是向 DDR3 SDRAM
里面的某一范围的地址里面进行数据读写,最常见的是在 PC 机中,每一个应用程序
都会占用内存条中的某一块地址范围,这时, DDR3 SDRAM 的地址是分块管理的。
在本设计中,为了满足雷达辐射源信号识别平台的数据缓存功能,对 DDR3 SDRAM
的所有地址都用来存放数据,使用 DDR3 SDRAM 的全部空间用来实现数据缓存功
能,实现一个大容量 FIFO Vivado 软件提供了专为 DDR3 SDRAM 驱动的 MIG 核,
再加上外围驱动就可以对 DDR3 SDRAM 进行读写操作。采集卡使用两片 DDR3
SDRAM ,数据位宽为 32 位,地址位宽为 15 位。
例化 MIG 核时,首先设置 DDR3 的工作时钟和输出时钟比,这里设置工作为
600MHz DDR3 SDRAM 数据位宽为 32
,理论读写速率为 38.4
。实际工作
DDR3 SDRAM 会刷新,使得速率低于理论值。接着是阻抗设置和地址设置。阻抗
设 置 是 为 了 匹 配 阻 抗 , 使 传 输 可 靠 稳 定 ; 地 址 设 置 有 两 种 , 一 种 是
ROW+BANK+COLUMN ,另外一种是 BANK+ROW+COLUMN 。其中 BANK 是由
DDR3 芯片的 bank 引脚给出, ROW COLUMN 是存储矩阵的行列,这由芯片特性
决定。然后给 DDR3 分配引脚,完成核的例化。
例化过程例化出来的 ip 核及接口如图 4.7 所示:

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

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

相关文章

静态时序分析-配置STA环境

1.什么是STA环境 DUA(待分析设计)会与其它同步设计交互,例如DUA从触发器接收数据,并将数据输出到DUA外部的另一个触发器。为了对这种设计执行STA,需要指定触发器的时钟、以及进入设计和退出设计的所有路径的时序约束。 2.时钟配置 定义时钟 定义时钟需要: 时钟源周期占…

SSRS rdlc报表 三 去除打印空白页

开发环境:vs2022 当我们新建一个报表,选择使用A4纸进行打印,有的时候打印列数过多,列会跑到下一页,调整好列显示后,所有的列都显示到一张纸上了,但是打印的时候发现,第二页是一张空…

宣传单页二维码怎么做?分享在线二维码制作小技巧

宣传单页现在也不是像之前的那种单一海报、纸质形式了。很多商家会将宣传单页做成二维码的形式,不仅传播方便,还方便用户填写信息便于统计。但是这种宣传单页二维码图片是怎么制作的呢? 一、什么工具能够制作二维码? 机智熊二维码…

为什么我在领英上搜到的客户都是显示领英会员(Linkedin Member)?

LinkedIn领英上找客户,开发客户已经越来越成为主流,但是很多刚注册使用LinkedIn领英的人会摸不着头脑,束手无策。 因为他会发现自己搜索出来的结果,找出来的客户都是显示领英会员(Linkedin Member)&#x…

数据结构与算法(六)

#数据结构 基础知识 数据结构:相互之间存在的一种多种的特定关系的数据元素的集合 逻辑结构: 线性表:最基本最简单的一种数据结构,一对一逻辑关系。 集合结构、线性结构、树形结构、图形结构 物理结构:顺序存储、链式存储 逻…

MYSQL 自定义变量用法收录

用户自定义变量使用&#xff1a; 优化排名语句 通过变量复制&#xff0c;快速实现类似行号功能 SET rownum :0 ; SELECT school_id , school_name , rownum :rownum1 AS rownum FROM base_school WHERE school_id<0 LIMIT 10 ; -- sql 排名 SET currcnt :0 ,pre…

如何在商场内进行导航?商场路线指引图怎么做?

如何在商场内进行导航&#xff1f;购物中心是多种零售店铺、服务设施集中在一个建筑物内或一个区域内&#xff0c;向消费者提供综合性服务的商业集合体。现在的购物中心面积都比较大&#xff0c;很多朋友的方向感明明不差&#xff0c;却每次都在商场遭遇“滑铁卢”&#xff0c;…

MaxCompute 发布智能物化视图,CU 算力节省 14%

作者&#xff1a;夏俊伟&#xff08;阿里云高级产品专家&#xff09;、郑君正&#xff08;阿里云高级技术专家&#xff09; 什么是物化视图 MaxCompute 物化视图是一种预先计算和存储结果数据的数据对象&#xff0c;也可以称之为“实体化视图”。物化视图可以作为一张虚拟表存…

输电线路测温工作要求

输电线路导线温度监测系统 一、产品描述&#xff1a; 在我国当前发展趋势下&#xff0c;电力的使用越来越庞大&#xff0c;对于供电系统的稳定性可靠性的考验越发严峻&#xff0c;智能化管理的推进必不可少&#xff0c;输电线路导线温度监测系统作为我司在线监测数据类产品&…

开源赋能 普惠未来|XuperCore诚邀您参与2023开放原子全球开源峰会

XuperCore&#xff08;待更名&#xff09;是百度自主研发&#xff0c;拥有完整知识产权的区块链底层技术XuperChain的内核&#xff0c;拥有620多篇区块链核心技术专利&#xff0c;以“高性能”、“开源”为主要设计目标&#xff0c;致力于创建“更快、更通用、更好用”的区块链…

JavaEE(系列13) -- 多线程(CAS)

目录 1. 什么是 CAS 2. CAS伪代码 3. CAS 的应用 3.1 实现原子类 3.2 实现自旋锁 4. CAS的ABA问题(面试常问) 4.1 ABA 问题 4.2 ABA问题解决方案 1. 什么是 CAS CAS: 全称Compare and swap&#xff0c;字面意思:”比较并交换“. 一个 CAS 涉及到以下操作&#xff1a; 我们假…

速卖通、阿里国际、shopee618盛典!提升订单销量的秘密武器—测评补单技术!

随着电子商务的迅速发展&#xff0c;网络购物已成为现代人生活中不可或缺的一部分。而在众多购物平台中&#xff0c;速卖通凭借其丰富多样的商品选择和优惠的价格政策&#xff0c;成为了全球消费者的首选之一。尤其是每年的618盛典&#xff0c;更是吸引了大量消费者的目光。然而…

【CH32】| 01——新建工程 | 下载 | 运行 |调试

系列文章目录 【CH32】| 00——开发环境搭建 【CH32】| 01——新建工程 | 下载 | 运行 |调试 失败了也挺可爱&#xff0c;成功了就超帅。 文章目录 1. 新建工程1.1 基于官方IDE [MounRiver Studio]1.1.1 使用官方内置的工程模板新建1.1.2 使用自定义工程模板新建1.1.2.1 新建自…

会声会影2023最新版本剪辑视频的方法和步骤

想要学剪辑&#xff0c;剪辑软件是基础。如果大家是零基础的话&#xff0c;建议大家选择一款入门级的剪辑软件&#xff0c;比如说会声会影。这款软件功能强大、操作简单&#xff0c;而且会声会影中文网站首页有很多剪辑教程供大家学习参考。会声会影在用户的陪伴下走过23余载&a…

计算机图形学 | 实验十二:混合(透明物体处理)

计算机图形学 | 实验十二&#xff1a;混合&#xff08;透明物体处理&#xff09; 计算机图形学 | 实验十二&#xff1a;混合&#xff08;透明物体处理&#xff09;混合&#xff08;Blending&#xff09;开启混合和设置混合模式绘制顺序排序透明物体绘制实验结果 华中科技大学《…

IPO观察丨德尔玛上市,“极致单品”模式的一场胜利

近日&#xff0c;创新电器品牌德尔玛&#xff08;广东德尔玛科技股份有限公司&#xff0c;代码“301332”&#xff09;&#xff0c;正式登陆深圳证券交易所创业板&#xff0c;发行价格为14.81元/股。上市前&#xff0c;德尔玛已完成了5亿元A轮融资及3.3亿元A轮融资&#xff0c;…

Linux Ubuntu配置CPU与GPU版本tensorflow库的方法

本文介绍在Linux操作系统的发行版本Ubuntu中&#xff0c;配置可以用CPU或GPU运行的Python新版本深度学习库tensorflow的方法。 在文章Anaconda配置Python新版本tensorflow库&#xff08;CPU、GPU通用&#xff09;的方法&#xff08;https://blog.csdn.net/zhebushibiaoshifu/ar…

Elasticsearch 7.x 基本操作 (CRUD)

1.概述 Elasticsearch 是一个流行的开源搜索引擎&#xff0c;用于存储、搜索和分析数据。下面是 Elasticsearch 7.x 版本的基本操作&#xff08;CRUD&#xff09;&#xff1a; 1、创建索引&#xff1a; PUT /index_name {"settings": {"number_of_shards"…

最近公司招了一个华为拿30K出来的,真是砂纸擦屁股,给我露了一手....

今年的金三银四已经结束&#xff0c;很多小伙伴收获不错&#xff0c;拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文&#xff0c;为此咱这里也统一做一次大整理和大归类&#xff0c;这也算是划重点了。 俗话说得好&#xff0c;他山…

【C++】位图(海量数据处理)

文章目录 抛出问题:引入位图位图解决 位图的概念位图的实现结构构造函数设置位清空位判断这个数是否存在反转位size与count打印函数 位图的应用 抛出问题:引入位图 问题&#xff1a;给40亿个不重复的无符号整数&#xff0c;没排序&#xff0c;给一个无符号整数&#xff0c;如何…