ad采集udp千兆以太网方案的简单demo

简介

在龙哥发的基于 RJ45 的 RGMII 千兆以太网(verilog-ethernet)上进行修改,实现一个能简单的ad采集并udp发送的千兆以太网方案

初始程序验证

先把龙哥给的程序跑通,我将程序进行了略微修改,发送的数据如下

ddemo

第一个字节08表示8通道,后面是8个通道的采集数据,由于还未接入AD7606模块,故先用12 34代替,以20作为分隔符

整体方案设计

设计思路

将AD7606模块加入项目中,并添加FIFO缓存与BCD转换电路,然后通过udp发送到上位机,上位机使用NetAssist软件接收并打印

系统设计

totaldesign

ad信号为信号发生器产生的信号,通过连线接入MA703FA FPGA开发板中,然后输出为位于RJ45端口的rgmii信号,通过网线连接到上位机,然后上位机使用NetAssist软件接收

ad7606模块使用spi接口接收串行ad信号并转换为8通道16位信号,本demo只使用了一个通道(ch1)进行数据缓冲和传输

注:ad7606能采集的范围为-10V ~ 10V,但信号发生器产生电压的范围为-5V ~ 5V

fifo模块缓存采集到的16位ad信号

vol_cal模块将16位ad信号转换成8位符号位加上20位数值位,便于后面udp组包发送

最终udp发送时ad信号的格式为±x.xxxxV,如+4.9998V-1.0012V

eth_top为以太网发送模块,在龙哥给的程序上修改而成,功能为将ad信号组包并转换成rgmii信号然后发送

值得一提的是千兆以太网的速度远远快于ad7606的采样率(1Gbps vs 200k×16b),所以程序设计里远远没有将以太网的速度跑满,但如果更换采集芯片或以太网发送端口,即这两边的速率有变化,程序都要重新进行合理的设计来匹配双边的速度

功能测试

本demo的数据接收使用上位机NetAssist,功能比较简陋也不太好用(软件缓冲区有限,千兆以太网跑满一点就容易导致软件卡死),将NetAssist收到的电压数据复制黏贴到excel中然后绘图展示采集到的波形信号

excel的数据处理与绘图如下图所示,下面展示波形信号,大概都是选用了421个数据点绘图 excel0

excel1

excel2

excel3

excel4

2023年11月4日更新

修改了组包条件,更改为 每采样一个数据就组装发送一个udp包,测试效果如下

excel21

excel22

excel23

excel24


本文章使用limfx的vscode插件快速发布