原创 电子工程师笔试题目收集1

2010-4-21 18:49 3006 7 7 分类: FPGA/CPLD

一.Verilog如何消除毛刺?


1.出现"毛刺"的原因


  当信号在FPGA器件内部通过连线和逻辑门时,一般都有一定的延时。延时的大小与连线的长短和门单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。此外,信号的高/低电平转换也需要一定的过渡时间。由于存在这些因素的影响,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出都有先后顺序,而并不是同时变化,这往往就会出现一些不正确的"毛刺"。


  "毛刺"信号的电路有两种类型。第一种是输入信号经过FPGA内部布线以后产生不同延时的异步电路;第二种是由于在编程时内部信号变化落后。在多个信号关联时,第一个信号变化如果发生落后情况,后面的信号将产生不确定状况,从而出现"毛刺"。 "毛刺"的存在说明该电路存在不稳定状况,因此,这很可能导致整个系统的误动作。


2 毛刺的消除


2.1组合逻辑电路"毛刺"的同步消除


  现以一个组合逻辑电路为例来介绍该方法。从图2所示的仿真波形可以看出,"in1、in2、in3、in4"四个输入信号经过布线延时以后,其高低电平变换不是同时发生的,这会导致输出信号"out"出现了毛刺。由于设计时无法保证所有连线的长度一致,所以,即使四个输入信号在输入端同时变化,经过 FPGA内部走线到达或门的时间也是不一样的,毛刺必然产生。一般情况下,即使输入信号同时变化,经过内部走线后的组合逻辑也将产生"毛刺"。这样,如果将它们的输出直接连接到时钟输入端、清零或置位端口,就可能会导致不可预料的结果。


仿真波形


  针对这类"毛刺"电路,设计时可以通过"毛刺"信号对同步电路不敏感的特性,来在系统中加入同步时钟,这是因为同步电路信号的变化都发生在时钟沿的保持时间。因而可以在电路中加入同步时钟,使输出信号跟随时钟同步变化。图3所示是同步法去除"毛刺"的对应仿真波形。


同步法去除


2.2信号变化落后的"毛刺"消除


  程序中的内部信号的判别赋值并不是立即发生变化,而是存在一个延迟。这也是最容易产生"毛刺"的一种情况。这样,在计数分频器程序设计中,可使用 counter%(delay-1)==0这个条件来约束分频的模数,由于条件判别的延时使分频输出产生"毛刺"的仿真波形如图4所示。


 条件判别的延时使分频输出产生


 对于这种电路,设计时可以采用加触发器的方法来消除"毛刺",可以引入一个名为temp的触发器来有效除去这些"毛刺",其仿真波形如图5所示。具体的程序代码如下:


名为temp的触发器来有效除去这些


程序代码

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条