240 likes | 528 Views
Reset Circuit Topologies. Reference: Analysis of POR Circuit Topologies http://klabs.org/richcontent/fpga_content/DesignNotes/por/por.htm. Introduction.
E N D
Reset Circuit Topologies Reference: Analysis of POR Circuit Topologies http://klabs.org/richcontent/fpga_content/DesignNotes/por/por.htm
Introduction The seemingly simple issue of FPGA and ASIC power-on reset circuits is nevertheless often a frequent cause of problems. The discussion in this module will cover both the key issues and a variety of circuits, analyzing their strong and weak points. The discussion will in most cases be general logic design but will deal with some particular issues with Field Programmable Gate Arrays (FPGAs).
System Issues None of the circuits discussed in this module are intended to deal with issues of logic devices not starting (e.g., following their truth table) instantly after the application of power. These system-level issues, based on system-level requirements, must be analyzed and, if necessary, dealt with at the system level and not at the logic level internal to the FPGA or ASIC.
Analysis Assumptions • The external POR circuitry is properly designed. • The clock is generated by a crystal clock oscillator, which takes a certain amount of time to start and then become stable. Additionally, the oscillator may not start clean. • The clock is not gated off. If that is not true, such as when areas of the circuit where the clock is gated off for power savings, then additional issues arise. • The POR signal is asynchronous to CLK. • The period of CLK is large compared with the metastable state resolution time of the flip-flop being used for synchronization. • The POR assertion time exceeds the clock oscillator and FPGA start times. • The output of the internal POR circuit drives the asynchronous set/reset of flip-flops. Since modern FPGAs all have asynchronous flip-flop inputs, this is often used to save logic resources, delay, and power. This is an important consideration since these inputs, unlike D's and ENABLE's, are sensitive to glitches. It is further assumed that timing specifications are met for set/reset distribution including the "removal" time. • Noise pulses on the input POR signal is a credible situation.
Fully Asynchronous Application Unintended operation or lockup of finite state machines or systems may result if the flip-flops come out of reset during different clock periods. There is a potential for one or more uncontrolled metastable states. Therefore, only reset circuits that [attempt to] remove power-on reset synchronously (PORS) should be considered in hi-rel applications.
Fully Asynchronous Application TYPE STATE_TYPE IS (s0 , s1 , s2, s3, s4, s5, s6, s7, s8, s9, ………………………………………….. s60, s61, s62, s63, s64, s65, s66, s67); ………………………………………….. IF resetn = '0' THEN state <= s0; ………………………………………….. CASE state IS WHEN s0=> IF StartC = '1' THEN state <= s1; END IF; WHEN s1=> state <= s2; WHEN s2=> state <= s3; WHEN s3=> state <= s4; WHEN s4=> state <= s5 ……………………………………………. • A real life example of lack of consideration for POR issues: • Numerous state machine used in design, some rather complex • External POR signal applied to all flip-flops with no synchronization • Local routing resources used for delivering POR throughout the circuit
POR Circuit Selection Significant issues related to the analysis and selection of a power-on reset circuit for a particular application include: • Dependence on clock signal being operational • Noise immunity • Critical timing path impact
Synchronously Applied, Synchronously Removed Circuits All circuits of this type need Clock to be operational
Example 1A Example1AProc: process (Clk) begin if RisingEdge(Clk) then PORA <= POR; PORS <= PORA; end if; end process Example1AProc;
Example 1A • Fully synchronous • Needs Clock to be operational (+ two cycles) • Compare with start/load time for FPGA • Minimized impact on critical timing path • Rejects noise that is not coincident with clock edge • External analog filters can help; device input transition times must be met, simple RC circuits may violate timing constraints • Internal digital FSM can act as a filter, care must be taken for startup conditions, latency, timing, metastable states, etc. • No general solution since noise can be arbitrarily large in time
Example 1B Example1BProc: process (Clk) begin if RisingEdge(Clk) then PORA <= POR; PORB <= PORA; end if; end process Example1BProc; PORS <= PORA or PORB; • A flawed attempt to improve Circuit in Example 1 for noise immunity • A static hazard on the output of OR gate: a POR pulse shorter than one Clock cycle may result in a glitch on PORS
Example 1C Example1CProc: process (Clk) begin if RisingEdge(Clk) then PORA <= POR; PORB <= PORA; PORC <= PORB; end if; end process Example1CProc; PORS <= PORA or PORC; • Fixes static hazard problem of Example 1B for narrow noise spikes. • Only one input to the OR gate changes at any time • This technique can be extended to reject POR pulses of arbitrary width
Asynchronously Applied, Synchronously Removed Circuits Remember, many programmable logic devices will not allow inputs in or outputs out until the device starts.
Example 2 Example2Proc: process (Clk) begin if RisingEdge(Clk) then PORA <= POR; PORB <= PORA; end if; end process Example2Proc; PORS <= POR and PORB;
Example 2 • POR wrapped around the synchronizing flip-flops to asynchronously assert PORS • Assertion of PORS is not affected by oscillator start time or even failure • Removal is clean; properly synchronized to FFA and FFB • FPGA start time may make the asynchronous application of POR appear to take action “instantly”. • Schematic or HDL description of a circuit may not be valid during the turn-on transient. • Noise immunity is low • Noise or runt pulses will get onto the reset network, resulting in incomplete resets and metastable states. • The logic gate slows the signal down relative to Example 1
Example 3 Example3ProcA: process (Clk, POR) begin if POR = '0' then PORA <= '0'; elsif RisingEdge(Clk) then PORA <= POR; end if; end process Example3ProcA; Example3ProcB: process (Clk) begin if RisingEdge(Clk) then PORS <= PORA; end if; end process Example3ProcB;
Example 3 • Fixes some of the problems of Figure 2. • Noise immunity improved • No gate in the path of PORS helps with timing • No combinational path for reset; needs an operational clock to propagate. • Most transients are “caught” by FFA and then cleaned up. • Worst case: a noise glitch on POR just before an active edge of Clk
Example 4A Example4AProc: process (Clk, POR) begin if POR = '0' then PORA <= '0'; PORS <= '0'; elsif RisingEdge(Clk) then PORA <= POR; PORS <= PORA; end if; end process Example4AProc;
Example 4A • POR can be distributed prior to the clock starting. Note that the FPGA must be fully operational too, as discussed above. • FFB will take care of metastability on the PORA signal. • Noise glitches are reasonably well handled. • FFA and FFB should be hand placed to minimize POR skew. • Not “bulletproof” against Runt pulses on POR. • Is FFB reliable with POR removed asynchronously? Note that some hi-rel flip-flops are built with TMR structures. Other flip-flops may internally “glitch” or have a hazard and not be stable.
Example 4B Example4BProc: process (Clk, POR) begin if POR = '0' then PORA <= '0'; PORB <= '0'; PORS <= '0'; elsif RisingEdge(Clk) then PORA <= POR; PORB <= PORA; PORS <= PORB; end if; end process Example4BProc; • Extension of the circuit shown in 4A. • Longer reset after detection of a transient.
Notes and References • "Some Characteristics of Crystal Clock Oscillators During the Turn-On Transient." This application note discusses and shows what the output of an oscillator may be during the turn-on transient. Examples shows include runt pulses of various sizes and polarities. http://klabs.org/richcontent/General_Application_Notes/oscillator/osc_start_up_note/index.htm • "Asynchronous & Synchronous Reset Design Techniques - Part Deux“ http://klabs.org/richcontent/General_Application_Notes/reset_sync_async_v2.pdf • "Small Explorer WIRE Failure Investigation Report." This is Appendix F of the WIRE Mishap Investigation Board Report, June 8, 1999. http://klabs.org/richcontent/Reports/WIRE_Report.PDF • "Startup Transient," from Advanced Design: Designing for Reliability, 2001 MAPLD International Conference, Laurel, MD, September 10, 2001. http://klabs.org/richcontent/Tutorial/MiniCourses/reliable_design_mapld2001/D_StartupTransient.ppt • "Current Radiation Issues for Programmable Elements and Devices," IEEE Transactions on Nuclear Science, December 1998. http://klabs.org/richcontent/Papers/NSREC98_Paper.pdf • "RH1020 Single Event Clock Upset Summary Report," Richard B. Katz and J. J. Wang, March 5, 1998 http://klabs.org/richcontent/fpga_content/Act_1/rh1020_clk_upset_White_paper.PDF • Thanks to Melanie Berg of Ball for the helpful comments and suggesting to add notes about the extra delay in the reset path when using topologies such as those shown in Figure 2. • "Hazard Analysis," from Design Guidelines and Criteria for Space Flight Digital Electronics. http://klabs.org/DEI/References/design_guidelines/nasa_guidelines/hazards/hazards.htm and http://klabs.org/DEI/References/design_guidelines/nasa_guidelines/index.htm • Timing Analysis of Asynchronous Signals http://klabs.org/richcontent/General_Application_Notes/parts/removal_time.htm