组合逻辑最大的缺点就是会存在竞争冒险,这种竞争冒险问题是非常危险的,常常会引起电路的不稳定性和工作时的不确定性。
时序逻辑就可以极大地避免上面的问题,从而使系统更加稳定。时序逻辑最基本的单元就是寄存器,寄存器具有存储功能,一般是由 D 触发器构成。由时钟脉冲控制,每个 D 触发器能够存储一位二进制码。
D 触发器的功能:在一个脉冲信号上升沿或下降沿的作用下,将信号从输入端 D 送到输出端 Q。如果时钟脉冲的边沿信号未出现,即使输入信号改变,输出信号仍然保持原值,且寄存器拥有复位清零功能,其复位又分为同步复位和异步复位。
同步复位:当时钟的上升沿(也可以是下降沿,一般习惯上为上升沿触发)来到时检测到按键的复位操作才有效,否则复位无效。
always@(posedge sys_clk)
if(sys_rst_n == 1'b0)
异步复位:无论时钟的变化如何,只要检测到按键按下,就立即复位操作。
always@(posedge sys_clk or negedge sys_rst_n)
if(sys_rst_n == 1'b0)
由上我们可知异步复位虽然消耗资源比同步多,但实现效果好故常使用异步。
思考1:竞争与冒险是什么?
在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争,到达门后进行逻辑运算产生的毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。
思考2:寄存器、触发器和锁存器之间的区别与联系?
寄存器:用来暂时存放数据和运算结果。在实际的数字电路中,常用来存储一组二进制数的同步时序逻辑电路。
触发器:在时钟信号触发下存储一位二进制数的逻辑单元电路称为触发器。
锁存器:在异步电路系统中,对输入信号电平敏感,用来存储信息的单元电路。
寄存器与触发器的联系:
把n个触发器的时钟端口连接在一起可以构成一个存储n位的二进制数据的寄存器。
触发器与锁存器的区别:
触发器、锁存器分别受同步时钟信号和电位信号控制。
思考3:同步电路和异步电路是什么?
电路设计可分类为同步电路和异步电路设计。同步电路利用同一个时钟脉冲使其子系统同步运作常见有同步时序逻辑电路,而异步电路不使用时钟或不使用同一个时钟脉冲使子系统同步工作,常见的有组合逻辑电路和异步时序逻辑电路。
思考4:时序逻辑电路与组合逻辑电路的区别
时序电路:带有存储记忆功能的电路(输出不仅和当前的输入有关,还跟上一个状态有关)
组合电路:不带记忆功能的电路,即输出随着输入变化而变化,没有保持和记忆的功能。
通过看电路是否有时钟并不能判断出是否时序电路,关键看电路是否有存储记忆功能。