上周与中能聚控讨论的问题整理
- 单次采集模式下,系统需要按照设定的采样点数目,自动采集足够的采样点后自动结束,这部分逻辑需要保证子卡同步。
明细:这部分逻辑是通过sampling_ctrl实现的,sampling_ctrl需要保证采集到足够的采样点后,拉低start_stop信号,这部分逻辑需要合理设计,并保证确认无误,且在应用该逻辑的情况下,系统可以实现正常采集工作;另外,具体udp解析完善后,也需要检测,采样率是否正确,采集通道数是否正确,通道对应采集数据是否正确等。
- 连续采集模式下,随机出现的中断信号,可能导致udp包、blob不完整,系统需要处理终止逻辑,并且设计中断情况下,udp包不完整时,是传输不完整udp包,还是直接丢弃当前包,还是继续采集直到填充完毕udp包。
明细: 目前讨论结果为丢弃不完整udp包。需要完善丢弃不完整udp包的逻辑,并且保证连续采集模式下,停止采集后,再次发送开始采集信号,可以继续采集。
- 目前传输的包,上位机不知道子卡插入情况,解析逻辑存在一定问题,系统工作状态需要同上位机交流。
明细:上位机可能不知道某一块子卡未插入,对该子卡发送掩码后接收udp包,解包时将该子卡对应数据当做插入状态进行解析,导致解析逻辑存在问题。可以考虑包头信息里面添加子卡掩码,告诉上位机子卡插入情况。
- 没有设计上位机发送配置指令后的回复逻辑,上位机发送指令后,并不知道载板有没有接收到该指令。
明细:载板接收到指令后,将相关参数存进寄存器中,这部分已经完成了。可以考虑发送一个反馈udp包回去,包内传输采集数据。
- 需要添加内外时钟切换逻辑和方波心跳输出逻辑。
明细:方波心跳找到合适输出引脚即可。内外时钟切换逻辑较为简单,实际的话以前毕竟没有接触过,可能需要参考一下公司这边已有的工程。
- 程序中依然存在许多跨时钟域的问题,这些都属于潜在风险,需要优化以避免。
明细:通过report timing summary来检查。
- 程序中,载板传输udp包的mac地址和ip地址是写死的,非常不灵活,后续也需要调整。
明细:这部分一个思路是实现动态arp,不强绑定写死的地址;另一个思路,可能就需要在PS端完成配置了。
目前进展
已完成内容:
- 已经完成了单次采集模式下,系统按照设定的采样点数目,自动采集足够的采样点后自动结束的逻辑设计。具体逻辑是b64_data_gen里面,检测子卡接收到的采集点数目,达到设定的采样点数目后,拉低start_stop信号,结束采集。
- 已经完成了连续采集模式下,随机出现的中断信号,可能导致udp包、blob不完整时,丢弃UDP废帧的逻辑设计。
- 已经完成了包头信息里面添加子卡掩码,告诉上位机子卡插入情况的逻辑设计。
- 内外时钟切换参考中能聚控提供的代码,已经添加了功能并完成引脚约束。
尚未完成内容
- 上位机发送配置指令后的回复逻辑暂未完成。
- 跨时钟域问题的优化暂未完成。
- 载板传输udp包的mac地址和ip地址的动态配置逻辑暂未完成。
后续规划
目前跟中能聚控负责软件的交流了,准备将他们的上位机指令配置、数据接收的程序要过来,进行分析和测试,看看是否能够满足目前载板的设计需求,如果有不满足的地方,再进行调整。
另外,如果他们的程序没办法在我们这里配置,新版本程序完善后上传到gitlab上面,中能聚控这边也一起测试一下。
本文章使用limfx的vscode插件快速发布