Bevezetés A Clock Domain Crossing: Double Flopping

ez a cikk egy jól ismert technikát, az úgynevezett “double flopping”-ot tárgyalja, amely egy bites vezérlőjelet továbbít két óra tartomány között.

gyakori, hogy több órajelet alkalmaznak egy digitális rendszerben. Mivel a különböző óratartományok órajelei általában függetlenek, az adatok átvitele a különböző óratartományok között kihívást jelentő feladat lehet. Ez a cikk egy jól ismert technikát, az úgynevezett “kettős floppingot” tárgyalja, amely egy bites vezérlőjelet továbbít két óratartomány között.

Miért Van Szükségünk Több Órára?

az általános digitális tervezési módszertan egy órajel használatát javasolja a teljes rendszer számára, főleg azért, mert egyszerűsíti mind a tervezési eljárást, mind a rendszer időzítésének elemzését. Ez a módszer azonban nem mindig adja meg a leghatékonyabb megoldást, és néha még az sem lehetséges, hogy egyetlen óra legyen az egész rendszerhez. Vegyünk például egy 20 MHz-en működő FPGA-kialakítást, amely két külső eszközzel kommunikál 100 MHz-en és 150 MHz-en működő interfészek segítségével. Itt három különböző órafrekvenciával kell foglalkoznunk. Felhívjuk a figyelmet arra, hogy az interfészek órajelfrekvenciája előre definiálható, és nem biztos, hogy az FPGA-n belül használt óra alapján választhatjuk meg.

előfordulhat, hogy kiválaszthatjuk a rendszer különböző részeinek órajelfrekvenciáját, de még ebben az esetben sem biztos, hogy jó ötlet a teljes rendszert egy adott órajel frekvencián működtetni. Tegyük fel például, hogy az egész rendszer 20 MHz-en működtethető, kivéve egy olyan alrendszert, amelynek 100 MHz-es órajelre van szüksége. Ha úgy döntünk, hogy egy órajelet használunk a teljes rendszerhez, akkor a rendszert 100 MHz-en kell működtetnünk, hogy a rendszerben elérhető legmagasabb órajel legyen. Nyilvánvaló, hogy ez nem ésszerű, mert nemcsak a rendszer nagy részét (20 MHz-en működtethető alkatrészeket) terveztük túl, hanem feleslegesen növeltük a rendszer dinamikus energiafogyasztását is. Mint láthatja, sok olyan körülmény van, amelyben különböző órajeleket kell alkalmaznunk a rendszer különböző részein.

a tervezés azon szakaszát, amelyben az összes szinkron elem, például a papucs és a Kos ugyanazt az órajelet használja, óratartománynak nevezzük. Miután a különböző óra domainek hasznos lehet, de nem olyan egyszerű, mint amilyennek látszik. A következő szakasz néhány olyan problémát tárgyal, amelyekkel több órás rendszer használata esetén szembesülhetünk.

a Metastabilitási probléma

tegyük fel, hogy a logikának két szakasza van, A és B, amelyek 50 MHz-en, illetve 100 MHz-en működnek. Ezt az 1.ábra mutatja.

1. ábra

egyszerű példánkban a B szakasznak van egy en_in bemenete, amely az a szakasz En_Out kimenetéhez kapcsolódik. Ez a kapcsolat egy aktív-magas engedélyező jelnek felel meg, amely egy algoritmust kezdeményez B-ben, miután egy adott műveletet a végzett. az 1. ábrán az engedélyező jelet generáló regiszter látható A-Ban és az azt fogadó regiszter B-ben.

tegyük fel, hogy az óra hullámformái a 2.ábrán láthatóak, és a rendszer emelkedő élre vált. Mivel az En_Out jelet az A óra tartomány generálja, az alacsony-magas átmenet a clk1 emelkedő széle után következhet be, amint az az ábrán látható. A clk1 emelkedő él és az En_Out átmenet közötti késleltetés megfelel a flip-flop óra-Q késleltetésének ($$T_{clk-Q, DFF1}$$) az a logikai szakaszban. Most arra számítunk, hogy a Dff2 regiszter a B tartományban mintavételezi az engedélyezési jelet a clk2 következő emelkedő szélén $$t=t_2$$. A mintavétel sikeresen megtörténik, feltéve, hogy a dff2 időzítési követelményei teljesülnek, azaz $$t_1+t_{clk-to-Q,\; DFF1} \ leq t_2-T_{setup, \; DFF2}$$.

2. ábra

a 2.ábrán a $$t_1+t_{clk-to-Q,\; DFF1} \leq t_2-t_{setup,\; DFF2}$$ feltétel teljesül, de ez nem mindig így van. Vegye figyelembe, hogy a különböző óratartományok órajelei általában függetlenek. Nem ismerjük a fáziskapcsolatukat, és a hullámformák a 3. ábrán láthatók. Ebben az esetben az enable jel alacsony-magas átmenete olyan közel van a clk2 emelkedő széléhez, hogy a $$t_1+t_{clk-to-Q,\; DFF1} \leq t_2-T_{setup,\; DFF2}$$ feltétel nem teljesül.

3. ábra

mivel a dff2 bemeneti adatai a beállítási időn belül megváltoztak, a regiszter viselkedése kiszámíthatatlan lesz. A beállítási idő megsértése miatt a regiszter kimeneti feszültsége lehet a logikai magas, a logikai alacsony, vagy még rosszabb a logikai magas és a logikai alacsony feszültség közötti érték. Ez a három eset lehetséges, miközben a bemeneti adatok valójában logikusan magasak voltak a megfelelő óraszélnél. Hasonlóképpen, a regiszter kimeneti értéke kiszámíthatatlan lesz, ha a regiszter tartási idejét megsértik, azaz az En_Out egy időablakon belül megváltozik a regiszter tartási ideje által meghatározott aktív óraél után. Amikor a regiszter kimenete felfüggesztésre kerül a logikai magas és logikai alacsony feszültségek közötti feszültségen, azt mondjuk, hogy a flip-flop metastabil állapotba került.

vizsgáljuk meg a 3. ábra időzítésének megsértéséből származó három lehetséges esetet külön-külön:

  • első esetként tegyük fel, hogy a dff2 kimeneti értéke logic high értékre megy, a clk2 emelkedő éle $$t=t_2$$. Ebben az esetben nincs hiba, és a flip-flop érvényes adatokat tartalmaz, bár a beállítási idő megsértése volt. Az adatátmenetek a várt módon, hiba nélkül.
  • a második eset: tegyük fel, hogy a DFF2 kimenet logic low-ra megy, a clk2 emelkedő éle $$t=t_2$$. Ebben az esetben az enable jel nincs sikeresen mintavételezve A B óra tartományban. Ez azonban nem jelent problémát, mert az En_Out az A óra tartományból származik, és legalább egy clk1 periódusra magas lesz, amint azt a 3.ábra mutatja. Ezért a clk2 következő emelkedő éle $$t=t_3$$ értéknél helyesen fogja mintát venni az En_Out értékből. Ehhez az óraélhez a dff2 időzítési követelményei teljesülnek, mert az En_Out a clk2 egynél több periódusáig nem változott. Ebben az esetben körülbelül egy órával később mintavételezzük az En_Out-ot, mint amennyit ténylegesen átállt. Ez azonban nem jelent problémát, mivel a két óratartomány óráját függetlennek feltételeztük, és nem tettünk feltételezést az En_Out jel érkezési idejéről. Valójában a B óratartományban lévő áramkör egy clk2 periódus extra késleltetésével valósítja meg az a óratartomány számításainak végét.
  • ezután feltételezzük, hogy a DFF2 regiszter metastabil állapotba kerül. Ebben az esetben a regiszter kimenet felfüggesztésre kerül a logikai magas és logikai alacsony feszültségek közötti feszültségen, de ez ideiglenes lesz. A flip-flop végül kilép a metastabil állapotból, és logic high vagy logic low állapotba kerül. A metastabil állapotból való kilépéshez szükséges idő a $$t_r$ $ felbontási idő. Ezt a 4.ábra mutatja. Ebben az ábrán a beállítási idő megsértése történt, és a flip flop $$t_r$ $ időtartamra metastabil állapotba lépett. $$T_r$$ után a flip flop kimenet logic high ($$Q2_{meta-to-1}$$) vagy logic low ($$Q2_{meta-to-0}$$) lesz.

4. ábra

a felbontási idő nem determinisztikus, valószínűségeloszlási függvényként van leírva

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

ahol $$\tau$$ a “bomlási idő Állandó”, amelyet a flip flop elektromos jellemzői határoznak meg. Ennek a paraméternek a tipikus értéke körülbelül egy nanoszekundum töredéke lesz.

a fenti egyenlet megadja annak valószínűségét, hogy a mintavételi óra éle után $$T_r$$ értékű időintervallumban marad a metastabil állapotban. Az egyenlet exponenciális jellemzője miatt a valószínűség gyorsan csökken, Amikor növeljük a $$T_r$$értékét. Például $$\tau =0,5$ $ ns és $$T_r = 5$ $ ns esetén $$\kb 4,5 \szor 10^{-5}$$valószínűséget kapunk.

összefoglalva, nem tudjuk megakadályozni a metastabilitást, mert a két óratartomány órajelei függetlenek egymástól. Ha azonban a flip-flopot elég nagy felbontási idővel biztosítjuk, akkor nagy valószínűséggel stabil állapotba kerül. Ezért, ha a tervezésünk olyan papucsokat tartalmaz, amelyek beléphetnek a metastabilitási állapotba, elegendő időt kell adnunk a flip-flopnak, hogy kilépjen a metastabilitásból. Ezután biztonságosan terjeszthetjük a flip-flop értékét a downstream logikai cellákra. Ne feledje, hogy egy metastabil érték használata az egész rendszert ismeretlen állapotba vezetheti. Ez nagy áramáramhoz, sőt a legrosszabb esetben a forgács kiégéséhez vezethet. Ezért el kell kerülnünk az instabil adatok betáplálását a rendszerbe.

Dupla Flopping

láttuk, hogy ha elegendő időt adunk a flip-flopnak, az jelentősen csökkentheti a metastabil állapotban maradás esélyét. Lássuk, hogyan lehet ezt felhasználni a metastabil adatok terjesztésének elkerülésére a rendszerben. Tekintsük az 5. ábrán látható blokkdiagramot. Ez egy tipikus útvonalat mutat az 1. ábra B óratartományában, amely fogadja és feldolgozza az En_In jelet.

5. ábra

az áramkör működtetéséhez használható minimális óraidőszak

$ $ T_{clk,\; min} = t_{clk-to-Q} + t_{comb, \; max} + T_{beállítás}$$

ahol $$t_{clk-to-Q}$$ és $$T_{setup}$$ a flip-flopok és $$t_{comb, \; max}$$ A maximális késleltetés, amelyet a kombinációs áramkör ” fésű.”, kiállítások. Ezt az egyenletet úgy kapjuk meg, hogy feltételezzük, hogy a dff2 kimeneti adatai stabilak. Ha nem, akkor figyelembe kell vennünk néhány felbontási időt, mint a következő egyenletben:

$$T_{clk,\; min} = t_{clk-to-Q} + T_r + T_{fésű, \; max} + T_{beállítás}$$

a felbontási idő értéke meghatározza a metastabil állapotból való kilépés valószínűségét. Tegyük fel, hogy a clk2 periódusa $$T_{clk2}$$. Ezután a rendelkezésre álló felbontási idő értéke

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

a metastabil állapotban maradás valószínűségének csökkentése érdekében növelnünk kell $$T_r$$. Egy adott óraidőszakban $$T_{clk2}$$, az egyetlen tervezési lehetőség a $$t_{comb, \; max}$$paraméter minimalizálása lesz. Ezért jobb lenne a ” fésű.”blokk a DFF3 flip-flop után a 6. ábrán látható módon. Ily módon $$T_{comb, \; max}$$ $ elméletileg nulla lesz a DFF2 és DFF3 közötti útvonalra. Így a lehető legnagyobb felbontási idő áll rendelkezésünkre.

6. ábra

ezt a technikát kettős floppingnak nevezik, és széles körben használják a vezérlőjelek, például a fenti enable jel két óratartomány közötti átviteléhez. Vegye figyelembe, hogy az extra regiszter egy óraidőszak újabb késleltetését vezet be a B óra tartomány által rögzített enable jelhez. Ez a késés azonban megéri a metastabil állapotok elkerülését a rendszerben.

ez a cikk egy engedélyező jel átadását tárgyalta egy lassú óra tartományból egy gyors óra tartományba. Lehet, hogy meg kell ismerkednie számos más technikával, mint például a vezérlőjel átadása a gyorsról a lassú óratartományra, a kézrázási technika és a FIFO-alapú adatátvitel az óratartományok között. Néhány részletet az RTL hardvertervezés 16. fejezetében talál a VHDL használatával: a hatékonyság, hordozhatóság és skálázhatóság kódolása, valamint az Advanced FPGA Design 6. fejezetében: Architektúra, megvalósítás és optimalizálás.

Összegzés

  • sok olyan körülmény van, amikor a rendszer különböző részein különböző órajeleket kell alkalmaznunk.
  • mivel a különböző óratartományok órajelei általában függetlenek, az adatok átvitele a különböző óratartományok között kihívást jelenthet.
  • a regiszter kimeneti értéke kiszámíthatatlan lesz, ha beállítási idő vagy tartási idő megsértése történik. Ez lehet tartani az értéket képviselő logikai magas, a logikai alacsony, vagy még rosszabb értéket a logikai magas és logikai alacsony feszültségek.
  • a metastabil állapotból való kilépéshez szükséges idő a $$t_r$$felbontási idő.
  • ha a tervezésünk olyan flip-flopokat tartalmaz, amelyek beléphetnek a metastabilitási állapotba, elegendő időt kell adnunk a flip-flopnak, hogy kilépjen a metastabilitásból.
  • a “dupla flopping” technikát széles körben használják az egybites vezérlőjelek átvitelére két óratartomány között.

a cikkeim teljes listájának megtekintéséhez kérjük, látogasson el erre az oldalra.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.