原创 关于FPGA复位可靠性的一些体会

2007-1-27 17:51 5559 13 16 分类: FPGA/CPLD

关于FPGA复位可靠性的一些体会


       以前从来没有对FPGA的复位可靠性关注过,想当然的认为应该不会有什么问题。当问题真正出在复位上的时候,才又仔细地对FPGA的复位深入的了解了一下。首先我们用的复位管脚不是FPGA的全局管脚,并且复位信号上没有上拉电阻,容易受到干扰而产生毛刺,这对异步复位是相当有害的。其次,我在FPGA内部对复位的处理过于简单。


       今天在网上看了一些资料,很多是关于同步和异步复位的优缺点比较。由于我在FPGA内部用的是异步复位,所以主要看了一下异步复位的缺点:1)复位信号在时钟有效沿或其附近释放时,容易使寄存器或触发器进入亚稳态;2)容易受到毛刺的影响;3)难以仿真,难以进行静态时序分析。上面的前两条应该对我来说是影响最重要的,而第三条说老实话,我还没有到哪个阶层(嘿嘿)


       异步复位,同步释放——就可以消除上面的前两条缺点。所谓异步复位,同步释放就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。通过一个复位信号综合器就可以实现异步复位,同步释放。下面是一个复位信号综合器的VHDL描述:


------------------------------------------------------------------------------------------------------------------------


 Designer: skycanny


-- Date:2007-1-27


-- Discription: Reset Synthesizer


Library ieee;


Use ieee.std_logic_1164.all;


Entity Rst_Synth is


       Port


(


       Clk         :      in     std_logic;


       Arst        :      in     std_logic;


       Rst_n      :      out   std_logic


);


End entity Rst_Synth;


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


Architecture RTL of Rst_Synth is


Signal     dff   :      std_logic;


Begin


       Process(Arst ,Clk )


       Begin


              If Arst = ‘0 then


                     Dff               <= ‘<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />0’;


                     Rst_n      <= ‘0’;


Elsif Clk’envent and Clk = ‘1’ then


                     Dff               <= ‘1’;


                     Rst_n      <= Dff;


End if;


       End process;


End RTL;


----------------------------------------------------------------------------------------------------------------------


使用复位信号综合器可以很好地将同步和异步复位的优点结合起来,而消除他们缺点。因此在FPGA/CPLD的逻辑设计中可以很好的提高复位的可靠性,从而保证电路工作的稳定可靠性。


 


 


欢迎访问skycanny的笔记(副站)

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户200178 2009-7-5 00:00

想做一个 毫殴计

用户162980 2009-4-5 16:02

好贴 收下了

tengjingshu_112148725 2009-3-31 21:35

好方法

用户1557574 2009-2-24 20:05

还以为是测量电池内阻呢,电池内阻有什么高招吗?

用户1524708 2009-2-23 08:48

所测电阻包括接触电阻,当然在测试时,要尽量减少接触电阻的影响,可以采取以下措施: (1)测量电压的万用表的表针测试点应尽量接近需要测试的部分,接触要可靠。如果要获得最好的效果,建议用焊接。 (2)一定要把表针的测试位置放在戴测点两端,而不能把表针插在电源输出端,实验证明,即使很短的一条导线也有0.001欧姆以上的电阻。 (3)如果接触电阻远大于0.001欧姆,用此方法也可以单独测试接触电阻。如果小于0.001欧姆,只能忽略不计或用更高精度的测量方法。

用户22644 2009-2-21 08:19

你不考虑接触电阻么?

用户18945 2007-7-6 17:44

个人理解,补充一下,其实这里也是用到了用两级触发器来完成异步时钟域转换的问题,对于异步复位信号,它和时钟之间是一个异步的关系,时钟很可能找不到它的上升沿,因此容易造成亚稳态。

怎么办呢,用老方法,两级触发器。

第一级,(尽管异步,还是要采集的),采集异步复位信号的高电平,检测到高电平后给出1。(之所以不用这一个结果作为内部的复位信号,就是考虑到1级触发器是不解决问题的,可能就是个亚稳态信号)

第二级,把第一级的结果用clk打一排,这样就避免了亚稳态。

 

绕来绕去还是亚稳态呀^_^

mengyumengyu@hotmail.com

 

用户11326 2007-3-2 10:12

如何测试何分析FPGA/CPLD?

如何用示波器测试FPGA内部用的是异步复位?

主要看一下异步复位的缺点:1)复位信号在时钟有效沿或其附近释放时,容易使寄存器或触发器进入亚稳态;2)容易受到毛刺的影响;3)难以仿真,难以进行静态时序分析。

我推荐使用TEKTRONIX的最新4通道+16数字逻辑通道的MSO4054示波器,可进行建立保持时间触发,CAN\SPI\I2C\RS23S等分析,可做解码和译码,分析ACK等等,

如有感兴趣进行测试请和我联系取得资料和演示.

email: wei.zhang@kingcable.com.cn

mp: 13817095892

用户1668680 2007-1-30 16:32

ding
相关推荐阅读
用户60452 2008-11-14 20:53
原创java连载--泛型(7)
类型擦除(Type Erasure)       当我们实例化一个泛型的时候,编译器使用一种叫做类型擦除(type erasure)的技术。在类型擦除的过程中,编译器会去除掉 类与接口中所有和类型参数...
用户60452 2008-11-13 22:08
原创java连载--泛型(6)
通配符       在泛型中,我们可以用一个通配符”?”来代替一个未知的类型。例如,使用下面的代码为某种animal指定一个cage:Cage<? extends Animal> some...
用户60452 2008-11-12 20:59
原创java连载--泛型(5)
泛型的子类型       只要两种类型能够相符,我们可以把一种类型的对象赋给另外一种类型的对象。例如,可以把一个Integer赋给一个Object,因为Object是Integer的父类之一。    ...
用户60452 2008-11-10 22:20
原创java连载--泛型(4)
受限的类型参数(Bounded Type Parameters)       有时候,我们要限制传递给类型参数的具体参数。例如,对数进行操作的方法就只能接受Number或者其子类的对象作为改方法的参数...
用户60452 2008-11-09 21:49
原创java连载--泛型(3)
泛型方法和构造器       如果在申明方法或者构造器的时候使用类型参数的话,就可以定义泛型方法和泛型构造器。这和定义一个普通的泛型基本上无二样,除了类型参数的作用范围只是在定义它的方法或者构造器之中...
用户60452 2008-11-08 19:13
原创java连载--泛型(2)
我们可以通过将"public class Box" 修改为 "public class Box<T>"而定义一个泛型,在这个定义中,使用了一个类型变量(type variable) T,而...
我要评论
3
13
关闭 站长推荐上一条 /3 下一条