flankendetectie op asynch signaal

B

buenos

Guest
hoi

Ik wil een stijgende flank te detecteren op een asynchrone signaal, waar de detectie logica is synchroon.

Ik heb dit gedaan:Code:proces (input, CLK, reset_n)

beginnen

if (reset_n = '0 ') then

gedetecteerd <= '0 ';

input_previous <= '0 ';

elsif (clk'event en clk = '1 ') then

input_previous <= input;

if (input = '1 'en input_previous = '0') then - stijgende flank op de input

gedetecteerd <= '1 ';

end if;

end if;

einde proces

 
Ik denk dat je kunt deze code gebruiken voor uw probleem;

Code:proces (input, CLK, reset_n)

beginnen

if (reset_n = '0 ') then

gedetecteerd <= '0 ';elsif (clk'event en clk = '1 ') thenif (input'EVENT en input = '1 ') then - stijgende flank op de input

gedetecteerd <= '1 ';

anders

gedetecteerd <= '0 ';

end if;

end if;

einde proces
 
zula wrote:

Ik denk dat je kunt deze code gebruiken voor uw probleem;Code:proces (input, CLK, reset_n)

beginnen

if (reset_n = '0 ') then

gedetecteerd <= '0 ';elsif (clk'event en clk = '1 ') thenif (input'EVENT en input = '1 ') then - stijgende flank op de input

gedetecteerd <= '1 ';

anders

gedetecteerd <= '0 ';

end if;

end if;

einde proces
 
nee, het is veel langer dan een CLK, zijn ongeveer 150 CLK lang.

 
Probeer dit.

Code:

proces (input, CLK, reset_n)

beginnen

if (reset_n = '0 ') then

input_previous <= '0 ';

elsif (clk'event en clk = '1 ') then

input_previous <= input;

end if;

einde procesgedetecteerd <= input en niet (input_previous);
 
oke
bedankt.
waarom zou het beter zijn, en wat was het probleem met de originele oplossing?
(in eerste mijn post ik vergat om een andere verklaring bij hebben ontdekt <= '0 '; maar in mijn ontwerp het was er, dus dat was niet het probleem)

 
Het is een klassiek geval van ontbrekende synchronisatie van asynchrone signalen.Als het ingangssignaal rand samenvalt met de klok rand, kan het evenement worden gemist als gevolg van vertraging logica scheef.Dit probleem is ook niet opgelost door de code gesuggereerd door kvingle.Het toevoegen van een ander register niveau het meest waarschijnlijk verwijdert het probleem.
Code:

indien rising_edge (clk) then

input_sync <= input;

input_prev <= input_sync;

end if;

gedetecteerd <= ingangssynchronisatiesignaal en niet input_prev;
 
Mee eens.

Async signaal in sync domein ... Een nachtmerrie van digitale ontwerpers.
Een basis dubbele flop Synchronizer zoals hierboven gesuggereerd is een goede manier om dit te minimaliseren.

 
Hoi,

kunt u FSM ook om dit te doen.

Ik heb sucssess volledig geïmplementeerd op hardware.Maar in mijn geval heb ik de stijgende rand van trage klok (Frame Clk 2.25MHz) opgespoord met in het hoger klok domein (bitclk = 18 * Frame clk = 40.5MHz).

Dus voor mijn zaak was FrameClk asynchrone signaal in BitClk domein.

Maar als je om te keren manier dan sporen nodig zijn om een van de synchronisatie methode te gebruiken samen met uw logica.

Bijgevoegde code is in verilogHDL.

golfvorm is hier<img src="http://images.elektroda.net/50_1252300669_thumb.jpg" border="0" alt="edge detection on asynch signal" title="flankendetectie op asynch signaal"/> --
Shitansh Vaghela

 
thanks guys.

is dit het geval van "metastabiliteit" op de eerste vertraagde signaal?

 
Hoewel er een eindige waarschijnlijkheid van metastabiele gebeurtenissen in asynchrone verwerking van signalen, het huidige probleem is natuurlijk de veel voorkomende geval van ontbrekende synchronisatie en geschonden setup / voorwaarden houden.Het is onmogelijk om effectief metastabiliteit horloge met 10 of 15% incidentie.
hasn't settled to a final value after a full clock period.

In mijn voorstel voor een oplossing, metastabiliteit betekent dat input_sync
niet heeft geregeld tot een eindwaarde na een volledige klok periode.FPGA-leveranciers hebben gegevens, die het mogelijk maakt om de waarschijnlijkheid van dit evenement te berekenen.Afhankelijk van het ingangssignaal en klokfrequentie kan het uren duren tot vele jaren voor de eerste gebeurtenis.In situaties, waar zelfs deze minimale kans te hoog is, moet je zelf toevoegen Synchronizer meerdere fasen, de verhoging van de metastabiliteit kans om een vermogen van n.Een tweede fase kan voldoende zijn om dit te voorkomen voor de verdere levensduur van onze planeet.

 

Welcome to EDABoard.com

Sponsor

Back
Top