Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Bramki logiczne. 30 punktów za pomoc.

16 Sep 2007 14:39 3094 6
  • #1
    User removed account
    User removed account  
  • Helpful post
    #2
    Quarz
    Level 43  
    Witam,
    Stasiektoja wrote:
    Witam
    Mam kilka pytan. Mam zrobic cos takiego y={0,2,3,6,10,11/4,12} Mam to zrobic na nandach i ....

    wytłumacz tylko mi co w powyższym Twoim zapisie znaczy: 11/4 ? ? ? Tego nie rozumiem, ponieważ ta wartość w tamtym zbiorze jest wartością nielegalną.
    Reszta to przysłowiowy "pryszcz"... :D
    Tam są pozycje z Natural Binary Code podane dziesiętnie dla których wartość funkcji logicznej y(a0, a1,a2,a3) ma być TRUE.
    Natomiast a0, a1, a2, a3, to wagi binarne NBC i oczywiście a3 ==> MSB (Most significant bit - najstarszy bit), a a0 ==> LSB (Least significant bit - najmłodszy bit), co jednoznacznie implikuje pozycje wpisu jedynek do Tablicy Karnaugha.

    Pozdrawiam

    P.S. Punkty sobie podaruj, mam ich więcej od Ciebie... :twisted:
  • #3
    User removed account
    User removed account  
  • #4
    Quarz
    Level 43  
    Stasiektoja wrote:
    Oznacza to ,że dla 4 i 12 można przyjąc albo 1 albo 0.

    ciekawy, bardzo ciekawy zapis...

    Stasiektoja wrote:
    Dalej nic nie rozumiem z wpisywaniem. Może znasz jakiś przykład. Robiłem to kilka dni temu a teraz wszystko uciekło z głowy :/.

    To co, masz amnezję starczą, iż już zapomniałeś? :D
    Przykładu nie znalazłem. Zrób sobie Tablicę Karnaugha dla czterech zmiennnych logicznych. Następnie oznacz je binarnie i odpowiadającą liczbie binarnej przypisz właściwą liczbę dziesiętną, a będziesz mieć wskazane miejsca w oczkach Siatki Karnougha pozycje z podanej przez Ciebie funkcji y={0,2,3,6,10,11/4,12}.
    Potem należy dokonać minimalizacji i wypisać funkcję wyjściową y(a0, a1,a2,a3).
    Na podstawie tego należy narysować schemat logiczny przy użyciu trzech podstawowych funktorów OR, AND, NOT, a następnie przetransponować go na schemat używający jednego (z wskazanych w zadaniu) z funktorów logicznie pełnych, a więc NAND, lub NOR.

    Stasiektoja wrote:
    Masz może gg ?

    Nie używam.

    Pozdrawiam
  • Helpful post
    #5
    Paweł Es.
    VIP Meritorious for electroda.pl
    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
  • #6
    User removed account
    User removed account  
  • #7
    Paweł Es.
    VIP Meritorious for electroda.pl
    Grupy zaznaczasz od największych możliwych !!!! Tam gdzie jest stan dowolny, wstawiasz 1 lub 0 tak aby uprościło to maksymalnie możliwość zakreślania. Na tej zasadzie w polu nr 4 wstawiasz 1, bo to daje możliwość zakreślenia 1 pola 2x2 zamiast dwóch 1x2.

    $$y=\bar{c}*b+\bar{d}*\bar{a}$$