Systemy Czasu Rzeczywistego FPGA

Podobne dokumenty
Systemy Czasu Rzeczywistego FPGA

Systemy Czasu Rzeczywistego FPGA

Systemy Czasu Rzeczywistego FPGA

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Specyfika projektowania Mariusz Rawski

Projektowanie hierarchiczne Mariusz Rawski

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Projekt prostego procesora

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

Projektowanie automatów z użyciem VHDL

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

Bezpieczeństwo informacji oparte o kryptografię kwantową

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...

Programowalne układy logiczne

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

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

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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.

Projektowanie Urządzeń Cyfrowych

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

Krótkie wprowadzenie do ModelSim i Quartus2

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

Programowalne układy logiczne

Instytut Teleinformatyki

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

Kodery, dekodery, transkodery Synteza sprzętu przy pomocy VHDL

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

Projektowanie Systemów Wbudowanych

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

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

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

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

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

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

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

Programowalne układy logiczne

Instrukcja do oprogramowania ENAP DEC-1

SYSTEMY DEDYKOWANE W UKŁADACH PROGRAMOWALNYCH

Instytut Teleinformatyki

PUCY Kolos 2: Reloaded

MMfpga01. MMfpga11. Instrukcja konfiguracji środowiska, przykładowy projekt oraz programowanie układu

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

Parametryzacja przetworników analogowocyfrowych

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Programowany układ czasowy

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

Lista zadań nr 5. Ścieżka projektowa Realizacja każdego z zadań odbywać się będzie zgodnie z poniższą ścieżką projektową (rys.

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Standardowe bloki funkcjonalne

Programowany układ czasowy APSC

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

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

Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska,

Podstawy programowania w środowisku Step 7

Programowanie procesora Microblaze w środowisku SDK

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

Laboratorium Elektrycznych Systemów Inteligentnych

Instytut Teleinformatyki

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH

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

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Instytut Teleinformatyki

AKTUATOR DO SYSTEMU DUO Q

Podstawy programowania w środowisku Totally Integration Automation Portal

Instytut Teleinformatyki

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

Laboratorium. Szyfrowanie algorytmami Vernam a oraz Vigenere a z wykorzystaniem systemu zaimplementowanego w układzie

Ćw. 7: Układy sekwencyjne

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

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

Projektowanie z użyciem softprocesora picoblaze w układach programowalnych firmy Xilinx

DOKUMENTACJA PROJEKTU

LICZNIKI LABORATORIUM. Elektronika AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. Wydział Informatyki, Elektroniki i Telekomunikacji

KURS Hexcalcul (2) Implementacja kalkulatora kodu BCD na Hex w układzie programowalnym

Projektowanie układów na schemacie

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

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

Układy Cyfrowe laboratorium

Instytut Teleinformatyki

Projektowanie z użyciem procesora programowego Nios II

Sposoby projektowania systemów w cyfrowych

POLITECHNIKA SZCZECIŃSKA WYDZIAŁ ELEKTRYCZNY

Instrukcja użytkowania oprogramowania SZOB LITE

Realizacja własnych modułów IP Cores w srodowisku EDK

Instytut Teleinformatyki

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

Sterownik kompaktowy Theben PHARAO II

Instytut Teleinformatyki

ASTOR IC200ALG320 4 wyjścia analogowe prądowe. Rozdzielczość 12 bitów. Kod: B8. 4-kanałowy moduł ALG320 przetwarza sygnały cyfrowe o rozdzielczości 12

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

Projektowanie hierarchiczne Mariusz Rawski

LABORATORIUM ENERGOOSZCZĘDNEGO BUDYNKU

Technika cyfrowa. Laboratorium nr 7. Liczniki synchroniczne. Mirosław Łazoryszczak. Temat:

Lista zadań nr 1. Zagadnienia stosowanie sieci Petriego (ang. Petri net) jako narzędzia do modelowania algorytmów sterowania procesami

3. Sieć PLAN. 3.1 Adresowanie płyt głównych regulatora pco

1 Moduł Neuronu Cyfrowego SM

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

Transkrypt:

01. Systemy Czasu Rzeczywistego FPGA 1 Systemy Czasu Rzeczywistego FPGA laboratorium: 05 autor: mgr inż. Mateusz Baran

01. Systemy Czasu Rzeczywistego FPGA 2 1 Spis treści FPGA... 1 1 Spis treści... 2 2 Wiadomości wstępne... 3 2.1 Niezbędne wiadomości... 3 2.2 Literatura:... 3 3 Przebieg laboratorium... 3 3.1 Zadanie 1. Na ocenę 3.0 (dst)... 3 3.2 Zadanie 2. Na ocenę 4.0 (db)... 6 3.3 Zadanie 3. Na ocenę 5.0 (bdb)... 8

01. Systemy Czasu Rzeczywistego FPGA 3 2 Wiadomości wstępne Pierwsza część niniejszej instrukcji zawiera podstawowe wiadomości teoretyczne dotyczące omawianego tematu. Poznanie tych wiadomości umożliwi prawidłowe zrealizowanie praktycznej części laboratorium. 2.1 Niezbędne wiadomości Przed laboratorium należy zapoznać się z podstawowymi pojęciami dotyczącymi budowy układów FPGA: zasoby logiczne FPGA (CLB, slice, pamięć Block RAM, mnożarki), zasoby połączeniowe (programowalne połączenia wewnętrze, IOB), podstawy języka VHDL. Podczas laboratorium będzie wykorzystywany układ Digilent Basys2 oparty o układ Xilinx Spartan3E-250. 2.2 Literatura: [1] Podstawowy opis architektury układów FPGA: http://www.csd.uoc.gr/~hy220/2009f/lectures/11_basic_fpga_arch.pdf [2] Szczegóły budowy wykorzystywanych układów FPGA: http://www.xilinx.com/support/documentation/data_sheets/ds312.pdf [3] Podstawy języka VHDL: https://wiki.ittc.ku.edu/ittc/images/3/37/eecs_140_vhdl_tutorial.pdf 3 Przebieg laboratorium 3.1 Zadanie 1. Na ocenę 3.0 (dst) To zadanie wprowadza kilka nowych elementów. Pierwszym z nich jest użycie pamięci BlockRAM w projekcie układu. Proszę utworzyć nowy projekt o nazwie Flashy- Lights, podobnie jak w pierwszym laboratorium. Proszę dodać do projektu plik źródłowy o nazwie FlashyLights z wejściem zegarowym oraz magistralą wyjściową na diody LED. Należy pamiętać o utworzeniu pliku ograniczeń z odpowiednimi ustawieniami. W kolejnym kroku proszę dodać nowe źródło typu IP (Core Generator & Architecture Wizard) o nazwie counter30. Rdzenie IP są gotowymi modułami które można wykorzystywać do budowy własnych projektów. Przy wyborze rodzaju rdzenia proszę zaznaczyć Only IP compatible with chosen part i odnaleźć licznik binarny (Binary Counter) patrz Rysunek 1. Następnie należy kliknąć Dalej i Zakończ. Po chwili pokaże się okno konfiguracji. Należy przestawić tam szerokość wyjścia (Output Width) na 30. Generowanie licznika, wykonywane po ustawieniu parametrów, może zająć nawet kilka minut. Po tym czasie odpowiedni wpis powinien pojawić się w hierarchii projekt (patrz Rysunek 3). Wykorzystanie takiego licznika odbywa się na takiej samej zasadzie jak dowolnego innego modułu. Jest to prezentowane w poniższym kodzie.

01. Systemy Czasu Rzeczywistego FPGA 4 Rysunek 1: Wybór licznika binarnego Rysunek 2: Ustawianie szerokości wyjścia licznika

01. Systemy Czasu Rzeczywistego FPGA 5 Rysunek 3: Licznik w hierarchii projektu architecture Behavioral of FlashyLights is COMPONENT counter30 PORT ( ); clk : IN STD_LOGIC; q : OUT STD_LOGIC_VECTOR(29 DOWNTO 0) END COMPONENT; signal count : STD_LOGIC_VECTOR(29 downto 0); begin addr_counter : counter30 PORT MAP ( clk => clk, q => count ); end Behavioral; Teraz do projektu zostanie dołożona pamięć. Proszę dodać kolejny rdzeń IP o nazwie memory typu Block memory generator. W ustawieniach należy wybrać jednoportową pamięć ROM (druga strona, Rysunek 4) oraz ustawić szerokość i głębokość jak na Rysunek 5. Na czwartej stronie należy wybrać plik inicjalizujący pamięć (Flashy.coe), jak na Rysunek 6. Następnie należy wcisnąć generate omijając kolejne strony. Rysunek 4: Wybór pamięci jednoportowej ROM Rysunek 5: Szerokość i głębokość pamięci

01. Systemy Czasu Rzeczywistego FPGA 6 Rysunek 6: Plik inicjalizujący pamięć Teraz należy podłączyć pamięć. Powinna być ona zadeklarowana następująco: COMPONENT memory PORT ( ); clka : IN STD_LOGIC; addra : IN STD_LOGIC_VECTOR(9 DOWNTO 0); douta : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) END COMPONENT; Zegar clka należy podłączyć do sygnału zegarowego, wyjście danych (douta) do diod LED, zaś wejście adresowe (addra) do dziesięciu najstarszych bitów licznika binarnego. Proszę zamieścić schemat RTL w sprawozdaniu. Po wykonaniu instrukcji proszę zobaczyć efekt na płytce z układem FPGA. Obejrzyj opcje konfiguracji licznika. Co należy zmienić, aby licznik liczył w dół? Jak ograniczyć zakres wartości po których przebiega licznik? Zapisz nazwy odpowiednich opcji w raporcie. 3.2 Zadanie 2. Na ocenę 4.0 (db) Zadanie drugie polega na napisaniu projektu realizującego maszynę stanów skończonych. Maszyna ta będzie przechowywała swój stan za pomocą magistrali i zmieniała go gdy użytkownik zmieni stan przełącznika. Projekt można oprzeć o wcześniejsze zadanie Switches_LEDs. Projektowaną maszynę przedstawia Rysunek 7. Ma ona sześć stanów. Maszyna zaczyna działanie od stanu START. Włączanie kolejnych przełączników przenosi ją w kolejne stany na prawo od stanu START (ONE RIGHT, TWO RIGHT, THREE RIGHT). Gdy maszyna jest w stanie THREE RIGHT i użytkownik przełączy czwarty przełącznik, maszyna przechodzi do stanu OPEN. Ze stanu OPEN można przejść ponownie do stanu start poprzez umieszczenie wszystkich przełączników w pozycji 0. Wszystkie nieopisane tu zmiany przełączników skutkują przejściem do stanu ERROR, z którego można przejść jedynie do stanu START poprzez umieszczenie wszystkich przełączników w pozycji 0. Działanie maszyny ma być obrazowane stanem diod LED. Te sterowane sygnałami 7 do 4 powinny obrazować numer stanu maszyny (podane są one poniżej), zaś diody 3 do 0 powinny być zapalone w stanie OPEN i zgaszone we wszystkich pozostałych.

01. Systemy Czasu Rzeczywistego FPGA 7 Rysunek 7: Maszyna stanów skończonych Stan maszyny będzie reprezentowany przez sygnał state, zaś wartości odpowiadające poszczególnym stanom będą zdefiniowane przez odpowiednie stałe: constant state_error : STD_LOGIC_VECTOR(3 downto 0) := "0000"; constant state_start : STD_LOGIC_VECTOR(3 downto 0) := "0001"; constant state_one_right : STD_LOGIC_VECTOR(3 downto 0) := "0010"; constant state_two_right : STD_LOGIC_VECTOR(3 downto 0) := "0011"; constant state_three_right : STD_LOGIC_VECTOR(3 downto 0) := "0100"; constant state_open : STD_LOGIC_VECTOR(3 downto 0) := "0101"; signal state : STD_LOGIC_VECTOR(3 downto 0) := state_start; Przejścia maszyny stanów skończonych będziemy realizować za pomocą odpowiedniego procesu: process (clk) begin if rising_edge(clk) then case state is when state_error => leds(7 downto 4) <= "0000"; case switches is when "00000000" => state <= state_start;

01. Systemy Czasu Rzeczywistego FPGA 8 when others => state <= state_error; end case; when state_start => when state_one_right => when state_two_right => when state_three_right => when state_open => when others => leds(7 downto 4) <= "0000"; state <= state_error; end case; end if; end process; Proszę uzupełnić powyższy kod tak, aby odpowiadał opisowi maszyny stanów skończonych. Następnie należy uruchomić projekt w układzie FPGA i kilkukrotnie przetestować, czy działa. W zależności od szczegółów realizacji przełącznika, przez pewien krótki czas w trakcie przełączania zadawany sygnał może oscylować pomiędzy 0 a 1, zanim przyjmie nową wartość. Proszę zastanowić się w jaki sposób taka oscylacja może powodować złe działanie maszyny stanów. 3.3 Zadanie 3. Na ocenę 5.0 (bdb) Zmodyfikuj maszynę stanów skończonych tak, aby opisane w poprzednim zadania wahania stanu przełącznika nie powodowały przejścia do stanu ERROR (w przypadku wykrycia wahania maszyna powinna pozostać w nowym stanie). W sprawozdaniu zamieść kod i schemat zmodyfikowanej maszyny stanów.