C-element
Inom digital beräkning är Muller C-elementet ( C-gate , hysteresvippa , sammanfallande vippa eller tvåhandssäkerhetskrets ) en liten binär logisk krets som ofta används vid design av asynkrona kretsar och system. Den matar ut 0 när alla ingångar är 0, den matar ut 1 när alla ingångar är 1, och den behåller i övrigt sitt utgångstillstånd. Det specificerades formellt 1955 av David E. Muller och användes först i ILLIAC II- datorn. När det gäller teorin om gitter , är C-elementet en semimodulär distributionskrets, vars funktion i tid beskrivs av ett Hasse-diagram . C-elementet är nära besläktat med rendezvous och join -elementen, där en ingång inte får ändras två gånger i följd. I vissa fall, när relationer mellan fördröjningar är kända, kan C-elementet realiseras som en summa-of-product (SOP)-krets. Tidigare tekniker för att implementera C-elementet inkluderar Schmitt trigger , Eccles-Jordan flip-flop och sista rörliga punkt flip-flop.
Sanningstabell och fördröjningsantaganden
För två ingångssignaler definieras C-elementet av ekvationen , vilket motsvarar följande sanningstabell:
0 | 0 | 0 |
0 | 1 | |
1 | 0 | |
1 | 1 | 1 |
Denna tabell kan förvandlas till en krets med hjälp av Karnaugh-kartan. Den erhållna implementeringen är dock naiv, eftersom ingenting sägs om fördröjningsantaganden. För att förstå under vilka förhållanden den erhållna kretsen är användbar, är det nödvändigt att göra ytterligare analys, vilket avslöjar det
- delay1 är en utbredningsfördröjning från nod 1 via miljö till nod 3,
- delay2 är en utbredningsfördröjning från nod 1 via intern återkoppling till nod 3,
- fördröjning1 måste vara större än fördröjning2.
endast korrekt för långsam miljö. Definitionen av C-element kan generaliseras för logik med flera värden, eller till och med för kontinuerliga signaler:
Till exempel är sanningstabellen för ett balanserat ternärt C-element med två ingångar
−1 | −1 | −1 |
−1 | 0 | |
−1 | 1 | |
0 | −1 | |
0 | 0 | 0 |
0 | 1 | |
1 | −1 | |
1 | 0 | |
1 | 1 | 1 |
Implementeringar av C-elementet
Beroende på kraven på kopplingshastighet och effektförbrukning kan C-elementet realiseras som en grov- eller finkornig krets. Man bör också skilja mellan realiseringar av C-element med enkel utgång och dubbla spår. Ett C-element med dubbla skenor kan endast realiseras på NAND:er med 2 ingångar (NOR). En engångsförverkligande är fungerande om och endast om:
- Kretsen, där varje ingång på ett C-element är ansluten via en separat växelriktare till dess utgång, är semimodulär relativt tillståndet, där alla växelriktare är exciterade.
- Detta tillstånd är live för C-elementets utgångsgrinden.
Implementeringar på gatenivå
Det finns ett antal olika enkelutgångskretsar av C-element byggda på logiska grindar. I synnerhet är den så kallade Maevskys implementering en semimodulär, men icke-distributiv (ELLER-kausal) krets löst baserad på. NAND3-grinden i denna krets kan ersättas av två NAND2-grindar. Observera att Maevskys C-element faktiskt är ett Join-element, vars insignaler inte kan växla två gånger. Ännu en krets med OR-kausalitet, som fungerar som ett Join-element. En realisering av C-element på endast två-ingångsgrindar har föreslagits av Tsirlin och sedan syntetiserats av Starodoubtsev et al. använder taxogramspråk Denna krets sammanfaller med den som tillskrivs (utan referens) till Bartky och kan fungera utan ingångsspärren. Ytterligare en version av C-elementet byggt på två RS-spärrar har syntetiserats av Murphy med hjälp av verktyget Petrify. Denna krets inkluderar dock en växelriktare ansluten till en av ingångarna. Denna växelriktare bör ha en liten fördröjning. Det finns dock realiseringar av RS-lås som redan har en inverterad ingång, till exempel. Vissa hastighetsoberoende tillvägagångssätt förutsätter att nollfördröjningsingångsinverterare är tillgängliga på alla grindar, vilket är ett brott mot verkligt hastighetsoberoende men är ganska säkert i praktiken. Det finns också andra exempel på att använda detta antagande.
Statiska och semstatiska implementeringar
I sin rapport föreslog Muller att C-elementet skulle realiseras som en majoritetsport med feedback. Men för att undvika faror kopplade till skevheter av interna fördröjningar måste majoritetsgrinden ha så litet antal transistorer som möjligt. I allmänhet kan C-element med olika timingantaganden byggas på AND-OR-Invert (AOI) eller dess dubbla, OR-AND-Invert (OAI) grind och inverterare. Ytterligare ett alternativ patenterat av Varshavsky et al. är att shunta insignalerna när de inte är lika med varandra. Eftersom de är mycket enkla, försvinner dessa insikter mer kraft på grund av kortslutningarna. Genom att ansluta en extra majoritetsgrind till den inverterade utgången av C-elementet får vi en inkluderande ELLER (EDLINCOR) funktion: . Vissa enkla asynkrona kretsar som pulsfördelare kan byggas enbart på majoritetsportar.
Semistatiskt C-element lagrar sitt tidigare tillstånd med hjälp av två korskopplade växelriktare, liknande en SRAM- cell. En av växelriktarna är svagare än resten av kretsen, så den kan övermannas av pull-up- och pull-down-nätverken . Om båda ingångarna är 0, så ändrar pull-up-nätverket låsets tillstånd, och C-elementet matar ut en 0. Om båda ingångarna är 1, ändrar pull-down-nätverket låsets tillstånd, vilket gör C-elementet utgång a 1. I annat fall är ingången på spärren inte ansluten till vare sig och så dominerar den svaga växelriktaren och spärren matar ut sitt tidigare tillstånd. Det finns även versioner av semistatiska C-element byggda på enheter med negativt differentialmotstånd (NDR). NDR definieras vanligtvis för små signaler, så det är svårt att förvänta sig att ett sådant C-element kommer att fungera inom hela området av spänningar eller strömmar. [ originalforskning? ]
Generaliseringar och icke-transistorimplementationer
Eftersom majoritetsgrinden är ett speciellt fall av tröskelgrind, kan vilken som helst av kända realiseringar av tröskelgrind i princip användas för att bygga ett C-element. I fallet med flera värden kan dock anslutning av majoritetsgrindens utgång till en eller flera ingångar inte ha någon önskvärd effekt. Till exempel att använda den ternära majoritetsfunktionen definierad som
leder inte till det ternära C-elementet som anges av sanningstabellen, om summan inte delas upp i par. Men även utan en sådan uppdelning är två ternära majoritetsfunktioner lämpliga för att bygga en ternär inklusive ELLER-grind. Både Maevsky- och Tsirlin-kretsarna är faktiskt baserade på så kallad David-cell. Dess snabba implementering på transistornivå används i det föreslagna semistatiska C-elementet. Ännu en semistatisk krets som använder passtransistorer (egentligen MUX 2:1) har föreslagits. teknologier som är lämpliga för att realisera asynkrona primitiver inklusive C-element, är: kolnanorör, tunnelanordningar med en elektron, kvantpunkter och molekylär nanoteknik.