DOKUMENTACJA PROJEKTU

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

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

Projektowanie hierarchiczne Mariusz Rawski

Systemy Czasu Rzeczywistego FPGA

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

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

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Programowalne układy logiczne

THE HARDWARE IMPLMENTATION OF THE PS/2 PROTOCOL ON SPARTAN 3 FPGA DEVICE IMPLEMENTACJA SPRZĘTOWA PROTOKOŁU PS/2 W UKLADZIE FPGA SPARTAN 3

Specyfika projektowania Mariusz Rawski

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

Technika mikroprocesorowa. Konsola do gier

Systemy Czasu Rzeczywistego FPGA

Projekt prostego procesora

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

Projektowanie automatów z użyciem VHDL

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Programowalne układy logiczne

Krzysztof Leszczyński Adam Sosnowski Michał Winiarski. Projekt UCYF

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

Systemy Czasu Rzeczywistego FPGA

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

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

Projektowanie Urządzeń Cyfrowych

Temat 7. Dekodery, enkodery

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

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

Podstawy Elektroniki dla Elektrotechniki. Liczniki synchroniczne na przerzutnikach typu D

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

Wyświetlacz siedmiosegmentowy

TECHNIKA MIKROPROCESOROWA

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

Ćwiczenie 7 Matryca RGB

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

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

Odbiór i dekodowanie znaków ASCII za pomocą makiety cyfrowej. Znaki wysyłane przez komputer za pośrednictwem łącza RS-232.

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Systemy Czasu Rzeczywistego FPGA

LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY. Rev.1.1

4. Karta modułu Slave

Programowalne Układy Cyfrowe Laboratorium

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Dodatek D. Układ współpracy z klawiaturą i wyświetlaczem 8279

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

Opis procedur asemblera AVR

LABORATORIUM ELEKTRONIKI I TEORII OBWODÓW

PUCY Kolos 2: Reloaded

Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01

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

Interfejsy. w systemach pomiarowych. Ryszard J. Barczyński, 2016 Materiały dydaktyczne do użytku wewnętrznego

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

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

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

Programowanie w językach asemblera i C

CZ1. Optymalizacja funkcji przełączających

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

Podstawy działania układów cyfrowych...2 Systemy liczbowe...2 Kodowanie informacji...3 Informacja cyfrowa...4 Bramki logiczne...

4.1.5 Zakładka: Monitoring GPRS Zakładka: LogicProcessor. Konfiguracja systemu.

Kod produktu: MP01611

TECHNIKA MIKROPROCESOROWA II

ZAKŁAD SYSTEMÓW ELEKTRONICZNYCH I TELEKOMUNIKACYJNYCH Laboratorium Podstaw Telekomunikacji WPŁYW SZUMÓW NA TRANSMISJĘ CYFROWĄ

(przykład uogólniony)

Programowanie mikrokontrolerów 2.0

Instrukcje sekwencyjne

Synteza strukturalna

Liczniki, rejestry lab. 07 Układy sekwencyjne cz. 1

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

interfejs szeregowy wyświetlaczy do systemów PLC

Ćw. 7: Układy sekwencyjne

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

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

Ćwiczenie 29 Temat: Układy koderów i dekoderów. Cel ćwiczenia

Projektowanie w VHDL

Interfejsy komunikacyjne pomiary sygnałów losowych i pseudolosowych. Instrukcja do ćwiczenia laboratoryjnego

Programowany układ czasowy

Programowalne układy logiczne

Opis układów wykorzystanych w aplikacji

Logiczny model komputera i działanie procesora. Część 1.

Mikrokontrolery AVR Wprowadzenie

Układy kombinacyjne. cz.2

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Część 3. Układy sekwencyjne. Układy sekwencyjne i układy iteracyjne - grafy stanów TCiM Wydział EAIiIB Katedra EiASPE 1

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

DVR KEYB v1.4. Interfejs PS-2 do rejestratorów DVR

Automatyzacja i robotyzacja procesów produkcyjnych

Kod produktu: MP01611-ZK

RSD Uniwersalny rejestrator danych Zaprojektowany do pracy w przemyśle

f we DZIELNIKI I PODZIELNIKI CZĘSTOTLIWOŚCI Dzielnik częstotliwości: układ dający impuls na wyjściu co P impulsów na wejściu

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

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

Projektowanie złożonych układów cyfrowych

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Podstawowe moduły układów cyfrowych układy sekwencyjne cz.2 Projektowanie automatów. Rafał Walkowiak Wersja /2015

Implementacja algorytmu szyfrującego

Transkrypt:

AKADEMIA GÓRNICZO-HUTNICZA w Krakowie KATEDRA ELEKTRONIKI DOKUMENTACJA PROJEKTU Projekt z przedmiotu Sprzętowa Implementacja Algorytmów: Dekoder klawiatury na PS/2 Prowadzący: Dr inż. Paweł Russek Wykonali: Bogdan Tabor Piotr Stawiarski Elektronika, IV rok AGH ]

1Wstęp teoretyczny Poniżej jest przedstawiony wtyk PS/2: Male (Plug) Female (Socket) 6-pin Mini-DIN (PS/2): 1-Data 2 - Not Implemented 3 - Ground 4-+5v 5-Clock 6 - Not Implemented Przy czym częstotliwość przebiegu zegarowego z klawiatury zawiera się w przedziale 10-16.7 khz. Naciśnięcie na klawiaturze lub też jego puszczenie jest sygnalizowane poprzez wysłanie do Hosta (w naszym przypadku komputer klasy PC) sekwencji odpowiednich ramek. Sekwencje te zostały przedstawione w dołączonej do dokumentacji tabeli. Zawiera ona pary MAKE CODE oraz BREAK CODE dla każdego. MAKE CODE to ramki wysyłane przy naciśnięciu a BREAK CODE przy jego puszczeniu. Poniżej przedstawiony jest sposób wysyłania ramki DATA do Host a, w synchronizacji z opadającym zboczem zegara CLOCK (z klawiatury): Poniższe przebiegi obrazują wysłanie kodu Q (15h) (MC). Chan A odpowiada zegarowi z klawiatury natomiast Chan B przedstawia ramkę wysyłaną w synchronizacji z tym zegarem: --- Należyzauważyć, że w przypadku przytrzymywania ciągle jest wysyłany jest jego MAKE CODE.

2. Opis układu zaimplementowanego w module XCV300PQ240. Głównym plikiem projektu jest little.bde, jest to tzw. top, zawiera on wszystkie pliki składające się na cały program.little.bde posiada cztery wejścia, są to: KBDATA, KBCLK, CLK i RST. Dwa pierwsze wejścia to sygnały pochodzące wprost z klawiatury, która po naciśnięciu wysyła bity w ramce, transmisja ta jest synchronizowana jej własnym zegarem. Wyjściem elementu tworzą dwie magistrale wysyłające równolegle siedmiobitowe ramki sterujące wyświetlaczami segmentowymi oraz dziesięciobitowe wyjście LEDY, które ma za zadanie zapalać linijkę dziesięciu diod świecących. Pierwszy stopień to kbdecoder, jesttoukład, który czyta szeregowo podawane bity z klawiatury, bity składane są w jedenastobitowe ramki. Z jedenastobitowej ramki osiem bitów, które tworzą właściwy kod, zostają równolegle wyprowadzane. Odczytywanie bitów z wejścia KBDATA jest synchronizowane zegarem generowanym także przez klawiaturę, podawanym na wejście KBCLK. RST : in STD_LOGIC; --sygnal zerujacy KBDATA : in STD_LOGIC; --dana wysylana z klawiatury KBCLK : in STD_LOGIC; --zewn. zegar z klawiatury DATA : out STD_LOGIC_VECTOR(7 downto 0) --8 bitowe dane wyslane z klaw. Drugi stopień: decision odbiera ośmiobitową ramkę DATAIN, sprawdza czy ramka jest różna od F0 lub E0, następnie w zależności od wyniku komparacji zapisuje ramkę do rejestru FRAME1 lub FRAME2. Jeżeli ramka jest równa E0 lub F0 zapisujemy ją do odpowiedniego rejestru Frame (traktujemy jako BREAK CODE), gdy jest różna do E0 i F0 (traktujemy jako MAKE CODE). Sygnał wyjściowy OK sygnalizuje ważność danych na wyjściach FRAME1, FRAME2, aktywny jest stanem wysokim. DATAIN : in STD_LOGIC_VECTOR(7 downto 0); --8 bitowe dane wyslane z klaw. FRAME_1 : inout STD_LOGIC_VECTOR(7 downto 0); FRAME_2 : inout STD_LOGIC_VECTOR(7 downto 0); OK : inout STD_LOGIC Oprócz tego do pamiętania ramki poprzedniej w przypasku otrzymywania BREAK CODE (2 ie ramki) wykorzystywane są sygnały: signal WAIT_FOR : STD_LOGIC; signal TEMP : STD_LOGIC_VECTOR(7 downto 0); Trzeci blok ps22ascii posiada wejścia: oraz wyjścia: CLK : in STD_LOGIC; FRAME1 : in STD_LOGIC_VECTOR(7 downto 0); FRAME2 : in STD_LOGIC_VECTOR(7 downto 0); OK : in STD_LOGIC; RST :in STD_LOGIC; ASCIIO : out STD_LOGIC_VECTOR(3 downto 0); ASCIIY : out STD_LOGIC_VECTOR(3 downto 0); LEDY : out STD_LOGIC_VECTOR(9 downto 0) Na podstawie wejść FRAME1, FRAME2 i OK analizuje on swoją tablice przekodowań i na jej podstawie wysyła na swoje wyjścia ASCII,ASCII i LEDY odpowiedni

ciąg binarny. Ramka standardu PS/2 zostaje zamieniona na kod ASCII, duże litery i cyfry w kodzie ASCII mają odpowiedniki w postaci liczb dwucyfrowych, więc można łatwo je wizualizować na wyświetlaczach segmentowych w jakie jest wyposażony zestaw uruchomieniowy. Przekodowanie nie jest jednak typowym zapisem kodu ASCII w postaci binarnej, każda z dwóch cyfr kodowana jest oddzielnie na czterech bitach, daje to w sumie 8 bitów, cztery starsze bity podawane są na wejście dekodera ascii2seg, a młodsze cztery bity na wejścia dekodera ascii2segy. Przekodowanie realizuje proces coder, którego część zamieszczona została poniżej: coder:process(clk,rst,frame1,frame2,ok) begin if (RST='1') then ASCIIO <= "0000";-- enter your statements here -- ASCIIY <= "0000"; LEDY <= "0000000000"; elsif (CLK'event and CLK='0') then --dane sa wysylane wraz z opadajacym zboczem KBCLK if(frame1=x"1c" and FRAME2=x"00" and OK='1') then --A ASCIIo <="0110"; ASCIIY <="0101"; --65 CZTERY BITY NA 6 I CZTERY BITY NA 5 LEDY <= "0000000000"; itd dekodujemy wszystkie klawisze liter i cyfr... elsif(frame1=x"e0" or FRAME2=x"F0")then LEDY <="1111111111";--diody zapalone end process coder; Wykonanie instrukcji warunkowej if powoduje zdekodowanie ciągu wejściowego, fizyczne puszczenie klawiatury powoduje pojawienie się ramki F0 lub E0,zdarzenie to jest sygnalizowane zapaleniem linijki diodowej. Tym sposobem zostało rozróżnione wciśnięcie + trzymanie od wciśnięcia i puszczenia. Puszczenie sygnalizuje zapalenie się diod.

Poniżej została zamieszczona tabela kodówascii. Symbol Kod 0 48 C 67 O 79 1 49 D 68 P 80 2 50 E 69 Q 81 3 51 F 70 R 82 4 52 G 71 S 83 5 53 H 72 T 84 6 54 I 73 V 85 7 55 J 74 U 86 8 56 K 75 W 87 9 57 L 76 X 88 A 65 M. 77 Y 89 B 66 N 78 Z 90 Wyjścia SEGO i SEGY są podłączone do dekoderów sterujących wyświetlaczami segmentowymi, wyjście LEDY do linijki diodowej Ascii2seg i ascii2segy to bliźniacze dekodery zamieniające kody cyfr na sygnały sterujące pracą wyświetlaczy segmentowych. Na podstawie wejścia ASCIIY wyprowadza sekwencje bitównawyjście SEGY. Zaimplementowane jest to w procesie coder1. entity ascii2segy is port( CLK : in STD_LOGIC; RST : in STD_LOGIC; ASCIIY : in STD_LOGIC_VECTOR(3 downto 0); SEGY : out STD_LOGIC_VECTOR(6 downto 0) ); end ascii2segy; architecture ascii2segy of ascii2segy is begin coder1:process(clk,rst,asciiy) begin if (RST='1') then SEGY <= "0000000"; elsif (CLK'event and CLK='0') then if (ASCIIY="0001")then --1 SEGY <= "0010010"; elsif (ASCIIY="0010")then --2 SEGY <= "1011101";. else --0 -- SEGY <= "1110111"; --with ASCIIY select end process coder1; end ascii2segy;

Sposób sterowania wyświetlaczem segmentowym został przedstawiony poniżej: Sygnał SEGY został doprowadzony do wejść S0-S6 tak, że najstarszy bit ramki na wyjściu SEGY odpowiada S0 itd. Drugi wyświetlacz segmentowy sterowany jest w identyczny sposób przez identyczny dekoder.

FORMAT DANYCH Z KLAWIATURY: NOTKA INFORMACYJNA DEKODOWANIE ASCII KLAWISZY: 0 48 C 67 O 79 1 49 D 68 P 80 2 50 E 69 Q 81 3 51 F 70 R 82 4 52 G 71 S 83 5 53 H 72 T 84 6 54 I 73 V 85 7 55 J 74 U 86 8 56 K 75 W 87 9 57 L 76 X 88 A 65 M. 77 Y 89 B 66 N 78 Z 90 NA WYŚWIETLACZACH WYŚWIETLANY JEST KOD NACIŚNIETEGO KLAWISZA W ASCII. LINIJKA DIÓD GAŚNIE W MOMENCIE PUSZCZENIA KLAWISZA. IMPLEMENTACJA NA XSV300PQ240 BLOKI: Kbdecoder wyłapywanie 8bitów zramkiwysłanej przez klawiaturę Decision rozpoznanie rodzaju ramek: czy otrzymujemy MAKE CODE (naciśnięcie ) czy BREAK CODE (puszczenie ). Ps22ascii ramka standardu PS/2 zostaje zamieniona na kod ASCII Ascii2seg i Ascii2segy - dekodery zamieniające kody cyfr na sygnałysterujące pracą wyświetlaczy segmentowych SYGNAŁY: CLK - wejście, główny sygnał zegarowy RST - wejście, sygnał zerujący KBCLK - wejście, zegar z klawiatury (10-16.7 khz) KBDATA - wejście, ramki wysyłane z klawiatury, synchronicznie z KBCLK SEGO(6:0) - wyjście, sterowanie pierwszym wyświetlaczem SEGY(6:0) - wyjście, sterowanie pierwszym wyświetlaczem LEDY(9:0) - wyjście, sterowanie linijką diód