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

2011-7-30 20:12 1495 7 7 分类: 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;



Architecture RTL of Rst_Synth is


Signal     dff   :      std_logic;


Begin


       Process(Arst ,Clk )


       Begin


              If Arst = ‘0 then


                     Dff               <= ‘0’;


                     Rst_n      <= ‘0’;


Elsif Clk’envent and Clk = ‘1’ then


                     Dff               <= ‘1’;


                     Rst_n      <= Dff;


End if;


       End process;


End RTL;


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


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


来自:http://blog.21ic.com/user1/1202/archives/2007/34743.html


文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /2 下一条