Úvod do Hodiny Domény Přechod: Dvakrát Skočila

Tento článek se bude diskutovat o dobře známou techniku zvanou “double skočila” na přenos single-bit řídicího signálu mezi dvěma clock domains.

v digitálním systému je běžné používat několik hodinových signálů. Vzhledem k tomu, že hodinové signály různých hodinových domén jsou obecně nezávislé, přenos dat mezi různými doménami hodin může být náročný úkol. Tento článek se bude zabývat známou technikou zvanou “double floping” pro přenos jednobitového řídicího signálu mezi dvěma doménami hodin.

Proč Potřebujeme Více Hodin?

obecná metodika digitálního návrhu doporučuje používat jeden hodinový signál pro celý systém hlavně proto, že zjednodušuje jak postup návrhu, tak analýzu časování systému. Tato metodika však ne vždy poskytuje nejefektivnější řešení a někdy není ani možné mít jediné hodiny pro celý systém. Zvažte například návrh FPGA pracující na 20 MHz, který komunikuje se dvěma externími zařízeními pomocí rozhraní pracujících na 100 MHz a 150 MHz. Zde se musíme vypořádat se třemi různými frekvencemi hodin. Všimněte si, že taktovací frekvence rozhraní může být předdefinována a možná ji nebudeme moci zvolit na základě hodin používaných uvnitř FPGA.

Někdy můžeme být schopni vybrat frekvencí pro různé části systému, ale i v tomto případě, nemusí to být dobrý nápad, aby provoz celého systému při dané taktovací frekvenci. Předpokládejme například, že celý systém může být provozován na 20 MHz s výjimkou subsystému, který potřebuje hodiny 100 MHz. Pokud se rozhodneme použít jeden hodinový signál pro celý systém, pak bychom museli provozovat systém na 100 MHz, aby se přizpůsobila nejvyšší taktovací frekvence k dispozici v systému. Samozřejmě, to není rozumné, protože nejen, že jsme udržovaném velká část systému (díly, které by mohly být provozovány na 20 MHz), ale také jsme zbytečně zvyšuje systém dynamické spotřeby energie. Jak vidíte, existuje mnoho okolností, za kterých musíme použít různé hodinové frekvence pro různé části systému.

část konstrukce, ve které všechny synchronní prvky, jako jsou žabky a Beranů, použít stejný hodinový signál je označován jako hodiny domény. Mít různé hodinové domény může být prospěšné, ale není tak snadné, jak se zdá být. Další část pojednává o některých problémech, kterým můžeme čelit při používání systému s více hodinami.

Metastability Problém

Předpokládejme, že máme dvě části logiky, a a B, které působí na 50 MHz a 100 MHz, resp. To je znázorněno na obrázku 1.

Obrázek 1

V našem jednoduchém příkladu, oddíl B, má vstup, En_In, který je připojen k En_Out výstup sekce. Toto spojení odpovídá aktivní-vysoká aktivační signál, který spustí algoritmus v B po konkrétní operace se provádí A. Obrázek 1 ukazuje rejstříku generování aktivačního signálu do a registru obdržení v. B.

Předpokládejme, že průběhy hodin jsou tak, jak je znázorněno na obrázku 2, a systém je spuštěn při stoupající hraně. Od En_Out signál je generován hodiny domény, jeho low-to-high přechod může nastat po náběžné hraně clk1, jak je znázorněno na obrázku. Zpoždění mezi stoupající hranou clk1 a přechodem En_Out odpovídá zpoždění hodiny-Q ($$t_{clk-to-Q, DFF1}$$) flip-flopu v logické části a. Nyní očekáváme, že registr DFF2 v doméně B vzorkuje signál enable na další stoupající hraně clk2 na $$t=t_2$$. Odběr vzorků bude úspěšně stát, za předpokladu, načasování požadavky DFF2 jsou splněny, tj. $$t_1+T_{clk-k-Q, \; DFF1} \leq t_2-T_{nastavení, \; DFF2}$$.

Obrázek 2

Na Obrázku 2, stav $$t_1+T_{clk-k-Q, \; DFF1} \leq t_2-T_{nastavení, \; DFF2}$$ je spokojen, ale toto není vždy případ. Všimněte si, že hodinové signály různých hodinových domén jsou obecně nezávislé. Neznáme jejich fázový vztah a průběhy mohou být, jak je znázorněno na obrázku 3. V tomto případě, low-to-high přechodu enable signál je tak blízko k náběžné hraně clk2, že podmínka $$t_1+T_{clk-k-Q, \; DFF1} \leq t_2-T_{nastavení, \; DFF2}$$ není spokojen.

Obrázek 3

Od vstupních dat DFF2 změnil v rámci nastavení času, registr chování budou nepředvídatelné. Vzhledem k narušení času nastavení, výstupní napětí registru může být hodnota představující logickou vysokou, logickou nízkou nebo ještě horší hodnotu mezi logickým vysokým a logickým nízkým napětím. Tyto tři případy jsou možné, zatímco vstupní data byla ve skutečnosti logicky vysoká na odpovídající hraně hodin. Podobně, výstupní hodnota registru bude nepředvídatelné, když rejstříku držet čas je porušena, tj. En_Out změny v časovém okně po aktivní hodiny hranou je vymezen registru hold time. Když výstup z rejstříku se stává přerušeno v napětí mezi logikou vysoké a logika nízký napětí, můžeme říci, že flip-flop vstoupil do metastabilního stavu.

pojďme prozkoumat tři možné případy z načasování porušení obrázku 3 jednotlivě:

  • jako první případ předpokládejme, že výstupní hodnota dff2 jde do logiky vysoké s clk2 stoupající hranou na $$t=t_2$$. V tomto případě nedochází k žádné chybě a flip-flop obsahuje platná data, i když jsme měli porušení času nastavení. Datové přechody podle očekávání bez chyby.
  • druhý případ: předpokládejme, že výstup DFF2 jde na logic low s clk2 stoupající hranou na $$t=t_2$$. V tomto případě není signál povolení úspěšně vzorkován v doméně hodin B. To však nebude problém, protože En_Out pochází z domény hodin A bude vysoký po dobu alespoň jednoho období clk1, jak je znázorněno na obrázku 3. Proto další stoupající hrana clk2 na $$t=t_3$$ bude správně vzorkovat hodnotu En_Out. Pro tuto hodinovou hranu budou splněny požadavky na časování dff2, protože En_Out se nezměnil déle než jedno období clk2. V tomto případě vzorkujeme En_Out o jednu hodinovou periodu později, než ve skutečnosti přešla. To však není problém, protože se předpokládalo, že hodiny dvou hodinových domén jsou nezávislé a my jsme nepředpokládali čas příjezdu signálu En_Out. Ve skutečnosti obvod v doméně hodin B realizuje konec výpočtů domény hodin A s extra zpožděním jedné periody clk2.
  • dále předpokládejme, že registr DFF2 vstoupí do metastabilního stavu. V tomto případě, rejstřík, výstup se stává přerušeno v napětí mezi logikou vysoké a logika nízký napětí, ale to bude dočasné. Flip-flop nakonec opustí metastabilní stav a přejde na logic high nebo logic low. Čas potřebný k ukončení metastabilního stavu je známý jako čas rozlišení $$t_r$$. To je znázorněno na obrázku 4. Na tomto obrázku došlo k narušení času nastavení a flip flop vstoupil do stavu metastable pro časový interval $$t_r$$. Po $$T_r$$ bude flip flop výstup jít buď logic high ($$Q2_{meta-to-1}$$) nebo logic low ($$Q2_{meta-to-0}$$).

Obrázek 4

usnesení čas není deterministický a je popsáno jako pravděpodobnostní distribuční funkce

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

Kde $$\tau$$ je “decay time constant” a je určena elektrické vlastnosti flip flop. Typická hodnota pro tento parametr bude asi zlomek jedné nanosekundy.

výše uvedená rovnice udává pravděpodobnost, že zůstane v metastabilním stavu po dobu rovnající se $$t_r$$ po okraji vzorkovacích hodin. Vzhledem k exponenciální charakteristice rovnice se pravděpodobnost rychle sníží, když zvýšíme hodnotu $$t_r$$. Například pro $$\tau =0.5$$ ns a $$t_r = 5$$ ns získáme pravděpodobnost $$ \ přibližně 4.5 \ krát 10^{-5}$$$.

abychom to shrnuli, nemůžeme zabránit metastabilitě, protože hodinové signály dvou hodinových domén jsou na sobě nezávislé. Pokud však poskytneme flip-flop s dostatečně velkým časem rozlišení, vyřeší se do stabilního stavu s vysokou pravděpodobností. Pokud tedy náš návrh obsahuje žabky, které by mohly vstoupit do stavu metastability, měli bychom dát žabce dostatek času na ukončení metastability. Pak můžeme bezpečně šířit hodnotu flip-flopu do navazujících logických buněk. Všimněte si, že použití metastabilní hodnoty může vést celý systém do neznámého stavu. V nejhorším případě to může vést k vysokému průtoku proudu a dokonce k vyhoření třísek. Proto bychom se měli vyvarovat podávání nestabilních dat do systému.

dvojité Flopping

viděli jsme, že dát flip-flopu dostatečný čas může výrazně snížit šanci zůstat v metastabilním stavu. Podívejme se, jak to lze použít k zabránění šíření metastabilních dat v systému. Zvažte blokové schéma na obrázku 5. Toto ukazuje typickou cestu v doméně hodin B na obrázku 1, která přijímá a zpracovává signál En_In.

Obrázek 5

minimální taktovací období, který může být použit k provozu tohoto obvodu bude

$$T_{clk, \; min} = T_{clk-k-Q} + T_{hřeben, \; max} + T_{nastavení}$$

kde $$T_{clk-k-Q}$$ a $$T_{setup}$$ je clock-to-Q a instalační čas žabky a $$T_{hřeben, \; max}$$ je maximální zpoždění, že kombinační obvod, “Hřeben.”, vykazovat. Tato rovnice se získá za předpokladu, že výstupní data dff2 jsou stabilní. Pokud tomu tak není, musíme zvážit nějaký čas rozlišení jako v následující rovnici:

$$t_{clk,\; min} = t_{clk-to-Q} + T_r + T_{comb, \; max} + T_{nastavení}$$

hodnotu rozlišení čas určí pravděpodobnost vycházející z metastabilního stavu. Předpokládejme, že doba clk2 je $$t_{clk2}$$. Pak je hodnota k dispozici usnesení čas bude

$$T_r = T_{clk2} – \big ( T_{clk-k-Q} + T_{hřeben, \; max} + T_{instalace} \big )$$

snížit pravděpodobnost setrvání v metastabilním stavu, bychom měli zvýšit $$T_r$$. Při daném časovém období $$t_{clk2}$$ bude jedinou možností návrhu minimalizace parametru $$t_{comb,\; max}$$. Proto bychom měli dát ” hřeben.”blok po flip-flopu DFF3, jak je znázorněno na obrázku 6. Tímto způsobem bude $$t_{comb,\; max}$$ teoreticky nula pro cestu mezi DFF2 a DFF3. Proto budeme mít maximální možnou dobu řešení.

Obrázek 6

Tato technika se nazývá dvakrát skočila a je široce používán při přenosu řídicích signálů, jako výše uvedené povolit signálu mezi dvěma clock domains. Všimněte si, že další rejstříku představí další zpoždění jedné hodiny období do enable signál snímaný B hodiny domény. Toto zpoždění však stojí za to vyhnout se metastabilním stavům v systému.

Tohoto článku o absolvování povolovací signál z pomalé hodinové domény rychlé hodiny domény. Možná budete muset seznámit s několika dalšími technikami, jako je předávání řídicího signálu z rychlé do pomalé hodinové domény, třese ruka, technika a FIFO-vychází přenos dat mezi hodinami domén. Některé podrobnosti najdete v kapitole 16 návrhu hardwaru RTL pomocí VHDL: kódování pro efektivitu, přenositelnost a škálovatelnost a Kapitola 6 pokročilého návrhu FPGA: Architektura, implementace a optimalizace.

shrnutí

  • existuje mnoho okolností, za kterých musíme použít různé hodinové frekvence pro různé části systému.
  • vzhledem k tomu, že hodinové signály různých hodinových domén jsou obecně nezávislé, přenos dat mezi různými doménami hodin může být náročný úkol.
  • výstupní hodnota registru bude nepředvídatelná, pokud dojde k porušení doby nastavení nebo doby držení. Mohlo by to mít hodnotu představující logiku vysokou, logiku nízkou, nebo ještě horší hodnotu mezi logikou vysoké a logické nízké napětí.
  • čas potřebný k ukončení metastabilního stavu se nazývá čas rozlišení $$t_r$$.
  • pokud náš návrh obsahuje žabky, které by mohly vstoupit do stavu metastability, měli bychom dát žabce dostatek času na ukončení metastability.
  • technika “double flopping” se široce používá k přenosu jednobitových řídicích signálů mezi dvěma doménami hodin.

Chcete-li zobrazit úplný seznam mých článků, navštivte tuto stránku.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.