Karnaughdiagram, någon som kan förklara?

Permalänk
Medlem

Karnaughdiagram, någon som kan förklara?

Hej!
Jag har en funktion som ser ut såhär:
f=(x'+y)z+xyz'=x'z+yz+xyz'

Utav denna funktion ska jag ta fram en disjunktiv och en konjuktiv minimalform samt realisera dessa.

Nu är ju som så att jag är ny på det här med digitalteknik och har inte riktigt förstått karnaughdiagram och hur man fixar konjuktiv och disjunktiv form så jag skulle väldigt gärna få hjälp med hur man sätter upp karnaugdiagram för den givna funktionen osv. Jag har försökt förstå det på egen hand men inte riktigt lyckats därför som jag kan hoppas på en bra beskrivning av er!

Permalänk
Hedersmedlem

Börja med att göra en sanningstabell och för sedan in värdena i diagrammet.

xy 00 01 11 10 ----------------------- 0 | | | | | z ----------------------- 1 | | | | | -----------------------

Bind sedan ihop (så stora grupper som möjligt av 1, 2,4 eller 8) ettor (för disjunktiv normalform) eller nollor (för konjunktiv). Diagonala grupper är ej tillåtna.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Elgot
Börja med att göra en sanningstabell och för sedan in värdena i diagrammet.

xy 00 01 11 10 ----------------------- 0 | | | | | z ----------------------- 1 | | | | | -----------------------

Bind sedan ihop (så stora grupper som möjligt av 1, 2,4 eller 8) ettor (för disjunktiv normalform) eller nollor (för konjunktiv). Diagonala grupper är ej tillåtna.

Jo att man ska göra en sanningstabell är jag införstådd med men jag har inte förstått hur jag ska föra in dem. Hur vet jag exempelvis vad som är 00 på mitt funktionsuttryck?

Permalänk
Hedersmedlem

"xy" på den översta raden betyder att siffergrupperna under betecknar x och y. 00 är alltså (x=0, y = 0), 01 är (x=0, y=1) och så vidare. Det viktiga är att endast ett värde ändras mellan intilliggande grupper.

f(x=0, y=0, z=0) = 0 innebär alltså att "0" skall skrivas i den översta vänstra rutan.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Elgot
"xy" på den översta raden betyder att siffergrupperna under betecknar x och y. 00 är alltså (x=0, y = 0), 01 är (x=0, y=1) och så vidare. Det viktiga är att endast ett värde ändras mellan intilliggande grupper.

f(x=0, y=0, z=0) = 0 innebär alltså att "0" skall skrivas i den översta vänstra rutan.

Ja okej men det hjälper mig fortfarande inte med vilken siffra jag ska sätta i diagrammet? Hur ser jag om både x,y,z är noll t.ex. och hur ser jag att bara y är 1 och de resterande noll? Jag förstår inte hur man ser den informationen i funktionsuttrycket.
Kan du inte sätta in ett par värden och förklara hur du fick fram det, för jag förstår inte hur man ser det?

Permalänk
Hedersmedlem

Om du har ställt upp sanningstabellen vet du ju vad y är för samtliga värden på x, y och z. I det här fallet gället för f(x,y,z) till exempel att f(0,0,0) = 0, f(0,0,1) = 1, f(0,1,0) = 0 och f(0,1,1) = 1.
Rutan högst upp till vänster i diagrammet (betecknad 0, 00 (för z=0, xy=00)) får alltså värdet 0. Rutan till höger om denna (0 01 (z=0, xy = 01)) får värdet 0, andra raden längst till vänster (1 00) blir 1 och rutan till höger om denna (1 01) blir 1.

xy 00 01 11 10 ----------------------- 0 | 0 | 0 | | | z ----------------------- 1 | 1 | 1 | | | -----------------------

Permalänk
Glömsk

Detta har egentligen inte med diskussionen att göra, men jag skulle vilja passa på att tipsa om en bok här, framförallt till er som går i gymnasiet och funderar på att studera datavetenskap:

The New Turing Omnibus: Sixty-Six Excursions in Computer Science

Denna bok består av 66 separata artiklar om olika datavetenskapliag ämnen, bland annat just vad denna tråd handlar om.

Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Elgot
Om du har ställt upp sanningstabellen vet du ju vad y är för samtliga värden på x, y och z. I det här fallet gället för f(x,y,z) till exempel att f(0,0,0) = 0, f(0,0,1) = 1, f(0,1,0) = 0 och f(0,1,1) = 1.
Rutan högst upp till vänster i diagrammet (betecknad 0, 00 (för z=0, xy=00)) får alltså värdet 0. Rutan till höger om denna (0 01 (z=0, xy = 01)) får värdet 0, andra raden längst till vänster (1 00) blir 1 och rutan till höger om denna (1 01) blir 1.

xy 00 01 11 10 ----------------------- 0 | 0 | 0 | | | z ----------------------- 1 | 1 | 1 | | | -----------------------

Nu känner jag mig väldigt dum här men är man nybörjare på något så är man, verkar som att jag totalt har missat biten med sanningstabell. Hur gör jag för att sätta upp en sådan för mitt funktionsuttryck?

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av mojito
Nu känner jag mig väldigt dum här men är man nybörjare på något så är man, verkar som att jag totalt har missat biten med sanningstabell. Hur gör jag för att sätta upp en sådan för mitt funktionsuttryck?

Det är helt enkelt en lista på alla möjliga värden för x, y och z och vad f blir för dessa. Börja så här:

f=x'z+yz+xyz'

x y z | x'z | yz | xyz' | f --------------------------------------- 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 1

Fyra rader saknas...

Permalänk
Medlem

hmm, tack så mycket, jag lyckades få fram rätt f men genom att tänka alldeles fel är jag rädd.
Jag känner mig lite vilsen, för trodde att jag tänkte rätt när jag fick fram denna tabell men när jag kollade igenom den igen ser jag att jag säger emot mig själv:

x y z | x'z | yz | xyz' | f --------------------------------------- 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 1 1 1

Om vi då t.ex. tar den nedersta raden (111) så kom jag fram till dess värden genom att:
x'z = x ändrar tecken och blir noll = x=0, z=1 = 0
yz = båda lika med 1 = 1
xyz' = här kommer det då jag säger emot mig själv, jag tänkte inte på att det stod z' utan tänkte, bra alla är 1 alltså = 1

Men nu till det mystiska, på rad (100) så tänkte jag såhär:
x'z = x ändrar värde = 0 0 = 0
yz = båda lika med 0 = 0
xyz' = i det här fallet tänkte jag att alla tre variabler (xyz') måste vara lika med 1 för att jag ska få sätta 1 i rutan, alltså i detta fall. x = 1 y = 0 z =1 alltså var inte alla tre variabler lika med ett vilket gör att jag får sätta 0 i rutan
MEN
då till mitt lilla dilemma, om alla tre variabler i xyz' måste vara lika med 1 så skulle inte xyz' kolumnen på rad 111 kunna vara lika med 1 utan ska vara lika med noll.

Vart någonstans tänker jag fel?

Sen en liten sidofråga:
om alla tre x'z , yz samt xyz' skulle vara lika med 1, alltså 1 1 1 då skulle f bli = 0 eller hur? rätta mig om jag tänker fel här.

Och sen över till min fråga jag egentligen tänkte ställa innan jag såg att jag sa emot mig själv i sanningstabellen.

Då jag har har satt in mina världen i karnaughdiagramet och ringat in ettorna för disjunktiv minimalform samt nollorna för konjuktiv minimalform så att det ser ut såhär:

Parenteserna illustrerar vad som är inringat
Disjunktiv minimalform

yz 00 01 11 10 ----------------------- 0 | 0 |(1 | 1 )| 0 | x ----------------------- 1 | 0 | 0 |(1 | 1)| -----------------------

konjunktiv minimalform

yz 00 01 11 10 ----------------------- 0 | 0 )| 1 | 1 |(0 | x ----------------------- 1 |(0 | 0 )| 1 | 1 | -----------------------

Hur får jag fram funktionsuttrycken för disjunktiv och konjunktiv minimalform från karnaughdiagrammen?

ps nu förstår jag iaf vart man fick värdena att sätta in i karnaughdiagrammen ifrån!

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av mojito
Om vi då t.ex. tar den nedersta raden (111) så kom jag fram till dess värden genom att:
x'z = x ändrar tecken och blir noll = x=0, z=1 = 0
yz = båda lika med 1 = 1
xyz' = här kommer det då jag säger emot mig själv, jag tänkte inte på att det stod z' utan tänkte, bra alla är 1 alltså = 1

För att x'z skall vara 1 måste x' och z båda vara 1, dvs x = 0 och z = 1.
För att yz skall vara 1 måste y och z båda vara 1.
För att xyz' skall vara 1 måste x, y och z' vara 1, dvs. x = 1, y = 1 och z = 0.
För den nedersta raden gäller att z = 1, så xyz' blir alltså 0.

Citat:

Ursprungligen inskrivet av mojito
Men nu till det mystiska, på rad (100) så tänkte jag såhär:
x'z = x ändrar värde = 0 0 = 0
yz = båda lika med 0 = 0
xyz' = i det här fallet tänkte jag att alla tre variabler (xyz') måste vara lika med 1 för att jag ska få sätta 1 i rutan, alltså i detta fall. x = 1 y = 0 z =1 alltså var inte alla tre variabler lika med ett vilket gör att jag får sätta 0 i rutan
MEN
då till mitt lilla dilemma, om alla tre variabler i xyz' måste vara lika med 1 så skulle inte xyz' kolumnen på rad 111 kunna vara lika med 1 utan ska vara lika med noll.

Det är korrekt.

Citat:

Ursprungligen inskrivet av mojito
Sen en liten sidofråga:
om alla tre x'z , yz samt xyz' skulle vara lika med 1, alltså 1 1 1 då skulle f bli = 0 eller hur? rätta mig om jag tänker fel här.

Nej, uttrycket f = x'z + xy +xyz innebär att f = 1 om minst en av termerna är 1. Så länge det gäller spelar det ingen roll vad de andra är (om man tycker det är tråkigt att ställa upp komplexa tabeller kan man utnyttja detta då man till exempel inte behöver beräkna värdet av yz och xyz' på den andra raden när man väl vet att x'z = 1).

Citat:

Ursprungligen inskrivet av mojito

yz 00 01 11 10 ----------------------- 0 | 0 |(1 | 1 )| 0 | x ----------------------- 1 | 0 | 0 |(1 | 1)| -----------------------

konjunktiv minimalform

yz 00 01 11 10 ----------------------- 0 | 0 )| 1 | 1 |(0 | x ----------------------- 1 |(0 | 0 )| 1 | 1 | -----------------------

Hur får jag fram funktionsuttrycken för disjunktiv och konjunktiv minimalform från karnaughdiagrammen?

Nu tittar man i diagrammet och funderar på vad som gäller för de inringningar man har gjort. I det övre diagrammet ser man till exempel att den övre inringningen finns där x = 0 och z = 1, men y får tydligen vara både 0 och 1. Alltså konstaterar man att den inte påverkar. För den nedre gäller på samma sätt att x = 1 och y = 1.
Uttrycket blir alltså f = x'z + xy

Permalänk
Medlem

Tack så hemskt mycket, du är verkligen för vänlig som hjälper mig !

Citat:

Ursprungligen inskrivet av Elgot
Nu tittar man i diagrammet och funderar på vad som gäller för de inringningar man har gjort. I det övre diagrammet ser man till exempel att den övre inringningen finns där x = 0 och z = 1, men y får tydligen vara både 0 och 1. Alltså konstaterar man att den inte påverkar. För den nedre gäller på samma sätt att x = 1 och y = 1.
Uttrycket blir alltså f = x'z + xy [/B]

För att få ytterligare ett par frågetecken förklarade.
Såsom jag har förstått det hela så tar man och multiplicerar i disjunktiv (x'(multi)z) och adderar mellan x'z(addition + ) xy = x'z+xy
Medan man i konjunktiv gör precis tvärtom
(x'(addition +)z)(multiplikation)(x+y)=(x'+z)(x+y)

Om detta antagande nu stämmer så känns det inte som att man kan tänka på samma sätt för den konjunktiva som för disjunktiva eftersom jag enligt mitt tänkesätt då skulle få:
f=(x'+z)(x+y) vilket inte stämmer utan det ska bli
f=(x'+y)(x+z) du sa att man skulle kolla om det var någon variabel som kunde vara både ett och noll och då behövde man inte ta med den. Men här blev det helt bakvänt.

Om man då kollar på den konjunktiva övre raden så är x=0, y=0 och 1, z = 0. Och då tog jag helt enkelt bort den och fick x'+z men det skulle vara x'+y? varför det?

Sen i facit för den konjunktiva svarar de på två sätt:
f'=xy'+x'z'
f=(x'+y)(x+z)
Är den ena mer rätt än den andra, ska man svara med båda eller räcker det med den ena?

För den disjunktiva formen stämmer det du förklarade utmärkt!

Permalänk
Hedersmedlem

När man ringar in nollor får man x'z' + xy', men då det är nollor är det f' man har beskrivit. För att erhålla f måste man invertera (ersätt x,y och z med x', y' och z' och byt * mot + och tvärt om). Resultatet blir f = (x+z)*(x'+y).
Ingen av formerna är mera rätt än den andra, men om man skall implementera logiken kan de resultera i lösningar som är mer eller mindre bra (beroende på vad man vill uppnå).

Permalänk
Medlem

Tack så mycket
Dock så har jag ytterligare en fråga angående disjunktiv och konjunktiv form.

Jag har två olika funktioner:
Den första börjar med summatecken och den andra med ett stort pi, nu vet jag inte hur man skriver dessa tecken här utan skriver bara ut dem som ord.

summatecken(1,4,5)+d(2,3,6,7,8,9,12,13)

Andra
PI(6,7,8,9,10,13,14,16,17,22,24,25,29)+d(0,12,15,30)

Och utav dessa funktioner ska jag likt tidigare bestämma minimala disjunktiva och konjuktiva former.

Men då över till mina frågor, vad står summatecknet, PI och d för i dessa funktioner?

Sen antar jag att jag likt i föregående uppgift ska sätta upp en sanningstabell och sen föra in värdena i ett karnaughdiagram och fortsätta på samma sätt som tidigare.
Men hur gör jag en sanningstabell utav detta för nu står det ju bara siffror och som sagt, vad är skillnaden mellan tecknen och vad står de för?

Permalänk
Hedersmedlem

Stora pi brukar ju beteckna multiplikation, men det verkar svårt att få ut något vettigt av det där. Finns det verkligen inte mer information?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Elgot
Stora pi brukar ju beteckna multiplikation, men det verkar svårt att få ut något vettigt av det där. Finns det verkligen inte mer information?

Tyvärr står det bara "Bestäm minimala disjunktiva och konjunktiva former för följande funktioner".

Men jag ska ge dig svaret för summatecken(1,4,5)+d(2,3,6,7,8,9,12,13)

http://www.ladda-upp.com/bilder-a/dt_svar-109.jpg

Med hjälp av svaret kanske du förstår vad de menar? O.o

Permalänk
Hedersmedlem

Jag skulle gissa att de helt enkelt använder notationen för att beskriva var olika värden står i ett karnaughdiagram. Sigma(1,4,5) innebär att en etta finns i ruta 1, 4 och 5 och d(2,3,6, osv) innebär att ett streck (don't care) finns i ruta 2, 3, 6 m.fl. Don't care betyder för övrigt att man inte bryr sig om vilket värde funktionen har för den aktuella insignalen och därför kan inkludera den rutan oavsett om man ringar in ettor eller nollor. De (varifrån kommer uppgifterna för övrigt?) borde dock ha förklarat sin notation någonstans.