-9-
Poprzednia strona Następna strona
do Spisu treści

  • Realizacja dowolnych funkcji kombinacyjnych
  • Realizacja tablic prawdy ta pomocą multiplekserów
  • Realizacja uogólnionych tablic prawdy za pomocą dekoderów
  • Pamięci ROM i układy programowalne

  • Realizacja dowolnych funkcji kombinacyjnych

    Szczęśliwie, w większości projektowanych układów cyfrowych nie zachodzi potrzeba realizacji skomplikowanych funkcji logicznych za pomocą bramek. Ale pozostaje jeszcze ta mniejszość i wtedy okazuje się, że liczba bramek, które trzeba ze sobą połączyć, aby zrealizować skomplikowaną tablicę prawdy, może okazać się przerażająco wielka. Zachodzi pytanie, czy nie ma żadnej innej drogi? Na szczęście jest ich kilka. W tym podrozdziale przedstawimy wykorzystanie multiplekserów i demultiplekserów jako układów realizujących dowolne tablice prawdy. Następnie omówimy ogólnie bardziej efektywne metody, oparte na wykorzystaniu programowalnych układów logicznych, przede wszystkim pamięci ROM i układów PAL.

    Realizacja tablic prawdy za pomocą multiplekserów
    Powinno być oczywiste, że N-wejściowy multiplekser może być wykorzystany do realizacji tablicy prawdy4) o N zmiennych wejściowych, bez dodatkowych elementów, po prostu przez podanie na jego wejścia informacyjne sygnałów H i L, zgodnie z zawartością tablicy. Na rysunku 8.40 pokazano układ badający, czy 3-bitowa liczba wejściowa jest liczbą pierwszą.


    Rys. 8.40.

    Być może nie tak bardzo oczywiste jest to, że N-wejściowy multiplekser, co najwyżej z jednym dodatkowym inwerterem, może być użyty do zrealizowania tablicy prawdy o 2N zmiennych wejściowych. Na przykład, na rysunku 8.41 przedstawiono układ wykrywający, czy dany miesiąc (od 1 do 12), zakodowany jako liczba 4-bitowa doprowadzona do wejścia układu, ma 31 dni. Zrozumienie zasady działania układu jest proste, jeśli zauważy się, że dla danego stanu trzech wejść adresowych multipleksera stan wyjścia, traktowany jako funkcja czwartego sygnału wejściowego B, może przyjmować jedną z czterech wartości: H, L, B lub B'. Wymienione stany wyjścia uzyskuje się dołączając odpowiednie wejście informacyjne do źródła stanu wysokiego, do źródła stanu niskiego, do linii A0 (sygnał B) lub do wyjścia inwertera sterowanego sygnałem linii A0 (sygnał B').

    Realizacja uogólnionych tablic prawdy za pomocą dekoderów
    Również dekodery pozwalają na obejście problemów związanych z realizacją skomplikowanych funkcji kombinacyjnych, szczególnie w sytuacjach, gdy trzeba jednocześnie zrealizować kilka wyjść (w przypadku zespołów funkcji). Niech będzie to na przykład transkoder kodu BCD na kod "+3". Oto tablica prawdy:
    Cyfra
    dziesiętna
    BCD "+3"
    0 0000 0011
    1 0001 0100
    2 0010 0101
    3 0011 0110
    4 0100 0111
    Dekoder jest adresowany 4-bitową liczbą BCD, a jego sygnały wyjściowe doprowadzane są do wejść zespołu bramek OR, po jednej dla każdego bitu wyjściowego, jak pokazano na rys. 8.42.

    Rys. 8.42.
    Konwersja kodów z wykorzystaniem tablicy prawdy: BCD na "+3"

    Zauważmy, że w takim rozwiązaniu bity wyjściowe nie muszą się wzajemnie wykluczać. Coś takiego może być np. wykorzystane w układzie sterującym pralką, w której trzeba włączać różne funkcje (wypompowywanie wody, nabieranie, wirowanie itp.) w odpowiedzi na każdy stan wejściowy. Wkrótce zobaczymy, w jaki sposób można generować równomiernie rozłożone kolejne kody binarne. Poszczególne wyjścia dekodera odpowiadają implikantom prostym (ang. minterm), czyli pozycjom mapy Karnaugha.

    Pamięci ROM i układy programowalne
    Ogólnie rzecz biorąc, są to układy scalone o programowanej przez użytkownika wewnętrznej sieci połączeń. Czyli w rzeczywistości są to układy z pamięcią i w zasadzie powinny być omówione później, razem z przerzutnikami, rejestrami itp. Jednakże, raz zaprogramowane stają się one układami czysto kombinacyjnymi i jako takie są tak bardzo użyteczne, że byłoby rzeczą niewybaczalną nie powiedzieć o nich teraz. ROM. ROM (ang. read-only memory), czyli pamięć stała, dla każdego adresu doprowadzanego do jej wejścia wyprowadza na wyjście (jest to zwykle wyjście równoległe, 4- lub 8-bitowe) pewien zestaw bitów. Na przykład, pamięć ROM o organizacji 1K x 8 wydaje 1024 zestawy ośmiobitowe w odpowiedzi na 1024 stany wejściowe określone przez stany 10 linii adresowych (patrz rys. 8.43).

    Rys. 8.43.

    Tak więc każdą tablicę prawdy funkcji kombinacyjnej można zrealizować przez zaprogramowanie pamięci ROM, zakładając, że dana pamięć ma wystarczająco wiele linii adresowych. Na przykład, wspomniana pamięć ROM o organizacji 1K x 8 może być zastosowana do realizacji układu mnożącego przez siebie dwie liczby 4-bitowe. W tym przypadku ograniczeniem jest "szerokość" słowa wyjściowego (8 bitów), a nie "głębokość" słowa wejściowego (10 bitów). Pamięci ROM (również programowalne układy logiczne) są elementami o nie ulatującej zawartości (ang. nonvolatile), co oznacza, że zawarta w nich informacja nie zostaje stracona po wyłączeniu napięć zasilających. Istnieje kilka odmian pamięci ROM, różniących się sposobem programowania.

     a) Pamięci programowane maską (ang. mask-programmable ROMs, czyli Mask ROM-y). Bitową strukturę ich wnętrza ustala się w czasie produkcji.

     b) Programowalne pamięci stałe (ang. programmable ROMB, czyli PROM-y). Są programowane przez użytkownika. Programowanie polega na przepalaniu cieniutkich połączeń (tak jak bezpieczników) po odpowiednim ich zaadresowaniu i po doprowadzeniu właściwych sygnałów sterujących. Są to pamięci dość szybkie (25÷50 ns), pochłaniające stosunkowo dużo mocy (bipolarne: 0,5÷1 W), o małych i średnich pojemnościach (od 32 x 8 do 8K x 8).

     c) Reprogramowalne pamięci stałe (ang. erasable programmable ROMs, czyli EPROM-y). Bity informacji są zapamiętywane jako ładunki elektryczne na pływających bramkach tranzystorów MOS, które mogą być usuwane z bramek przez naświetlanie promieniowaniem ultrafioletowym o dużej intensywności przez kilkadziesiąt minut (obudowy tych pamięci zawierają przepuszczające ultrafiolet okienka kwarcowe). Pamięci tego typu produkuje się techniką NMOS lub CMOS. Są one niezbyt szybkie (200 ns), pobierają niewiele mocy (zwłaszcza w stanie spoczynku) i mają duże pojemności (od 8K x 8 do 128K x 8). Współczesne pamięci CMOS EPROM są równie szybkie, jak pamięci bipolarne (35 ns). Istnieje również tańsza odmiana pamięci EPROM, wykonana z takiej samej struktury krzemowej, umieszczonej w obudowie bez okna kwarcowego, nazywana OTP-EPROM (ang. one-time-programmable EPROM), która może być programowana tylko jeden raz.

     d) Elektrycznie kasowalne PROM-y (ang. electrically erasable PROMs, czyli EEPROM-y). Zachowują się tak samo, jak pamięci EPROM, lecz są programowane i kasowane elektrycznie, napięciem o wartości + 5 V, bez wyjmowania z układu aplikacyjnego. Pamięci ROM są szeroko stosowane w sprzęcie komputerowym i mikroprocesorowym, gdzie służą do przechowywania docelowych programów i tablic z danymi. Jednakże na obecnym etapie należy mieć na uwadze, że pamięci ROM o małych pojemnościach mogą zastępować zespoły bramek o skomplikowanej sieci połączeń.
    Układy programowalne. Dwie podstawowe rodziny układów programowalnych to układy PAL (ang. programmable array logic; PAL jest chronionym znakiem towarowym firmy Monolithic Memories Inc.) oraz układy PLA (ang. programmable logic arrays). Są to układy scalone zawierające mnóstwo bramek o programowanych (takimi samymi metodami jak pamięci ROM) połączeniach między bramkami. Po zaprogramowaniu właściwych połączeń otrzymuje się układ realizujący założone funkcje logiczne. Układy programowalne są wykonywane zarówno techniką bipolarną, jak i techniką CMOS, przy czym dla układów bipolarnych stosuje się programowanie jednokrotne polegające na przepalaniu połączeń, natomiast do programowania układów CMOS wykorzystuje się właściwości tranzystorów MOS z pływającą bramką (połączenia mogą być kasowane promieniowaniem ultrafioletowym lub elektrycznie). Ze względu na ściśle zdefiniowaną strukturę danego układu scalonego nie jest możliwe zaprogramowanie dowolnej sieci połączeń. Na rysunku 8.44 przedstawiono koncepcje obu rodzin kombinacyjnych (bezrejestrowych) układów programowalnych.


    Rys. 8.44.
    Programowalne układy logiczne:
    a) typu PAL,
    b) typu PLA,
    c) szczegółowy rysunek programowalnych połączeń na wejściach bramki AND; kółeczka oznaczają połączenia za pomocą bezpieczników przewidzianych do przepalania lub inne połączenia programowalne.

    Wszystkie bramki AND i OR, choć dla uproszczenia rysowane z pojedynczą linią wejściową, są w rzeczywistości bramkami wielowejściowymi i mają tyle osobnych wejść, ile zaznaczono przecięć tej symbolicznej linii z innymi liniami. Każde (3-stanowe) wyjście kombinacyjnego układu PAL jest wyjściem bramki OR, której każde wejście jest dołączone na stałe do wyjścia wielowejściowej bramki AND. Na przykład, w układzie 16L8 (patrz rys. 8.45)

    Rys. 8.45.
    Kombinacyjny układ PAL typu 16L8 ma 10 wyprowadzeń będących tylko wejściami, 2 wyprowadzenia będące tylko wyjściami i 6 wyprowadzeń dwukierunkowych trójstanowych, które mogą być zarówno wejściami jak i wyjściami; "16L8" oznacza 16 wejść (wartość maksymalna), 8 wyjść (również wartość maksymalna) aktywnych stanem niskim.

    umieszczono osiem 7-wejściowych bramek OR. Do wejść każdej bramki AND można doprowadzić bezpośrednio prawie wszystkie istniejące sygnały: 10 sygnałów wejściowych oraz ich inwersje i 6 sygnałów wyjściowych oraz inwersje tych sygnałów. Również sygnał uaktywniający każde wyjście trójstanowe jest otrzymywany z wyjścia 32-wejściowej bramki AND. Układy PLA są podobne do układów PAL. Różnicę stanowi dodatkowa elastyczność łączeniowa, gdyż możliwe jest zaprogramowanie dowolnego połączenia wyjść bramek AND z wejściami bramek OR -w układzie PAL były to połączenia stałe. Zauważmy, że omówione układy PAL i PLA są układami kombinacyjnymi (składają się tylko z bramek; nie ma w nich elementów pamięciowych). Oba rodzaje układów programowalnych produkowane są również w odmianach zawierających elementy pamięciowe (rejestry). Nazywane są wtedy sekwencyjnymi układami logicznymi. Zajmiemy się nimi w następnym podrozdziale. Aby móc stosować układy PAL i PLA trzeba mieć programator tych układów. Jest to urządzenie służące do przepalania bezpieczników (lub realizacji wymaganych połączeń w inny sposób) oraz sprawdzania poprawności wykonanych operacji. Wszystkie programatory są łączone za pomocą łącza szeregowego z mikrokomputerem (inżynierowie ustalili pewien standard na łączenie się z komputerami osobistymi typu IBM), który zawiera oprogramowanie niezbędne do uruchomienia i wykorzystania programatora. Bardziej luksusowe programatory zawierają własny mikrokomputer i własne specjalistyczne oprogramowanie. Z oprogramowania sterującego pracą programatora najprostsze są programy służące jedynie do wybrania bezpieczników, które mają być przepalone. Położenie bezpieczników określa się rysując wymagany układ połączeń na poziomie bramek, a następnie sporządzając listę bezpieczników lub zaznaczając je na ekranie w odpowiednich miejscach wyświetlanego schematu. Na rysunku 8.46 pokazano trywialny przykład projektowania bramki XOR z użyciem dwóch wejść i jednego wyjścia układu programowalnego.

    Rys. 8.46.
    Bramka XOR w realizacji PAL.

    Lepsze programatory przyjmują dane wejściowe w postaci funkcji Boole'a (jeśli są one określone) lub tablic prawdy. Resztę robi oprogramowanie, tzn. minimalizuje funkcję, symuluje działanie zaprojektowanego układu i programuje układ scalony. Chociaż układy PLA są bardziej uniwersalne, znacznie większą popularnością przy projektowaniu współczesnych układów cyfrowych cieszą się układy PAL. Układy PAL są szybsze (sygnały przechodzą tylko przez jedną matrycę bezpieczników), tańsze i zwykle wystarczające do realizacji zadanej funkcji. Wkrótce zobaczymy, że nowe, udoskonalone układy PAL o specyficznej architekturze, zawierające makrokomórki stały się bardziej uniwersalne, mimo utrzymania stałych połączeń między wyjściami bramek AND i wejściami bramek OR. Układy PAL stanowią bardzo atrakcyjny (elastyczność układowa i zwartość konstrukcji) zamiennik tradycyjnych układów scalonych realizujących ustalone funkcje i poważni projektanci układów elektronicznych nie powinni ich przeoczyć.

    4)Tablica prawdy jest jednym ze sposobów zapisu funkcji logicznej. Termin "realizacja tablicy prawdy" należy rozumieć jako realizację funkcji logicznej, której ta tablica odpowiada (przyp. tłum.).