(2019-11-29-10:24)
<涉及项目: Cyclon*81_***top>
平台: altera Cyclon
场景:需要用户根据需求实时切换两种分辨率,即DDR的读取长度可能随时会被忽然改变。
现象:切换分辨率偶尔出现绿屏,重启后又恢复。该现象具有概率性和随机性。
分析:抓revel发现rdgnt(响应)一直为高,说明ddr_bridge响应了rdreq, 但是却没等来正确长度的rdval。结果状态机就死在这里了。
可能是因为切分辨率的时候,读长度发生改变,导致状态机死机。
解决:状态机加上超时退出机制。卡死在某个状态超过固定时间后,就会退出该状态,回到初始状态。
总结: 状态机一定要配置超时退出机制。