Digitalteknik F4 NOR-labben Digitalteknik F1b bild 1
Att implementera en funktion Utgångsläge: En funktion: A B C ƒ 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 0 ƒ(abc) = A BC + A BC + AB C A B C & A B C & ƒ A B C & Digitalteknik F1b bild 2
Att implementera en funktion Problem: Funktionen skall implementeras med tvåingångars NOR-grindar Vi måste: 1. Transformera AND- och OR-funktioner till NOR-funktioner (demorgan): ƒ(abc) = A BC + A BC + AB C A B C? ƒ(abc) = (A BC ) + (A BC) + (AB C) ƒ(abc) = (A+B +C) + (A+B +C ) + (A +B+C ) A B C ƒ ƒ(abc) = ((A+B +C) + (A+B +C ) + (A +B+C ) ) A B C Digitalteknik F1b bild 3
Att implementera en funktion Två problem olösta: 1. Vi har ƒ som utsignal 2. Vi har fler än två ingångar på grindarna 1: ƒ 1 ƒ ƒ ƒ ƒ 0 ƒ Digitalteknik F1b bild 4
Att implementera en funktion 2. Att expandera antalet ingångar... Digitalteknik F1b bild 5
Att implementera en funktion... det var ju NOR-grindar som vi skulle använda! Digitalteknik F1b bild 6
Att implementera en funktion Så här blir det alltså: ƒ(abc) = A BC + A BC + AB C ƒ(abc) = (A BC ) + (A BC) + (AB C) ƒ(abc) = (A+B +C) + (A+B +C ) + (A +B+C ) ƒ(abc) = ((A+B ) +C) + ((A+B ) +C ) + ((A +B) +C ) ƒ(abc) = (((A+B ) +C) + ((A+B ) +C ) + ((A +B) +C ) ) Vi kallar det pseudo-tvånivåimplementering Digitalteknik F1b bild 7
Att implementera en funktion Pseudo-tvånivåimplementering A B C A B C ƒ A B C Digitalteknik F1b bild 8
Kan vi förenkla kretsen? 1. Vi bör börja med att minimera funktionen: - Quine McClusky - Iterativ konsensus - Espresso 2. Vi bör dela på utgångar där det går 3. Vi bör ta bort onödiga inverterare, t ex Digitalteknik F1b bild 9
Att dela på utgångar A B C A B C ƒ A B C Digitalteknik F1b bild 10
Att minimera funktionen ƒ(abc) = A BC + A BC + AB C Lite Boolesk algebra: ƒ(abc) = A B(C +C) + AB C ƒ(abc) = A B + AB C demorgan: ƒ(abc) = (A B) + (AB C) ƒ(abc) = (A+B ) + (A +B+C ) ƒ(abc) = (A+B ) + ((A +B) +C ) ƒ(abc) = ((A+B ) + ((A +B) +C ) ) Digitalteknik F1b bild 11
Att minimera funktionen A B C A B C ƒ A B C Digitalteknik F1b bild 12
NOR-labben Indata: Utdata: 0 1-1 0 1 b 0 1-1 0 1 a d e.nor2 d = b b.nor2 e = a d.nor2 f = e e.nor2 g = a a.nor2 h = b g.nor2 i = h h.nor2 j = c c.nor2 k = i j.nor2 l = f k.nor2 out = l l f l out a g b h i c j k Digitalteknik F1b bild 13
NOR-labben 1. Att tolka indatafilen: 0 1 1-1 = a bce = not(a) and b and c and e - - 1 0 1 = cd e = c and not(d) and e - - 0 1 - = c d = not(c) and d 1 - - 1 1 = ade = a and d and e och den kompletta funktionen: ƒ = a bce + cd e + c d + ade dvs en delvis minimerad funktion... 2. Begränsningar: Det förekommer högst 26 insignaler Digitalteknik F1b bild 14
NOR-labben 3. Tillvägagångssätt 4. Verktyg - Funktionen bör minimeras för att få ett rimligt NOR-nät (Quine-McClusky eller iterativ konsensus). - Se till att dela på utgångar där det går när du genererar grindnätet. - Ditt program skall gå att exekvera på institutionens SUN/Unixmiljö. Du ansvarar själv för ev. portning. - Du får fritt välja programspråk - Du får inte bygga på färdiga verktyg, t ex espresso, sort, unic etc. - Scanner och parser (FLEX, BISON) tillåtna. Digitalteknik F1b bild 15
NOR-labben 5. Utdatafilen: - Består av indatafilen, en blankrad och beskrivning av grindnätet - En nor2 -rad för varje grind - Primära ingångar benämns A..Z - En primär utgång benämnd OUT - Övriga namn börjar med bokstav följd av siffra enligt en modell som du själv väljer - Ingångarna på en grind kan också kopplas till 1 alt. 0 - Kommentarer inleds med # och räcker resten av raden - Ingen skillnad på versaler och gemener Digitalteknik F1b bild 16
NOR-labben Att testa lösningen - Det finns ett testprogram som kan exekveras på följande sätt: nortest resultatfil - Du får veta följande: Om din lösning är korrekt Antal nor-grindar Grinddjup Antal invariabler - Du får indikation på eventuella syntaxfel i resultatfilen samt exempel på en insignalkombination som ger fel resultat. - nortest är beräkningsintensivt. Ett stort grindnät kan kräva en arbetsstation med mycket minne. Digitalteknik F1b bild 17
NOR-labben Att se grindnätet: Ett grafikprogram som heter davinci kan rita upp ett grindnät. Exekveras med kommandot norshow resultatfil rekommenderas inte för alltför stora grindnät! Digitalteknik F1b bild 18
NOR-labben Optimeringar och tips: - Försök minimera antingen antalet grindar eller grinddjupet (Det är svårt att göra båda samtidigt) - Minimera med Quine McClusky eller iterativ konsensus eller - Använd Shannonexpansionen (mer om denna senare) - Dela på utgångar där det går i stället för att sätta in fler grindar - Ta bort grindar som bara har konstanter på ingångarna och ersätt dem med en konstant (constant-folding) - pekare och dynamiskt minne ger effektivare lösningar Digitalteknik F1b bild 19
NOR-labben Liten tävling : - Vi publicerar en lista med era resultat så att ni kan se hur ni ligger till i klassen. Digitalteknik F1b bild 20