推荐答案
测试一下
题目
下面这段代码,说法错误的是:
A.数据寄存推荐这样的写法
B. din_dly用来当控制信号是安全的
C. din_ dly不受复位影响
D. din的不定态会传递到din_dly
参考答案与知识点
参考答案
正确选项是A。该代码是一个标准的同步时序逻辑,使用非阻塞赋值在时钟上升沿将din寄存到din_dly。选项A说“数据寄存推荐这样的写法”,但在实际设计中,通常推荐在always块中添加复位逻辑(同步或异步复位),以保证寄存器在系统上电或复位时具有确定的状态,避免仿真时未知初值或FPGA上电后不确定状态带来的问题。因此,完全不带复位的写法并非推荐做法,故A错误。选项B正确:din_dly是din寄存一拍后的信号,已经同步到时钟域,作为控制信号使用时可以避免组合逻辑毛刺,相对安全(前提是建立保持时间满足)。选项C正确:代码中没有复位信号,寄存器不会因复位而改变,其值仅随时钟更新。选项D正确:非阻塞赋值会在每个时钟沿传递din的值,包括不定态,仿真中若din为X,则din_dly也会变为X。
涉及知识点
- 同步时序逻辑寄存器写法
- 非阻塞赋值的特性
- 复位策略的重要性
- 不定态在寄存器中的传播
- 控制信号的同步处理