VHDL代码心得6-按键选择

事实上这个心得与按键选择并没有什么关系,只是在做按键选择时恰好发现了一些东西。
先贴代码

process(key_0)
begin
case flag is
when timeshow=>
corrkey_3<=key_3;
when clock=>
clockey_1<=key_1;
clockey_2<=key_2;
clockey_3<=key_3;
when stopwatch=>
stopkey_1<=tempkey_1;
stopkey_2<=tempkey_2;
stopkey_3<=tempkey_3;
when downtiming=>
downkey_1<=tempkey_1;
downkey_2<=tempkey_2;
downkey_3<=tempkey_3;
when correct=>
corrkey_1<=key_1;
corrkey_2<=key_2;
corrkey_3<=key_3;
when others=>null;
end case;
end process;

仿真结果在这里插入图片描述
在这个状态语句里timeshow是始态,由key_0触发状态变换。可以观察到,在始态时,其他所有状态的赋值语句都没有生效,这就意味着其他状态被赋值的信号或输出全都为不定态。不定态是非常碍事的,经常会导致无法解释的bug。所以需要在始态给这些信号赋初值

process(key_0)
begin
case flag is
when timeshow=>
corrkey_3<=key_3;
stopkey_1<='1';
stopkey_2<='1';
stopkey_3<='1';
downkey_1<='1';
downkey_2<='1';
downkey_3<='1';
when clock=>
clockey_1<=key_1;
clockey_2<=key_2;
clockey_3<=key_3;
when stopwatch=>
stopkey_1<=tempkey_1;
stopkey_2<=tempkey_2;
stopkey_3<=tempkey_3;
when downtiming=>
downkey_1<=tempkey_1;
downkey_2<=tempkey_2;
downkey_3<=tempkey_3;
when correct=>
corrkey_1<=key_1;
corrkey_2<=key_2;
corrkey_3<=key_3;
when others=>null;
end case;
end process;

由于有几个输出始态不影响后面,所以没有赋初值
这样子问题就解决了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值