推荐答案
测试一下
题目
关于三段式状态机的描述,下列说法正确的是
A.输出必须是寄存器输出
B.描述状态转移条件和转移规律的逻辑是时序逻辑
C.描述状态转移时,可以不指定default态。
D.描述状态迁移的逻辑为时序逻辑
参考答案与知识点
参考答案
正确答案:D。
解析:
三段式状态机通常采用三个 always 块描述:第一个 always 块用于状态寄存器(时序逻辑,实现状态迁移),第二个 always 块用于次态逻辑(组合逻辑,描述状态转移条件和规律),第三个 always 块用于输出逻辑(可以是组合或时序逻辑)。
选项 A 错误:三段式状态机的输出不必是寄存器输出,可以为组合逻辑输出。虽然寄存器输出能避免毛刺,但并非强制要求,设计者可根据需要选择。
选项 B 错误:描述状态转移条件和转移规律的逻辑(即次态逻辑)应为组合逻辑,而非时序逻辑。该逻辑根据当前状态和输入决定下一个状态的取值,不依赖时钟沿。
选项 C 错误:在描述状态转移时,应指定 default 态。如果不指定,当状态码未完全覆盖或出现非法状态时,综合工具可能推断出锁存器,导致电路行为不可预测。因此,为安全起见,通常需要指定默认跳转状态。
选项 D 正确:描述状态迁移的逻辑(即状态寄存器的更新)是时序逻辑。它将次态逻辑计算出的 next_state 在时钟沿赋值给 current_state,实现状态的跳转。
易错点:混淆“状态转移条件”与“状态迁移”的电路类型,误将次态逻辑看作时序逻辑,忽略输出类型的灵活性,以及忽视 default 状态的重要性。
涉及知识点
- 三段式状态机结构(三个 always 块分工)
- 时序逻辑与组合逻辑的区别
- 状态机输出类型(组合输出与寄存器输出)
- default 状态的必要性