Elementy języka VHDL

Podobne dokumenty
Instrukcje sekwencyjne

Układy reprogramowalne i SoC Język VHDL (część 4)

Modelowanie złożonych układów cyfrowych (1)

Projektowanie automatów z użyciem VHDL

Sposoby projektowania systemów w cyfrowych

Języki opisu sprzętu VHDL Mariusz Rawski

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Projektowanie w VHDL

Elementy języka VHDL. obiekty typy danych atrybuty pakiety i biblioteki instrukcje współbieżne instrukcje sekwencyjne. PUE-w3 1

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

Projektowanie hierarchiczne Mariusz Rawski

WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH

VHDL cz.1. Rafał Walkowiak IIn PP Wer

Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3.

VHLD Very High Speed Integrated Circuit (VHSIC) Hardware Description Language (VHDL)

Specyfika projektowania Mariusz Rawski

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

Technika cyfrowa projekt: Sumator 4 bitowy równoległy

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File

VHDL cz.1. Rafał Walkowiak IIn PP Wer

Projekt prostego procesora

Projektowanie Urządzeń Cyfrowych

Programowalne układy logiczne

AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości

Język VHDL podstawy Mariusz Rawski

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

Krótkie wprowadzenie do ModelSim i Quartus2

Realizacja algorytmu wyznaczania wyrazów ciągu w języku VHDL z zastosowaniem podziału projektu na moduły: FSM i Data Path.

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Synteza logiczna. Rajda & Kasperek 2015 Katedra Elektroniki AGH 1

Układy reprogramowalne i SoC Język VHDL (część 5)

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Układy reprogramowalne i SoC Język VHDL (część 2)

Programowalne układy logiczne

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Systemy Czasu Rzeczywistego FPGA

Realizacja logiki kombinacyjnej Mariusz Rawski

Układy reprogramowalne i SoC Język VHDL (część 3)

Układy reprogramowalne i SoC Implementacja w układach FPGA

VHDL. Zebrał i opracował R.Walkowiak PTC wykład 2013/2014

PUCY Kolos 2: Reloaded

LABORATORIUM OPTOELEKTRONIKA I SENSORYKA Oprogramowanie bariery podczerwieni w układzie CPLD

1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench)

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

LABORATORIUM ELEKTRONIKA Projektowanie koderów, transkoderów i dekoderów w języku VHDL

Systemy Czasu Rzeczywistego FPGA

XC4000: LUT jako ROM Układy Cyfrowe i Systemy Wbudowane 2 Układy FPGA cz. 2 ROM32X1 VHDL inference example ROM 16x2b type

Układy asynchroniczne

Język opisu sprzętu VHDL

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

Projektowanie scalonych systemów wbudowanych VERILOG. VERLIOG - historia

Kurs języka VHDL Very High (Speed Integrated Circuits) Description Language

Programowanie sterowników przemysłowych / Jerzy Kasprzyk. wyd. 2 1 dodr. (PWN). Warszawa, Spis treści

System cyfrowy. Układ sterujący (kontroler) Układ operacyjny (Datapath) Mikrooperacje wywoływane przez sygnały sterujące.

Synteza strukturalna

Systemy Czasu Rzeczywistego FPGA

Układy logiczne układy cyfrowe

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYNTEZA UKŁADÓW CYFROWYCH ES2D100005

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Zaawansowany VHDL. Rajda & Kasperek 2014 Katedra Elektroniki AGH 2

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

VHDL. Behawioralny Strukturalny Czasowy. Poziom RTL

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Zaawansowany VHDL. Rajda & Kasperek 2015 Katedra Elektroniki AGH 1

Sterowniki Programowalne (SP)

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. Automaty stanów

Projektowanie systemów cyfrowych w językach opisu sprzętu. Studium Zaoczne IV rok kierunek Elektronika i Telekomunikacja. Wykład 2

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Projektowanie hierarchiczne Mariusz Rawski

Układy reprogramowalne i SoC Testbenches. Symulacja sterowana zdarzeniami.

DOKUMENTACJA PROJEKTU

Programowanie Układów Logicznych kod kursu: ETD6203. VHDL, ISE WebPACK, Plan Ahead, Impact W

Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza

Rok akademicki: 2013/2014 Kod: JIS s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Układy reprogramowalne i SoC Język VHDL (część 1)

Technika Cyfrowa. Wprowadzenie do laboratorium komputerowego część II

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Opisy efektów kształcenia dla modułu

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Podstawy techniki cyfrowej zima 2015 Rafał Walkowiak

Synteza logiczna APSC

Wyświetlacz siedmiosegmentowy

Język AHDL. Synteza strukturalna. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska H D L

Układy Cyfrowe laboratorium

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Bloki anonimowe w PL/SQL

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

CZ1. Optymalizacja funkcji przełączających

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Laboratorium przedmiotu Technika Cyfrowa

Programowanie obiektowe

Podstawy programowania skrót z wykładów:

Architektura komputerów Wykład 2

Układy logiczne układy cyfrowe

Sumatory H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH Wydziałowy Zakład Metrologii Mikro- i Nanostruktur SEMESTR LETNI 2016

Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne

Transkrypt:

Elementy języka VHDL Języki opisu sprzętu: Firmowe - stosowane wyłącznie w systemach danej firmy (AHDL, ABEL) Uniwersalne - stosowane coraz powszechniej w różnych systemach, równolegle z językami firmowymi (VHDL, Verilog) Najpopularniejszym i z opracowanym standardem jest - VHDL Z 1

Język VHDL Very high speed integrated circuit Hardware Description Language (VHDL) przemysłowy standard języka HDL Kolejne wersje normy EEE Std 1076: 1987, 1993 owszechnie stosowany w specyfikacjach układów cyfrowego przetwarzania sygnałów: Z 2

Język VHDL Zawiera użyteczne konstrukcje semantyczne umożliwiające zwięzłą specyfikację złożonych układów cyfrowych rojekt może być opisany hierarchicznie (na wielu poziomach) Możliwe jest korzystanie z biblioteki gotowych elementów i tworzenie podukładów (tzw. komponentów) Z 3

Jednostka projektowa DESGN ENY ENY DECLARAON Deklaracji jednostki EJŚCE/YJŚCE ARAMERY ARCHECURE BODY Blok architektury FUNKCJE DZAŁANE JEDNOSKA ROJEKOA reprezentuje fragment układu cyfrowego; ma dobrze zdefiniowane wejścia i wyjścia; spełnia ściśle określoną funkcję Może mieć dowolny stopień złożoności od prostej bramki do systemu!!! Z 4

Specyfikacja jednostki Halfadd: Deklaracje e/y entity HALFADD is port (A,B : in bit; SUM, CARRY : out bit); end HALFADD; A B A B SUM CARRY o samo co w pliku halfadd.vhd architecture BEHAVE of HALFADD is begin SUM <= A xor B; CARRY <= A and B; end BEHAVE; Specyfikacja logiczna Sekcja specyfikacji e same nazwy Z 5

Jednostka projektowa języka VHDL entity Komunikacja z otoczeniem architecture architecture architecture Działanie układu Z 6

Deklaracja jednostki A B SUM CARRY entity HALFADD is port (A,B : in bit; SUM, CARRY : out bit); end HALFADD; Komunikacja z otoczeniem Deklaracja wyprowadze : nazwy sygnałów tryby typy danych Z 7

ryby wyprowadzeń entity HALFADD is ryby port (A,B : in bit; SUM, CARRY : out bit); end HALFADD; ryby portu in -wejściowy out -wyjściowy inout - dwukierunkowy buffer -wyjściowy z możliwością odczytu Z 8

ryby wyprowadzeń n ryb ryb Out Buffer n n nout Out Z 9

yp danych entity HALFADD is yp danych port (A,B : in bit; SUM, CARRY : out bit); end HALFADD; ypy danych: bit, bit_vector, integer, Boolean Z 10

Blok architektury A Działanie lub SUM architecture BEHAVE of HALFADD is begin B budowa CARRY SUM <= A xor B; CARRY <= A and B; end BEHAVE; Architektura opisuje sposób działania jednostki (entity) lub jej budowę (strukturę). VHDL wyraźnie odróżnia opis działania od opisu struktury Style specyfikacji funkcjonalny (behavioralny) przepływ danych (dataflow) strukturalny Z 11

Style specyfikacji behavioralny Specyfikowane jest dzia anie uk adu bez podania szczegó ów realizacyjnych przepływ danych (dataflow) 5 8 5489,. 9 3897:. 57 5 8,3,70570 0394,3. 7, 03,2 4. 3 2 strukturalny Specyfikowana jest budowa układu. opisie podane są komponenty oraz połączenia między nimi. Z 12

Deklaracja jednostki entity nazwa_jednostki is deklaracja parametrów ogólnych: generic (lista) deklaracja wyprowadzeń: port (lista) end nazwa_jednostki; aramery ogólne (generics) umożliwiają projektowanie parametryzowanych wzorców układów Z 13

Blok architektury architecture nazwa_arch of nazwa_jednostki is begin Definicje i deklaracje: (typów, podtypów, stałych, sygnałów, komponentów, konfiguracji) instrukcje przypisania procesy (instrukcje sekwencyjne) komponenty end nazwa_arch; Z 14

Moduły systemowe wspomagające specyfikację dost pne dla wielu jednostek projektowych to biblioteki i pakiety. akiet jest modułem do deklarowania i definiowania obiektów danych, typów, komponentów, funkcji i procedur przeznaczonych do stosowania w wielu jednostkach projektowych. Biblioteka to zbiór zanalizowanych pakietów i jednostek projektowych przechowywanych w danym systemie operacyjnym i dostępnych bezpośrednio wg nazwy logicznej (nie jest to nazwa katalogu w tym systemie). Z 15

Dostęp do biblioteki i jej pakietów Dostęp do pakietu osiąga się deklaracją: LBRARY library_name; USE library_name.package_name.all; Biblioteka systemowa EEE Z 16

Biblioteka systemowa EEE EEE to najważniejsza biblioteka zawierająca pakiety ze standardowymi typami danych. Odwołanie do tej biblioteki a także polecenie use umożliwiające dostęp do standardowego pakietu: Std_Logic_1164 musi poprzedzać każdą jednostkę projektową. LBRARY EEE; use EEE.Std_Logic_1164.all; Z 17

Elementy strukturalne języka VHDL Słowa kluczowe dentyfikatory Obiekty danych Operatory Atrybuty nstrukcje Z 18

Obiekty danych Dane liczbowe i alfanumeryczne są przechowywane w obiektach danych. Z punktu widzenia syntezy wyróżnia się trzy klasy obiektów: sygnał signal zmienne variable stałe constant Klasa deklarowana jest przed nazwą obiektu np.: signal s1, s2 : bit; variable u: integer range 0 to 127; Z Odpowiednikiem sprzętowym sygnału jest ścieżka w układzie scalonym. Zmienna nie ma odpowiednika sprzętowego i służy do obliczeń na wyższym poziomie abstrakcji. 19

ojęcie typu danych Język VHDL jest silnie zorientowany na typy danych. Każdy obiekt musi mieć zdefiniowany typ i może przechowywać dane tylko tego typu. signal signal_name : type_name ; variable nazwa_zm: typ_zm [ograniczenia] constant nazwa : typ := wartość; rzy operacji przypisania sygnałów, typy danych po każdej stronie operatora przypisania muszą być zgodne Z 20

ypy danych yróżnia się 10 typów danych: B, B_VECOR, SD_LOGC, SD_LOGC_VECOR, (SD_ULOGC), SGNED, UNSGNED, NEGER, ENUMERAON, BOOLEAN Z 21

Standardowe typy danych SD_LOGC, SD_LOGC_VECOR LBRARY EEE; use EEE.Std_Logic_1164.all; SD_LOGC: 0, 1, Z,, L, H, U, X, SD_LOGC_VECOR jest tablicą obiektów z SD_LOGC Z 22

Atrybuty Dostarczaj dodatkowych informacji o obiektach (np.. sygnałach, zmiennych, typach lub komponentach) Składnia obiekt atrybut[(parametr)]; Najczęściej stosowany atrubut: event równy RUE, gdy zachodzi zmiana wartości sygnału, f Clock event and Clock = 1 then Q := D; Z 23

nstrukcje SÓƒBE NE SEKENCYJNE spółbie ne (Concurrent assignment statement) Sekwencyjne (Sequential assignment statement) Z 24

nstrukcje spółbie ne: Zachowanie układu jest niezale ne od kolejności instrukcji przyporz dkowania sygnałów. Stosowane w specyfikacji typu przepływ danych (dataflow description). Z Sekwencyjne: nstrukcje sekwencyjne s stosowane w specyfikacji behawioralnej (behavioral description). rzede wszystkim w tzw. procesach (process). orządek zapisu instrukcji sekwencyjnych zmienia działanie układu. 25

spółbieżne instrukcje przypisania sygnału (Concurrent Signal Assignment Statements) podstawowe przypisanie do sygnału (simple signal assignment statement) warunkowe przypisanie do sygnału (conditional signal assignmenet statement) selektywne przypisanie do sygnału (selected signal assignment statement) when else with select Z 26

nstrukcja podstawowa Składnia: signal_name <= wyra enie; boolowskie lub arytmetyczne ypowe zastosowanie: Realizacje układów kombinacyjnych Z 27

a b c d MUX y rzykład MUX 4:1 y = s1 s0a + s1s 0b + s1s 0c + s1s 0d S S 1 0 library ieee; use ieee.std_logic_1164.all; entity mux is port ( a, b, c, d : in std_logic ; s: in std_logic_vector (1 downto 0) ; y: out std_logic ) ; end mux; Z 28

rzykład MUX 4:1 library ieee; use ieee.std_logic_1164.all; entity mux is port ( a b c d MUX y a, b, c, d : in std_logic ; s: in std_logic_vector (1 downto 0) ; S S 1 0 x: out std_logic ) ; end mux; architecture archmux of mux is begin x <= (a and not(s(1)) and not(s(0))) or (b and not(s(1)) and (s(0)) or (c and (s(1) and not(s(0))) or (d and (s(1) and (s(0)); end archmux; Z 29

library ieee; rzykład MUX grupowy 4:1 use ieee.std_logic_1164.all; entity mux is port ( a, b, c, d : in std_logic ; s: in std_logic_vector (1 downto 0) ; x: out std_logic ) ; a b c d MUX S S 1 0 y end mux; a = (a3,a2,a1,a0) b = (b3,b2,b1,b0).. y = (y3,y2,y1,y0) Z 30

rzykład MUX grupowy 4:1 Z architecture archmux of mux is begin x (3) <= (a(3) and not(s(1)) and not(s(0))) or (b(3) and not(s(1)) and (s(0)) or (c(3) and (s(1) and not(s(0))) or (d(3) and (s(1) and (s(0)); x (2) <= (a(2) and not(s(1)) and not(s(0))) or (b(2) and not(s(1)) and (s(0)) or (c(2) and (s(1) and not(s(0))) or (d(2) and (s(1) and (s(0)); x (1) <= (a(1) and not(s(1)) and not(s(0))) or (b(1) and not(s(1)) and (s(0)) or (c(1) and (s(1) and not(s(0))) or (d(1) and (s(1) and (s(0)); x (0) <= (a(0) and not(s(1)) and not(s(0))) or (b(0) and not(s(1)) and (s(0)) or (c(0) and (s(1) and not(s(0))) or (d(0) and (s(1) and (s(0)); end archmux; 31

nstrukcja warunkowa - when-else Składnia: yrażenie boolowskie signal_name <= value_a when condition1 else value_b when condition2 else value_c when condition3 else... value_x; Z 32

rzykład MUX 4:1 library ieee; use ieee.std_logic_1164.all; entity mux is port ( a, b, c, d : in std_logic ; std_logic_vector (3 downto 0); s: in std_logic_vector (1 downto 0) ; y: out std_logic ) ; std_logic_vector (3 downto 0)); end mux; architecture archmux of mux is begin y <= a when (s = 00 ) else b when (s = 01 ) else c when (s = 10 ) else d; end archmux; Dla uzyskania MUX grupowego wystarczy zmienić tylko typ zmiennych w deklaracji Z 33

nstrukcja selektywna - with-select Składnia: Zmienna wielowartościowa with sel_sig select signal_name <= value_a when value1_of_sel_sig, value_b when value2_of_sel_sig, value_c when value3_of_sel_sig,... value_x when last_value_of_sel_sig; rzykładzik: Można określać kilka wartości lub zakres artości nie mogą się powtarzać with N_A select Z <= A when 0, B when 1 to 3, C when 4 6 8, D when others; Z 34

rzykład MUX 4:1 library ieee; use ieee.std_logic_1164.all; entity mux is port ( end mux; a, b, c, d : in std_logic ; s: in std_logic_vector (1 downto 0) ; y: out std_logic ) ; architecture archmux of mux is begin with s select y <= a when 00, b when 01, c when 10, d when others; end archmux; std_logic_vector (3 downto 0); std_logic_vector (3 downto 0)); Dla uzyskania MUX grupowego wystarczy zmienić tylko typ zmiennych w deklaracji Z 35

Ostrzeżenie przed pochopnym wnioskiem Można podać wiele przykładów, w których zastosowanie instrukcji podstawowej prowadzi do znacznie lepszej implementacji Jednym z nich jest komparator Z 36

Komparator A B n n K 1 z 3 A < B A = B A > B Z 37

Komparator a 3 b 3 i 3 A = a 3 a 2 a 1 a 0 B = b 3 b 2 b 1 b 0 i k = a k b k a 2 b 2 i 2 a 1 b 1 i 1 A eq B = i 3 i 2 i 1 i 0 a 0 b 0 i 0 A < B = A eq B+ A gt B A > B = a 3 + i b 3 3 i 2 + i a 1 3 b a 1 2 b 2 + i 3 i + 2 i 1 a 0 b 0 Z 38

Komparator wersja 1 LBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENY compare_8bit S OR (A, B: N SD_LOGC_VECOR(7 DONO 0); AeqB, AgtB, AltB: OU SD_LOGC ); END compare_8bit; ARCHECURE Behavior OF compare_8bit S BEGN AeqB <= '1' HEN A = B ELSE '0'; AgtB <= '1' HEN A > B ELSE '0'; AltB <= '1' HEN A < B ELSE '0'; END Behavior; Z 39

Komparator wersja 2 LBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENY compare_2_8bit S OR (a7,a6,a5,a4,a3,a2,a1,a0: N SD_LOGC; b7,b6,b5,b4,b3,b2,b1,b0: N SD_LOGC; AeqB, AgtB, AltB: OU SD_LOGC); END compare_2_8bit; Z ARCHECURE Behavior OF compare_2_8bit S SGNAL i7,i6,i5,i4,i3,i2,i1,i0: SD_LOGC; SGNAL AequalB,AgreaterB,AlesserB: SD_LOGC; BEGN i7 <= NO (a7 XOR b7); i6 <= NO (a6 XOR b6); i5 <= NO (a5 XOR b5); i4 <= NO (a4 XOR b4); i3 <= NO (a3 XOR b3); i2 <= NO (a2 XOR b2); i1 <= NO (a1 XOR b1); i0 <= NO (a0 XOR b0); 40

Komparator wersja 2 c.d. AequalB <= i7 AND i6 AND i5 AND i4 AND i3 AND i2 AND i1 AND i0; AgreaterB <= (a7 AND (not b7)) OR (i7 AND a6 AND (not b6)) OR (i7 AND i6 AND a5 AND (not b5)) OR (i7 AND i6 AND i5 AND a4 AND (not b4)) OR (i7 AND i6 AND i5 AND i4 AND a3 AND (not b3)) OR (i7 AND i6 AND i5 AND i4 AND i3 AND a2 AND (not b2)) OR (i7 AND i6 AND i5 AND i4 AND i3 AND i2 AND a1 AND (not b1)) OR (i7 AND i6 AND i5 AND i4 AND i3 AND i2 AND i1 AND a0 AND (not b0)); AlesserB <= NO (AequalB OR AgreaterB); AeqB <= AequalB; AgtB <= AgreaterB; AltB <= AlesserB; END Behavior; Z 41

Realizacje komparatora ersja 1: MAX 7000: 48 makrokomórek, 27 expanderów FLEX: 20 komórek ersja 2: MAX 7000: 32 makrokomórki, 15 expanderów FLEX: 13 komórek Specyfikacja za pomocą instrukcji podstawowej prowadzi do dużo lepszej implementacji!!! Z 42

nstrukcje sekwencyjne nstrukcje sekwencyjne są stosowane w specyfikacji behawioralnej (behavioral description) rzede wszystkim w tzw. procesach (process) roces nstrukcja F nstrukcja CASE Z 43

roces Name :ROCESS (sensitivity_list) BEGN nstrukcja sekwencyjna #1 nstrukcja sekwencyjna #2... nstrukcja sekwencyjna # N END ROCESS name; Składnia: rocess ( ) begin.. end process Lista czułości nstrukcje sekwencyjne są wykonywane kolejno jedna po drugiej Etykieta jest opcjonalna Z 44

rocesy Konstrukcja wykonywana równolegle ystępuje wewnątrz architektury Zawiera opis behawioralny nstrukcje wewnętrzne wykonywane są sekwencyjnie Zawiera: listę czułości (ang. sensitivity list); jest to lista sygnałów, których zmiana powoduje aktywację procesu Z 45

nstrukcja warunkowa if then else Jest to instrukcja sekwencyjna Część elsif może wystąpić dowolną liczbę razy Część else nie musi wystąpić Może być zagnieżdżana Składnia: if warunek then sekwencja_instrukcji1 {elsif warunek then sekwencja_instrukcji2 } [else sekwencja_instrukcji3] end if ; Z 46

nstrukcja wyboru - case nstrukcja sekwencyjna odobna do instrukcji with select Można określać kilka wartości lub zakres artości nie mogą się powtarzać Składnia (przykład): case zm_wielow is when wybór1 => sekwencja1_instrukcji ; when wybór2 => sekwencja2_instrukcji ; [when others => sekwencja3_instrukcji ;] end case; Z 47

Archmux1 i Archmux2 entity mux is port( a, b, c, d: in bit; s: in bit_vector(1 downto 0); y: out bit); end mux; a b c d MUX y Z architecture archmux1 of mux is begin mux4_1: process (a, b, c, d, s) begin if s = "00" then y <= a; elsif s = "01" then y <= b; elsif s = "10" then y <= c; else y <= d; end if; end process mux4_1; end archmux1; S S 1 0 architecture archmux2 of mux is begin y <= a when (s = "00") else b when (s = "01") else c when (s = "10") else d; end archmux2; 48

Archmux3 i Archmux4 architecture archmux3 of mux is begin process (a,b,c,d,s) begin case s is when "00" => y<= a; when "01" => y<= b; when "10" => y<= c; when "11" => y<= d; end case; end process; end archmux3; architecture archmux4 of mux is begin with s select y <= a when "00", b when "01", c when "10", d when "11"; End archmux4; Z 49

Archmux5 Architecture archmux5 of mux is Begin y <= (a and not(s(1)) and not(s(0))) OR (b and not(s(1)) and s(0)) OR (c and s(1) and not(s(0))) OR (d and s(1) and s(0)); end archmux5; Z 50

Archmux6 architecture archmux6 of mux is begin mux4_1: process (a, b, c, d, s) begin if s = "00" then y <= a; end if; if s = "01" then y <= b; end if; if s = "10" then y <= c; end if; if s = "11" then y <= d; end if; end process mux4_1; end archmux6; Z 51

Archmux1 i Archmux2 A B C X D N0D N0C N0B Z S1 S0 52

Archmux3 i Archmux4 A B C X D N0E N0D N0C N0B S1 S0 Z 53

Archmux5 A B C X D Z S1 S0 54

Archmux6 C B A N0E X D N0D N0H N0G N0F N0A Z S1 S0 55

Synteza układów sekwencyjnych VHDL umożliwia bezpośrednią reprezentację automatu (układu sekwencyjnego). ablicę przejść-wyjść można bezpośrednio przetłumaczyć na specyfikację VHDL. szystkie inne metody, polegające na oddzielnej syntezie części kombinacyjnej, a następnie na dołączaniu do niej rejestru, nie mają sensu Z 56

Zasady specyfikacji automatu Stany automatu są reprezentowane przez typ wyliczeniowy, którego wartości są nazwami stanów Synchronizm zapewnia odpowiednie wyrażenie testujące zbocze sygnału zegarowego Funkcje przejść wyjść są realizowane instrukcjami CASE, F HEN wewnątrz ROCESU Specyfikacja jedno- lub dwu-procesowa yjątkiem w stosowaniu typu wyliczeniowego jest automat ze stanami kodowanymi przez użytkownika Z 57

yp wyliczeniowy yp wyliczeniowy (enumeration type) może być definiowany przez użytkownika. rzykład: type MY_SAE is (State1, State2, State3, State4);... signal SAE : MY_SAE; SAE <= State1; Z 58

Atrybuty Dostarczaj dodatkowych informacji o obiektach (np.. sygnałach, zmiennych, typach lub komponentach) Składnia obiekt atrybut[(parametr)]; Najczęściej stosowany atrubut: event równy RUE, gdy zachodzi zmiana wartości sygnału, f Clock event and Clock = 1 then Q := D; Z 59

rzykład: automat Moore a x = 0 Rst x = 1 x s 0 1 z A/z = 0 B/z = 0 A A B 0 x = 0 x = 0 x = 1 B A C 0 C/z = 1 C A C 1 x = 1 Z 60

Automat: jednostka deklaracji LBRARY ieee; USE ieee_std_logic_1164.all; ENY automacik S OR (Clock, Rst, x : N SD_LOGC; z : OU SD_LOGC); END automacik; Z 61

Automat - wersja Zerowanie asynchroniczne ARCHECURE funkcja_przejsc OF automacik S YE State_type S (A, B, C); SGNAL Q : State_type; BEGN Deklaracja typu i sygnału ROCESS (Rst, Clock) BEGN F Rst = '0' HEN Q <= A; ELSF (Clock'EVEN AND Clock = '1') HEN CASE Q S HEN A => F x = '0' HEN Q <=A; ELSE Q <= B; END F; HEN B => F x = '0' HEN Q <= A; ELSE Q <= C; Synchronizacja END F; HEN C => F x = '0' HEN Q <= A; ELSE Q <= C; END CASE; END F; END ROCESS; z <= '1' HEN Q = C ELSE '0'; END funkcja_przejsc; END F; Z 62

Automat Moore a - wersja Z ARCHECURE funkcja_przejsc OF simple S YE State_type S (A, B, C); SGNAL Q_present, Q_next : State_type ; BEGN ROCESS (x, Q_present) BEGN CASE Q_present S HEN A => F x = '0' HEN Q_next <= A; ELSE Q_next <= B; END F; HEN B => F x = '0' HEN Q_next <=A; ELSE Q_next <= C; END F; HEN C=> F x = '0' HEN Q_next <= A; ELSE Q_next <= C; END F; END CASE; END ROCESS; ROCESS (Clock, Rst) BEGN F Rst = '0' HEN Q_present <= A; r o c e s k o m b i n a c y j n y roces sekwencyjny ELSF (Clock'EVEN AND Clock = '1') HEN Q_present <= Q_next; END F; END ROCESS; z <= '1' HEN Q_present = C ELSE '0'; END funkcja_przejsc; 63

roces Kombinacyjny Case f hen Else ejścia Układ kombinacyjny Automat Stan następny (next_state) roces Sekwencyjny CLK EVEN and CLK= 1 rzerzutniki Stany bieżące (present_state) Z 64

roblem kodowania stanów Specyfikacja automatu: ciekawostka o procesie kompilacji Automaty w komercyjnych kompilatorach VHDL raczej nie są realizowane optymalnie jak też nie zawsze są realizowane na minimalnej liczbie przerzutników Nasz automat w opcji FGA na trzech przerzutnikach!!! Ucieczka przed skomplikowaniem części kombinacyjnej w realizacjach dla struktur FGA Z 65

roblem kodowania stanów Dlatego warto w projektach dla urządzeń rynkowych stosować zewnętrzne procedury kodowania stanów automatu. akie procedury są dostępne w oprogramowaniu uniwersyteckim akiet SS JED, NOVA Z 66

roblem kodowania stanów Szczęśliwie się składa, iż język VHDL umożliwia wprowadzenie dowolnego, zewnętrznie obliczonego kodowania stanów wewnętrznych architecture nazwa_arch of nazwa_jednostki is begin u kodowanie: za pośrednictwem deklaracji stałych (constant) end nazwa_arch; Z 67

Automat Moore a z kodowaniem stanów Z ARCHECURE funkcja_przejsc OF simple S SGNAL Q_present, Q_next: SD_LOGC_VECOR(1 DONO 0) CONSAN A :SD_LOGC_VECOR(1 DONO 0) := "00"; CONSAN B :SD_LOGC_VECOR(1 DONO 0) := "01"; CONSAN C :SD_LOGC_VECOR(1 DONO 0) := "11"; BEGN ROCESS (x, Q_present) BEGN CASE Q_present S HEN A => F x = '0' HEN Q_next <= A; ELSE Q_next <= B; END F; HEN B => F x = '0' HEN Q_next <= A; ELSE Q_next <= C; zabezpieczenie przed nadmiarowym stanem: 10 nny typ zmiennej END F; HEN C => F x = '0' HEN Q_next <= A; ELSE Q_next <= C; END F; HEN OHERS => Q_next <= A; END CASE; END ROCESS; ROCESS (Clock, Rst) BEGN F Rst = '0' HEN Q_next <= A; ELSF (Clock'EVEN AND Clock = '1') HEN Q_present <= Q_next; END F; END ROCESS; z <= '1' HEN Q_present = C ELSE '0'; END funkcja_przejsc; 68

SUBDESGN MOORE_AHDL( CLOCK, RESEN, : NU; Z : OUU; ) VARABLE Y : MACHNE H SAES (A, B, C); Automat w AHDL BEGN Y.CLK = CLOCK; Y.RESE =!RESEN; F RESEN == B"0" HEN Y = A; END F; CASE Y S HEN A => F == B"0" HEN Y = A; ELSE Y = B; HEN B => END F; F == B"0" HEN Y = A; ELSE Y= C; HEN C => END F; F == B"0" HEN Y = A; ELSE Y = C; Z END; END CASE; F Y == C HEN Z = B"1"; ELSE Z = B"0"; END F; END F; 69

AHDL kontra VHDL AHDL VHDL Variable temp : dff temp.clk = clk; temp.d = data out = temp.out if (clk event and clk= 1 ) then out <= d; end if; Całkowicie behawioralny opis, nawet nie znamy typu przerzutnika Z 70

Specyfikacje typowych układów rzerzutniki Rejestry: równoległy, szeregowy Liczniki: w górę, z wpisem równoległym Modelowanie na poziomie strukturalnym rojektowanie większych układów Specyfikacje wszystkich przykładów są podane w książce: rogramowalne układy przetwarzania sygnałów cyfrowych i informacji Z 71