D-DAQ PL端程序添加内容

工作内容

本周基本在与中能聚控进行程序对接,并按照讨论的需求添加模块功能。

子卡状态接收逻辑

子卡状态接收,通过aurora协议接收子卡状态数据帧。

由于该功能添加之前,已经有子卡通过aurora协议传输子卡采集数据的采集数据帧功能,因此状态数据帧编码需要体现区分。状态数据帧编码格式如下:

状态信息帧用于子卡向主卡上报自身状态。状态帧使用独立帧头,与采集数据帧区分。

序号 数据内容 说明
Head1 32'h55AA_BCBC Aurora 数据帧头
Head2 {4'h2,12'h0,length[15:0]} 状态信息帧头,高 4 位 4'h2 表示传输的是子卡状态信息,低 16 位表示后续状态数据长度,当前填充 16'h0004
Word1 {16'd0, channel_num[7:0], serial_number[2:0], error_code[4:0]} 子卡基础状态字,序列号 3 位可表示 0 到 7 号板卡;错误码 5 位可表示 32 种状态;错误码和序列号共 8 位,对应主卡状态机 8 位,可直接用于汇报错误信息
Word2 hardware_id[31:0] 子卡硬件型号 ID
Word3 firmware_id[31:0] 子卡固件版本 ID
Word4 max_sample_rate[31:0] 子卡支持的最大采样率,按照设计可以定为 2M 采样率;该字段传输时拉高 last

主卡接收到 32'h55AA_BCBC 后,继续读取 Head2 判断帧类型:当 Head2[31:28] == 4'h2 时按状态信息帧解析,否则按采集数据帧解析。状态信息帧应在采集数据帧之间发送,不应插入到一帧采集数据帧中。

主卡PL端工作状态检测

主卡原来已经添加了基本的工作状态。初始IDLE状态,参数配置好后进入ARM状态,起始信号输入后进行采集,进入WORKING状态,采集完毕回到IDLE状态。

子卡状态接收逻辑添加后,主卡PL端需要根据子卡状态信息帧中的错误码进行相应的处理和状态更新。

当子卡接受的error_code为0时,表示子卡状态正常;当error_code不为0时,表示子卡存在异常状态。主卡PL端需要根据error_code的值,更新系统工作状态寄存器的值。

PL端参数配置接收

这部分逻辑根据中能聚控提供的参数配置信息数据帧打包逻辑,进行相应的处理和存储。

帧头格式

参数配置信息数据帧帧头的格式如下:

偏移 字段 长度 类型 说明
0 magic 4 uint32 固定为 0x44444151,ASCII 为 DDAQ
4 version 1 uint8 协议版本,当前为 0x01
5 header_len 1 uint8 帧头长度,固定为 32
6 msg_type 1 uint8 消息类型
7 flags 1 uint8 标志位
8 seq_id 4 uint32 指令序号
12 cmd_id 2 uint16 指令 ID
14 status 2 uint16 响应状态,请求帧填 0
16 payload_len 2 uint16 负载长度
18 reserved0 2 uint16 保留,填 0
20 timestamp_l 4 uint32 时间戳低 32 位,可选
24 timestamp_h 4 uint32 时间戳高 32 位,可选
28 reserved1 4 uint32 保留,填 0

通用参数配置指令格式

根据帧头判断指令类型。当 msg_type0x01 时,表示参数配置指令,PL端需要根据 cmd_id 解析指令功能,为 0x0101 (SET_CONFIG) 时表示当前系统传输的是参数配置指令,并将参数值存储到相应的寄存器中,以供采集控制逻辑使用。

SET_CONFIG 指令的 Payload 固定为以下结构:

偏移 字段 长度 类型 说明
0 sample_rate 4 uint32 采样率,单位 Hz
4 total_sample_num 4 uint32 单轮采集时,每通道总采样点数
8 sample_num 4 uint32 单个 Blob 中每通道采样点数
12 module_mask 4 uint32 5 个子板使能掩码
16 sample_coef 4 uint32 降采样系数
20 stream_mode 4 uint32 采集模式
24 reserved0 4 uint32 保留,填 0
28 reserved1 4 uint32 保留,填 0

Payload 长度固定为 32 字节。通过阅读Payload中的参数值,PL端可以配置采样率、采样点数、子板使能等参数,以满足不同的采集需求。

批量参数配置指令格式

批量参数通过统一指令 SET_PARAM_BLOCK (0x0104)下发。PGA 增益、后续通道掩码、触发参数等大批量不定长参数指令配置,都应复用该 Payload 结构,避免为每一种参数单独设计 UDP 解析格式。

批量参数配置指令的 Payload 结构如下:

偏移 字段 长度 类型 说明
0 param_id 2 uint16 参数块 ID
2 target_id 2 uint16 参数目标编号,例如子板编号
4 elem_size 2 uint16 单个元素字节数
6 elem_count 2 uint16 元素数量
8 data N uint8[N] 参数数据

该格式用于通用参数配置指令,适合下发不定长度的参数块数据。批量参数配置、PGA 增益、后续通道掩码、触发参数等大批量参数指令配置,都可复用该格式,避免为每种参数单独设计 UDP 解析结构。

系统参数更新

系统参数通过PL端接收UDP配置信息和PS端相关寄存器实现。当完成数据帧接收解析后,将会拉高对应数据的valid信号,系统缓存相关参数的寄存器,更新为当前系统接收到的参数配置。


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