Discussion "Async Reset"

A

ALuPin

Hi @ all,

I have read the discussion "Async Reset".

There it has been mentioned that it is one possibility to
synchronize an asynchronous reset so that all flip flops in
the FPGA are resetted within the same clock period.

Using this synchronized reset
can I still write the process like that:


process(Sync_reset, Clk)
begin
if Sync_reset='1' then
...
elsif rising_edge(Clk) then
...
end if;

end process;

or does it make more sense to write it like that:

process(Sync_reset, CLk)
begin
if rising_edge(Clk) then
if Sync_reset='1' then
...
else
...
end if;
end if;
end process;

I would be very thankful for your opinion.

Rgds
André
 
E

Element Blue

Hi @ all,

I have read the discussion "Async Reset".

There it has been mentioned that it is one possibility to
synchronize an asynchronous reset so that all flip flops in
the FPGA are resetted within the same clock period.

Using this synchronized reset
can I still write the process like that:


process(Sync_reset, Clk)
begin
if Sync_reset='1' then
...
elsif rising_edge(Clk) then
...
end if;

end process;

or does it make more sense to write it like that:

process(Sync_reset, CLk)
begin
if rising_edge(Clk) then
if Sync_reset='1' then
...
else
...
end if;
end if;
end process;

I would be very thankful for your opinion.

The latter is a synchronous reset,i.e,FFs will reset ON the clock edge.
The former is asynchronous reset,which can be synchronized to the clock
edge to reset all FFs within a clock period,and to avoid setup/hold
conditions which arise when a async reset goes active "close" to clock
edge.So,if the reset signal is being syncronized to the clock externally,
both processes will work ok,else only the second process guarantees a
synchronous reset (which will reset FFs within the cycle).In the first
process,the reset happens whenever the Sync_reset goes high, and you
should ensure that it doesnt happen close to clock edge.
Hope that helps,
EB.
 
R

Raghavendra

Hi @ all,

I have read the discussion "Async Reset".

There it has been mentioned that it is one possibility to
synchronize an asynchronous reset so that all flip flops in
the FPGA are resetted within the same clock period.

Using this synchronized reset
can I still write the process like that:


process(Sync_reset, Clk)
begin
if Sync_reset='1' then
...
elsif rising_edge(Clk) then
...
end if;

end process;

or does it make more sense to write it like that:

process(Sync_reset, CLk)
begin
if rising_edge(Clk) then
if Sync_reset='1' then
...
else
...
end if;
end if;
end process;

I would be very thankful for your opinion.

Rgds
André

HI,
To avoid problems with asynchronous reset you can have asynchronous
reset assert and synchronous dessert using synchronizers.
Raghavendra.Sortur
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top