《Verilog数字系统设计教程》夏宇闻|《Verilog数字系统设计教程》夏宇闻 第四版思考题答案(第11章)

第11章复杂数字系统的构成 【《Verilog数字系统设计教程》夏宇闻|《Verilog数字系统设计教程》夏宇闻 第四版思考题答案(第11章)】1.利用数字电路的基本知识解释,为什么说即使组合逻辑的输入端的所有信号同时变化,其输出端的各个信号不可能同时达到新的值?各个信号变化的快慢由什么决定?
答:由于逻辑门和布线有延迟,因此没有办法使实际电路的输出与理想的布尔方程计算完全一致,可以说实际组合逻辑电路输出的瞬间不确定性是无法避免的。所以说即使组合逻辑的输出端的所有信号同时变化,其输出端的各个信号不可能同时到达新的值。各个信号变化的快慢与逻辑门和布线造成的传输延时有关。
2.如果组合逻辑的输入端信号非常快,其输出端的逻辑关系能否正确?变化快到什么程度以后,就没有正确的输出?如果还有正确输出,但时间片段很小,有什么办法可以加长正确输出的时间片?
答:其输出端的逻辑关系不能确定是否正确。当快到比确定下一个状态所使用的组合电路延迟都快,就没有正确的输出了。在输出端后加一个寄存器,有一个时钟控制,时钟周期宽度尽可能大些。
3.为使运算组合逻辑有一个正确的输出,为什么必须在复杂运算组合逻辑的输入与输出端增加寄存器组来寄存数据?
答:由于逻辑门和布线有延迟,因此没有办法使实际电路的输出与理想的布尔方程式计算完全一致,可以说实际组合逻辑电路输出的瞬间不确定性是无法避免的。如果能使组合逻辑电路的输入端稳定一段时间,即所有的输入信号在一段相对较长的时间段里不再发生变化,虽然在稳定时间片段的刚一开始由于冒险竞争现象会产生与理想情况不一致的毛刺或输出不确定的情况,但只要稳定时间片段大于最长的路径延迟,就可以取得组合逻辑电路的理想输出,如果能躲开输出不确定片段,在理想稳定输出的片刻就把该输出端存入寄存器,则寄存器组中保留的就是该组合逻辑电路的理想输出。
4.对每一个寄存器组来说,上一个时钟的正跳沿是为置数做准备,下一个时钟正跳沿是把本寄存器组置数(并为下一级运算组合逻辑送去输入信号),则为下一级寄存器组的置数做准备的先决条件是什么?
答:确定下一个状态所使用的组合电路的延迟和时钟到各触发器的差值必须小于一个时钟周期的宽度。
5.Verilog语法中使用了哪一种赋值符号可以表示与硬件寄存器组实现完全一致的赋值方式?
答:“<=”
6.一个带使能端的寄存器组能被赋入一个正确的输入值需要那三个条件?
答:(1)启用同步时序逻辑;
(2)下一个状态所使用的组合电路的延迟和时钟到各触发器的差值必须小于一个时钟周期的宽度;
(3)使能端被使能;
7.为什么建议大家采用同步时序逻辑来设计数字逻辑电路,异步逻辑有什么不好?
答:用Veriog HDL设计的可综合的模块,必须避免使用异步时序逻辑,这不但是因为许多综合器不支持异步时序逻辑的综合,而且因为用异步时序逻辑确实很难控制由组合逻辑和延迟所产生的冒险与竞争。当电路的复杂度增加时,异步时序逻辑无法调试。工艺的细微变化也会造成异步时序逻辑电路的失效。因为异步时序逻辑中触发条件很随意,任何时刻都有可能发生,所以记录状态的寄存器组的输出在任何时刻都能发生变化。而同步时序逻辑中的触发输入至少可以维持一个时钟后才会第二次触发。这是一个非常重要的差别,因为可以利用这一时间段,即在下一个触发信号来到之前为电路状态的改变创造一个稳定可靠的条件。
8.简述不同时钟域模块之间数据准确传送的方法。
答:使用RAM,FIFO缓冲的方法完成异步时钟域之间的数据传递。在输入端口使用前级时钟写数据,在输出端口使用本机时钟都读数据,并有缓冲器空或满的控制信号来管理数据的读写,以避免数据的丢失,可以非常方便准确的完成异步时钟域之间的数据交换。

    推荐阅读