Introduksjon Til Clock Domain Crossing: Double Flopping

denne artikkelen vil diskutere en kjent teknikk kalt “double flopping” for å overføre et enkeltbitskontrollsignal mellom to klokke domener.

det er vanlig å bruke flere klokkesignaler i et digitalt system. Siden klokkesignalene til forskjellige klokkedomener generelt er uavhengige, kan overføring av data mellom de forskjellige klokkedomenene være en utfordrende oppgave. Denne artikkelen vil diskutere en kjent teknikk kalt “double flopping” for å overføre et enkeltbitskontrollsignal mellom to klokkedomener.

Hvorfor Trenger Vi Flere Klokker?

den generelle digitale designmetoden anbefaler å bruke ett klokkesignal for hele systemet, hovedsakelig fordi det forenkler både designprosedyren og systemtiminganalysen. Denne metoden gir imidlertid ikke alltid den mest effektive løsningen, og noen ganger er det ikke engang mulig å ha en enkelt klokke for hele systemet. For eksempel vurdere EN FPGA design opererer på 20 MHz som kommuniserer med to eksterne enheter ved hjelp av grensesnitt som opererer på 100 MHz Og 150 MHz. Her må vi håndtere tre forskjellige klokkefrekvenser. Merk at klokkefrekvensen til grensesnittene kan forhåndsdefinert, og vi kan kanskje ikke velge den basert på klokken som brukes i FPGA.

noen ganger kan vi kanskje velge klokkefrekvensen for de forskjellige delene av systemet, men selv i dette tilfellet kan det ikke være lurt å betjene hele systemet med en gitt klokkefrekvens. Anta for eksempel at hele systemet kan betjenes ved 20 MHz bortsett fra et delsystem som trenger en 100 MHz klokke. Hvis vi bestemmer oss for å bruke ett klokkesignal for hele systemet, må vi betjene systemet ved 100 MHz for å imøtekomme den høyeste klokkefrekvensen som er tilgjengelig i systemet. Selvfølgelig er dette ikke rimelig fordi vi ikke bare har overdesignet en stor del av systemet (deler som kan drives ved 20 MHz), men også vi har unødvendig økt systemets dynamiske strømforbruk. Som du kan se, er det mange omstendigheter der vi må ansette forskjellige klokkefrekvenser for ulike deler av systemet.

en del av designet der alle synkrone elementer, som flip-flops og RAMs, bruker samme klokkesignal, refereres til som et klokkedomene. Å ha forskjellige klokke domener kan være gunstig, men er ikke så lett som det ser ut til å være. Den neste delen diskuterer noen av problemene vi kan møte når du bruker et flerklokkesystem.

Metastabilitetsproblemet

Antar at vi har to deler av logikken, A og B, som opererer ved henholdsvis 50 MHz og 100 MHz. Dette er vist I Figur 1.

Figur 1

I vårt enkle eksempel har b-delen en inngang, En_In, som er koblet Til En_Out-utgangen Av a-delen. Denne forbindelsen tilsvarer et aktiv-høy aktiveringssignal som initierer en algoritme i B etter at En bestemt operasjon er utført Av A. Figur 1 viser registeret som genererer aktiveringssignalet I A og registeret mottar Det I B.

Anta at klokkebølgeformer er som vist i Figur 2 og systemet stiger kantutløst. Siden En_Out-signalet genereres Av a-klokke-domenet, kan overgangen fra lav til høy oppstå etter en stigende kant av clk1 som vist på figuren. Forsinkelsen mellom clk1 stigende kanten og En_Out overgangen tilsvarer klokke-Til-Q forsinkelsen ($$T_{clk-TIL-Q, DFF1}$$) av flip-flop I a logic-delen. Nå forventer VI AT dff2-registeret I b-domenet vil prøve aktiveringssignalet ved neste stigende kant av clk2 på $$t=t_2$$. Prøvetaking vil lykkes skje forutsatt at tidskravene TIL DFF2 er oppfylt, dvs. $$t_1 + t_{clk-TO-Q,\; DFF1} \ leq t_2-T_{setup,\; DFF2}$$.

Figur 2

I Figur 2 er tilstanden $$t_1 + t_{clk-TO-Q,\; DFF1} \ leq t_2-T_{setup,\; DFF2}$ $ fornøyd, men dette er ikke alltid tilfelle. Merk at klokkesignalene til forskjellige klokkedomener er uavhengige generelt. Vi vet ikke deres faseforhold, og bølgeformene kan være som vist i Figur 3. I dette tilfellet er lav-til-høy overgang av aktiveringssignalet så nær den stigende kanten av clk2 at tilstanden $$t_1 + t_{clk-TO-Q,\; DFF1} \ leq t_2-T_{setup,\; DFF2}$$ ikke er fornøyd.

Figur 3

siden inngangsdataene TIL DFF2 har endret seg innen oppsettstiden, vil registeradferden være uforutsigbar. På grunn av brudd på oppsettstiden kan registerutgangsspenningen være verdien som representerer en logikk høy, en logikk lav, eller enda verre en verdi mellom logikken høy og logikk lav spenning. Disse tre tilfellene er mulige mens inngangsdataene faktisk var logiske hoye ved den tilsvarende klokkekanten. På samme måte vil utgangsverdien av registeret være uforutsigbar, når registerholdstiden brytes, dvs. En_Out endres innen et tidsvindu etter den aktive klokkekanten definert av registerholdstiden. Når utgangen av registeret blir suspendert ved en spenning mellom logikk høy og logikk lav spenning, sier vi at flip-flop har gått inn i en metastabil tilstand.

la oss undersøke de tre mulige tilfeller fra timing brudd På Figur 3 individuelt:

  • som det første tilfellet, anta at utgangsverdien TIL DFF2 går til logikk høyt med clk2 stigende kanten på $$t=t_2$$. I dette tilfellet er det ingen feil og flip-flop inneholder gyldige data selv om vi hadde setup tid brudd. Dataovergangene som forventet uten feil.
  • det andre tilfellet: anta AT dff2-utgangen går til logic low med clk2 stigende kant på $$t=t_2$$. I dette tilfellet er aktiveringssignalet ikke samplet i B clock-domenet. Dette vil imidlertid ikke være et problem fordi En_Out kommer fra a clock-domenet, og det vil være høyt i minst en periode med clk1 som vist i Figur 3. Derfor vil den neste stigende kanten av clk2 på $$t=t_3$$ prøve En_Out-verdien riktig. For denne klokkekanten vil tidskravene TIL DFF2 bli oppfylt fordi En_Out ikke har endret seg i mer enn en periode med clk2. I dette tilfellet er vi sampling En_Out om en klokkeperiode senere enn den faktisk overgikk. Dette er imidlertid ikke et problem fordi klokkene til de to klokkedomenene ble antatt å være uavhengige, og vi gjorde ingen antagelse om ankomsttiden Til En_Out-signalet. Faktisk realiserer kretsen I b-klokkedomenet slutten av beregninger Av a-klokkedomenet med en ekstra forsinkelse på en clk2-periode.
  • Neste antar AT dff2-registeret går inn i metastabil tilstand. I dette tilfellet blir registerutgangen suspendert ved en spenning mellom logikk høy og logikk lav spenning, men dette vil være midlertidig. Flip-flop vil til slutt gå ut av metastabil tilstand og gå til logikk høy eller logikk lav. Tiden som kreves for å gå ut av metastabil tilstand er kjent som oppløsningstiden $ $ T_r$$. Dette er vist I Figur 4. I denne figuren har oppsetttidsbruddet skjedd, og flip-floppen har gått inn i metastabil tilstand for et tidsintervall på $$T_r$$. Etter $$T_r$$, vil flip flop-utgangen gå til enten logic high ($$Q2_{meta-to-1}$$) eller logic low ($$Q2_{meta-to-0}$$).

Figur 4

oppløsningstiden er ikke deterministisk og er beskrevet som en sannsynlighetsfordelingsfunksjon

$ $ P (T_r)=e^{\frac {- T_r} {\tau}}$$

hvor $$ \ tau$$ er “forfallstidskonstanten” og bestemmes av de elektriske egenskapene til flip-floppen. En typisk verdi for denne parameteren vil være omtrent en brøkdel av ett nanosekund.

ovennevnte ligning gir sannsynligheten for å forbli i metastabil tilstand for et tidsintervall som er lik $$T_r$ $ etter prøvetakingskanten. På grunn av eksponentiell karakteristikk av ligningen, vil sannsynligheten raskt reduseres når vi øker verdien av $$T_r$$. For eksempel, for $$\tau =0,5$$ ns og $$T_r = 5$$ ns, får vi en sannsynlighet på $$ \ ca 4,5 \ ganger 10^{-5}$$.

for å oppsummere, kan vi ikke forhindre metastabilitet fordi klokkesignalene til de to klokkedomenene er uavhengige av hverandre. Men hvis vi gir flip-flop med tilstrekkelig stor oppløsningstid, vil den løse seg til en stabil tilstand med stor sannsynlighet. Derfor, hvis vårt design inkluderer flip-flops som kan gå inn i metastabilitetstilstanden, bør vi gi flip-flop nok tid til å gå ut av metastabiliteten. Deretter kan vi trygt forplante verdien av flip-flop til nedstrøms logiske celler. Merk at bruk av en metastabil verdi kan føre hele systemet til en ukjent tilstand. Det kan føre til høy strømstrøm og til og med chip burnout i verste fall. Derfor bør vi unngå å mate ustabile data til systemet.

Dobbel Flopping

Vi så at å gi flip-flop en tilstrekkelig tid kan i stor grad redusere sjansen for å forbli i metastabil tilstand. La oss se hvordan dette kan brukes til å unngå å forplante metastabile data i systemet. Vurder blokkdiagrammet I Figur 5. Dette viser en typisk bane I b-klokkedomenet I Figur 1 som mottar Og behandler En_In-signalet.

Figur 5

minste klokkeperiode som kan brukes til å betjene denne kretsen, vil være

$$T_{clk, \; min} = T_{clk-To-Q} + t_{comb, \; maks} + t_{oppsett}$$

hvor $$t_{clk-To-Q}$$ Og $$T_{setup}$$ er klokke-Til-Q og oppsettstiden til flip-flops og $$T_{comb,\; max} $ $ er den maksimale forsinkelsen som kombinasjonskretsen, ” Comb.”, utstilling. Denne ligningen oppnås ved å anta at utgangsdataene TIL DFF2 er stabile. Hvis det ikke er det, må vi vurdere noen oppløsningstid som i følgende ligning:

$$T_{clk,\; min} = T_{clk-To-Q} + T_r + t_{comb, \; maks} + t_{oppsett}$$

verdien av oppløsningstiden vil bestemme sannsynligheten for å komme ut av metastabil tilstand. Anta at perioden for clk2 er $$t_{clk2}$$. Da vil verdien av den tilgjengelige oppløsningstiden være

$$T_r = t_{clk2} – \big ( t_{clk-To-Q} + t_{comb, \; max} + t_{setup} \ big )$$

For å redusere sannsynligheten for å forbli i metastabil tilstand, bør vi øke $ $ T_r$$. Med en gitt klokkeperiode $$T_{clk2}$$, vil det eneste designalternativet minimere parameteren $$T_{comb,\; max}$$. Derfor bør vi bedre sette ” Kammen.”blokker ETTER dff3 flip-flop som vist i Figur 6. På denne måten vil $$T_{comb,\; max} $ $ være teoretisk null for banen MELLOM DFF2 og DFF3. Derfor har vi maksimal mulig oppløsningstid.

Figur 6

denne teknikken kalles dobbel flopping Og er mye brukt når du overfører styresignaler som ovenfor aktiver signal mellom to klokke domener. Merk at det ekstra registeret vil introdusere en annen forsinkelse på en klokkeperiode til aktiveringssignalet fanget Av b-klokkedomenet. Imidlertid er denne forsinkelsen verdt fordelen av å unngå metastabile tilstander i systemet.

denne artikkelen diskuterte overføring av et aktiveringssignal fra et sakte klokkedomene til et raskt klokkedomene. Du må kanskje bli kjent med flere andre teknikker som passerer et kontrollsignal fra rask til langsom klokke domene, hånd risting teknikk og FIFO-basert dataoverføring mellom klokke domener. Du finner noen detaljer I Kapittel 16 I RTL-Maskinvaredesign Ved HJELP AV VHDL: Koding For Effektivitet, Portabilitet og Skalerbarhet Og Kapittel 6 I Avansert Fpga-Design: Arkitektur, Implementering og Optimalisering.

Sammendrag

  • det er mange omstendigheter der vi må bruke forskjellige klokkefrekvenser for ulike deler av systemet.
  • siden klokkesignalene til forskjellige klokkedomener generelt er uavhengige, kan overføring av data mellom de forskjellige klokkedomenene være en utfordrende oppgave.
  • utdataverdien for et register vil være uforutsigbar når det oppstår brudd på oppsett-eller holdetid. Det kan holde verdien som representerer en logikk høy, en logikk lav, eller enda verre en verdi mellom logikken høy og logikk lav spenning.
  • tiden som kreves for å gå ut av metastabil tilstand er kjent som oppløsningstiden $$T_r$$.
  • hvis vårt design inkluderer flip-flops som kan komme inn i metastabilitetstilstanden, bør vi gi flip-floppen nok tid til å gå ut av metastabiliteten.
  • “double flopping” teknikken er mye brukt til å overføre single-bit kontroll signaler mellom to klokke domener.

for å se en komplett liste over artiklene mine, vennligst besøk denne siden.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.