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

Podobne dokumenty
Projektowanie automatów z użyciem VHDL

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

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

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

Projektowanie w VHDL

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

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Języki Opisu Sprzętu. Studium Zaoczne III rok kierunek Elektronika. Język VHDL cz.3

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

Laboratorium przedmiotu Technika Cyfrowa

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

Programowalne układy logiczne

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

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

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

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

Instrukcje sekwencyjne

Programowanie Układów Logicznych kod kursu: ETD6203 W dr inż. Daniel Kopiec. Pamięć w układach programowalnych

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

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

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

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

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

Systemy Czasu Rzeczywistego FPGA

Projektowanie hierarchiczne Mariusz Rawski

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

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

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

Systemy Czasu Rzeczywistego FPGA

LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY. Rev.1.1

Sposoby projektowania systemów w cyfrowych

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Języki opisu sprzętu VHDL Mariusz Rawski

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

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

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

Kierunek Inżynieria Akustyczna, V rok Programowalne Układy Cyfrowe. Platforma sprzętowa. Rajda & Kasperek 2014 Katedra Elektroniki AGH 1

Szkolenia specjalistyczne

Specyfika projektowania Mariusz Rawski

Programowalne układy logiczne

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

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

Układy cyfrowe w Verilog HDL. Elementy języka z przykładami. wersja: cz.3

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

Podstawy układów mikroelektronicznych

Laboratorium Podstaw Techniki Cyfrowej

VHDL. Behawioralny Strukturalny Czasowy. Poziom RTL

Projektowanie Scalonych Systemów Wbudowanych VERILOG

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

Krótkie wprowadzenie do ModelSim i Quartus2

Projektowanie scalonych systemów wbudowanych VERILOG. VERLIOG - historia

VHDL cz.1. Rafał Walkowiak IIn PP Wer

Projektowanie Urządzeń Cyfrowych

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

Projekt prostego procesora

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.

Plan wykładu. Architektura systemów komputerowych. Cezary Bolek

Synteza strukturalna

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

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

CZ1. Optymalizacja funkcji przełączających

Sławomir Kulesza. Projektowanie automatów synchronicznych

Język opisu sprzętu VHDL

Układy FPGA w przykładach, część 2

Sławomir Kulesza. Projektowanie automatów asynchronicznych

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

Spis treści 1. Wstęp 2. Ćwiczenia laboratoryjne LPM

(przykład uogólniony)

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

Symulacja systemu z procesorem MicroBlaze w środowisku ActiveHDL

Architektura komputerów Wykład 2

Programowalne układy logiczne kod kursu: ETD Podstawy języka Verilog W

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

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.

Bloki anonimowe w PL/SQL

PUCY Kolos 2: Reloaded

Elementy języka VHDL

Projektowanie hierarchiczne Mariusz Rawski

PRZERZUTNIKI: 1. Należą do grupy bloków sekwencyjnych, 2. podstawowe układy pamiętające

Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące

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

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

Programowalne układy logiczne

Programowalne układy logiczne

Układy kryptograficzne z uŝyciem rejestrów LFSR

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

Ochrona własności intelektualnej projektów w układach FPGA poprzez szyfrowanie danych konfiguracyjnych

Sterowniki Programowalne (SP)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Cyfrowe układy scalone c.d. funkcje

Elektronika i techniki mikroprocesorowe

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

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

LEKCJA. TEMAT: Funktory logiczne.

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

Implementacja algorytmu szyfrującego

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 4. Języki Opisu Sprzętu

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

Transkrypt:

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

Program wykładu Wstęp do syntezy Sprzętowa reprezentacja obiektów w VHDL Synteza elementów podstawowych Synteza układów złożonych Synteza typów Konstrukcje niesyntezowalne Reguły i dobre praktyki Rajda & Kasperek 2015 Katedra Elektroniki AGH 2

Synteza Bibliografia A VHDL Synthesis primer J.Bhasker, VHDL A Logic Synthesis Approach D.Naylor, S.Jones, VHDL Coding and Logic Synthesis with SYNOPSIS W.F.Lee, Reuse Methodology Manual M.Keating, P.Bricaud, Synthesis and Simulation Design Guide (Xilinx manual) Xilinx Synthesis Technology (XST) User Guide (Xilinx manual) Projektowanie układów cyfrowych z wykorzystaniem języka VHDL M.Zwoliński Rajda & Kasperek 2015 Katedra Elektroniki AGH 3

Synteza i implementacja Projekt CPLD/FPGA Xilinx Rajda & Kasperek 2015 Katedra Elektroniki AGH 4

Synteza i implementacja Projekt w środowisku Active-HDL Rajda & Kasperek 2015 Katedra Elektroniki AGH 5

Synteza i implementacja Projekt w środowisku Active-HDL: Design Flow Zewnętrzne narzędzia do syntezy i implementacji Graficzny shell po wybraniu opcji: Tools/Preferences/ Environment/Flows/ Integrated Tools oraz View/Flow Rajda & Kasperek 2015 Katedra Elektroniki AGH 6

Synteza Sprzętowa reprezentacja obiektów Combinatorial Circuitry Registered Circuitry (memory) level triggered Registered Circuitry (memory) edge triggered Rajda & Kasperek 2015 Dept. of Electronics, AGH UST 7

Synteza Sprzętowa reprezentacja obiektów Obiekt -sygnał lub zmienna -może być reprezentowany jako: przerzutnik (element pamięciowy wyzwalany zboczem) zatrzask (element pamięciowy wyzwalany poziomem) przewód (element kombinacyjny) Rajda & Kasperek 2015 Katedra Elektroniki AGH 8

Synteza Sprzętowa reprezentacja obiektów if C = 1 and C event then Q <= A; end if; if C = 1then Q <= A; else -- do nothing end if; if C = 1 then Q <= A; else Q <= B; end if; sygnał Q: przerzutnik sygnał Q: zatrzask sygnał Q: multiplekser Rajda & Kasperek 2015 Katedra Elektroniki AGH 9

Synteza elementów podstawowych Operatory logiczne i arytmetyczne architecture behavioral of AND_gate is process (A, B) -- bramka AND syntezowana if A = 1 and B = 1 then X <= 1 ; else X <= 0 ; end if; end behavioral; architecture inferred of AND_gate is -- bramka AND implikowana X <= A and B; -- z biblioteki elementów end inferred; -- presyntezowanych Operatory and or xor not nor nand xnor implikowane : + - * / = /= > >= < <=... Rajda & Kasperek 2015 Katedra Elektroniki AGH 10

Synteza elementów podstawowych Bufor trójstanowy architecture behavioral of TRI_STATE_buffer is process (A, OE) if OE = 1 then OE X <= A; else A X <= Z ; end if; end behavioral; X architecture inferred of TRI_STATE_buffer is X <= A when OE = 1 else Z ; end inferred; Rajda & Kasperek 2015 Katedra Elektroniki AGH 11

Synteza elementów podstawowych Enkoder priorytetowy architecture concurrent of PRIORITY_encoder is code <= "0001" when sel(0) = 1 else "0010" when sel(1) = 1 else "0100" when sel(2) = 1 else "1000" when sel(3) = 1 else "0000"; end concurrent; s 0 c 0 c = c = 0 c = 1 c =s s 0 ss 1 2 s 0 0s1s2 3 0ss 1 2s3 s 0 s 1 s 2 s 1 s 2 s 3 c 1 c 2 c 3 Uwaga na funktory logiczne realizowane przy pomocy LUT! Rajda & Kasperek 2015 Katedra Elektroniki AGH 12

Synteza elementów podstawowych Enkoder priorytetowy architecture behavioral of PRIORITY_encoder is process (A, B, C) if A = 1 then -- A: sygnał przychodzący X <= 1 ; -- z dużym opóźnieniem elsif B = 1 then X <= 0 ; elsif C = 1 then X <= 1 ; else X <= 0 ; end if; end behavioral; C B A X Uwaga na funktory logiczne realizowane przy pomocy LUT! Rajda & Kasperek 2015 Katedra Elektroniki AGH 13

Sprzętowa reprezentacja obiektów Konstrukcje implikujące syntezę przerzutnika D Proces zawierający listę wrażliwości: process (CLK) if CLK = 1 and CLK event then Q <= D; end if; end process; --rising edge Proces zawierający klauzulę wait: process --falling edge wait until not CLK = 1 and CLK event; Q <= D; end process; Nie należy łączyć detekcji zbocza z innymi warunkami: if CLK event and CLK = 1 and CE = 1 then... Współbieżne przypisanie warunkowe (niezalecane): Q <= D when CLK event and CLK = 1 ; Rajda & Kasperek 2015 Katedra Elektroniki AGH 14

Sprzętowa reprezentacja obiektów Przerzutnik z wejściem blokującym zegar GATECLK <= IN1 and IN2 and CLK; process (GATECLK) if GATECLK event and GATECLK = 1 then if LOAD = 1 then OUT1 <= DATA; end if; end if; end process; Rajda & Kasperek 2015 Katedra Elektroniki AGH 15

Sprzętowa reprezentacja obiektów Przerzutnik z wejściem blokującym zegar ENABLE <= IN1 and IN2 and LOAD; process (CLK) if CLOCK event and CLOCK = 1 then if ENABLE = 1 then OUT1 <= DATA; end if; end if; end process; D CE C 0 1 D Q Rajda & Kasperek 2015 Katedra Elektroniki AGH 16

Sprzętowa reprezentacja obiektów Konstrukcje implikujące Set / Reset process(clk) if CLK and CLK'event then if SET = 1 then Q <= 1 ; else Q <= D; end if; end if; end process; -- SET synchroniczny process(clk, RESET) -- RESET w sensitivity list! if RESET = 1 then -- RESET asynchroniczny Q <= 0 ; elsif CLK and CLK'event then Q <= D; end if; end process; Rajda & Kasperek 2015 Katedra Elektroniki AGH 17

Sprzętowa reprezentacja obiektów Konstrukcje implikujące syntezę zatrzasku D Proces zawierający listę wrażliwości: process (CLK, A, B) if CLK = 1 then Q <= D; end if; end process; -- list of all signals... --...used in the process -- active high Współbieżne przypisanie warunkowe (niezalecane): Y <= D when CLK = 1 ; Rajda & Kasperek 2015 Katedra Elektroniki AGH 18

Sprzętowa reprezentacja obiektów Niezamierzona synteza zatrzasku process (A, B, C, SEL) if SEL = 00 then Y <= A; elsif SEL = 01 then Y <= B; elsif SEL = 10 then Y <= C; end if; end process; Problem: implikacja zatrzasku na skutek niepełnej specyfikacji wartości (dla SEL = 11 domyślnie przyjęta zostanie ostatnia wartość, co spowoduje konieczność zastosowania elementu pamięciowego). process (A, B, C, SEL) if SEL = 00 then Y <= A; elsif SEL = 01 then Y <= B; elsif SEL = 10 then Y <= C; elsif SEL = 11 then Y <= 0 ; end if; end process; Rozwiązanie: wyspecyfikowanie wszystkich możliwości (także w konstrukcji case można tu użyć specyfikacji domyślnej przy pomocy klauzuli when others). Rajda & Kasperek 2015 Katedra Elektroniki AGH 19

Sprzętowa reprezentacja obiektów Sygnały a zmienne signal A,B,C,D: bit... NO_MEMORY: process (A,B,C) variable TMP: bit; TMP:= A and B; D <= TMP or C; end process; A TMP B C Synteza TMP: przewód D signal A,B,C: bit... IS_IT_LATCH: process (A,B,C) variable TMP: bit; C <= TMP and B; TMP := A or C; Synteza TMP: zatrzask?! end process; Rajda & Kasperek 2015 Katedra Elektroniki AGH 20

Sprzętowa reprezentacja obiektów Sygnały a zmienne signal Qaux:... FFx2: process (clk) Qaux <= D; Q <= Qaux; end process; Qaux D clk Synteza : 2 przerzutniki Q FFx1: process (clk) variable Qaux:... Qaux := D; Q <= Qaux; end process; D clk Qaux Synteza : 1 przerzutnik Rajda & Kasperek 2015 Katedra Elektroniki AGH 21 Q

Synteza układów złożonych Operatory logiczne entity logical_ops is port (a, b, c, d: in bit; m: out bit); end logical_ops; architecture example of logical_ops is signal e: bit; m <= (a and b) or e; e <= c xor d; end example; entity logical_bit is port (a, b: in bit_vector (0 to 3); m: out bit_vector (0 to 3)); end logical_bit architecture example of logical_bit is m <= a and b; end example; Rajda & Kasperek 2015 Katedra Elektroniki AGH 22

Synteza układów złożonych Operatory relacji entity relational_equ is port (a, b: in bit_vector (0 to 3); m: out boolean); end relational_equ; architecture example of relational_equ is m <= a = b; end example; entity relational_mag is port (a, b: in integer range 0 to 15; m: out boolean); end relational_mag; architecture example of relational_mag is m <= a >= b; end example; Rajda & Kasperek 2015 Katedra Elektroniki AGH 23

Synteza układów złożonych Operatory arytmetyczne package example_arithmetic is type small_int is range 0 to 7; end example_arithmetic; use work.example_arithmetic.all; entity arith is port (a, b: in small_int; m: out small_int); end arith; architecture example of arith is m <= a + b; end example; Uwaga na hard-makra sumatorów (i mnożarek!!) Rajda & Kasperek 2015 Katedra Elektroniki AGH 24

Synteza układów złożonych Instrukcje wyboru VHDL - wyrażenia sekwencyjne (sequential) warunkowe(conditional signal assignment): if... decyzyjne(selected signal assignment): case... VHDL - wyrażenia współbieżne (concurrent) warunkowe(conditional signal assignment): when... decyzyjne(selected signal assignment): with... Rajda & Kasperek 2015 Katedra Elektroniki AGH 25

Synteza układów złożonych Sekwencyjne instrukcje wyboru: if entity control_stmts is port (a, b, c: in boolean; m: out boolean); end control_stmts; architecture example of control_stmts is process (a, b, c) variable n: boolean; if a then n := b; else n := c; end if; m <= n; end process; end example; Rajda & Kasperek 2015 Katedra Elektroniki AGH 26

Synteza układów złożonych Sekwencyjne instrukcje wyboru: case entity control_stmts is port (sel: in bit_vector (0 to 1); a,b,c,d: in bit; m: out bit); end control_stmts; architecture example of control_stmts is process (sel,a,b,c,d) case sel is when b"00" => m <= c; when b"01" => m <= d; when b"10" => m <= a; when others => m <= b; end case; end process; end example; Rajda & Kasperek 2015 Katedra Elektroniki AGH 27

Synteza układów złożonych Współbieżne instrukcje wyboru: when/ with entity control_stmts is port (a, b, c: in boolean; m: out boolean); end control_stmts; architecture example of control_stmts is m <= b when a else c; end example; entity control_stmts is port (sel: in bit_vector(0 to 1); a,b,c,d: in bit; m: out bit); end control_stmts; architecture example of control_stmts is with sel select m <= c when b"00", m <= d when b"01", m <= a when b"10", m <= b when others; end example; Rajda & Kasperek 2015 Katedra Elektroniki AGH 28

Synteza układów złożonych Konstrukcje "powielające" logikę entity loop_stmt is port (a: bit_vector (0 to 3); m: out bit_vector (0 to 3)); end loop_stmt; Nie ma konieczności deklarowania indeksu i! architecture example of loop_stmt is process (a) variable b: bit; b := '1'; for i in 0 to 3 loop b := a(3-i) and b; m(i) <= b; end loop; end process; end example; Rajda & Kasperek 2015 Katedra Elektroniki AGH 29

Synteza układów złożonych Konstrukcje "powielające" logikę entity subprograms is port (a: bit_vector (0 to 2); m: out bit_vector (0 to 2)); end subprograms; architecture example of subprograms is function simple (w, x, y: bit) return bit is return (w and x) or y; end; process (a) m(0) <= simple(a(0), a(1), a(2)); m(1) <= simple(a(2), a(0), a(1)); m(2) <= simple(a(1), a(2), a(0)); end process; end example; Rajda & Kasperek 2015 Katedra Elektroniki AGH 30

Synteza układów złożonych Rejestr przesuwny Sekwencyjny (shift register): z operatorem połączenia (&) shreg <= shreg (6 downto 0) & SI; z pętlą for...loop for i in 0 to 6 loop shreg(i+1) <= shreg(i); end loop; shreg(0) <= SI; z operatorami przesuwu (sll, srl,...) Kombinacyjny (barrel shifter): z operatorami przesuwu (sll, srl,...) with SEL select SO <= DI when "00", DI sll 1 when "01", DI sll 2 when "10", DI sll 3 when others; z operatorem połączenia (&) Rajda & Kasperek 2015 Katedra Elektroniki AGH 31

Synteza układów złożonych Pamięci implikowane (inferred) lub podstawiane (instantiated) implementowane jako rozproszone lub blokowe (w zal. od rozmiaru, szybkości i zajętego obszaru) synchroniczne (ew. z asynchronicznym odczytem rozproszone) RAM (także inicjalizowane) lub ROM wykorzystywane także dla logiki kombinacyjnej i FSM Rajda & Kasperek 2015 Katedra Elektroniki AGH 32

Synteza typów Typ integer Typy i podtypy, które zawierają wartości ujemne w swojej definicji zakresu, kodowane są w kodzie uzupełnień do 2. Typy i podtypy, które zawierają tylko wartości dodatnie, kodowane są w naturalnym kodzie binarnym. Liczba użytych bitów zależy od największej dopuszczalnej wartości dla danego obiektu. -- binary encoding having 7 bits type int0 is range 0 to 100; type int1 is range 10 to 100; -- 2's complement encoding having 8 bits(including sign) type int2 is range -1 to 100; -- binary encoding having 3 bits subtype int3 is int2 range 0 to 7; Rajda & Kasperek 2015 Katedra Elektroniki AGH 33

Synteza typów Typ integer type short is integer 0 to 255; subtype shorter is short range 0 to 31; subtype shortest is short range 0 to 15; signal op1, op2, res1: shortest; signal res2: shorter; signal res3: short; res1 <= op1 + op2; -- truncate carry res2 <= op1 + op2; -- use carry res3 <= op1 + op2; -- use carry and zero extend Rajda & Kasperek 2015 Katedra Elektroniki AGH 34

Synteza typów Typy wyliczeniowe Deklaracja: Jest syntezowana jako: type direction is (left, right, up, down); -- two wires type cpu_op is (execute, load, store); -- two wires -- the encoding of 11 is a "don't care" subtype mem_op is cpu_op range load to store; -- two wires -- the encodings of 00 and 11 are "don't cares" -- User Defined Encoding attribute enum_encoding: string; attribute enum_encoding of cpu_op: type is "001" & -- execute "010" & -- load "100"; -- store Rajda & Kasperek 2015 Katedra Elektroniki AGH 35

Synteza typów Typy wyliczeniowe i pozostałe Typy wyliczeniowe w procesie syntezy domyślnie kodowane są binarne. Do poszczególnych elementów (L) typu asygnowane są kolejne wartości, przy czym pierwszy od lewej otrzymuje wartość zero. Liczba elementów (N) obiektu reprezentującego typ wyliczeniowy będzie najmniejszą z możliwych liczbą, spełniającą warunek: L <= 2 N Typy bit i boolean są syntezowane jako wire Typ character jest syntezowany jako 8 wire Rajda & Kasperek 2015 Katedra Elektroniki AGH 36

Synteza typów Typ std_logic_1164 Zalecany, bo: duża liczba wartości (9), reprezentujących większość rzeczywistych stanów w układach cyfrowych, automatyczna inicjalizacja do wartości U zmusza projektanta do zainicjowania projektu ex plicite. Nie należy omijać tej cechy przez inicjalizację sygnałów i zmiennych w momencie ich deklaracji rezultatem takiego postępowania może być otrzymanie w wyniku syntezy układu, który nie daje się zainicjować! łatwa integracja z innymi modułami np. typ integer może zostać zsyntezowany, ale przy symulacji będzie wymagał wykonywania czasochłonnych funkcji konwersji. po syntezie i implementacji tylko typ std_logic Rajda & Kasperek 2015 Katedra Elektroniki AGH 37

Synteza automatów Algorytmy kodowania stanów Auto Najlepszy, dostosowany do automatu algorytm kodowania. One-Hot Zawsze włączony tylko jeden przerzutnik. Odpowiedni dla FPGA (duża liczba przerzutników) oraz optymalizacji prędkości i poboru mocy. Compact Minimalizuje liczbę przerzutników. Optymalny dla minimalizacji obszaru. Sequential Identyfikuje długie ścieżki i nadaje w nich kolejne wartości binarne. Gray Zawsze tylko jedna zmienna zmienia swoją wartość. Właściwy dla automatów o długich ścieżkach bez odgałęzień. Minimalizuje hazardy i szpilki. Johnson Podobnie jak Gray. User Sposób definiowany przez użytkownika przy pomocy typu wyliczeniowego. Speed1 Optymalizowany dla szybkości działania. Liczba rejestrów zależna od konkretnego automatu, ale zwykle większa niż liczba stanów. Rajda & Kasperek 2015 Katedra Elektroniki AGH 38

Synteza XST Synthesis Options Rajda & Kasperek 2015 Katedra Elektroniki AGH 39

Synteza Konstrukcje niesyntezowalne klauzule czasowe: - przypisań (after, transport, inertial) -wait for zmiennoprzecinkowe typy danych (real) operacje na plikach ograniczone: - read: inicjalizacja pamięci z pliku - write: debugowanie Rajda & Kasperek 2015 Katedra Elektroniki AGH 40

Synteza Kodowanie uwzględniające proces syntezy 1. Rejestry wyjściowe dla sygnałów. 2. Jeden atrybut signal event na jeden proces. 3. Sterowanie sygnału tylko z jednego procesu (jeżeli występuje potrzeba kontroli z 2 lub więcej procesów ok ale wtedy potrzebny dodatkowa instrukcja arbitrażu). 4. Odpowiedni podział modułów logiki kombinacyjnej. 5. Podział na bloki z uwagi na wymaganą szybkość działania (speed versus area optimisation). 6. Rozdzielenie bloków logiki asynchronicznej. i synchronicznej (instrukcja process a instrukcje współbieżne). 7. Odpowiednie rozwiązania dla modułów realizujących funkcje arytmetyczne. 8. Grupowanie sygnałów pod kątem czasu syntezy. 9. Unikanie multicycle paths czyli ścieżek sygnałów. które odchodzą od reguły jednego okresu. 10. Nie testowanie sygnałów na wartość X Z. 11. Asynchroniczny reset jeżeli ten sygnał dostępny z zewnątrz. Nie generujemy własnych asynchronicznych sygnałów/resetów. Rajda & Kasperek 2015 Katedra Elektroniki AGH 41

Kodowanie uwzględniające proces syntezy CLK Modelowa struktura projektu: Jeden sygnał zegarowy Wszystkie przerzutniki wyzwalane tym samym zboczem Problemy przy dwóch aktywnych zboczach: Zależność od współczynnika wypełnienia (tolerancja na zmiany duty cycle w dokumentacji projektu!) Problemy z metodą testowania typu ścieżka brzegowa (JTAG 1149) Rajda & Kasperek 2015 Katedra Elektroniki AGH

Kodowanie uwzględniające proces syntezy CLK Asynchroniczne kluczowanie zegara - same problemy! (niewykorzystanie zasobów dystrybucji sygnałów zegarowych, problemy z testowaniem, gorsze parametry czasowe itp.) Rozwiązanie stosowanie wejść CE kodowanie przez warunek: if ce= 1 po sekwencji if clk event and clk= 1. Rajda & Kasperek 2015 Katedra Elektroniki AGH

Kodowanie uwzględniające proces syntezy CLK Nie należy stosować wewnętrznie (asynchronicznie!) generowanych sygnałów zegarowych. CE CLK Należy natomiast projektować układy synchroniczne lub używać kilku sygnałów zegarowych (patrz: DLL). Rajda & Kasperek 2015 Katedra Elektroniki AGH

Kodowanie uwzględniające proces syntezy A B C A+B+C A+B+C Rajda & Kasperek 2015 Katedra Elektroniki AGH

Synteza Kodowanie uwzględniające proces syntezy AHDL language assistant Rajda & Kasperek 2015 Katedra Elektroniki AGH 46

Ciąg dalszy nastąpi Rajda & Kasperek 2015 Katedra Elektroniki AGH 47