7. VHDL状态机出现未知状态导致BUG

 状态机出现未知状态导致BUG

问题描述:最近产品中出现了功放与适配器会概率性的出现握手失败的情况,握手过程为主机发送握手信号,然后从机接收到握手信号后响应主机。

问题原因原代码中状态机有些bug:rlc_state: integer range 1 to 11 := 1;高云编译器编译后为rlc_state [3:0],但在状态机运行的时候会出现未知状态0导致程序出现BUG,当状态机为0状态时会随机的跳转到别的状态从而造成状态机乱跳卡死而导致的握手失败。

猜测rlc_state: integer range 1 to 11 := 1;虽然刚开始赋初始值为1但编译器综合成rlc_state [3:0]后在进行状态跳转的过程中会出现未知状态的跳转,因为case语句中最后没有others,以及在有些状态下没有给状态机赋值下一个状态,但编译器会默认赋初值为0进而出现未知状态。

注:建议还是rlc_state: integer range 0 to 11 := 0;

std_logic可能会出现高阻状态和未知状态。

0a6dd8e59f6f4d6d9a51723e22cc95cb.png

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值