前言
通过比较寄存器点灯和普通点灯来了解FPGA,对数电的触发器,时序有个基本的认识。
一、竞争冒险现象
在FPGA的设计中,毛刺现象是长期困扰电子设计工程师的设计问题之一,是影响工程师设计效率和数字系统设计有效性和可靠性的主要因素。由于信号在FPGA的内部走线和通过逻辑单元时造成的延迟,在多路信号变化的瞬间,组合逻辑的输出常常产生一些小的尖峰,即毛刺信号,也容易引起竞争冒险现象,从而使电路工作的稳定性大受影响。在FPGA设计中,毛刺产生的根本原因是信号在芯片内部走线时产生的延迟。
前面在画波形图的时候,认为波形的变化是没有时间差的,但在实际情况下,信号经过逻辑门会有时间延迟,从而在波形中产生尖脉冲,即产生竞争-冒险现象。
竞争:在门电路中的两个输入端的信号同时向相反方向变化,而变化的时间有差异时,即发生“竞争”。
冒险:两个输入端的信号变化的方向相反时,由于输入端的竞争而导致的输出端出现不该有的干扰脉冲(即所谓毛刺),就称为冒险。表现为输出端出现了原设计中没有的窄脉冲,常称其为毛刺。
二、D触发器(D锁存器)
三、同步复位D触发器和异步复位D触发器
同步复位的D触发器中的“同步”是和工作时钟同步的意思,也就是说,当时钟的上升沿(也可以是下降沿,一般习惯上为上升沿触发)来到时检测到按键的复位操作才有效,否则无效。如图所示,sys_rst_n被拉低后led_out没有立刻变为0,而是当syc_clk的上升沿到来的时候led_out才复位成功,在复位释放的时候也是相同原因。
异步复位的D触发器中的“异步”是和工作时钟不同步的意思,也就是说,寄存器的复位不关心时钟的上升沿来不来,只要有检测到按键被按下,就立刻执行复位操作。如图所示,sys_rst_n被拉低后led_out立刻变为0,而在复位释放的时候led_out不会立刻变为key_in的值,因为还要等待时钟上升沿到来到时才能检测到key_in的值,此时才将key_in的值赋值给led_out。(异步复位同步释放:就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步)
同步和异步都存在与时序逻辑之中,相比较组合逻辑来讲,对电路中的毛刺有很好的屏蔽作用,如下图中间位置的一组红色竖线所示,是我们模拟在干扰情况下产生的毛刺现象 ,因为时序电路只有在沿到来时才检测信号是否有效,所以在两个上升沿之间的毛刺都会被自然的过滤掉,可以大大减少毛刺现象产生的干扰,提高了电路中数据的可靠性。
时序电路还有一个特点,就是“延一拍”的效果。下图最左边的一组红色竖线所表达的就是这个现象。key_in在复位后的第一个时钟的上升沿来到时拉高,我们可以发现此时led_out并没有在同一时刻也跟着拉高,默认采集的是该时钟前一时刻的值。
四、代码实现
同步复位的D触发器
异步复位的D触发器
普通点灯
五、时序分析
由上图仿真文件可知开始复位置0,20ns后复位信号置1,210ns后复位信号置0,40ns后复位又置1;时钟信号初始为1,10ns翻转一次;按键随机产生0/1。
根据以上信息分析仿真图,前20ns由于时序电路延一拍特性,led_out没有输出;之后210ns中,复位信号置1,因为复位信号低电平有效,此时,led_out由前一拍的key_in决定;之后的40ns中rst置0,在10ns后led_out置0,此时无论key_in如何变化,led_out始终为0;之后rst一直置1,延时10ns后,led_out继续由前一拍的key_in决定。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。