Introduktion til Clock Domain Crossing: Double Flopping
denne artikel vil diskutere en velkendt teknik kaldet “double flopping” for at overføre et enkelt bit styresignal mellem to urdomæner.
det er almindeligt at anvende flere ursignaler i et digitalt system. Da ursignalerne fra forskellige urdomæner generelt er uafhængige, kan overførsel af data mellem de forskellige urdomæner være en udfordrende opgave. Denne artikel vil diskutere en velkendt teknik kaldet” dobbelt flopping ” for at overføre et enkelt bit styresignal mellem to urdomæner.
Hvorfor Har Vi Brug For Flere Ure?
den generelle digitale designmetode anbefaler at bruge et ursignal til hele systemet, hovedsageligt fordi det forenkler både designproceduren og systemtimingsanalysen. Denne metode giver dog ikke altid den mest effektive løsning, og nogle gange er det ikke engang muligt at have et enkelt ur til hele systemet. For eksempel overveje et FPGA-design, der opererer ved 20 MHG, som kommunikerer med to eksterne enheder ved hjælp af grænseflader, der opererer ved 100 MHG og 150 MHG. Her skal vi beskæftige os med tre forskellige urfrekvenser. Bemærk, at grænsefladernes urfrekvens kan foruddefineres, og vi kan muligvis ikke vælge det baseret på det ur, der bruges inde i FPGA.
nogle gange kan vi muligvis vælge klokfrekvensen for de forskellige dele af systemet, men selv i dette tilfælde er det måske ikke en god ide at betjene hele systemet med en given klokfrekvens. Antag for eksempel, at hele systemet kan betjenes ved 20 MHG undtagen et delsystem, der har brug for et 100 MHG-ur. Hvis vi beslutter at bruge et ursignal til hele systemet, bliver vi nødt til at betjene systemet med 100 MH for at imødekomme den højeste urhastighed, der er tilgængelig i systemet. Det er klart, at dette ikke er rimeligt, fordi vi ikke kun har overdesignet en stor del af systemet (dele, der kunne betjenes ved 20 MH), men også vi har unødigt øget systemets dynamiske strømforbrug. Som du kan se, er der mange omstændigheder, hvor vi skal anvende forskellige urhastigheder for forskellige dele af systemet.
et afsnit af designet, hvor alle de synkrone elementer, såsom flip-flops og væddere, bruger det samme ursignal kaldes et urdomæne. At have forskellige urdomæner kan være gavnligt, men er ikke så let som det ser ud til at være. Det næste afsnit diskuterer nogle af de problemer, vi måtte have, når vi bruger et system med flere ur.
Metastabilitetsproblemet
Antag, at vi har to sektioner af Logik, A og B, der opererer på henholdsvis 50 MH og 100 MHH. Dette er vist i Figur 1.
Figur 1
i vores enkle eksempel har B-sektionen en indgang, En_In, som er forbundet til en_out-udgangen i A-sektionen. Denne forbindelse svarer til et aktivt-højt aktiveringssignal, der initierer en algoritme I B, efter at en bestemt operation er udført af A. Figur 1 viser det register, der genererer aktiveringssignalet i A, og det register, der modtager det i B.
Antag, at urbølgeformerne er som vist i figur 2, og systemet stiger kantudløst. Da en_out-signalet genereres af A-urdomænet, kan dets lave til høje overgang forekomme efter en stigende kant af clk1 som vist på figuren. Forsinkelsen mellem clk1-stigningskanten og en_out-overgangen svarer til uret-til-K-forsinkelsen ($$T_{clk-til-K, DFF1}$$) for flip-flop i A-logikafsnittet. Nu forventer vi, at dff2-registret i B-domænet vil prøve aktiveringssignalet ved den næste stigende kant af clk2 ved $$t=t_2$$. Prøveudtagningen vil med succes ske, forudsat at tidskravene i DFF2 er opfyldt, dvs. $$t_1 + t_ {clk-to-SP, \; DFF1} \LEKS t_2-t_{setup, \; DFF2}$$.
figur 2
i figur 2 er betingelsen $$t_1+t_{clk-to-K,\; DFF1} \LEKS t_2-t_{setup,\; DFF2}$$ opfyldt, men dette er ikke altid tilfældet. Bemærk, at ursignalerne fra forskellige urdomæner generelt er uafhængige. Vi kender ikke deres faseforhold, og bølgeformerne kan være som vist i figur 3. I dette tilfælde er lav-til-høj-overgangen af aktiveringssignalet så tæt på den stigende kant af clk2, at betingelsen $$t_1+t_{clk-til-K,\; DFF1} \LEKS t_2-t_{setup,\; DFF2}$$ ikke er opfyldt.
figur 3
da inputdataene for DFF2 er ændret inden for installationstiden, vil registeradfærden være uforudsigelig. På grund af overtrædelsen af opsætningstiden kan registerudgangsspændingen være den værdi, der repræsenterer en logisk høj, en logisk lav eller endnu værre en værdi mellem de logiske høje og logiske lave spændinger. Disse tre tilfælde er mulige, mens inputdataene faktisk var logiske høje ved den tilsvarende urkant. Tilsvarende vil outputværdien af registret være uforudsigelig, når registerholdetiden overtrædes, dvs.en_out ændres inden for et tidsvindue efter den aktive urkant defineret af registerholdetiden. Når udgangen af registret bliver suspenderet ved en spænding mellem de logiske høje og logiske lave spændinger, siger vi, at flip-flop er kommet ind i en metastabil tilstand.
lad os undersøge de tre mulige tilfælde fra timing overtrædelse af figur 3 individuelt:
- som det første tilfælde antager du, at outputværdien af DFF2 går til logic high med clk2 stigende kant på $$t=t_2$$. I dette tilfælde er der ingen fejl, og flip-flop indeholder gyldige data, selvom vi havde setup time overtrædelse. Dataene overgår som forventet uden fejl.
- det andet tilfælde: Antag, at dff2-udgangen går til logic lav med clk2 stigende kant på $$t=t_2$$. I dette tilfælde samples aktiveringssignalet ikke med succes i B-urdomænet. Dette vil dog ikke være et problem, fordi En_Out kommer fra A clock-domænet, og det vil være højt i mindst en periode med clk1 som vist i figur 3. Derfor vil den næste stigende kant af clk2 ved $$t=t_3$$ prøve en_out-værdien korrekt. For denne urkant vil timingkravene i DFF2 blive opfyldt, fordi En_Out ikke har ændret sig i mere end en periode af clk2. I dette tilfælde prøver vi En_Out omkring en urperiode senere, end den faktisk overgik. Dette er dog ikke et problem, fordi urene på de to urdomæner blev antaget at være uafhængige, og vi antog ikke nogen antagelse om ankomsttidspunktet for en_out-signalet. Faktisk, kredsløbet i B-urdomænet realiserer slutningen af beregningerne af A-urdomænet med en ekstra forsinkelse på en clk2-periode.
- Antag derefter, at DFF2-registret går ind i metastabil tilstand. I dette tilfælde suspenderes registerudgangen ved en spænding mellem de logiske høje og logiske lave spændinger, men dette vil være midlertidigt. Flip-flop vil til sidst forlade metastabil tilstand og gå til logic high eller logic lav. Den tid, der kræves for at afslutte den metastabile tilstand, er kendt som opløsningstiden $$T_r$$. Dette er vist i figur 4. I dette tal er overtrædelsen af opsætningstiden sket, og flip flop er kommet ind i metastabil tilstand i et tidsinterval på $$T_r$$. Efter $$T_r$$ vil flip flop-output gå til enten logic high ($$K2_{meta-to-1}$$) eller logic lav ($$K2_{meta-to-0}$$).
figur 4
opløsningstiden er ikke deterministisk og beskrives som en sandsynlighedsfordelingsfunktion
$ $ P (T_r)=e^{\frac {- T_r} {\tau}}$$
hvor $$ \ tau$$ er “henfaldstidskonstanten” og bestemmes af de elektriske egenskaber ved flip flop. En typisk værdi for denne parameter vil være omkring en brøkdel af et nanosekund.
ovenstående ligning giver sandsynligheden for at forblive i metastabil tilstand i et tidsinterval svarende til $$T_r$$ efter prøveudtagningskanten. På grund af ligningens eksponentielle karakteristik vil sandsynligheden hurtigt falde, da vi øger værdien af $$T_r$$. For eksempel for $$\tau =0,5$$ ns og $$T_r = 5$$ ns opnår vi en sandsynlighed på $$\ca.4,5 \gange 10^{-5}$$.
for at opsummere kan vi ikke forhindre metastabilitet, fordi ursignalerne fra de to urdomæner er uafhængige af hinanden. Men hvis vi giver flip-flop med tilstrækkelig stor opløsningstid, vil den løse til en stabil tilstand med høj sandsynlighed. Derfor, hvis vores design inkluderer flip-flops, der kan komme ind i metastabilitetstilstanden, bør vi give flip-flop nok tid til at afslutte metastabiliteten. Derefter kan vi sikkert udbrede værdien af flip-flop til de nedstrøms logiske celler. Bemærk, at brug af en metastabil værdi kan føre hele systemet til en ukendt tilstand. Det kan føre til en høj strømstrøm og endda chip udbrændthed i værste fald. Derfor bør vi undgå at fodre ustabile data til systemet.
Dobbelt Flopping
vi så, at det at give flip-flop en tilstrækkelig tid i høj grad kan reducere chancen for at forblive i metastabil tilstand. Lad os se, hvordan dette kan bruges til at undgå udbredelse af metastabile data i systemet. Overvej blokdiagrammet i figur 5. Dette viser en typisk sti i B-urdomænet i Figur 1, der modtager og behandler en_in-signalet.
figur 5
den mindste urperiode, der kan bruges til at betjene dette kredsløb, vil være
$$T_{clk,\; min} = t_{clk-til-K} + t_{comb, \; maks} + t_{opsætning}$$
hvor $$T_{clk-to-SP}$$ og $$T_{setup}$$ er uret-til-SP og opsætningstiden for flip-flops og $$t_{comb, \; maks}$$ er den maksimale forsinkelse, som kombinationskredsløbet, “Comb.”, udstille. Denne ligning opnås ved at antage, at outputdataene for DFF2 er stabile. Hvis det ikke er tilfældet, skal vi overveje en vis opløsningstid som i følgende ligning:
$$T_{clk,\; min} = t_{clk-til-K} + T_r + t_{comb, \; maks} + t_{opsætning}$$
værdien af opløsningstiden bestemmer sandsynligheden for at komme ud af metastabil tilstand. Antag, at perioden for clk2 er $$T_{clk2}$$. Derefter vil værdien af den tilgængelige opløsningstid være
$$T_r = t_{clk2}- \ big ( T_{clk-til-K} + t_{comb,\; maks} + t_ {setup} \ big )$$
for at reducere sandsynligheden for at forblive i en metastabil tilstand, bør vi øge $$T_r$$. Med en given urperiode $$T_{clk2}$$, vil den eneste designmulighed minimere parameteren $$T_{comb,\; maks}$$. Derfor ville vi bedre sætte ” kammen.”Bloker efter dff3 flip-flop som vist i figur 6. På denne måde vil $$T_{comb, \; maks}$$ være teoretisk nul for stien mellem DFF2 og DFF3. Derfor har vi den maksimale mulige opløsningstid.
figur 6
denne teknik kaldes dobbelt flopping og bruges i vid udstrækning ved overførsel af styresignaler som ovenstående aktiveringssignal mellem to urdomæner. Bemærk, at det ekstra register introducerer en anden forsinkelse på en urperiode til aktiveringssignalet, der er fanget af B-urdomænet. Denne forsinkelse er dog værd at drage fordel af at undgå metastabile tilstande i systemet.
denne artikel diskuterede at sende et aktiveringssignal fra et langsomt urdomæne til et hurtigt urdomæne. Det kan være nødvendigt at du bliver fortrolig med flere andre teknikker, såsom at sende et styresignal fra hurtigt til det langsomme urdomæne, håndrystningsteknikken og FIFO-baseret dataoverførsel mellem urdomænerne. Du kan finde nogle detaljer i kapitel 16 i RTL-udstyrsdesign ved hjælp af VHDL: kodning for effektivitet, bærbarhed og skalerbarhed og Kapitel 6 i avanceret FPGA-Design: Arkitektur, implementering og optimering.
Resume
- der er mange omstændigheder, hvor vi er nødt til at anvende forskellige urhastigheder for forskellige dele af systemet.
- da ursignalerne fra forskellige urdomæner generelt er uafhængige, kan overførsel af data mellem de forskellige urdomæner være en udfordrende opgave.
- outputværdien af et register vil være uforudsigelig, når der opstår en overtrædelse af opsætningstid eller holdetid. Det kunne holde værdien repræsenterer en logik høj, en logik lav, eller endnu værre en værdi mellem logik høj og logik lave spændinger.
- den tid, der kræves for at afslutte metastabil tilstand, er kendt som opløsningstiden $$T_r$$.
- hvis vores design inkluderer flip-flops, der kan komme ind i metastabilitetstilstanden, skal vi give flip-flop nok tid til at afslutte metastabiliteten.
- “double flopping”-teknikken bruges i vid udstrækning til at overføre single-bit styresignaler mellem to urdomæner.
for at se en komplet liste over mine artikler, besøg venligst denne side.