Quote: Mam zrobic cos takiego y={0,2,3,6,10,11/4,12} Mam to zrobic na nandach.
Quote: Skad mam wiedziesz ila pol ma miec tabela prawdy ?
Tabela ma zawsze ilość pól będącą potęgą liczby 2, czyli: 2,4,8,16,32 ...
Patrzysz jaka jest najwyższy stan w nawiasach {} i przyjmujesz rozmiar tablicy najbliższy większy z dostępnych od tego stanu.
Tj.jak nawiasach są stany
{0 do 1} to bierzesz 2 pola -> 1 zmienna
{0 do 3} to bierzesz 4 pola -> 2 zmienne
{0 do 7} to bierzesz 8 pól -> 3 zmienne
{0 do 15} to bierzesz 16 pól -> 4 zmienne (czyli jak jest np. 12 to ta tablica)
powyżej 4 zmiennych metoda tablicowa staje się bardzo kłopotliwa ze względu na konieczność zakreślania pól nieprzylegających do siebie co może prowadzić do błędów lub pominięć skutkujących np. hazardami
Quote: 12.Skad mam wiedziec jak ponumerować pola w tej tablicy ?
Pola są numerowane tak aby odpowiadające tym numerom kombinacje bitowe różniły się na jednym miejscu na polach sąsiadujących ze sobą (tzw. kod Graya). Patrz załączony rysunek.
Dla stanów wymienionych w nawiasach {} wpisujesz 1 w odpowiadające im pola, dla stanów dowolnych (po /) wpisujesz 1 lub 0 (ewentualnie kreskę oznaczającą stan dowolny) tak aby uprościło to zakreślanie funkcji.
W pozostałe pola wpisujesz 0.
Pola zaznaczasz zaczynając od największego możliwego. Pola mogą mieć wyłącznie rozmiary będące potęgą liczby 2, czyli nie możesz np. zaznaczyć 3 sąsiadujacych pól.
Pola na krawędziach tablicy sąsiadują ze sobą (np. pola 0 i 2, 2 i 10, 8 i 10 ...) tak, że można je łączyć ze sobą.
Po zakreśleniu grupy wypisujesz odpowiadającą im kombinację zmiennych, eliminując te, które się w dla danej grupy zmieniają. Jeżeli dana zmienna jest równa 0 to wpisujesz ją z negacją:
Przykłady
Grupa {0,1,3,2} -> $$\bar{c}\bar{d}$$
Grupa {5,7,13,15} ->$$ ab$$
Grupa {1,3,9,11} ->$$ a\bar{c}$$
Grupa {1} -> $$a\bar{b}\bar{c}\bar{d}$$
Jeżeli masz grupę typu:
{0,1,4,5,3} to zaznaczasz ją jako dwie {0,1,4,5} i {1,3} zgodnie z zasadą zaznaczania od największych możliwych grup a nie jako {0,1,4,5} i {3}
ponieważ jeżeli bramki realizujące iloczyny będą miały różne czasy propagacji to na wyjściu mogą się pojawić dodatkowe nieplanowane impulsy przy zmianie stanu zmiennej B, które mogą zakłócić poprawne działanie układu (np. spowodować doliczanie dodatkowych impulsów w liczniku za układem bramkowym)
{0,1,4,5}+{1,3} -> zakreślenie poprawne
$$\bar{b}\bar{d}+a\bar{c}\bar{d}$$
{0,1,4,5}+{3} -> zakreślenie niepoprawne
$$\bar{b}\bar{d}+ab\bar{c}\bar{d}$$
przy zmianie sygnału b może się pojawić krótkie 0 na wyjściu, gdy pierwsza grupa przestaje dawać 1 a druga jeszcze go nie podała ze względu na opóźnienia w bramkach
Po zakreśleniu wszytkich grup otrzymujesz wynik w postaci sumy iloczynów poszczególnych zmiennych lub ich negacji.
Zamiana na NAND
1. Stosujesz prawa de Morgana,tj.
/A+/B=/(A*B)
/A*/B=/(A+B) => A+B=/(/A*/B) -> OR=NAND (NOT A, NOT B)
z powyższego wynika, że:
bramkę AND zastępujesz bramką NAND z inwerterem na wyjściu
bramkę OR zastępujesz bramką NAND z inwerterami na wejściach
element NOT zastępujesz bramką NAND ze zwartymi wejściami
2. Eliminujesz pary elementów NOT jeżeli są w szeregu
a=NOT(NOT a)
dwa elementy NOT w ciągu zastępujesz zwarciem, np.
we -> NOT -> NOT -> NOT -> wy zastępujesz we -> NOT -> wy
3. Pozostałe nieredukowalne inwertery zastępujesz bramkami NAND z połączonymi wejściami