Mam takie zadanie. Mam funkcje i musze ją zminimalizować 2-ma metodami
-> Karnaught'a i McKluskey'a. Zrobiłem je obie, ale wyniki się różnia od siebie. Jestem na 100% przekonany, że robie błąd w metodzie tej, co w temacie.Funkcja to:
y=y1+y2+y3+y4+y6+y7+y14+y15
Zrobiłem tabele Karnaught'a i wyszło mi coś takiego:
0 1 1 1 1 0 1 1 0 0 1 1 0 0 0 0
No i potrafie obliczyć wartości (na abcd) tylko dla dwóch jedynek koło siebie, dla większej ilości już nie :/
Jakby komuś się chciało, to prosze o jakieś wskazówki, a jeszcze lepiej całe rozwiązanie, abym mógł sobie ze swoimi wyliczeniami porównać ;-) I bardzo prosze nie odsyłać mnie do googli... A musze to oddać na jutro...
Wbrew nazwie to sa bardzo podobne metody. Tyle ze obie w drugiej czesci maja element niepewnosci - mozna dobrac rozne grupy do pokrycia, mozna je dobrac nieoptymalnie. Wyniki moga wyjsc rozne, mimo ze to ta sama funkcja.
Rozumiem ze y7 oznacza "ustawione bity b0,b1,b2, a b3=0"
Na oko to teraz trzeba zakreslic grupy y1+y3 [~b3*~b2*b0] y4+y6 [~b3*b2*~b0] y3+y2+y7+y6 y7+y6+y14+y15
Jak już pisałem to są wyniki dla par po 2, a z tego co tu jest to można niby zrobić 6. NA wikipedii jest to opisane, ale interpretacja mi nie wychodzi :/
Czyli jeżeli z McKluskey'a wychodzi mi coś takiego:
a^b^ + a^bc + abc + a^
a z Karrnaught'a coś takiego :
a^ + abc + ca^
to jest to niby to samo? Kumplom to normalnie po obu stronach (tj. w obu metodach) wychodziło to samo ...
Nie musisz sie ograniczac do "par po dwie". Im wieksze obszary zaznaczysz, tym mniej wejsc beda mialy bramki [a to oznacza mniej krzemu, w CMOS nawet duzo mniej] i jest szansa ze mniej bramek ci wyjdzie.
W tym przykladzie to ja widze nawet 9 mozliwych "par po 2". Teraz zaczyna sie czesc przykra - tzn ktore z tych par wybrac, zeby za pomoca jak najmniejszej ilosci pokryc wszystkie jedynki. A jesli sie uda czworkami to jeszcze lepiej.
To co proponowalem w poprzednim poscie, to najpierw sklejamy te dwie 1 "samotne" po prawej stronie. Je mozna tylko na jeden sposob skleic, wiec wyboru nie mamy [a^b^d+a^bd^]. Zostaje nam tabelka:
0 x x 1 x 0 1 x
0 0 1 1
0 0 0 0
Musimy teraz pokryc wszystkie pozostale 1, przy czym mozemy x pokryc poraz drugi. Najprosciej to zrobic dwoma "kwadratami".
Czy jest to samo .. zrob tabelke :-)
najpierw zauwaz ze a^ pokrywa tez a^b^ [a^b^+a^ = a^] Pokrywa tez a^c, wiec mozemy obie skrocic do a^ + abc (3)
W (1) latwo zauwazyc ze a^bc + abc = bc, wiec (3) mozemy skrocic do a^ + bc (4)
Wyprowadzenie (4) bezposrednio z (2) lub (3) jest trudniejsze do zauwazenia .. ale tak, jest prawdziwe a^ + abc = a^ + bc
Jak widac ta sama funkcje mozna zapisac na 4 sposoby [i wiecej], i zadna z metod nie uzyskales dobrej minimalizacji :-)
Na oko to jednak to jest to inna funkcja niz z poczatkowej tabelki.
No i generalnie powinno, choc np w takiej tabelce
0 1 1 1
0 1 0 1
0 1 1 1
0 0 0 0
sa dwa rownie dobre rozwiazania i co wyjdzie to od szczescia zalezy.
A jeszcze takie pytanie. Ze tak można je zakreślić, to się domyśliłem, ale jak teraz można obliczyć, ile wynoszą wartości tych grup po 4 ? Właśnie tego nie wiem, jak je obliczyć. Potrafie obliczyć daną wartość dla 2-ch jedynek (np. dla y1+y3 wartość ta wynosi a^b^d) Z wikipedii wiem, że wartość y3+y2+y7+y6 wynosi a^c, ale skąd się to wieło? Jak właśnie to odczytać z tabelki? I jaka będzie wartość dla y7+y6+y14+y15 ??
Kurde, jak napisałem posta to załapałem, jak się odczytuje wartości dla
4-rech :-P Ale jeszcze jeden szkopuł mnie niepokoi. Jak zrobie takie dwa kwadraty, to wtedy przez y6 będą biegły 3 takie grupy, a jak dobrze pamiętam, to nauczyciel mówił, że mogą przechodzić tylko dwie. To jak to w końcu jest?
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.