当前位置: 首页 > news >正文

SRIO IP调试问题记录(ready信号不拉高情况)

问题:调试过程中遇到有时写入数据后数据不发送,并且ready信号在写入一定数据后一直拉低的情况(偶发,不是每次必然出现)。buf空间设置为16时,写入15包数据,写完第16包包头后,ready信号一直为低;buf空间设置为32时,写入31包数据,写完第32包包头后,ready信号一直为低。

原因:写入AXI总线的数据包格式不正确,需要核对数据包头是否满足SRIO包头格式。数据包格式不正确时数据会一直存在buf中,直到buf空间写满,buf空间写满后ready信号一直为低电平。该问题不是每次必然出现的原因为写如SRIO包头处时序不稳定,有时能正确写入包格式,有时不能正确写入包格式,所以才偶发出现故障。各消息类型包头如下:

解决方法:使用ILA抓取波形发现,包头数据只保持了一个时钟周期,该工程占用FPGA资源较多,代码量较大,可能导致布局布线后时序不稳定。解决方法为在ready和vaild信号握手前将包头数据提前放到数据总线data上,握手以后也可以再维持一个周期的包头数据,然后再进行数据传输。包头数据在data上维持3个周期,ready和vaild信号在第二个周期进行握手,这样包头信号就不会出现时序不稳定情况。

改之前,在数据发送模块抓出的波形和手册时序一致:

改之后:

http://www.xdnf.cn/news/207613.html

相关文章:

  • CentOS上搭建 Python 运行环境并使用第三方库
  • 【运维】还原 Docker 启动命令的利器:runlike 与 docker-autocompose
  • 数据结构---单链表的增删查改
  • Uniapp:设置页面下拉刷新
  • 1.1 点云数据获取方式——引言
  • Weka通过10天的内存指标数据计算内存指标动态阈值
  • 判断子序列
  • 问答:C++如何通过自定义实现移动构造函数和移动赋值运算符来实现rust的唯一所有权?
  • AI Agent开源技术栈
  • RabbitMQ 启动报错 “crypto.app“ 的解决方法
  • 项目三 - 任务2:创建笔记本电脑类(一爹多叔)
  • MySQL--数据引擎详解
  • gem5-gpu 安装过程碰到的问题记录 关于使用 Ruby + Garnet
  • Qt/C++开发监控GB28181系统/获取设备信息/设备配置参数/通道信息/设备状态
  • 当 AI 成为 “数字新物种”:人类职业的重构与进化
  • python:sklearn 决策树(Decision Tree)
  • 从 0 到 1:ComfyUI AI 工作流抠图构建全实践
  • Linux[配置vim]
  • 通信设备制造数字化转型中的创新模式与实践探索
  • 首页数据展示
  • 并发设计模式实战系列(9):消息传递(Message Passing)
  • Redis性能优化终极指南:从原理到实战的深度调优策略
  • 超越单体:进入微服务世界与Spring Cloud概述
  • Java Stream流
  • 【Fifty Project - D20】
  • 推荐系统实验指标置信度:p值核心原理与工程应用指南
  • TA学习之路——2.3图形的HLSL常用函数详解
  • 万界星空科技QMS质量管理系统几大核心功能详解
  • 【Linux】第十五章 调度未来任务
  • LeetCode - 02.02.返回倒数第 k 个节点