FPGA之寄存器点灯

前言

通过比较寄存器点灯和普通点灯来了解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提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 40
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值