Urządzenia techniki komputerowej Cyfrowe układy funkcjonalne
Technika cyfrowa jest w dzisiejszych czasach obszarem wiedzy o całkowicie interdyscyplinarnym obliczu. Jej zagadnienia kształtowane z jednej strony przez języki opisu sprzętu, a z drugiej przez programowalne moduły logiczne, śmiało mogą być zaliczone zarówno do Informatyki, Elektroniki jak i Telekomunikacji. Dzisiejsze techniki projektowania układów cyfrowych polegają już nie tylko na składaniu układu z dostępnych komponentów, a raczej na procesie formalnej, abstrakcyjnej specyfikacji projektu w odpowiednim języku opisu sprzętu (HDL Hardware Description Language) oraz na transformacji tej specyfikacji przy użyciu różnorodnych narzędzi komputerowego wspomagania projektowania CAD (Computer Aided Design).
Ogromną rolę w zacieraniu różnicy między oprogramowaniem (software), tradycyjnie zaliczanym do produktów informatyki, a sprzętem (hardware) jako produktem tradycyjnie rozumianej elektroniki, spełniają układy programowalne przez użytkownika. Stały się one podstawą powstania nowego rynku własności intelektualnej, którego ofertą handlową są rdzenie projektowe (IP Core), czyli sprzęt reprezentowany w postaci oprogramowania, docelowo przeznaczonego do implementacji w układzie scalonym (programowalnym lub bezpośrednio wykonywanym w krzemie), zamiast w komputerze.
Technika cyfrowa ma obecnie przemożny wpływ na wszystkie obszary ludzkiej aktywności; między innymi radykalnie przeobraziła metody i formy komunikacji społecznej zarówno w ujęciu zbiorowym jak i indywidualnym, a układy cyfrowe można dziś znaleźć niemal w każdym urządzeniu technicznym.
Obszarem, w którym technika cyfrowa doprowadziła do bardzo istotnych zmian są urządzenia multimedialne. Dzięki multimediom rozwinęły się niespotykane do tej pory usługi teleinformatyczne takie jak: wirtualne usługi bankowe, telenauczanie, wideokonferencje, itp. Masowe zapotrzebowanie na te usługi tworzy atrakcyjny obszar działalności przemysłowo-gospodarczej.
Rozwój techniki cyfrowej jest bezpośrednio związany z rozwojem technologii mikroelektronicznych. Dzisiejsze możliwości technologiczne są ogromne. Technologia dostarcza konstruktorom układów cyfrowych specjalizowane układy scalone (Application Specific Integrated Circuits) o zasobach sprzętowych rzędu kilkudziesięciu milionów tranzystorów, co z punktu widzenia techniki cyfrowej jest równoważne kilku milionom bramek logicznych.
W zależności od technologii i techniki projektowania specjalizowane układy scalone klasyfikujemy w następujących kategoriach: a. układy zamawiane przez użytkownika (Full Custom), b. układy projektowane przez użytkownika (Semi Custom), c. układy programowane przez użytkownika (FPLD Field Programmable Logic Devices).
Największe układy ASIC są zwykle produkowane w wielkich seriach i najczęściej całkowicie wykonywane przez producenta dla zamawiającego (Full Custom). Rola zamawiającego ogranicza się do przedstawienia wymagań (założeń projektowych), a do producenta należy wykonanie projektu, prototypu, sprawdzenie działania prototypu oraz ostateczna produkcja. Układy takie opłaca się produkować tylko w bardzo dużych seriach (np. sprzęt powszechnego użytku, mikrokomputery) lub do wyjątkowych zastosowań. Cechą charakterystyczną układów Semi Custom jest wielokrotne wykorzystywanie raz zaprojektowanych bloków funkcjonalnych, które są przechowywane w bibliotece (w praktyce w pamięci komputera). Bloki takie są często zwane komórkami bibliotecznymi. W układach Semi custom typowym uproszczeniem projektowania jest standaryzacja komórek bibliotecznych przez narzucanie jednolitych wymagań dotyczących kształtu, wymiarów, rozmieszczenia szyn zasilania, wejść i wyjść, co pozwala w znacznym stopniu zautomatyzować proces projektowania struktury fizycznej układu.
Struktura fizyczna każdego układu zaprojektowanego w stylu Full Custom lub Standard Cells wymaga przygotowania projektów masek produkcyjnych i przeprowadzenia złożonego procesu technologicznego. Oznacza to, że czas potrzebny do otrzymania prototypowych egzemplarzy nowo zaprojektowanego układu jest rzędu co najmniej kilku tygodni. Z tych powodów coraz większą rolę w technice cyfrowej odgrywają programowalne moduły logiczne (FPLD Field Programmable Logic Devices), krótko zwane układami (strukturami) programowalnymi.
Układy programowalne to z punktu widzenia struktury układy typu matrycowego lub komórkowego, jednak z możliwością programowania połączeń na drodze elektrycznej. W ich przypadku proces produkcyjny jest odmienny producent dostarcza prefabrykaty projektantowi, który może je zaprogramować u siebie na biurku.
Atrakcyjnośd układów FPLD jako alternatywy dla układów Full Custom i Semi Custom wynika przede wszystkim z połączenia naturalnych walorów układów programowalnych, które zapewniają krótki czas opracowania prototypu i łatwośd jego modyfikacji i są dostępne z półki, z coraz doskonalszymi parametrami użytkowymi szybkością działania i pojemnością.
Rozwój technologii stymuluje rozwój komputerowych narzędzi projektowania, co tym bardziej poszerza związek techniki cyfrowej z Informatyką. Jest to zrozumiałe, gdyż sensowne przetworzenie milionów bramek w zamierzenia konstruktora układów cyfrowych nie może się odbyć bez udziału komputerowych systemów projektowania wyposażonych w edytor graficzny, tekstowy oraz kompilator.
Typowy komputerowy system projektowania jest wyposażony w moduł syntezy funkcjonalnej, moduł syntezy logicznej, oraz procedury odwzorowania technologicznego. Zadaniem takiego systemu jest realizacja algorytmu przetwarzania informacji cyfrowej w układzie scalonym zbudowanym z milionów bramek logicznych.
Nie jest to zadanie łatwe i z tych powodów synteza układów logicznych jest jednym z najważniejszych działów techniki cyfrowej. Trudności wynikają przede wszystkim z faktu, iż inne były wymagania stawiane układom logicznym wtedy, gdy były one konstruowane z pojedynczych tranzystorów (lata 50.) lub wtedy, gdy cyfrowe układy scalone zwierały kilka bramek (lata 70.). Wobec dzisiejszych milionów bramek zawartych w jednym, reprogramowalnym i rekonfigurowalnym module scalonym, jest to postęp ilościowy, który musiał całkowicie zmienić i ciągle jeszcze zmienia metody syntezy układów logicznych.
Najważniejszymi zagadnieniami nowoczesnej syntezy logicznej jakie rozwinęły się w ciągu ostatnich 20 lat w wyniku postępu technologii są: synteza dwupoziomowa (two-level synthesis), synteza wielopoziomowa (multi-level synthesis), minimalizacja symboliczna, dekompozycja matryc PLA oraz dekompozycja funkcjonalna.
Ze zrozumiałych względów komercyjne systemy projektowania nie nadążają za rozwojem technologii. Dlatego powstają uniwersyteckie systemy syntezy logicznej. Systemy te często wykonywane w formie niezbyt wygodnej do stosowania w bezpośredniej praktyce inżynierskiej spełniają w dziedzinie nowoczesnych metod syntezy układów cyfrowych nie mniejszą rolę niż firmowe systemy komercyjne. Z założenia są to systemy przystosowane do obsługi przez użytkownika o głębszej wiedzy w zakresie syntezy logicznej. Spełniają więc rolę niejako awaryjną, tzn. są stosowane w tych przypadkach, w których systemy komercyjne nie dają pozytywnych rezultatów ze względu na dużą złożoność obliczeniową.
Drugą, nie mniej ważną rolą systemów uniwersyteckich jest zdobywanie wiedzy i doświadczenia w zakresie skuteczności procedur obliczeniowych. Tak więc z biegiem lat wiele programów i procedur obliczeniowych, stosowanych w systemach uniwersyteckich, weszło do wyposażenia systemów komercyjnych. Typowym przykładem mogą tu byd systemy opracowane na uniwersytecie kalifornijskim w Berkeley, na przykład ESPRESSO, oraz SIS. Dziś procedury minimalizacji funkcji boolowskich programu ESPRESSO są stosowane bezpośrednio (jako wbudowane do systemu) lub pośrednio (z możliwością wymiany danych) we wszystkich prawie systemach komputerowego projektowania układów cyfrowych.
Wraz z wprowadzeniem języków HDL oraz struktur programowalnych pojawiły się nowe możliwości aplikacyjne dla techniki cyfrowej. Wynikają one nie tylko z poprawy parametrów funkcjonalnych i czasowych oraz zmian w architekturze logicznej, ale również z samej istoty reprogramowalności. Jeden z kierunków takich aplikacji określa koncepcja produktu wirtualnego systemu, funkcji lub układu scalonego, które nie istnieją w rzeczywistości materialnej, ale mogą być potencjalnie w każdej chwili zrealizowane. Takie układy wirtualne mogą być zarówno gotowymi produktami o zmiennych funkcjach i właściwościach, jak również elastycznymi klockami, z których można konstruować większe systemy. Z punktu widzenia gotowego produktu wytwarzanego seryjnie możliwość modyfikacji i nadawania jego standardowej konstrukcji indywidualnie wyspecjalizowanych funkcji i parametrów stwarza wspaniałą perspektywę.
Podział układów logicznych Układy logiczne dzielimy na: - układy kombinacyjne, - układy sekwencyjne, - układy asynchroniczne, - układy synchroniczne.
Układ kombinacyjny Definicja Układem kombinacyjnym nazywamy taki układ cyfrowy, w którym stan wejśd jednoznacznie określa stan wyjśd układu. Układ sekwencyjny Definicja Układem sekwencyjnym nazywamy taki układ cyfrowy, w którym stan wyjśd zależy od stanu wejśd oraz od poprzednich stanów układu.
Układ asynchroniczny Definicja Układem asynchronicznym nazywamy taki układ cyfrowy, dla którego w dowolnym momencie jego działania stan wejśd oddziaływuje na stan wyjśd. Układ synchroniczny Definicja Układem synchronicznym nazywamy taki układ cyfrowy, dla którego stan wejśd wpływa na stan wyjśd jedynie w określonych odcinkach czasu pracy układu zwanych czasem czynnym, natomiast w pozostałych odcinkach czasu zwanych czasem martwym stan wejść nie wpływa na stan wyjść. Odcinki czasu czynnego i martwego wyznaczane są przez podanie specjalnego sygnału zegarowego zwanego także taktującym.
Sygnał taktujący
Oznaczenia wejśd zegarowych układów cyfrowych
Asynchroniczny przerzutnik RS Definicja Przerzutnikiem nazywamy układ cyfrowy pozwalający zapamiętad jeden bit informacji.
Synchroniczny przerzutnik D typu latach
Cyfrowe układy funkcjonalne
Rejestry Definicja Rejestrem nazywamy układ cyfrowy przeznaczony do krótkoterminowego przechowywania niewielkich ilości informacji lub do zamiany postaci informacji z równoległej na szeregową lub odwrotnie. Definicja Wejściem cyfrowym równoległym nazywamy takie wejście, które umożliwia wprowadzenie do układu cyfrowego wszystkich bitów słowa w jednym takcie zegarowym. Definicja Wejściem cyfrowym szeregowym nazywamy takie wejście, które umożliwia wprowadzenie do układu cyfrowego bit po bicie. Każdy bit jest wprowadzany w jednym takcie zegarowym. Uwaga: N-bitowe wejście równoległe jest n razy szybsze od wejścia szeregowego.
Rejestry dzielimy na następujące grupy: -PIPO (ang. parallel input, parallel output) rejestry z wejściem i wyjściem równoległym rejestry buforowe typu zatrzask, -SISO (ang. serial input, serial output) rejestry z wejściem i wyjściem szeregowym rejestry przesuwające, -SIPO (ang. serial input, parallel output) rejestry z wejściem szeregowym i wyjściem równoległym stosowane w układach USART lub UART, - PISO (ang. parallel input, serial output) rejestry z wejściem równoległym i wyjściem szeregowym stosowane w układach USART (ang. universal synchronous/asynchronous receiver/transmiter) lub UART.
Bramka trójstanowa
Zasada działania magistrali W systemach mikroprocesorowych istnieje koniecznośd zapewnienia komunikacji pomiędzy wieloma układami. Przykładami tych układów są: mikroprocesor, pamięd RAM, ROM i układy wejścia/wyjścia. Połączenie wielu układów metodą każdy z każdym doprowadziłoby do nadmiernego skomplikowania architektury komputera i jest praktycznie nierealne. Dlatego stosuje się sposób połączenia tych układów przy pomocy tak zwanej magistrali. Definicja Magistralą nazywamy zestaw linii oraz układów przełączających, łączących dwa lub więcej układów mogących byd nadajnikami lub odbiornikami informacji.
Zasada działania magistrali
Jednostka arytmetyczno logiczna Definicja Jednostką arytmetyczno-logiczną (ALU, ang. Arithmetic-Logic Unit) nazywamy uniwersalny układ cyfrowy przeznaczony do wykonywania operacji arytmetycznych i logicznych.
Budowa i działanie mikroprocesora
Oznaczenia: ALU jednostka arytmetyczno-logiczna IR rejestr rozkazów CU jednostka sterująca EU jednostka wykonawcza Dek dekoder rozkazów Budowę prostego mikroprocesora
Zadaniem jednostki wykonawczej EU ( ang. execution unit) jest przetwarzanie informacji, czyli wykonywanie wszelkich operacji arytmetycznych i logicznych. Rodzaj wykonywanych operacji zależy od wewnętrznych sygnałów sterujących wytwarzanych przez jednostkę sterującą CU (ang.control unit). W skład jednostki wykonawczej wchodzi jednostka arytmetyczno-logiczna oraz zestaw współpracujących z nią rejestrów. Informacją wejściową części wykonawczej są dane, zaś wyjściową wyniki. W skład jednostki sterującej CU wchodzą: rejestr rozkazów IR (ang. instruction register), dekoder rozkazów i układ sterowania. W rejestrze rozkazów przechowywany jest kod aktualnie wykonywanego rozkazu (instrukcji). Kody rozkazów pobierane są do rejestru rozkazów z pamięci. Ciąg rozkazów tworzy program wykonywany przez system. Po pobraniu z pamięci kod rozkazu jest dekodowany w dekoderze rozkazów. Zostaje rozpoznany rodzaj rozkazu i na jego podstawie układ sterowania wytwarza odpowiednie sygnały sterujące.
UKŁADY KONWERSJI KODÓW
Kody Kod - sposób reprezentacji sygnału cyfrowego za pomocą grupy sygnałów binarnych: Sygnał cyfrowy wektor bitowy Gdzie np. sygnał cyfrowy: znaki A..Z, a..z, 0..9, znaki specjalne, interpunkcyjne i in. - tzw. Kody alfanumeryczne; cyfra 0..9 - tzw. kody dwójkowo-dziesiętne; wartość całkowita z pewnego przedziału, np. <- 128,+127>; inne...
Klasyfikacje kodów n - długość słowa kodowego (liczba bitów wektora) P - pojemność kodu (liczba wszystkich dopuszczalnych kombinacji kodu) Kody zupełne i niezupełne P = 2 n kod zupełny P < 2 n kod niezupełny Kody systematyczne (np. naturalny kod binarny) i niesystematyczne (np. alfanumeryczne) Bardzo ważna klasa kodów systematycznych, kodujących liczby - kody wagowe: każda pozycja w słowie kodowym (bit) ma określoną i niezmienną wartość - tzw. wagę.
Np.. Np. 3-bitowy naturalny kod binarny (NKB): n=3 P = 8 = 2 n kod zupełny
Kody dwójkowo-dziesiętne Jak zakodować binarnie cyfry 0...9? P = 10 n = 4.. 10 - różnie dla różnych kodów. Najpopularniejsze (n = 4):
Kody o stałej liczbie jedynek: k z n W słowie n bitowym dokładnie k bitów jest równych 1 Jeśli k= 1 kod 1 z n" (zwany też kodem pierścieniowym, prostym). Dla kodów pierścieniowych P = n. Np. kod 1 z 4: 0001 0010 0100 1000
Kod pseudopierścieniowy (Johnsona) Systematyczny, ale niewagowy. P = 2n. Np. kod 4b (P = 8): 0000 0001 0011 0111 1111 1110 1100 1000
Kod Gray'a Zupełny kod niewagowy, w którym każde dwa kolejne słowa kodowe (także pierwsze i ostatnie) różnią się między sobą dokładnie jednym bitem.
Inne kody Detekcyjne i korekcyjne: transmisja i zapis danych, dodany nadmiar umożliwia wykrycie lub wykrycie i korekcję określonej klasy błędów; np. dodawanie bitu parzystości. Alfanumeryczne, np. kod ASCII (7-bitowy); w komputerach PC stosowany 8- bitowy tzw. kod ASCII rozszerzony (extended ASCII), znaki o kodach powyżej 127 bywają różne. Kody kompresji danych...
Układy konwersji kodów Podstawowa klasyfikacja: Enkoder (koder): kod WE jest kodem prostym ( 1 z n ). Dekoder: kod WY jest kodem prostym ( 1 z n ). Transkoder: żaden z kodów WE ani WY nie jest 1 z n. Enkoder priorytetowy: jeśli na WE zamiast kodu 1 z n pojawi się więcej niż jedna jedynka, ustalona ranga priorytetów WE decyduje, która z nich określa odpowiedź układu (np. najstarsza). Dekoder pełny: kod WE jest zupełny (czyli m = 2 n, gdzie n = liczba WE, m = liczba WY).
Np. układ scalony TTL 7442 - dekoder kodu BCD 8421 Dekoder niepełny.
Dekodery NKB Ang. k to - n decoders (2-to-4, 3-to-8 etc.) Dekodery 2 na 4 (a) postać kanoniczna (b) WY aktywne 0" (c) realizacja uproszczona
Dekodery 3 na 8 (a) postać kanoniczna (b) regularna struktura na 2WE bramkach iloczynu (+negacje zmiennych WE)
Dekodery 4 na 16
Dekodery 2 na 4 z sygnałem Enable
Kaskadowe łączenie dekoderów
Multipleksy i demultipleksy
1. MULTIPLEKSERY Realizacji funkcji boolowskiej
multipleksery
dekodery
dekodery
REJESTRY