TC Moduł 12

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
TC M12 Slajd1.png
Projektowanie układów cyfrowych cz. 1

TC M12 Slajd2.png
Kluczową rolę w projektowaniu układów cyfrowych (w szczególności przeznaczonych do realizacji w struk¬turach programowalnych) spełnia specjalny język specyfikacji sprzętu. Jest to tak zwany język HDL (Hardware Description Language). W najprostszym ujęciu język taki umożliwia wymianę informacji między konstruktorem, a komputerowym systemem projektowania i jest przeznaczony do tworzenia plików wejściowych specjalnego kompilatora, którego zadaniem jest przetłumaczenie pliku tekstowego napisanego w danym języku na mapę punktów programowania dla docelowego przyrządu FPLD.

Istnieje wiele języków HDL, mających różne właściwości i umożliwiających realizację różnych zadań. Niektóre z nich pochodzą od języków programowania. Na przykład język VHDL opracowano na podstawie języka ADA, jednak ze względu na naturę układów cyfrowych języki te różnią się wyraźnie od powszechnie używanych języków programowania.

Obecnie panuje tendencja do wyposażania komputerowych systemów projektowania dla struktur FPLD w kompilatory różnych języków HDL, przy czym najczęściej stosowany jest język specjalizowany (przeznaczony do produktów jednej firmy, np. AHDL firmy Altera) oraz język VHDL lub Verilog (spełniające rolę języka ogólnego przeznaczenia).


TC M12 Slajd3.png
Język AHDL (Altera Hardware Description Language) jest strukturalnym językiem wysokiego poziomu dostosowanym do opisu układów cyfrowych w środowiskach systemów projektowania firmy Altera (MAX+PLUS II, Quartus).

Istotnymi cechami, które decydują o jakości tego języka są możliwości konstruowania projektów hierarchicznych za pomocą składni AHDL lub łączenia kilku specyfikacji AHDL ze zbiorami projektowymi innych typów w jeden projekt na wyższym poziomie hierarchii. Projekty zapisane w AHDL mogą być włączane w większe projekty hierarchiczne, tworzone na poziomie strukturalnej specyfikacji graficznej. W podobny sposób można włączać do zbiorów AHDL dowolne własne funkcje i projekty oraz wiele standardowych makrofunkcji i megafunkcji, zawartych w bibliotekach systemu projektowania.



TC M12 Slajd4.png
Elementy leksykalne i syntaktyka języka AHDL pozwalają tworzyć wystarczająco złożone specyfikacje układów cyfrowych. Są one zapisywane do pliku wejściowego TDF (Text Design File) za pośrednictwem wbudowanego edytora. Plik TDF rozpoczyna słowo kluczowe SUBDESIGN. Nazwa następująca bezpośrednio za słowem SUBDESIGN jest nazwą pliku, w którym tworzona specyfikacja jest (lub będzie) zapisana.

TC M12 Slajd5.png
Najprostsza struktura pliku wejściowego obejmuje następu¬jące sekcje:

sekcja deklaracji (SUBDESIGN SECTION), sekcja zmiennych (VARIABLE SECTION) oraz Sekcja Logiczna (LOGIC SECTION). Sekcja deklaracji oraz sekcja logiczna muszą występować w każdym projekcie, sekcja zmiennych jest opcjonalna.


TC M12 Slajd6.png
Sekcja deklaracji opisuje interfejs urządzenia czyli służy do deklarowania wejść, wyjść i portów dwukierunkowych.

Sekcja logiczna służy do określania operacji logicznych w zbiorze TDF. Operacje te definiuje się za pomocą równań boolowskich, warunków logicznych i tablic prawdy. Mówiąc poglądowo sekcja logiczna opisuje działanie lub strukturę urządzenia.



TC M12 Slajd7.png
Sposób specyfikacji układów cyfrowych w języku opisu sprzętu przyjęło się klasyfikować jako tzw. style projektowania. Wyróżnia się styl behawioralny, strukturalny oraz przepływ danych.

TC M12 Slajd8.png
Elementami strukturalnymi języków HDL stosowanymi w opisie układów cyfrowych są przede wszystkim słowa kluczowe, równania, tablice, instrukcje itp.

TC M12 Slajd9.png
Słowa kluczowe w języku AHDL są typowe dla firmowych języków opisu sprzętu. Są one używane na przykład do określania początku i końca deklaracji i sekcji pliku specyfikacji, do tworzenia instrukcji (np. IF, CASE) lub stanowią polecenia dla procesu kompilacji (np. INCLUDE).

TC M12 Slajd10.png
Oprócz słów kluczowych niezbędne do opisu układów cyfrowych są identyfikatory umożliwiające wprowadzanie nazw własnych. Sposób tworzenia identyfikatorów jest określony pewnymi zasadami. Przykłady tworzenia identyfikatorów dla języka AHDL podane są na planszy.

TC M12 Slajd11.png
Specyfikację ułatwiają (czyli upraszczają zapisy) różnego rodzaju symbole. W języku AHDL szczególnie wygodne są: symbole umożliwiające tworzenie grup sygnałów oraz tzw. rozszerzenie kropkowe stosowane przy opisywaniu różnych wyprowadzeń tego samego modułu.

TC M12 Slajd12.png
Liczby w AHDL są zapisywane ciągami cyfr ograniczonych cudzysłowem i poprze¬dzonych odpowiednim prefiksem. Stosowane są systemy zapisu:
  • dziesiętny (Decimal),
  • binarny (Binary),
  • oktalny (Octal),
  • heksadecymalny (Hexadecimal).

TC M12 Slajd13.png
Sygnały grupowe są zbiorami zmiennych lub stałych, na których przeprowadza się operacje tak jak na pojedynczych obiektach. Każda operacja przeprowadzana na zbiorze oznacza przeprowadzenie takiej samej operacji na każdym z jego elementów. Sygnały grupowe upraszczają zarówno zapisy specyfikacji jak też zapisy wektorów testujących poprzez możliwość odnoszenia się do grupy zmiennych, jak do pojedynczego obiektu.

TC M12 Slajd14.png
W języku AHDL sygnały grupowe są zapisywane dwoma sposobami. W pierwszym z nich sygnał grupowy jest złożony z nazwy i operatora zakresu, a w drugim z listy identyfikatorów. Na przykład zapisy: oraz oznaczają zbiory sygnałów .

W drugim sposobie podaje się listę identyfikatorów ograniczonych nawiasami i oddzielanych przecinkami:(a,b,c);(a,b,c[5..1]); reg.(d,clk,clrn,prn). Jak widać, oba zapisy mogą występować wspólnie w jednej deklaracji, jak też sygnał grupowy może być stosowany w rozszerzeniach nazw obiektów, w których jest dopuszczalne stosowanie wspólnej nazwy (wyróżnionej rozszerzeniem). W wielu przypadkach zapisy te są równoważne. Na przykład: b[4..0], b[] oraz (b4,b3,b2,b1,b0) oznaczają te same zbiory sygnałów.


TC M12 Slajd15.png
Podstawową konstrukcją do specyfikacji układów cyfrowych w języku AHDL są równania boolowskie. W równaniu występuje identyfikator, symbol przypisania oraz wyrażenie boolowskie.



TC M12 Slajd16.png
AHDL posługuje się typowymi operatorami logicznymi, oznaczanymi symbolami lub słowami kluczowymi. Jednak ich zastosowanie jest istotnie wzbogacone przez możliwość używania sygnałów grupowych. Podane przykłady wyjaśniają interpretację operacji logicznych na sygnałach grupowych.

TC M12 Slajd17.png
Do opisu działania typowych układów cyfrowych często stosowane są operatory arytmetyczne i relacyjne.

TC M12 Slajd18.png
Podstawowe operatory arytmetyczne (suma, różnica), a także operatory relacyjne ułatwiają zapisy skomplikowanych wyrażeń boolowskich zgodnie z zasadami sygnałów predykatowych i „symboli logicznych”.

TC M12 Slajd19.png
Typowe zastosowanie równań to specyfikacje układów logicznych zbudowanych z bramek. Rysunek na planszy przedstawia prosty układ kombinacyjny. Układ ten zapisany jest w języku AHDL w projekcie komb.

TC M12 Slajd20.png
Specyfikacje wielopoziomowych układów kombinacyjnych można upraszczać stosując węzły deklarowane jako zmienne wewnętrzne. Układ kombinacyjny z poprzedniej planszy można – po zastosowaniu węzła jako zmiennej wewnętrznej – opisać prościej.

TC M12 Slajd21.png
Dużym ułatwieniem w specyfikacjach układów jest możliwość stosowania sygnałów grupowych w wyrażeniach boolowskich. W przykładzie podanym na planszy sygnał grupowy pozwala zapisać 4 wyrażenia boolowskie w postaci jednego.

TC M12 Slajd22.png
Najłatwiejszym sposobem tworzenia układów, dla których możemy jednoznacznie określić odpowiedzi na zadane wektory wejściowe, jest użycie tablic prawdy (Truth Table). Tablica w języku AHDL jest zapisywana w formie sekcji rozpoczynającej się od słowa kluczowego TABLE. Nagłówek umieszczony w następnym wierszu zawiera listę sygnałów wejściowych, separator (=>) oraz listę sygnałów wyjściowych. Poszczególne sygnały listy (również grupowe) są oddzielane przecinkami. W następnych wierszach – zgodnie z kolejnością ustaloną w nagłówku – są podawane wartości sygnałów wejściowych i wyjściowych. Wejścia i wyjścia są oddzielone znakiem strzałki (=>). Dopuszcza się specyfikację z uwzględnieniem wartości nieokreślonych (don’t care), oznaczonych symbolem X. Specyfikację tablicy kończą słowa kluczowe END TABLE.

TC M12 Slajd23.png
Instrukcja warunkowa IF i wyboru CASE pozwalają definiować różne zachowania ukła¬du w zależności od warunków logicznych, któ¬rych argumentami są sygnały wejściowe.

Instrukcja IF THEN reprezentuje listę deklaracji wykonywanych w zależności od wartości logicznej wyrażenia boolowskiego (CONDITION) zapisywanego między słowami IF oraz THEN.



TC M12 Slajd24.png
Analogiczną rolę jak instrukcja IF THEN spełnia wyrażenie warunkowe.

TC M12 Slajd25.png
Instrukcja CASE reprezentuje listę wykluczających się deklaracji wykonywanych w zależności od wartości zmiennej występującej po klauzuli CASE.

TC M12 Slajd26.png
Doskonałym przykładem ilustrującym specyfikacje układów kombinacyjnych z zastosowaniem instrukcji IF THEN oraz CASE jest koder priorytetowy opisany tablicą prawdy podaną na planszy.

TC M12 Slajd27.png
Specyfikacja kodera instrukcją IF THEN jest wygodna o tyle, że wykorzystuje ona naturalne własności kodera, a mianowicie priorytet sygnału , następnie nad pozostałymi.

TC M12 Slajd28.png
Jak widać specyfikacja instrukcją CASE jest w przypadku kodera nieco bardziej skomplikowana, gdyż nie pozwala ona na naturalne wykorzystanie priorytetu. Trzeba zatem wyliczać wszystkie możliwe wartości słów wejściowych i wyjściowych.

TC M12 Slajd29.png
Przerzutniki deklaruje się jako zmienne typu np. DFF, DFFE, JKFF, SRFF. Formalnie każdy przerzutnik jest obiektem, którego wejścia i wyjścia (wejścia informacyjne D, T, JK, SR, wejście zegarowe CLK, wejście zezwolenia ENA i wyjście Q) są obejmowane wspólną nazwą z rozszerzeniem określającym rodzaj wejścia.

TC M12 Slajd30.png
Z punktu widzenia układów logicznych do realizacji automatu wystarcza podać diagram stanów (graf automatu) i skonstruować tablicę przejść-wyjść. Na poziomie języka HDL tablica przejść-wyjść jest reprezentowana specyfikacją automatu, na podstawie której kompilator automatycznie wykona wszystkie czynności związane z syntezą.

Automaty tworzy się deklarując ich nazwę oraz nazwy i kody stanów. Kodowanie stanów nie jest jednak konieczne; można podać jedynie ich listę, a kompilator automatycznie zakoduje stany i wybierze odpowiedni typ przerzutnika do ich realizacji. Do pełnego opisu jest niezbędna specyfikacja działania automatu oraz określenie sygnałów sterujących dla przerzutników: Reset, Clock, Enable. Sygnały te definiuje się podobnie jak w przypadku pojedynczych przerzutników, tj. posługując się identyfikatorem z rozsze¬rzeniem. Działanie automatu (czyli jego tablicę przejść oraz wyjść) można opisać kilkoma sposobami, wykorzystując instrukcje typu IF, CASE lub opis tablicowy (TABLE).



TC M12 Slajd31.png
Zasady specyfikacji układów sekwencyjnych omówimy na przykładzie prostego automatu, którego graf i tablica przejść wyjść jest podana na planszy. Automat ma dodatkowy sygnał reset. Sygnał ten sprowadza automat do stanu początkowego. Stan początkowy automatów koduje się słowem .

TC M12 Slajd32.png
W specyfikacji automatu należy wyróżnić istotne fragmenty: deklarację automatu, przypisanie sygnału zegarowego i reset, opisanie przejść między stanami, opisanie wyjść. Zauważmy specjalny zapis w deklaracji automatu: MACHINE WITH STATES oraz wygodny zapis wejść sterujących (w tym zegarowego) za pośrednictwem tzw. rozszerzenia kropkowego. Przejścia między stanami opisuje się instrukcjami CASE oraz IF THEN ELSE.

TC M12 Slajd33.png
Po procesie kompilacji działanie automatu można zaobserwować na wykresach czasowych symulatora.

TC M12 Slajd34.png
W podobny sposób opisuje się działanie automatu w innych językach HDL w szczególności w języku VHDL oraz Verilog. Jakkolwiek ograniczony zakres wykładu uniemożliwia omówienie zasad specyfikacji tych języków, to dla pokazania podobieństw w specyfikacji automatu, na planszy niniejszej podajemy specyfikację naszego przykładowego automatu w języku VHDL, a na następnej w języku Verilog.

Dla specyfikacji w języku VHDL można zauważyć rozbudowany sposób deklaracji, za pomocą słów kluczowych TYPE i SIGNAL oraz brak opisu sterowania przerzutnikami.



TC M12 Slajd35.png
W języku Verilog deklaracja automatu jest prostsza, ale brak informacji dotyczącej przerzutników jest również charakterystyczny.

TC M12 Slajd36.png
Sytuacja taka jest zrozumiała o tyle, że język AHDL jest językiem firmowym, a więc związanym z konkretnymi układami programowalnymi (jednej firmy), zatem specyfikacje mogą być „bliższe sprzętu”. Natomiast w językach uniwersalnych opis jest bardziej abstrakcyjny. Mówiąc poglądowo – więcej pracy wykonuje kompilator. Porównanie opisów automatu w tych trzech językach w pełni potwierdza taką sytuację. Warto o tym pamiętać, aby nie denerwować się w sytuacjach, gdy specyfikacja w „lepszym” języku doprowadzi do „gorszej” realizacji projektowanego układu.

TC M12 Slajd37.png
Jest bardzo wiele systemów projektowania układów cyfrowych przeznaczonych do realizacji w strukturach programowalnych. Do najpopularniejszych (również w Polsce) należy zaliczyć systemy firm amerykańskich Altera oraz Xilinx, a mianowicie Quartus oraz ISE Foundation. Trzy następne plansze pozwolą nam umiejscowić zdobytą do tej pory wiedzę w bardziej praktycznym ujęciu.

TC M12 Slajd38.png
Otóż w komputerowych narzędziach projektowania specyfikację układu zapisuje się w edytorze tekstowym. Następnie, po wprowadzeniu odpowiednich opcji kompilacji (np. dotyczących wyboru docelowej struktury programowalnej).

TC M12 Slajd39.png
system dokona kompilacji, w ramach której wykonane zostaną wszystkie czynności związane z translacją wprowadzonej specyfikacji na poziom logiczny oraz odwzorowaniem technologicznym.

TC M12 Slajd40.png
Po pomyślnym zakończeniu procesu kompilacji (o czym użytkownik będzie powiadomiony odpowiednim komunikatem) dokonuje się weryfikacji projektu obserwując jego działanie na wykresach czasowych symulatora.