ADTP(AD采集高速传输协议)

简介

ADTP(AD Transfer Protocol,AD采集高速传输协议)是一个使用UDP实现的网络协议栈,将采集到的AD数据组装成UDP包发送

UDP包payload部分格式

这是UDP包payload部分的格式,不包含:以太网帧头帧尾,IP数据报头部,UDP包包头

格式 通常设置UDP包payload的最大长度为2008字节(需开启巨型帧)(普通帧的最大MTU为1500字节,最大UDP payload为1500-20-8=1472字节)

payload部分的头8个字节为采样片包头,后面的所有字节为采样点 (之后可能扩充)

开启n个通道,则一个采样点包含n个通道的采样数据,大小为n*2字节 (最多支持192通道)

假设开启4个通道,此时可算得有(2008-8)/(4*2)=250个采样点,每个采样点大小为8个字节,包含4个通道的采集数据,比如为0000 1000 2000 3000

值得注意的是,数据包的内容是以大端模式存储的,如包头为 01 00 00 00 fa 00 01 fa,其中前4个字节代表blob编号,5-6字节表示blob采样点数,第7个字节表示slice编号,第8个字节表示slice采样点数,其值分别为00 00 00 0100 fa01fa

假设一个4通道采样点数据为00 00 00 10 00 20 00 30,其含义为通道1的值为00 00,通道2的值为10 00,通道3的值为20 00,通道4的值为30 00

组包部分

AD数据产生:最多192通道,采样率2MSPS,产生数据为 19222=784MB/s

以太网数据通路:64bit,最高发送速率为 8B*156.25M=1000MB/s

理论分析以太网传输速率是够满足AD数据产生的,能够实现实时传输

由于以太网部分的数据通路位宽为64位,我将AD模块产生的数据转换为进入以太网部分的数据的模块称为b64模块(原意为64b,但出于命名不以数字开头而以字母开头的考虑,命名为b64)

b64模块的设计思路如下所示:

进入AD的信号,统一先转换为有顺序的16bit的b16信号(即代表一个通道的数据,也可以认为是采样数据不可分的最小单位),这个转换的过程是受到配置参数的影响的,如采样率,开启通道掩码, 采样点数。然后再将b16信号组装成b64信号,再送往以太网模块

b64


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