Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Podobne dokumenty
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

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

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Projekt prostego procesora

Systemy Czasu Rzeczywistego FPGA

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

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: TECHNIKA CYFROWA 2 TS1C

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

Systemy Czasu Rzeczywistego FPGA

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

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

Systemy Czasu Rzeczywistego FPGA

Projektowanie Systemów Wbudowanych

Specyfika projektowania Mariusz Rawski

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

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

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

Projektowanie hierarchiczne Mariusz Rawski

Krótkie wprowadzenie do ModelSim i Quartus2

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Projektowanie Urządzeń Cyfrowych

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

Programowalne Układy Cyfrowe Laboratorium

Systemy Czasu Rzeczywistego FPGA

PUCY Kolos 2: Reloaded

SPIS TREŚCI. 2. Arytmetyka rozproszona Symulacja układu programowalnego Realizacja algorytmu cyfrowego filtrowania

Projektowanie w VHDL

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

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

Sposoby projektowania systemów w cyfrowych

Programowalne układy logiczne

Projektowanie automatów z użyciem VHDL

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

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

Parametryzacja przetworników analogowocyfrowych

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

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

Programowalne układy logiczne

Programowalne układy logiczne

Siła (w) pamięci on-chip Implementacje pamięci w układach Cyclone IV firmy Altera

Wyświetlacz siedmiosegmentowy

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.

Programowalne układy logiczne

Bezpieczeństwo informacji oparte o kryptografię kwantową

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. Instrukcje do zajęć laboratoryjnych. Laboratorium z przedmiotu:

2. PRZERZUTNIKI I REJESTRY

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

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.

Systemy Wbudowane. Założenia i cele przedmiotu: Określenie przedmiotów wprowadzających wraz z wymaganiami wstępnymi: Opis form zajęć

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: TECHNIKA CYFROWA 2 TS1C

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

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

DOKUMENTACJA PROJEKTU

Ćw. 7: Układy sekwencyjne

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

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

PRUS. projekt dokumentacja końcowa

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01

WYTYCZNE I ZALECENIA DO PRZYGOTOWANIA PRAC DYPLOMOWYCH INSTYTUTU INFORMATYKI I AUTOMATYKI KIERUNKU INFORMATYKA

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: PROGRAMOWALNE STRUKTURY LOGICZNE

Temat: Projektowanie i badanie liczników synchronicznych i asynchronicznych. Wstęp:

Języki opisu sprzętu VHDL Mariusz Rawski

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

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

1.Wprowadzenie do projektowania układów sekwencyjnych synchronicznych

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

Politechnika Białostocka

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

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

Projekt Koder HDB-3. Wykonali: Agnieszka Sikorska, Łukasz Kokosza EiTI Politechnika Warszawska Warszawa Projekt UCYF Koder HDB-3

Technika Mikroprocesorowa

Podstawowe układy cyfrowe

Przetwarzanie AC i CA

Technika Cyfrowa. Badanie pamięci

SYSTEMY CZASU RZECZYWISTEGO (SCR)

Politechnika Śląska w Gliwicach

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

dokument DOK wersja 1.0

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.

Politechnika Białostocka

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

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja. do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1.

Synteza strukturalna

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

PROTOTYPOWANIE UKŁADÓW ELEKTRONICZNYCH Programowalne układy logiczne FPGA Maciej Rosół, Katedra Automatyki AGH,

Opis przedmiotu zamówienia CZĘŚĆ 1

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

Układy Cyfrowe laboratorium

Język opisu sprzętu VHDL

Projekt z UCYF Dokumentacja końcowa. Temat: Sprzętowa realizacja gry Arkanoid

Transkrypt:

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 7 (2h) Obsługa urządzenia peryferyjnego z użyciem pamięci w VHDL. Instrukcja do zajęć laboratoryjnych z przedmiotu Synteza układów cyfrowych studia niestacjonarne, II stopnia, semestr 2 EZ2B200013 Opracował: dr inż. Łukasz Sajewski Białystok 2012 1

1. Cel i zakres ćwiczenia Celem ćwiczenia jest implementacja i inicjacja bloków pamięci w strukturach programowalnych stosowanych do obsługi urządzeń peryferyjnych. 2. Wyświetlacz matrycowy Jako urządzenie peryferyjne posłuży wyświetlacz matrycowy (64 punktowy) wraz z płytką połączeniową i zasilaczem oraz zestaw przełączników dostępny na płycie DE1. Rys. 1. Widok ogólny oraz schemat elektryczny wyświetlacza matrycowego 2

Wspomniany wyświetlacz podłączany jest do układu DE1 poprzez jeden z dwóch 40- pinowych portów rozszerzających oznaczonych jako GPIO_0 lub GPIO_1. Wyświetlacz posiada dwa zestawy diod LED czerwone oraz zielone, w związku z tym do pełnego sterowania wymagane jest użycie 32 pinów. Do sterowania diodami LED zielonymi wykorzystywane są piny GPIO[0..15], natomiast do sterowania diodami LED czerwonymi wykorzystywane są piny GPIO[16..31]. Liczba pinów wynika z budowy wyświetlacza, który posiada 8 kolumn (C1 C8) i 8 wierszy (R1 R8), przy czym wiersze odpowiadają nieparzystym numerom pinów portu GPIO, natomiast kolumny odpowiadają parzystym numerom pinów portu GPIO. Do zaświecenia wszystkich diod czerwonych (diody zielone zgaszone) wystarczy proste połączenie pinów do zasilania oraz do masy. Rys. 2. Schemat prostego połączenia wyświetlacza matrycowego W ramach zadania obsługi statycznej wyświetlacza należy przygotować program który w dwóch przeciwnych rogach wyświetlacza zapala jedną diodę czerwoną i jedną diodę zieloną. W tym celu: 1. Utwórz nowy projekt. 2. Napisz program w VHDL opisujący projektowany układ. 3. Przypisz połączenia portu GPIO. 4. Dokonaj kompilacji projektu. 5. Zaprogramuj FPGA. 6. Podłącz wyświetlacz do płyty DE1 oraz do zasilania 3.3V i przetestuj pracę układu obserwując wyświetlacz. 3. Pamięć w środowisku Quartus II W systemach cyfrowych często konieczne jest zapewnienie pewnej ilości pamięci niezbędnej do wykonania założonego zadania. Jeżeli system jest implementowany w technologii FPGA to istnieje możliwość implementacji pamięci (ROM lub RAM) używając zasobów pamięciowych zawartych w układzie FPGA. Rys. 3. Schemat ogólny bloku asynchronicznej pamięci RAM 3

Rys. 4. Schemat ogólny bloku synchronicznej pamięci RAM Pamięć (ROM lub RAM) w układach FPGA, można zainicjalizować na różne sposoby. Poprzez użycie biblioteki LPM bloków programowalnych, bądź też przez użycie własnego kodu opisującego blok pamięci w środowisku VHDL. LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY memory_1 IS PORT(clk: IN STD_LOGIC; adres: IN INTEGER RANGE 0 TO 7; dane: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY; ARCHITECTURE Prosta OF memory_1 IS TYPE blok_pamieci IS ARRAY(0 TO 7) OF STD_LOGIC_VECTOR(7 DOWNTO 0); CONSTANT rom: blok_pamieci := ("00000001", "00000010", "00000100", "00001000", "00010000", "00100000", "01000000", "10000000"); dane <= rom(adres); END; List. 1. Listing odpowiadający pamięci asynchronicznej ROM 8 x 8 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY memory_2 IS PORT(clk, oe, we: IN STD_LOGIC; adres: IN INTEGER RANGE 0 TO 15; dane: INOUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY; ARCHITECTURE Prosta OF memory_2 IS 4

TYPE blok_pamieci IS ARRAY(0 TO 15) OF STD_LOGIC_VECTOR(7 DOWNTO 0); PROCESS(clk) VARIABLE ram: blok_pamieci; dane <= (OTHERS => 'Z'); IF oe = '0' THEN dane <= ram(adres); ELSIF we = '0' THEN ram(adres) := dane; END IF; END PROCESS; END; List. 2. Listing odpowiadający pamięci synchronicznej RAM 16 x 8 W ramach zadania treningowego zaimplementować dowolny blok pamięci i przetestować jego działanie podłączając odpowiednie sygnały wejściowe (z wykorzystaniem przełączników dostępnych na płycie DE1) i wyjściowych (diody LED). W tym celu: 1. Utwórz nowy projekt. 2. Napisz program w VHDL opisujący projektowany układ. 3. Przypisz połączenia. 4. Dokonaj kompilacji projektu. 5. Zaprogramuj FPGA. 6. Przetestuj pracę układu. 4. Obsługa wyświetlacza matrycowego z wykorzystaniem pamięci ROM Obsługa wyświetlacza matrycowego w sposób dynamiczny sprowadza się do cyklicznego odczytu pamięci i przekazywaniu danych w niej zapisanych (w postaci zer i jedynek) na port do którego dołączone jest urządzenie. Schemat poglądowy układu obsługi dynamicznej wyświetlacza matrycowego dany jest poniżej. Zegar INPUT inst3 lpm_counter1 modulus 50000000 q[25..0] cout inst2 lpm_counter0 modulus 8 q[3..0] memory clk adres[3..0] dane1[7..0] dane2[7..0] OUTPUT OUTPUT Wiersze_wy swietlacza Kolumny _wy swietlacza inst Rys. 5. Schemat układu obsługi wyświetlacza na bazie pamięci ROM Sygnał Zegar jest sygnałem prostokątnym generowanym przez jeden z trzech kwarców dostępnych na płycie DE1 (24MHz, 27MHz, 50MHz). Licznik lpm_counter1 spełnia rolę 5

dzielnika częstotliwości. Licznik lpm_countr0 spełnia rolę układu adresującego pamięć. Częstotliwość odczytu pamięci wyznacza sygnał cout z licznika lpm_counter1. Do poprawnego wyświetlania (bez efektu mrugania wyświetlanego znaku lub niewyraźnego wyświetlania) konieczne jest uzyskanie częstotliwości odczytu około 500Hz. Blok pamięci memory zawiera predefiniowane dane związane z wyświetlanym znakiem jaki mamy zaobserwować na wyświetlaczu. Blok pamięci posiada dwa wyjścia sterujące odpowiednio wierszami i kolumnami wyświetlacza. W jednym takcie zegara na wyjściu pamięci pojawia się 8-bitowe słowo sterujące wierszem i 8-bitowe słowo sterujące kolumną. Stan niski na jednym z bitów słowa sterującego wybiera które pole wyświetlacza matrycowego zostanie zaświecone. Powtarzanie operacji z częstotliwością około 500Hz da w efekcie możliwość wyświetlenia dowolnego znaku złożonego z 64 punktów wyświetlacza matrycowego. W ramach zadania zaimplementować układ, który na wyświetlaczu matrycowym wyświetla zdefiniowany znak (np. ). W tym celu: 1. Utwórz nowy projekt. 2. Posługując się schematem z Rys.5. napisz program w VHDL z użyciem pamięci opisujący projektowany układ. 3. Przypisz połączenia portu GPIO. 4. Dokonaj kompilacji projektu. 5. Zaprogramuj FPGA. 6. Przetestuj pracę układu. ENTITY memory IS PORT(clk: IN STD_LOGIC; adres: IN INTEGER RANGE 0 TO 7; wyj: OUT STD_LOGIC_VECTOR(15 DOWNTO 0)); END ENTITY; ARCHITECTURE Behaviour OF memory IS TYPE blok_pamieci IS ARRAY(0 TO 7) OF STD_LOGIC_VECTOR(7 DOWNTO 0); CONSTANT rom1: blok_pamieci := ("00000001", "00000010", "00000100", "00001000", "00010000", "00100000", "01000000", "10000000"); --wybiera kolejne wiersze wyświetlacza CONSTANT rom2: blok_pamieci := ( --litera H "11111110", "11111110", "11000110"); --sekwencja do wyświetlenia SIGNAL in1, in2: STD_LOGIC_VECTOR(7 DOWNTO 0); PROCESS(clk) in2 <= NOT rom1(adres); in1 <= NOT rom2(adres); END PROCESS; 6

wyj<=in1(7)&in2(7)&in1(6)&in2(6)&in1(5)&in2(5)&in1(4)&in2(4)&in1(3)&in2(3) &in1(2)&in2(2)&in1(1)&in2(1)&in1(0)&in2(0); END; List. 3. Listing realizujący wyświetlanie litery H z użyciem dwóch bloków pamięci ROM 8 x 8 5. Rozbudowana obsługa wyświetlacza matrycowego Punkt 4 przewiduje wyświetlanie jednego znaku na wyświetlaczu matrycowym. W zadaniu tym należy rozbudować program z wcześniejszego punktu w taki sposób, by można było na wyświetlaczu uzyskać kolejne litery napisu HELLO przełączane przyciskiem KEY. _50 INPUT inst key [0] lpm_counter0 modulus 100000 q[17..0] cout INPUT inst1 inst8 lpm_counter1 lpm_counter2 modulus 8 q[2..0] q[1..0] memory _e clk st[1..0] adres[2..0] inst7 dane1[7..0] dane2[7..0] obw_wy j in1[7..0] in2[7..0] inst3 output[15..0] gpio_1[15..0] OUTPUT gpio_1[31..16] OUTPUT Rys. 6. Schemat przykładowego rozwiązania 6. Sprawozdanie Sprawozdanie z zajęć laboratoryjnych powiano zawierać: 1. Opis słowny zadania do realizacji 2. Założenia realizowanego zadania 3. Procedurę projektową 4. Listingi gotowych programów 5. Weryfikację działania układu 6. Uwagi i wnioski Literatura: 1. Barski M., Jędruch W.: Układy cyfrowe, podstawy projektowania i opisu w języku VHDL, Wydawnictwo Politechniki Gdańskiej, 2007. 2. Łuba T.: Synteza układów cyfrowych, WKiŁ, Warszawa, 2004. 3. Mano M.M., Kime Ch.R.: Podstawy projektowania układów logicznych i komputerów, NT, Warszawa 2007. 4. Skahill K.: Język VHDL Projektowanie programowalnych układów logicznych, WNT, Warszawa, 2001. Zamieszczone w instrukcji zrzuty ekranowe oraz zdjęcia pochodzą z materiałów firmowych dostarczonych przez firmę Altera. 7