紫光同创FPGA实现AD7606数据采集转UDP网络传输,提供PDS工程源码和技术支持和QT上位机

目录

紫光同创FPGA实现AD7606数据采集转UDP网络传输,提供PDS工程源码和技术支持和QT上位机

1、前言

国产FPGA现状:

"苟利国家生死以,岂因祸福避趋之!"大洋彼岸的我优秀地下档员,敏锐地洞察到祖国的短板在于先进制程半导体的制造领域,于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的初心,懂先生站在高略高度和长远角度谋划,宁愿背当代一世之骂名也要为祖国千秋万世谋,2018年7月,懂先生正式打响毛衣战,随后又使出恰勃纸战术,旨在为祖国先进制程半导体领域做出自主可控的战略推动;2019年初我刚出道时,还是Xilinx遥遥领先的时代(现在貌似也是),那时的国产FPGA还处于黑铁段位;然而才短短7年,如今的国产FPGA属于百家争鸣、百花齐放、八仙过海、神仙打架、方兴未艾、得陇望蜀、友商都是XX的喜极而泣之局面,此情此景,不得不吟唱老人家的诗句:魏武挥鞭,东临碣石有遗篇,萧瑟秋风今又是,换了人间。。。

目前对于国产FPGA优势有以下几点:

1:性价比高,与同级别国外大厂芯片相比,价格相差几倍甚至十几倍;

2:自主可控,国产FPGA拥有完整自主知识产权的产业链,从芯片到相关EDA工具;

3:响应迅速,FAE技术支持比较到位,及时解决开发过程中遇到的问题,毕竟中文数据手册;

4:采购方便,产业链自主可控,采购便捷;

FPGA实现UDP网络通信现状:

FPGA实现UDP网络通信主要有两种方案,其一是使用PHY芯片实现物理层功能,比如常见的RTL8211、B50610等芯片,UDP协议栈部分很简单,可使用verilog代码直接实现;其二是使用Xilinx系列的IP核实现物理层功能,比如常见的1G/2.5G Ethernet PCS/PMA or SGMII、AXI 1G/2.5G Ethernet Subsystem、10G/25G Ethernet Subsystem、10G Ethernet Subsystem等,UDP协议栈部分很简单,可使用verilog代码直接实现;本设计使用PHY芯片方案实现物理层功能;

工程概述

本文使用紫光同创PG2L100H系列FPGA实现AD7606数据采集转UDP网络传输;输入源为示波器输出的AD正弦波,并通过线缆连接至AD7606模块实现AD转换;FPGA首先采集AD7606传来的AD数据,本设计支持串行和并行模式的AD7606出书模式。通过顶层参数配置,默认选择并行AD7606输出模式;然后选择第1通道的AD7606数据送入AD数据缓存控制模块,产生AD缓存的控制信号;然后AD数据送入纯verilog实现的数据缓存模块,将AD数据融入板载DDR3中缓存;然后AD数据从DDR3中读出后,送入AD数据组包模块,将AD数据按照QT上位机接收要求进行组包;然后送入纯verilog实现的UDP协议栈,实现AD数据的以太网封装;然后以太网数据送入纯verilog实现的RGMII互转GMII模块,实现单沿采集的GMII数据到双沿采集的RGMII数据转换;然后数据进入板载PHY芯片实现以太网物理层,输出差分信号,并通过网线发送到电脑端;最后电脑端QT上位机接收AD数据并显示波形;针对市场主流需求,本设计提供1套PDS工程源码,具体如下:

现对上述1套工程源码做如下解释,方便读者理解:

工程源码1

开发板FPGA型号为PG2L100H-6EBG676;输入源为示波器输出的AD正弦波,并通过线缆连接至AD7606模块实现AD转换;FPGA首先采集AD7606传来的AD数据,本设计支持串行和并行模式的AD7606出书模式。通过顶层参数配置,默认选择并行AD7606输出模式;然后选择第1通道的AD7606数据送入AD数据缓存控制模块,产生AD缓存的控制信号;然后AD数据送入纯verilog实现的数据缓存模块,将AD数据融入板载DDR3中缓存;然后AD数据从DDR3中读出后,送入AD数据组包模块,将AD数据按照QT上位机接收要求进行组包;QT上位机首先向FPGA开发板发送板卡信息查询指令,该指令以自定义UDP数据包形式发送,FPGA收到查询指令后,将自己的IP地址、MAC地址等信息打包成自定义的UDP包回复给QT上位机,至此,QT上位机与FPGA开发板建立了连接;然后QT上位机以100ms的频率向FPGA开发板发送请求AD数据指令,该指令以自定义UDP数据包形式发送,FPGA收到查询指令后,将缓存的AD数据从DDR3中读取,并打包成自定义的UDP包回复给QT上位机;然后数据进入纯verilog实现的RGMII互转GMII模块,实现单沿采集的GMII数据到双沿采集的RGMII数据转换,需要使用紫光的GTP_OSERDES_E2源语;然后数据进入板载KSZ9031RNX PHY芯片实现以太网物理层,输出差分信号,并通过网线发送到电脑端,KSZ9031RNX 工作于RGMII接口,延时模式;最后电脑端QT上位机接收AD数据并显示波形;该工程适用于紫光同创FPGA实现AD7606数据采集转UDP网络传输应用;

本博客描述了紫光同创FPGA实现AD7606数据采集转UDP网络传输的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;

提供完整的、跑通的工程源码和技术支持;

工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、相关方案推荐

我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目

其实一直有朋友反馈,说我的博客文章太多了,乱花渐欲迷人,自己看得一头雾水,不方便快速定位找到自己想要的项目,所以本博文置顶,列出我目前已有的所有项目,并给出总目录,每个项目的文章链接,当然,本博文实时更新。。。以下是博客地址:
点击直接前往

紫光同创FPGA相关方案推荐

鉴于国产FPGA的优异表现和市场需求,我专门开设了一个人紫光同创FPGA专栏,里面收录了基于紫光同创FPGA的图像处理、UDP网络通信、GT高速接口、PCIE等博客,感兴趣的可以去看看,博客地址:点击直接前往

我这里已有的以太网方案

目前我这里有大量UDP协议的工程源码,包括UDP数据回环,视频传输,AD采集传输等,也有TCP协议的工程,还有RDMA的NIC 10G 25G 100G网卡工程源码,对网络通信有需求的兄弟可以去看看:
直接点击前往

其中千兆TCP协议的工程博客如下:
直接点击前往

本方案在Xilinx系列FPGA的应用方案

本方案在Xilinx系列FPGA上也有部署和应用,有这方面需求的用户可以参考本博之前的博客,博客链接如下:
点击直接前往

3、设计思路框架

工程设计原理框图

工程设计原理框图如下:

AD输入源

本设计使用示波器为AD输入源,示波器配置为AD正弦波,当然,你也可以使用其他ADC输入源;示波器通过BNC线缆连接至AD7606模块;

AD7606数据采集

AD7606数据手册解读

AD7606英文原版数据手册只有37页,但真正看懂的兄弟却很少,下面解读一下这个手册:

DAQ7606 是 16 位 8 通道同步采样模数数据采集系统(DAS)。

AD7606内置模拟输入箝位保护、二阶抗混叠滤波器、跟踪保持放大器、16位电荷再分配逐次逼近型ADC、灵活的数字滤波器、2.5V基准电压源、基准电压缓冲以及高速串行和并行接口。AD7606采用5V单电源供电,可以处理±10V 和±5V 真双极性输入信号,同时所有通道均能以高达200 KSPS的吞吐速率采样。输入箝位保护电路可以耐受最高达±16.5V 的电压。无论以何种采样频率工作,AD7606的模拟输入阻抗均为1 MΩ。它采用单电源工作方式,具有片内滤波和高输入阻抗,因此无需驱动运算放大器和外部双极性电源。AD7606抗混叠滤波器的3 dB截止频率为22 kHz;当采样速率为200 KSPS时,它具有40 dB抗混叠抑制特性。灵活的数字滤波器采用引脚驱动,可以改善信噪比(SNR),并降低3 dB带宽。
写了这么多你看懂了吗?
我猜你应该是云里雾里,下面举例说人话,让你听得懂:
AD7606芯片框图如下:

红线即是信号输出输出的数据通路;

AD7606输入信号采集范围

AD7606可以处理±10V 和±5V 真双极性输入信号,即输入信号可以是±10V 和±5V,由RANGE引脚上下拉决定;

下拉处理±5V 信号;

上拉处理±10V 信号;

一旦选择了输入信号范围,就别乱给信号源了,否则烧板子了。。。

原文如下:

AD7606输出模式选择

红线以通道1为例:

输入数据位单端模拟数据,进过复杂的转换后可输出串行数字信号或者并行数据信号;

如果你的板子设计引脚资源有限,则选择串行输出;串行输出的优点是节约IO,缺点是采集时序复杂些;

如果你的板子设计引脚足够多,则选择并行输出,并行输出数据线占用16个IO口,并行输出的优点是采集时序简单,缺点是费IO;可自行选择;

输出模式选择通过PAR/SER/BYTE SEL引脚的上下拉决定;

上拉选择串行输出;

下拉选择并行输出;

具体的时序细节放在后面的章节;

原文如下:

AD7606过采样率设置

过采样率设置由OS的三个引脚上下拉决定,可以固定用电阻上下拉,这种模式就定死了,除非飞线,也可以用FPGA引脚给高低电平配置,具体配置模式如下图:

作为FPGA开发者,需要知道这些就行了,具体的时序细节放在后面的章节;

AD7606串行输出模式采集

AD7606串行输出模式采集模块顶层接口如下:

AD7606串行采集时钟的范围要求如下:

这里我们选择16.666MHz时钟,不高也不低;

系统参考时钟选择100M,那个1个时钟周期就是1000÷100=10ns;

采集时钟是16.666M,那个1个时钟周期就是1000÷16.666=60ns;

记住这两个时钟周期,很重要;

串行输出流程时序图如下:

这张图采用边转换边读取的方式,还有转换完成后再读取的方式,既然可以边转换边读取,为何还要等转换完成后再读取呢?所以我们直接用这种方式。

并行采集使用的则是转换完成后再读取的方式。

第一步:拉高RESET引脚至少至少50ns,数据手册规定如下:

第二步:拉低CONVSTA或者CONVSTB持续最多0.5ms(500ns),注意这里是最多,所以在代码里只需一个参考时钟周期足以,比如你用的100M,一个参考时钟周期就是10ns,当然,CONVSTA和CONVSTB也可同时拉低,这样就是8个通道同时采集,时间由数据手册得知,如下:

CONVSTA开启V1-V4通道的转换;

CONVSTB开启V5-V8通道的转换;

原文如下:

第三步:等待BUSY为高后,拉低CS,这个BUSY是AD7606输出给用户的,表征AD转换正在进行,他有一个最大时间,我们一定要满足他的最大时间,不然人家还没转换完你就结束采集了,岂不唧唧了;那么,CS在什么时刻拉低呢?既然前面我们已经选择了边转换边读取的方式,所以在BUSY拉高的期间CS拉低,数据手册最大推荐4.15us,代码里直接设置5ms,由数据手册得知,如下:

流程看完了,来看具体的采集时序:

采集时序如下:

首先用户拉低CS,并给出SCLK到AD7606,AD7606在CS为低期间,在SCLK的上升沿输出数据(但根据时序图,我感觉是SCLK高电平期间输出的),一个通道一次转换后输出16位采样数据;

既然AD7606是在SCLK上升沿输出,那么FPGA就应该在SCLK下降沿采集(或者低电平采集);

AD7606有8个模拟输入通道,串行输出模式下只有两个数字输出通道,每个输入通道输出16位采样数据;

DOUTA对应CH1、CH2、CH3、CH4四个输出通道;

DOUTB对应CH5、CH6、CH7、CH8四个输出通道;

因为每个输入通道输出16位采样数据,需要16个SCLK周期,所以4个输入通道输出16位采样数据,需要64个SCLK周期;那个我们需要一个计数器,计数到64时输出64位的采集数据,呢么采集到的每个通道数据对应如下:

wire 15:0 ad_ch1 = ad_out_a63:48;

wire 15:0 ad_ch2 = ad_out_a47:32;

wire 15:0 ad_ch3 = ad_out_a31:16;

wire 15:0 ad_ch4 = ad_out_a15: 0;

wire 15:0 ad_ch5 = ad_out_b63:48;

wire 15:0 ad_ch6 = ad_out_b47:32;

wire 15:0 ad_ch7 = ad_out_b31:16;

wire 15:0 ad_ch8 = ad_out_b15: 0;

AD7606并行输出模式采集

AD760并行输出模式采集模块顶层接口如下:

并行采集时序,由于官方画的图太繁琐,我直接重画了一个图来表示,如下:

第一步:拉高RESET引脚至少至少50ns,和串行采集一样;

第二步:拉低CONVSTA或者CONVSTB持续最多0.5ms(500ns),和串行采集一样;

第三步:等待转换完成再读取数据,即采用转换完成后再读取的方式;

第四步:拉低CS片选信号;

第五步:拉低RD信号,在RD和CS同时为低时即可依次读取V1-V8通道的数据;

相应的时间问题也是重要的,具体查看手册;

AD7606数据缓存控制模块

选择第1通道的AD7606数据送入AD数据缓存控制模块,产生AD缓存的控制信号;当AD数据采集到以后,经过此模块发起数据写入DDR3的控制信号,模块代码架构如下:

AD数据缓存架构

AD数据缓存架构实现的功能是将采集的AD数据缓存到板载DDR3中再读出送后续模块,目的是实现AD数据的随时读取,实现输入AD数据到输出AD数据的跨时钟域问题,更好的呈现显示效果;由于调用了紫光官方的HMIC_S IP核作为DDR控制器,所以AD数据缓存架构就是实现用户数据到HMIC_S的桥接作用;架构如下:

AD数据缓存架构由AD数据缓存帧更新模块+写AD数据控制逻辑+读AD数据控制逻辑+AXI4-FULL-Master总线模块组成;AXI4-FULL-Master总线模块实际上就是一个AXI4-FULL总线主设备,与HMIC_S IP核对接,HMIC_S IP核配置为AXI4-FULL接口;写AD数据控制逻辑、读AD数据控制逻辑实际上就是一个AD数据读写状态机,以写AD数据为例,假设一帧AD数据的大小为M,写AD数据控制逻辑每次写入一次突发传输的AD数据数据,记作Y,即每次向DDR3中写入Y个AD数据,写M÷Y次即可完成1帧AD数据的缓存,读AD数据与之一样;同时调用两个FIFO实现输入输出AD数据的跨时钟域处理,使得用户可以忽略AXI4内部代码,以简单地像使用FIFO那样操作AXI4总线,从而达到读写DDR的目的,进而实现AD数据缓存;AD数据缓存模块代码架构如下:

!!!注意

本设计使用的DDR3控制器IP版本为ips2l_hmic_s_v1_3,安装包以放在资料中,请用户自行安装,安装包目录如下:

QT上位机与FPGA数据交互逻辑

QT上位机与FPGA数据交互逻辑框图如下:

第一步:

QT上位机首先向FPGA开发板发送板卡信息查询指令,该指令以自定义UDP数据包形式发送,板卡信息查询指令的UDP数据包格式如下:

第二步:

FPGA收到查询指令后,将自己的IP地址、MAC地址等信息打包成自定义的UDP包回复给QT上位机,回复给QT上位机查询指令的UDP数据包格式如下:

至此,QT上位机与FPGA开发板建立了连接;

第三步:

然后QT上位机以100ms的频率向FPGA开发板发送请求AD数据指令,该指令以自定义UDP数据包形式发送,请求AD数据指令的UDP数据包格式如下:

第四步:

FPGA收到查询指令后,将缓存的AD数据从DDR3中读取,并打包成自定义的UDP包回复给QT上位机;回复AD数据的UDP数据包格式如下:

每个UDP包都包含有Header,在第一个字节,用于标志是板卡信息查询回复还是AD数据回复,其格式如下:

FPGA 命令应答模块

基于前面《QT上位机与FPGA数据交互逻辑》章节的描述,FPGA 命令应答模块就是实现第1步和第2步的功能,模块代码架构如下:

模块组建回复板卡信息数据包核心部分如下:

!!!注意

!!!注意

上位机设置的缓存空间为1M字节,请求数据间隔为100ms,因此在设置采样深度时要考虑到这两点,根据AD7606特性,在顶层模块中缓存空间设置为 32'h00008000,即 32K 字节,采样频率缓存空间为 200KHz,ADC采样端数据为2个字节长度,因此采样长度为采样字节除以2,即 32'h00004000,计算需要82ms可采集完成,如下:

FPGA AD数据应答模块

基于前面《QT上位机与FPGA数据交互逻辑》章节的描述,FPGA 命令应答模块就是实现第3步和第4步的功能,模块代码架构如下:

模块组建回复AD数据包核心部分如下:

UDP协议栈

UDP协议栈是以太网的协议层,由纯verilog代码实现,具有动态ARP、ICMP功能,占用逻辑资源少,性能不错,设计精简等特点,代码有详细中文注释,UDP协议栈设计架构如下:

UDP协议栈代码架构如下:

MAC层发送

发送部分中,mac_tx.v为MAC层发送模块,首先在SEND_START状态,等待mac_tx_ready信号,如果有效,表明IP或ARP的数据已经准备好,可以开始发送。再进入发送前导码状态,结束时发送mac_data_req,请求IP或ARP的数据,之后进入发送数据状态,最后进入发送CRC状态。在发送数据过程中,需要同时进行CRC校验。MAC层发送顶层接口如下:

MAC发送仲裁

工程中的mac_tx_mode.v为发送仲裁,根据发送模式是IP或ARP选择相应的信号与数据,MAC发送仲裁顶层接口如下:

ARP发送

发送部分中,arp_tx.v为ARP发送模块,在IDLE状态下,等待ARP发送请求或ARP应答请求信号,之后进入请求或应答等待状态,并通知MAC层,数据已经准备好,等待mac_data_req信号,之后进入请求或应答数据发送状态。由于数据不足46字节,需要补全46字节发送,ARP发送顶层接口如下:

IP层发送

在发送部分,ip_tx.v为IP层发送模块,在IDLE状态下,如果ip_tx_req有效,也就是UDP或ICMP发送请求信号,进入等待发送数据长度状态,之后进入产生校验和状态,校验和是将IP首部所有数据以16位相加,最后将进位再与低16位相加,直到进入为0,再将低16位取反,得出校验和结果。此程序中校验和以树型加法结构,并插入流水线,能有效降低加法部分的延迟,但缺点是会消耗较多逻辑资源。如下图 ABCD 四个输入,A与B相加结果为E,C与D相加结果为F,再将E与F相加结果为G,在每个相加结果之后都有寄存器。校验和设计框图如下:

在生成校验和之后,等待MAC层数据请求,开始发送数据,并在即将结束发送IP首部后请求UDP或ICMP数据。等发送完,进入 IDLE状态,IP层发送顶层接口如下:

IP发送仲裁

工程中的ip_tx_mode.v为发送仲裁,根据发送仲裁是UDP或ICMP选择相应的信号与数据。IP发送仲裁顶层接口如下:

UDP发送

发送部分中,udp_tx.v为UDP发送模块,第一步将数据写入UDP发送RAM,同时计算校验和,第二步将RAM中数据发送出去。UDP校验和与IP校验和计算方法一致。在计算时需要将伪首部加上,伪首部包括目的IP地址,源IP地址,网络类型,UDP数据长度,UDP发送顶层接口如下:

MAC层接收

在接收部分,其中mac_rx.v为mac层接收文件,首先在IDLE状态下需要判断rx_dv信号是否为高,在REC_PREAMBLE前导码状态下接收前导码。之后进入接收MAC头部状态,接收目的MAC地址、源MAC地址、类型,并将它们缓存起来,在此状态判断前导码是否正确,错误则进入REC_ERROR错误状态,在REC_IDENTIFY状态判断类型是IP(8'h0800)或ARP(8'h0806),然后进入接收数据状态,将数据传送到IP或ARP模块,等待IP或ARP数据接收完毕,再接收CRC数据,并在接收数据的过程中对接收的数据进行CRC处理,将结果与接收到的CRC数据进行对比,判断数据是否接收正确,正确则结束,错误则进入ERROR状态,MAC层接收顶层接口如下:

ARP接收

工程中的arp_rx.v为ARP接收模块,实现ARP数据接收,在IDLE状态下,接收到从MAC层发来的arp_rx_req信号,进入ARP接收状态,在此状态下,提取出目的MAC地址,源MAC地址,目的IP地址,源IP地址,并判断操作码OP是请求还是应答。如果是请求,则判断接收到的目的IP地址是否为本机地址,如果是,发送应答请求信号arp_reply_req,如果不是,则忽略。如果OP是应答,则判断接收到的目的IP地址及目的MAC地址是否与本机一致,如果是,则拉高arp_found 信号,表明接收到了对方的地址。并将对方的MAC地址及IP地址存入ARP缓存中。ARP接收顶层接口如下:

IP层接收

在工程中,ip_rx 为 IP层接收模块,实现IP层的数据接收,信息提取,并进行校验和检查。首先在IDLE状态下,判断从MA 层发过来的ip_rx_req信号,进入接收IP首部状态,先在REC_HEADER0提取出首部长度及IP总长度,进入REC_HEADER1状态,在此状态提取出目的IP地址、源IP地址、协议类型,根据协议类型发送udp_rx_req或icmp_rx_req。在接收首部的同时进行校验和的检查,将首部接收的所有数据相加,存入32位寄存器,再将高16位与低16位相加,直到高16位为0,再将低16位取反,判断其是否为0,如果是0,则检验正确,否则错误,进入IDLE状态,丢弃此帧数据,等待下次接收。IP层接收顶层接口如下:

UDP接收

在工程中,udp_rx.v为UDP接收模块,在此模块首先接收UDP首部,再接收数据部分,并将数据部分存入RAM 中,在接收的同时进行UDP校验和检查,如果UDP数据是奇数个字节,在计算校验和时,在最后一个字节后加上 8'h00,并进行校验和计算。校验方法与IP校验和一样,如果校验正确,将拉高udp_rec_data_valid 信号,表明接收的UDP数据有效,否则无效,等待下次接收。UDP接收顶层接口如下:

RGMII互转GMII模块

RGMII互转GMII模块由纯verilog实现;功能是实现双沿采集的RGMII数据互转单沿采集的GMII数据,需要使用紫光的GTP_ISERDES_E2和GTP_OSERDES_E2源语;模块代码架构如下:

其中的相位偏移时钟用于工作于延时模式的PHY芯片;

PHY芯片

本例程提供5套vivado工程源码,分别用到了RTL8211、KSZ9031、YT8531等市面上主流的PHY型号,通过这些型号PHY的使用,你将能学会其他型号PHY的使用,因为很多都是兼容的;此外,还提供了PHY的参考原理图,一并放在了资料包中;如下:

IP地址、端口号的修改

工程留出了IP地址、端口号的修改端口供用户自由修改,位置在顶层模块如下:

QT上位机

QT上位机用于接收并显示AD波形,界面如下:

下载程序到FPGA开发板后,连接网线至PC端,然后打开QT上位机可自动显示波形,绿色框显示FPGA开发板的MAC和IP地址;

复位:点击复位可使波形显示到初始状态;

垂直:"垂直"与"水平"切换,点击此按钮可进行水平垂直方向缩放的切换,在垂直状态下,滚动鼠标滚轴可进行垂直方向的缩放,水平状态下,进行水平方向的缩放;

暂停:"暂停"与"继续"切换,点击暂停波形,可再点击"继续"显示波形;

保存:保存ADC数据为TXT文档,保存路径在"路径"按钮处设置,默认为软件所在路径;

数值:"数值"与"电压"切换,Y方向坐标单位为原始值,即接收到的原始数据值,点击"电压"则显示电压值;

路径:选择保存路径;

打开:打开已保存的 TXT 波形文件;

QT上位机已放在了资料包中,如下:

工程源码架构

工程源码架构如下:

4、PDS工程源码1详解

开发板FPGA型号:紫光同创--PG2L100H-6EBG676;

开发环境:Pango Design Suite 2021.1;

AD数据输入:AD7606,默认使用并行输出模式;

AD数据输出:以太网输出,千兆UDP协议;

PC端接收方案:QT上位机接收并显示AD波形;

以太网物理层方案:KSZ9031RNX芯片,延时模式,RGMII接口;

以太网MAC层方案:纯verilog实现的RGMII互转GMII方案;

以太网协议层方案:千兆网版本的UDP协议栈,纯verilog实现;

网口数量:1个网口,即1个FPGA工程里运行1个UDP协议栈;

工程源码架构请参考前面第3章节中的《工程源码架构》小节;

工程作用:此工程目的是让读者掌握紫光同创FPGA实现AD7606数据采集转UDP网络传输的设计能力,以便能够移植和设计自己的项目;

工程的资源消耗和功耗如下:

5、上板调试验证并演示

需要准备的器材如下:

FPGA开发板,没有开发板可以找本博提供;

示波器或者其他ADC输入源;

AD7606模块;

网线;

电脑主机;

我的开发板了连接如下:

然后将电脑端IP地址设置为如下:

然后下载bit或者固化bin文件,即可开始测试;

紫光同创FPGA实现AD7606数据采集转UDP网络传输效果演示

紫光同创FPGA实现AD7606数据采集转UDP网络传输效果演示如下:

AD-UDP

6、福利:工程源码获取

福利:工程代码的获取

代码太大,无法邮箱发送,以某度网盘链接方式发送,

资料获取方式:私,或者文章末尾的V名片。

相关推荐
用户805533698034 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner4 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz9 天前
QML Hello World 入门示例
qt
xcyxiner12 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner13 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner13 天前
DicomViewer (添加模型类)3
qt
xcyxiner14 天前
DicomViewer (目录调整) 2
qt
xcyxiner14 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
坏孩子的诺亚方舟16 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
网络研究院16 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展