欢迎光临散文网 会员登陆 & 注册

HDLBits (36) — 避免锁存

2022-02-11 14:20 作者:僚机Wingplane  | 我要投稿

本题链接:

https://hdlbits.01xz.net/wiki/Always_nolatches

假设你正在为一个游戏构建一个电路来处理 PS/2键盘上的扫描代码。给定接收到的最后两个字节的扫描代码,您需要指示是否按下了键盘上的一个箭头键。这涉及到一个相当简单的映射,它可以作为一个 case 语句(或者是 if-elseif)实现,其中包含四个 case。

你的电路有一个16位输入和四个输出。建立这个电路,识别这四个扫描代码并断言正确的输出。

为避免造成锁存,必须在所有可能的条件下为所有输出分配一个值(另请参见 always_if2)。仅仅有一个默认项是不够的。在所有四种情况和默认情况下,你必须把所有四个项和默认情况分配给所有四个输出的值,这可能涉及大量不必要的输入。解决此问题的一个简单方法是在case语句之前为输出指定一个“默认值”:

这种类型的代码确保在所有可能的情况下都为输出分配一个值(0) ,除非 case 语句重写了分配。这也意味着默认的: case 项变得不必要了。

提醒:逻辑合成器会生成一个组合电路,该电路表现为代码描述的内容。硬件不按顺序“执行”代码行。

题目

答案

输出波形



HDLBits (36) — 避免锁存的评论 (共 条)

分享到微博请遵守国家法律