本帖最后由 磕磕碰碰 于 2021-8-30 07:46 编辑
在AD7606以太网数据采集系统设计的过程中遇到一个问题。在进行功能仿真的过程中如何配置以太网接收的指令包?
AD7606以太网数据采集系统要进行工作首先就是要确保输入准确的指令,就涉及到指令的配置,模拟上位机指令下发对采集的相关参数进行设置。指令会对7606的采样的数据个数、采样速率、采样通道进行设置。
系统框图如图1所示 实现以200K的采样速率,对1个通道进行采样,共采集16384个数据。四个寄存器对应的指令如下: DataNum: 55 A5 02 00 00 40 00 F0 ChannelSel: 55 A5 01 00 00 00 01 F0 ADC_Speed_Set :55 A5 03 00 00 00 F9 F0 RestartReq: 55 A5 00 00 00 00 00 F0 在这里我自己犯了一个惯性思维的错误,既然缺少指令就配置指令,那就组一个以太网包吧,于是就开始重以太网(MAC)帧协议前同步码开始利用以太网测试工具对每层协议进行设置,利用CRC计算工具对以太网帧进行校验计算,这样组包的过程繁琐,且到最后也难以确保组包完全正确,修改数据参数更是繁琐,每次修改ADC配置参数都相当于重新组一次以太网包。其实通过对我的设计观察发现,在系统设计中以太网发送模块就是最好的组包工具。这里其实是对仿真文件缺乏灵活的运用,在进行仿真的发过程中要对设计的模块进行灵活的调用。 图2中以太网发送模块就是对数据进行组包发送到PC端,如果这里对以太网发送模块在仿真文件中进行例化,可快速准确的对指令进行组包配置,也可以对太网发送模块功能进行验证。 图2 图3是仿真文件中例化的以太网发送模块,指令通过gmii发送模块对指令进行组包,在经过gmii转rgmii模块实现指令的rgmii发送。
图4是仿真中的指令信息
图4 以最后一条指令为例进行观察,指令组包正常,如图5所示
|