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



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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Systemy Czasu Rzeczywistego FPGA

Specyfika projektowania Mariusz Rawski

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

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

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

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

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

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

Systemy Czasu Rzeczywistego FPGA

Projekt prostego procesora

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

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

DOKUMENTACJA PROJEKTU

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Projektowanie hierarchiczne Mariusz Rawski

Krótkie wprowadzenie do ModelSim i Quartus2

Systemy Czasu Rzeczywistego FPGA

Wyświetlacz siedmiosegmentowy

Projektowanie automatów z użyciem VHDL

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

PUCY Kolos 2: Reloaded

Projektowanie w VHDL

Systemy Czasu Rzeczywistego FPGA

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

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

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

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

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

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

Projektowanie Urządzeń Cyfrowych

Sposoby projektowania systemów w cyfrowych

Układy reprogramowalne i SoC Specjalizowane moduły FPGA

Języki opisu sprzętu VHDL Mariusz Rawski

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

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

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

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

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

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

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

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

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

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

Synteza strukturalna

Programowalne układy logiczne

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

Układy Cyfrowe laboratorium

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

Programowalne układy logiczne

Programowalne układy logiczne

d&d Labo Dekoder Ledv.4 Przeznaczenie, działanie: Montaż:

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

Programowanie mikrokontrolerów - laboratorium

Projektowanie Systemów Wbudowanych

Układy reprogramowalne i SoC Język VHDL (część 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.

Realizacja stopera na układzie Spartan-II przy uŝyciu pakietu Xilinx ISE

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

Podstawy techniki cyfrowej zima 2015 Rafał Walkowiak

Instrukcje sekwencyjne

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

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

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

Podstawy techniki cyfrowej zima 2017 Rafał Walkowiak Synteza strukturalna wyższego poziomu

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

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

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Badanie układów średniej skali integracji - ćwiczenie Cel ćwiczenia. 2. Wykaz przyrządów i elementów: 3. Przedmiot badań

Przykład realizacji ćwiczenia nr 8.

WEJŚCIE W TRYB PROGRAMOWANIA

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

VHDL cz.1. Rafał Walkowiak IIn PP Wer

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

PROJEKTOWANIE UKŁADÓW CYFROWYCH Z WYKORZYSTANIEM PAKIETU MULTISIM 2001 ORAZ JĘZYKA OPISU SPRZĘTU VHDL

Laboratorium z podstaw techniki cyfrowej Studia inżynierskie niestacjonarne/stacjonarne, II rok III semestr, 2016/2017. W ramach laboratorium używamy:

Mikrokontrolery wytyczne do projektów Temat 1 Łamanie kodu

Klawiatura komputerowa.

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

Quartus. Rafał Walkowiak IIn PP Wer

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

Pod o z d ia i ł a r yn y k n u k u ( 2004 r.). źródło: Gartner 3

Projektowanie hierarchiczne Mariusz Rawski

Wagomat PMP9503. WiS Bydgoszcz. Wagomat PMP9503 seria1../2../3.. Instrukcja obsługi. 31 październik, 2003 strona 1

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

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

Metoda Newtona przyjmuje następujące założenia dla funkcji :

INSTRUKCJA OBSŁUGI SYSTEM PRZYWOŁAWCZY KALER ZEGAREK GEN-700 TOUCH

INSTRUKCJA OBSŁUGI MONITORA LINII PRĄDOWEJ

Quartus. Rafał Walkowiak IIn PP Listopad 2017

Wprowadzenie do laboratorium komputerowego część I

MANIPULATOR LED CA-10 KLED-M

SML3 październik

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

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Programowanie Układów Logicznych kod kursu: ETD6203. Szczegóły realizacji projektu indywidualnego W dr inż.

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

Transkrypt:

WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH SPRAWOZDANIE Temat: Projekt notesu elektronicznego w języku VHDL przy użyciu układów firmy Altera z serii Cyclone II Wykonali: Tomasz Trzciński Dariusz Wojtczuk Gr. E4B2S0

Niniejsze sprawozdanie zawiera opis projektu, jakim jest notes elektroniczny do przechowywania krótkich informacji w postaci liczb. Projekt wykony jest w języku VHDL przy użyciu układów firmy Altera z serii Cyclone II z wykorzystaniem środowiska projektowego Quartus. Wykorzystana płytka posiada możliwości współpracy z innymi urządzeniami, jednak projekt został ograniczony do wykorzystania możliwości samej płytki. Dla potrzeb notesu wykorzystany został czterocyfrowy wyświetlacz siedmiosegmentowy, co znacznie ogranicza możliwość wyświetlania zapisanych w naszym notesie danych. Po pierwsze ogranicza ilość wyświetlanych jednocześnie znaków na wyświetlaczu siedmiosegmentowym (nie ma możliwości wyświetlenia wszystkich znaków alfanumerycznych). Na płytce mamy do dyspozycji 8 przycisków, które posłużą do obsługi notesu oraz 8 diod LED, które będą wskazywały pozycje w notesie. Ogólnie rzecz biorąc wykonany notes ma za zadanie przechowywanie przez użytkownika pewnych danych, czyli potrzebne są następujące operacje: wpisywania do notesu (d dodaj), odczytywanie zapisanych informacji (P pokaż, oraz kasowanie informacji niepotrzebnych (U usuń). Która z operacji jest aktualnie aktywna sygnalizuje litera wyświetlana na pierwszym od lewej wyświetlaczu. 2

Jak widać na poniższym zdjęciu notes elektroniczny wykorzystuje tylko 4 przyciski, 8 diod LED oraz wyświetlacz segmentowy. OPERACJA DANE POZYCJA EDYCJA CYFRY WYBÓR CYFRY DO EDYCJI WYBÓR POZYCJI WYBÓR OPERACJI 3

WYBÓR OPERACJI Wskazany na poniższym zdjęciu przycisk służy do wyboru operacji jaką chcemy w danym momencie wykonywać (odczytywać, dodawać czy usuwać). WYBÓR POZYCJI Drugi od prawej przycisk służy do wyboru pozycji w notesie. Do notesu można wpisać tyle pozycji ile jest diod na płytce gdyż zapalona dioda sygnalizuje pozycje, która jest aktualnie wyświetlana (dlatego do naszego notesu można wpisać 8 pozycji gdyż tyle jest dostępnych diod). 4

DODAWANIE DANYCH LUB EDYCJA Aby wpisywać dane do notesu należy ustawić tryb dodawania ( pojawia się litera d ). Dodawanie zostało zrealizowane przy użyciu dwóch przycisków (skrajnych z lewej strony). Pierwszym wybieramy, która z trzech cyfr chcemy zmienić a drugim edytujemy cyfrę poprzez zwiększanie o 1 aż do uzyskania żądanej. USUWANIE DANYCH Kolejną operacją jest usuwanie zapisanych danych. W tym celu wystarczy przejść do wybranej pozycji w notesie, którą chcemy skasować, a następnie przyciskiem zmiany operacji wybrać U usuń, pozycja zostanie automatycznie skasowana. 5

WYŚWIETLANIE Wyświetlanie zostało zrealizowane według poniższego schematu. Szczegółowy opis zarówno wyświetlania jak i innych funkcji został umieszczony poniżej w postaci opisu kodu VHDL. 6

RAPORT Z KOMPILACJI 7

OPIS W JEZYKU VHDL library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity notes is port( --przyciski na klawiaturze klawiatura: in std_logic_vector(7 downto 0); --diody na płytce określające pozycje wyświetlanego numeru diody :out std_logic_vector(7 downto 0); --jedna pozycja wyświetlacza segment :inout std_logic_vector(0 to 6); --zegar 50Mhz clk :in std_logic; --wektor służący do wyświetlania com : inout std_logic_vector(0 to 3):="1110"; --sygnał zapalający kropkę kropka : inout std_logic:='1' ); end notes; architecture a1 of notes is --powołanie nowego typu zawierającego jeden 3 cyfrowy numer type linia is array (0 to 2) of std_logic_vector(0 to 6); --powołanie nowego typu zawierającego zbiór numerów type tablica is array(0 to 7) of linia; signal lin: linia; --powołanie nowego sygnału typu tablica (zaalokowanie tablicy) signal tab: tablica; begin --proces reaguje na zmiany sygnału zegarowego i --naciśniecie klaiesza na klawiaturze process(klawiatura,clk) 8

--powolanie zmiennych pomocniczych variable wiersz : integer:=0; variable kol : integer:=0; variable dzielnik: std_logic_vector(16 downto 0); variable operacja: std_logic_vector(0 to 6); variable com1 : std_logic_vector(1 downto 0):="00"; variable dzialanie :std_logic_vector(1 downto 0):="00"; variable wypelnienie :integer:=0; variable lin1: linia; variable tab1: tablica; variable kod: std_logic_vector(6 to 0); begin --układ zmieniający rodzaj wykonywanej operacji (licznik mod2) if rising_edge(klawiatura(0)) then -- wybor operacji if dzialanie <= "01" then dzialanie:=dzialanie+1; else dzialanie:="00"; --opis działania operacji wyświetlania if dzialanie = "00" then operacja := "0010010"; --opis działania operacji dodawania elsif dzialanie = "01" then operacja := "0101000"; if rising_edge(klawiatura(7)) then --odczyt danych z tablicy na pozycji równej pozycji zmiennej --wiersz tab1:=tab; lin1:=tab1(wiersz); --inkrementacja wartości wyświetlanej pozycji w kodzie siedmio-segmentowym; if lin1(kol)="0000001" then lin1(kol):="1111001"; elsif lin1(kol)="1111001" then lin1(kol):="0001010"; elsif lin1(kol)="0001010" then lin1(kol):="1001000"; 9

elsif lin1(kol)="1001000" then lin1(kol):="1110000"; elsif lin1(kol)="1110000" then lin1(kol):="1000100"; elsif lin1(kol)="1000100" then lin1(kol):="0000100"; elsif lin1(kol)="0000100" then lin1(kol):="1011001"; elsif lin1(kol)="1011001" then lin1(kol):="0000000"; elsif lin1(kol)="0000000" then lin1(kol):="1000000"; elsif lin1(kol)="1000000" then lin1(kol):="1111111"; elsif lin1(kol)="1111111" then lin1(kol):="0000001"; --opis działania operacji usuwania elsif dzialanie = "10" then operacja := "0100001"; --wygaszenie wyświetlacza na trzech pozycjach lin1(0):="1111111"; lin1(1):="1111111"; lin1(2):="1111111"; -- przewijanie do kolejnej pozycji numeru if rising_edge(klawiatura(1)) then if wiersz <= 6 then wiersz:=wiersz+1; else wiersz:=0; -- przewijanie do kolejnej pozycji w numerze if rising_edge(klawiatura(6)) then if kol <= 1 then kol:=kol+1; else kol:=0; 10

--realizacja operacji wyświetlania if rising_edge(clk) then --dzielenie przez 131071 if dzielnik="11111111111111111" then --realizacja wyświetlania numerów w tablicy na wyświetlaczu if com="1110" then lin1:=tab(wiersz); segment<=lin1(0); com<="1101"; kropka<='1'; elsif com="1101" then lin1:=tab(wiersz); segment<=lin1(1); com<="1011"; kropka<='1'; elsif com="1011" then lin1:=tab(wiersz); segment<=lin1(2); com<="0111"; kropka<='1'; else segment<=operacja; com<="1110"; kropka<='0'; --realizacja wyświtlania pozycji numeru na diodach if wiersz=0 then diody<="00000001"; elsif wiersz=1 then diody<="00000010"; elsif wiersz=2 then diody<="00000100"; elsif wiersz=3 then diody<="00001000"; elsif wiersz=4 then diody<="00010000"; elsif wiersz=5 then diody<="00100000"; elsif wiersz=6 then diody<="01000000"; else diody<="10000000"; dzielnik:=dzielnik+1; end process end a1; 11