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

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

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH

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

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

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

Sposoby projektowania systemów w cyfrowych

Systemy Czasu Rzeczywistego FPGA

Systemy Czasu Rzeczywistego FPGA

Projektowanie hierarchiczne Mariusz Rawski

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

Programowalne układy logiczne

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

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

Systemy Czasu Rzeczywistego FPGA

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

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

Projektowanie automatów z użyciem VHDL

Projektowanie w VHDL

Specyfika projektowania Mariusz Rawski

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

Projekt prostego procesora

Programowalne układy logiczne

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

Projektowanie Urządzeń Cyfrowych

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

Systemy Czasu Rzeczywistego FPGA

Krótkie wprowadzenie do ModelSim i Quartus2

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.

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.

VHDL cz.1. Rafał Walkowiak IIn PP Wer

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

Programowalne układy logiczne

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

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

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

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

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

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

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

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

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

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

Języki opisu sprzętu VHDL Mariusz Rawski

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

Instrukcje sekwencyjne

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

PUCY Kolos 2: Reloaded

VHDL cz.1. Rafał Walkowiak IIn PP Wer

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

VHDL. Behawioralny Strukturalny Czasowy. Poziom RTL

Programowalne Układy Logiczne. Wykład III FPGA dr inż. Paweł Russek

Programowalne układy logiczne

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

Kierunek Elektronika, III rok Języki Opisu Sprzętu. Platforma sprzętowa. Rajda & Kasperek 2016 Katedra Elektroniki AGH 1

Sterowniki Programowalne (SP)

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

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

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

Programowalne układy logiczne

Programowanie Układów Logicznych kod kursu: ETD6203. Komunikacja z układami cyfrowymi W dr inż. Daniel Kopiec

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

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Język VHDL podstawy Mariusz Rawski

Projektowanie z użyciem bloków funkcjonalnych w układach programowalnych firmy Xilinx

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

LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY. Rev.1.1

DOKUMENTACJA PROJEKTU

Bezpieczeństwo informacji oparte o kryptografię kwantową

Programowany układ czasowy APSC

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

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

CZ1. Optymalizacja funkcji przełączających

Linia SDA służy do dwukierunkowego. przesyłania danych zawsze inicjuje master. Slave nie może zainicjować

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

Podział układów cyfrowych. rkijanka

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

Projektowanie hierarchiczne Mariusz Rawski

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

Synteza strukturalna

Cyfrowe układy scalone c.d. funkcje

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

Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA

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

Programowany układ czasowy

Szkolenia specjalistyczne

Układy Cyfrowe projekt. Korekcja jasności obrazów w 24-bitowym formacie BMP z użyciem funkcji gamma. Opis głównych modułów sprzętowych

Podstawowe elementy układów cyfrowych układy sekwencyjne Rafał Walkowiak Wersja

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

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

Podstawy Elektroniki dla Elektrotechniki. Liczniki synchroniczne na przerzutnikach typu D

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

1. Synteza układów opisanych w języku VHDL Xilinx ISE Design Suite 10.1 VHDL 2. Obsługa przetwornika CA Project Add source...

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

Transkrypt:

Programowanie Układów Logicznych kod kursu: ETD6203 Analiza układów sekwencyjnych W3 7.03.2018 mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

Zmiany w terminach

Plan wykładu 1 2 3 4 5 6 Ciekawostki odbiornik FPGA VHDL komponenty, powtórka wiadomości DCM w układach Spartan 3E Analiza strukturalna Porty Podsumowanie 3

Ciekawostki FBGA-WEB-SDR Szerokopasmowy odbiornik FPGA do 30 MHz, - sprawdź 225 khz!!! 4 http://websdr.ewi.utwente.nl:8901/

Komponenty, pakiety VHDL Powtarzające się fragmenty kodu VHDL są zazwyczaj opisywane w formie: komponentów, funkcji, procedur umieszczonych w pakietach, tworzących następnie bibliotekę. 6

Tworzenie komponentów: - deklaracja bezpośrednia projekt_g.vhd inverter.vhd nand_2.vhd nand_3.vhd 7

Tworzenie komponentów: - deklaracja bezpośrednia Deklaracja komponentów: COMPONENT nazwa_komponentu IS PORT ( nazwa_sygnału : tryb i rodzaj sygnału; nazwa_sygnału : tryb i rodzaj sygnału ); END COMPONENT; COMPONENT inverter IS PORT ( a : in std_logic; b : out std_logic); END COMPONENT; Użycie komponentów: etykieta: nazwa_komponentu PORT MAP (lista przypisań); komponent_1 : inverter PORT MAP (x, y); komponent_2 : nand_2 PORT MAP (x=>a, y=>b, w=>open, z=>d); 8

Tworzenie komponentów: - komponent w pakiecie use work.nazwa_pakietu.all; inverter.vhd nand_2.vhd nand_3.vhd

Opis strukturalny 10 library IEEE; use IEEE.std_logic_1164.all; entity eqcomp4 is port (a, b : in std_logic_vector(3 downto 0); equals : out std_logic); end eqcomp4; use work.gatespkg.all; architecture struct of eqcomp4 is signal x: std_logic_vector (0 to 3); begin u0: xnor port map (a(0), b(0), x(0)); u1: xnor port map (a(1), b(1), x(1)); u2: xnor port map (a(2), b(2), x(2)); u3: xnor port map (a(3), b(3), x(3)); u4: and port map (x(0), x(1), x(2), x(3), wynik); end struct; Zalety tworzenia komponentów: - dekompozycja na mniejsze fragmenty, - wielopoziomowa hierarchia, - zdefiniowanie dekompozycji logicznej, - możliwość symulowania każdego obiektu osobno.

Tworzenie komponentów Deklaracja bezpośrednia Komponent w pakiecie 11

Układy sekwencyjne Architektura układów FPGA wymusza na konstruktorach tworzenie projektów synchronicznych, co jest jedynym sposobem na zagwarantowanie ich stabilnej pracy w pełnym zakresie częstotliwości sygnałów wejściowych. 12 Zasady realizacji logiki sekwencyjnej: rejestry powinny być taktowane tym samym sygnałem, elementy pamiętające należy opisywać w oddzielnych segmentach, możliwie jak najprościej, reset asynchroniczny powinien być stosowany jedynie do inicjalizacji, do zerowania/ustawiania rejestrów w czasie pracy należy używać sygnału synchronicznego

FPGA funkcjonalnie 13 CLB w SPARTAN 3 od 1728 do 74880

14 FPGA funkcjonalnie

15 Na co zwrócić uwagę zasoby

16 Na co zwrócić uwagę zasoby

Budowa CLB SLICEM: - ulokowane w lewej części CLB, - przystosowane do implementacji funkcji logicznych, rejestrów przesuwnych, pamięci RAM SLICEL: - ulokowane w prawej części CLB, - przystosowane do implementacji tylko funkcji logicznych 17 Każda komórka CLB składa się z czterech slice-ów.

SLICEM, SLICEL Każdy SLICE posiada: dwie konfigurowalne 4-wejściowe tablice LUT (F-LUT, G-LUT), konfigurowalne przerzutniki, dwa multipleksery, konfiguracja ścieżek przesyłu danych 18

Zasoby połączeniowe Każdy CLB ma możliwość bezpośredniego korzystania z zasobów 8 sąsiadujących CLB. Wymiana danych pomiędzy CLB znajdujących się w większej odległości odbywa się za pomocą dodatkowych zasobów połączeniowych: - linie długie, łączące co szósty, najszybsze, - linie 8-krotne, łączące co trzeci CLB, - linie podwójne, komunikacją pomiędzy CLB. 19

20 Zasoby połączeniowe

Sygnały zegarowe linie globalne Układy Spartan 3 wyposażono w 8 globalnych linii do dystrybucji zegara: GCLK Dystrybucja sygnału zegarowego liniami lokalnymi wiąże się z ryzykiem zaniku synchronizacji 21

Zegar linie globalne Budowa FPGA powoduje, że elementy logiczne rozmieszczone na powierzchni struktury pomimo taktowania sygnałem zegarowym pochodzącego z jednego źródła nie są taktowane równocześnie. a) b) Dystrybucja sygnału zegarowego za pomocą: a) połączeń segmentowych, b) za pomocą linii niezależnych od lokalnych zasobów połączeniowych. 22 Niedoskonałości dystrybucji sygnałów zegarowych kompensuje układ DCM (Direct Clock Manager)

Moduł DCM Moduły DCM pozwalają na: eliminację przesunięć fazowych zegara (clock skew), wewnątrz układu FPGA lub w stosunku do elementów zewnętrznych, przesunięcie fazowe zegara o ustaloną lub regulowaną część okresu, generację zegara o częstotliwości pomnożonej przez iloraz dwóch liczb, generację zegara o współczynniku wypełnienia 50 % na podstawie zegara nie spełniającego tego warunku. 23

Moduł DCM we. syg. zegarowego pin (C9), CLK =50 MHz wy. syg. CLK 0 i 180 24 DCM składa się z czterech komponentów: Digital Frequency Synthesizer (DFS) syntezera częstotliwości, Delay Locked Loop (DLL) pętli opóźniającej, Phase Shift (PS) programowalnego przesuwnika fazy, Status Logic zespołu logiki.

DCM blok DLL 25 Sygnał wejściowy podawany jest na wejście CLKIN, wejście CLKFB służy do podania sygnału dla pętli sprzężenia zwrotnego. Dzięki temu układ DLL może monitorować jakość sygnału taktującego. Blok DLL posiada cztery wyjścia sygnałów zegarowych będących kopią sygnału CLKIN jednak przesuniętych w fazie o: 0, 90, 180, 270. Na wyjściach CLK2X oraz CLK2X180 sygnał o częstotliwości dwukrotnie większej.

DCM blok DLL Wyjście CLKDV umożliwia podział częstotliwości CLKIN f CLKDV = f CLKIN /CLKDV_DIVIDE gdzie: CLKDV_DIVIDE = 1,5; 2; 2,5,..15; 16 wsp. Wypełnienia sygnału = 50% 26 Źródło: Using Digital Clock Managers (DCMs) in Spartan-3 FPGAs http://www.xilinx.com/support/documentation/application_notes/xapp462.pdf

DCM blok DLL - zegar CLK0 CLK90 CLK180 CLK270 sygnał podstawowy sygnał przesunięty o 90 sygnał przesunięty o 180 sygnał przesunięty o 270 CLKIN CLK2X CLKDV sygnał wejściowy sygnał 2 x CLKIN sygnał CLKIN/2 27 Synteza częstotliwości i przesunięcie fazy, diagramy czasowe.

DCM blok Phase Shifter Sterowany cyfrowo przesuwnik fazy 28 PSINCDEC zwiększenie, zmniejszenie przesunięcia fazy, PSEN wejście aktywujące, PSCLK sygnał taktujący, zegarowy PSDONE stan gotowości

DCM na liniach globalnych Sposób konfiguracji układu DCM, linia zegarowa dystrybuowana linią globalną 29 Konfiguracja w projektach: - opis VHDL, - schemat element, - kreator konfiguracji (Xlinx CORE Generator) CLKIN CLKOUT Korekcja wsp. wypełnienia sygnału zegarowego CLKIN

30 Xilinx CORE Generator

Multiplikatory układy mnożące standardowy element architektury, mnożenie dwóch 18-bitowych liczb U2, synchroniczne lub asynchroniczne, 31 Źródło: Using Embedded Multipliers in Spartan-3 FPGAs http://www.xilinx.com/support/documentation/application_notes/xapp467.pdf

Multiplikatory komponent VHDL Deklaracja komponentu MULT18X18: - po słowie kluczowym architecture jednak przed begin component MULT18X18 port ( P : out STD_LOGIC_VECTOR (35 downto 0); A : in STD_LOGIC_VECTOR (17 downto 0); B : in STD_LOGIC_VECTOR (17 downto 0)); end component; - uchwyt instancji po słowie kluczowym begin MULT18X18_INSTANCE_NAME : MULT18X18 port map (P => user_p, A => user_a, B => user_b); 32

Pamięć BlockRAM wewnętrzna konfigurowalna pamięć SRAM, podzielona na bloki, dwuportowa, możliwy zapis, odczyt, możliwość łączenia bloków 33

Sygnały i zmienne Zastosowanie Sygnał połączenia w obwodzie Zmienna lokalna informacja, połączenia wewnętrzne Zasięg globalny lokalny, w obszarze deklaracji Zachowanie Użycie Wnioski przypisanie nie jest natychmiastowe w kodzie sekwencyjnym w pakietach, deklaracjach, architekturach sygnał generuje przerzutnik kiedy wykonywane jest do niego przypisanie na zboczu innego sygnału - podczas synchronicznego przypisania przypisanie natychmiastowe w kodzie sekwencyjnym, procesie, funkcji lub procedurze *Zmienna nie generuje przerzutnika, jeżeli jej wartość nie opuszcza procesu. Użycie <= := 34 * zmienna wygeneruje przerzutnik, gdy jest użyta przed przypisaniem do niej wartości

Zmienne zmienne mogę być deklarowane jedynie wewnątrz procesu lub podprogramu, zmienna widoczna jest tylko w procesie, w którym ją zadeklarowano lokalna inf. przypisanie wartości do zmiennej := następuję natychmiast, VARIABLE control : BIT := '0'; VARIABLE count : INTEGER RANGE 0 TO 100; VARIABLE y : STD_LOGIC_VECTOR (7 DOWNTO 0) := "10001000"; 35

Sygnały i zmienne a) b) signal temp, a : std_logic; begin p0: process (clk) is if ( clk event and clk = 1 ) then out_1 <= temp; out_2 <= a; end if; end process p0; signal temp, a : std_logic; begin p0: process (clk) is if ( clk event and clk = 1 ) then out_1 <= temp; end if; out_2 <= a; end process p0; out_1, out_2 zostaną zapamiętane out_1 zostanie zapamiętane, out_2 zostanie przepisane 36

Sygnały i zmienne 37 library IEEE; use IEEE.std_logic_1164.all; entity D_FF is port ( D, clk, reset : in std_logic; Q, Qbar : out std_logic ); end entity D_FF; architecture sig of D_FF is signal state : std_logic; begin p0: process (clk, reset) is begin if (reset = 0 ) then state <= 0 ; elsif rising_edge (clk) then state <= D; end if; end process p0; Q <= state; Qbar <= not state; end architecture sig; Przerzutnik typu D z wyjściem Q i Q Tak nie można: Qbar <= not Q - Q zadeklarowano jako out, - można użyć buffer, - lepiej jednak zapamiętać stan wewnętrzny

Sygnały i zmienne 38 library IEEE; use IEEE.std_logic_1164.all; entity D_FF is port ( D, clk, reset : in std_logic; Q, Qbar : out std_logic ); end entity D_FF; architecture sig of D_FF is signal state : std_logic; begin p0: process (clk, reset) is begin if (reset = 0 ) then state <= 0 ; elsif rising_edge (clk) then state <= D; end if; end process p0; Q <= state; Qbar <= not state; end architecture sig; library IEEE; use IEEE.std_logic_1164.all; entity D_FF is port ( D, clk, reset : in std_logic; Q, Qbar : out std_logic ); end entity D_FF; architecture var of D_FF is begin p0: process (clk, reset) is variable state : std_logic; begin if (reset = 0 ) then state := 0 ; elsif rising_edge (clk) then state := D; end if; Q <= state; Qbar <= not state; end process p0; end architecture var;

Analiza strukturalna seq: process (clk) begin if clk event and clk = 1 then b <= c; a <= b; h <= i; i <= j xor k; end if ; end process seq; Zadanie: Przeanalizujmy ile mamy tutaj przerzutników? chcą uniknąć wielu rejestrów operacja przypisania należy realizować współbieżnie (na zewnątrz procesu) 39

Gdzie ten ukryty rejestr architecture test of reg is p0: process begin wait until clk = 1 x <= 0 ; y <= 0 ; if (a = b) then x <= 1 ; end if; if (x = 1 ) then y <= 1 end if ; end process p0; end architecture test architecture test of reg is p1: process begin variable x : bit; wait until clk = 1 x := 0 ; y <= 0 ; if (a = b) then x := 1 ; end if; if (x = 1 ) then y <= 1 end if ; end process p1; end architecture test 40

Klauzula GENERIC GENERIC służy do parametryzacji kodu VHDL GENERIC (nazwa_parametru : typ_parametru := wartość); Przykład: zdefiniować parametr o nazwie n, typu INTEGER, z domyślną wartością 8: entity przykład is GENERIC (n : INTEGER := 8); PORT (...); end przykład; W entity można mieć więcej niż jeden parametr GENERIC GENERIC (n: INTEGER := 8; vector: BIT_VECTOR := "00001111"); 41

Klauzula GENERIC - użycie entity register_n is generic ( width: integer := 8); port ( clk, rst, en: in std_logic; data: in std_logic_vector (width-1 downto 0); q: out std_logic_vector (width-1 downto 0)) end register_n; Chcąc stworzyć wektor 8-elementowy konieczny jest zapis: (width 1), wektor numerowany jest od 0 do 7 co w rezultacie daje 8 pozycji 42

Porty we/wy - ogólnie 43 Tryby kierunkowe portów: In - wejście sygnału Out wyjście sygnału (bez sprzężeń) Buffer nośnik sygnału wewnątrz architektury Inout sygnał dwukierunkowy (magistrale np. DMA)

Porty we/wy złote zasady library IEEE; use IEEE.std_logic_1164.all; 44 entity port_mode is port ( a, b : in std_logic; x, y : out std_logic ); end entity port_mode; architecture data_flow of port_mode is begin x <= a and b; y <= not x; end data_flow; Error (10309): VHDL Interface Declaration error in port_mode.vhdl(13): interface object x of mode out cannot be read. Change object mode to buffer or inout. Sygnał x jest użyty do obliczenia sygnału y - z punktu widzenia VHDL jest on traktowany jako sygnał zewnętrzny wchodzący do układu, co jest niezgodne z trybem portu out Rozwiązanie? - inout, - buffer, - pomocniczy sygnał, signal tmp : std_logic;

Bufor trójstanowy Symbol bufora trójstanowego buf_tr: process (OE, DATA_IN) begin if OE = 0 then DATA_OUT <= (others => Z ); else DATA_OUT <= DATA_IN; end if ; end process buf_tr; DATA_OUT <= DATA_IN when OE = 1 else Z Bufory trójstanowe w realizacji multipleksera 2 x 1 45

Magistrale trójstanowe library IEEE; use IEEE.std_logic_1164.all; entity tri_state is generic (n : integer := 7); port ( en : in std_logic, input : in std_logic_vector (n downto 0), output : out std_logic_vector (n downto 0), end tri_state; 46 architecture data_glow of tri_state is begin output <= input when (en = 0 ) else (others => Z ) end architecture tri_state;

Sygnał z wielokrotnym nośnikiem Sygnał z wielokrotnym nośnikiem powodujący konflikt architecture drivers of ands is begin y <= a and b; y <= a and b; end drivers; Sygnał z wielokrotnym nośnikiem zwiększenie wydajności wyjścia 47 - Programy do syntezy mogą generować wielokrotne nośniki po to aby zwiększyć prąd wyjściowy.

Sztuczka z sygnałem zegarowym Zwykle nie da się zsyntezować kodów, które zawierają przypisanie do tego samego sygnały na obu zboczach zegara: p0: process (clk) is if ( clk event and clk = 1 ) then counter <= counter +1; elsif ( clk event and clk = 0 ) then counter <= counter +1; end if; end process p0; Można natomiast zastosować dwa osobne liczniki p0: process (clk) is if ( clk event and clk = 1 ) then counter _2<= counter +1; end if; end process p0; ---------------------------------------------------- p1: process (clk) is if ( clk event and clk = 0 ) then counter_1 <= counter +1; end if; end process p1; 48

Przykładowe pytania 1. Zmienne i sygnały różnice, podobieństwa 2. Klauzula GENERIC - zastosowanie 3. Wyjaśnij czym jest CLB, IOB, SLICE 4. Multiplikatory zastosowanie, zasada działania 5. Zadania modułu DCM 6. Zasada działania bloku DLL 7. Podstawowe bloki w układach FPGA 8. Zasoby połączeniowe w FPGA podział 49 9. Zastosowanie globalnych linii połączeniowych