[go: up one dir, main page]

0% found this document useful (0 votes)
103 views9 pages

Asynchronous vs Synchronous Resets

There are two types of resets: asynchronous and synchronous. Asynchronous resets have priority over all other signals and occur with or without a clock, but require synchronization circuits. Synchronous resets are sampled only on clock edges and are fully synchronous, but require wider reset signals and logic growth. FPGAs initialize all flip-flops during configuration, while ASICs require an explicit reset. Resets are commonly used for initialization, hot resets, and synchronizing added logic.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
103 views9 pages

Asynchronous vs Synchronous Resets

There are two types of resets: asynchronous and synchronous. Asynchronous resets have priority over all other signals and occur with or without a clock, but require synchronization circuits. Synchronous resets are sampled only on clock edges and are fully synchronous, but require wider reset signals and logic growth. FPGAs initialize all flip-flops during configuration, while ASICs require an explicit reset. Resets are commonly used for initialization, hot resets, and synchronizing added logic.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

Asynchronous versus Synchronous Resets

I Reset is needed for:


I forcing the ASIC into a sane state for simulation
I initializing hardware, as circuits have no way to self-initialize
I Reset is usually applied at the beginning of time for simulation
I Reset is usually applied at power-up for real hardware
I Reset may be applied during operation by watchdog circuits
Synchronous Resets

I Reset is sampled only on the clock edge


I Reset applied as any other input to the state machine
Synchronous Resets

I Sync reset advantages


I The flip-flop is less complex, thus smaller in area
I Circuit is completely synchronous
I Synchronous resets provide filtering for the reset line

I Sync reset disadvantages


I Combinatorial logic grows and may cancel out the benefit
I Reset buffer tree may have to be pipelined to keep all resets occurring
within the same clock cycle
I May need to pulse stretch reset so its is wide enough to be seen at a
clock rising edge
I Requires a clock to be present if reset is to occur
I If internal tri-state buffers are present, separate asynchronous reset
may still be required
I Reset signal may take the fastest path to flip-flops
Asynchronous Resets
I Asynchronous reset advantages
I Reset has priority over any other signal
I Reset occurs with or without clock present
I Data paths are always clear of reset signals
I No coercion of synthesis tool needed for correct synthesis
I Asynchronous reset disadvantages
I Reset deassertion to all flip-flops must occur in less than a clock cycle.
I Reset line is sensitive to glitches at any time
Asynchronous Resets

I Asynchronous reset synchronization circuit


I Synchronization circuit required with asynchronous reset
I Circuit will provide asynchronous reset and synchronous deassertion
Asynchronous Resets
I Reset tree
I Routing and buffering of the reset tree almost as critical as the clock
tree
I Reset goes to every flip-flop, possibly 100’s of thousands
I Capacitive load is very large
I Reset deassertion must happen within 1 clock cycle and allow time
for reset recovery time
Resetting FPGAs

I FPGAs are initialized during configuration: all FFs, and memory


I ASICs must have an explicit reset to achieve initialization
I What happens here in both environments?
%lecture_verilog/beamer/example_code/init_ffs.sv
module init_ffs (
input clk,
output q_out_b,
input d_in
);
logic q_out = ’0; //initalize flip flop
always_ff @ (posedge clk)
q_out <= d_in;
assign q_out_b = q_out; //assign output
endmodule

I FPGA: FFs are initialized in hardware and simulation


I Hardware FFs get initialized by configuration
I Initialization statement resets simulation FFs
Resetting FPGAs

I What happens here in both environments? (cont.)


module init_ffs (
input clk,
output q_out_b,
input d_in
);
logic q_out = ’0; //initalize flip flop
always_ff @ (posedge clk)
q_out <= d_in;
assign q_out_b = q_out; //assign output
endmodule

I ASIC: Synopsis design compiler says:


Warning: init_ffs.sv:8: The ’declaration initial assignment’
construct is not supported. It will be ignored. (VER-104)
Resetting FPGAs

I Places for providing explicit reset


I High availability application requiring hot reset
I If clock drops out, need hard reset after PLL gets lock
I Comm channel: if it drops out, how do you reset the hardware?
I User push button reset
I Partial configuration will require reset of new logic
I IP (esp from ASIC sources) may require it
I Migration to ASIC from FPGA
I Reset not needed for some logic (pipelines)
I Reset is always needed for any logic with feedback

You might also like