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

Podobne dokumenty
Hardware mikrokontrolera X51

Transmisja danych cyfrowych

Implementacja algorytmu szyfrującego

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

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.

Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa

Podział układów cyfrowych. rkijanka

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

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

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

1 Moduł Modbus ASCII/RTU 3

Spis treści. 1 Moduł Modbus TCP 4

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Programowalne układy logiczne

Systemy Czasu Rzeczywistego FPGA

Projektowanie układów na schemacie

interfejs szeregowy wyświetlaczy do systemów PLC

S Instrukcje programowania instrukcje obsługi Ethernetu

TECHNIKA MIKROPROCESOROWA

Programowanie Mikrokontrolerów

Technika Mikroprocesorowa

1 Moduł Neuronu Cyfrowego

Licznik rewersyjny MD100 rev. 2.48

dokument DOK wersja 1.0

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

Organizacja typowego mikroprocesora

Uniwersalny asynchroniczny. UART Universal Asynchronous Receier- Transmiter

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

rh-serwer 2.0 LR Sterownik główny (serwer) systemu F&Home RADIO. Wersja LR powiększony zasięg.

Instrukcja do ćwiczenia : Matryca komutacyjna

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

WFiIS CEL ĆWICZENIA WSTĘP TEORETYCZNY

ARS3-MODEM dokumentacja modemu radiowego do lokalnej transmisji danych w wolnych pasmach 433MHz i 868MHz

Projekt z przedmiotu Systemy akwizycji i przesyłania informacji. Temat pracy: Licznik binarny zliczający do 10.

Instytut Teleinformatyki

CompactPCI. PCI Industrial Computers Manufacturers Group (PICMG)

TECHNIKA MIKROPROCESOROWA II

Kabelki stykowe. Szybkie łączenie elementów elektronicznych. Żywe kolory ułatwiają utrzymanie porządku w układzie.

SML3 październik

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

Programowanie w językach asemblera i C

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

1 Moduł Modbus ASCII/RTU

INSTRUKCJA instalacji interfejsu USB-RS422/485

MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM

Struktura i działanie jednostki centralnej

(57) Tester dynamiczny współpracujący z jednej strony (13) B1 (12) OPIS PATENTOWY (19) PL (11) PL B1. (54) Tester dynamiczny

2.1 Porównanie procesorów

INSTRUKCJA instalacji interfejsu USB-RS422/485

Pracownia Transmisji Danych, Instytut Fizyki UMK, Toruń. Instrukcja do ćwiczenia nr 10. Transmisja szeregowa sieciami energetycznymi

dwójkę liczącą Licznikiem Podział liczników:

Programowanie Niskopoziomowe

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

Projektowanie Urządzeń Cyfrowych

Parametryzacja przetworników analogowocyfrowych

MIKROPROCESORY architektura i programowanie

MIKROPROCESORY architektura i programowanie

Inwerter logiczny. Ilustracja 1: Układ do symulacji inwertera (Inverter.sch)

Systemy i Sieci Telekomunikacyjne laboratorium. Modulacja amplitudy

Projektowanie Systemów Wbudowanych

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

F&F Filipowski Sp. J Pabianice, ul. Konstantynowska 79/81 tel KARTA KATALOGOWA

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

Bufor danych USB jednorazowego użytku EBI 330-T30/EBI 330-T85 Nr produktu

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

Programowalne układy logiczne

Komunikacja pomiędzy S i S7-300/400 przez Ethernet (1)

Temat: Pamięci. Programowalne struktury logiczne.

m e d i a s e r v i c e Moduł kamery JPEG z komunikacją szeregową CJ0706A

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

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

ćw. Symulacja układów cyfrowych Data wykonania: Data oddania: Program SPICE - Symulacja działania układów liczników 7490 i 7493

Proste układy sekwencyjne

Wyjście do drukarki Centronix

INSTRUKCJA UŻYTKOWNIKA PROGRAMU

Magistrala systemowa (System Bus)

Programowanie mikrokontrolerów. 8 listopada 2007

Architektura komputerów Wykład 2

SystimPlus. Dokumentacja (FAQ) dla wersji: v

Karta katalogowa JAZZ OPLC JZ20-R31

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

Ćw. 7: Układy sekwencyjne

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

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

Pomoc dla użytkowników systemu asix 6. Strategia buforowa

Instrukcja programu użytkownika OmegaUW.Exe. Program obsługuje następujące drukarki fiskalne: ELZAB OMEGA II generacji ELZAB OMEGA F, MERA, MERA F.

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

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

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Instrukcja instalacji

Programator ICP mikrokontrolerów rodziny ST7. Full MFPST7. Lite. Instrukcja użytkownika 03/09

AKTUATOR DO SYSTEMU DUO Q

Opis procedur asemblera AVR

Licznik prędkości LP100 rev. 2.48

Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne

LEKCJA. TEMAT: Funktory logiczne.

Projekt prostego procesora

Architektura komputerów. Układy wejścia-wyjścia komputera

Transkrypt:

Michał Leśniewski Tomasz Władziński 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 Realizacja funkcji gamma entity gamma Sercem opracowanego układu jest oczywiście komponent, który korzystając z pamięci ROM oblicza aproksymowane wartości funkcji gamma. W projekcie odpowiada mu plik gamma.vhd. Układ ten nie jest automatem, działa praktycznie jak układ logiczny. Ponieważ wiele wartości (przede wszystkim zawartość pamięci ROM) musiały zostać przygotowane wcześniej, zostały więc wyliczone w programie OpenOffice Calc. Wyniki obliczeń znajdują się w pliku Obliczenia do układu.ods. Wejścia układu gammaval Parametr gamma Jest to stałoprzecinkowa liczba 8-bitowa bez znaku. Przecinek znajduje się za 2 bitem liczby. Dzięki temu może on przyjmować wartości z zakresu od 0 do 3,984375, a więc zgodnie z zakresem gamma. Według tej liczby wyznaczany jest numer krzywej n, którą powinno się wykorzystać. Granice zakresów odpowiadających tym samym wartościom n zostały wyliczone w automatycznie (plik Obliczenia do układu.ods zakładka Podział na krzywe ). x Parametr funkcji Jest to całkowita liczba 8-bitowa bez znaku. Jest parametrem funkcji (jasnością), dla której zostanie obliczony wynik. Wyjście układu y - Wynik funkcji Jest to całkowita liczba 8-bitowa bez znaku. Jest wynikiem funkcji dla zadanego parametru x oraz parametru gammaval. Pamięć ROM entity gammarom oraz jej alternatywy Zgodnie ze wstępnymi założeniami, komponent gamma wykorzystuje pamięć ROM z wcześniej obliczonymi wartościami dla wybranych parametrów. Moduł pamięci ROM został utworzony automatycznie narzędziem MegaWizard. Jej zawartość jest zdefiniowana w pliku gammarom.mif, a sam plik pamięci to gammarom.vhd. Pamięć ma 256 komórek 8-bitowych. Nie wykorzystano rejestrów trzymających wartości adresu ani wartości wyjściowych.

Alternatywy dla gammarom Dzięki temu, że ROM zdefiniowano w osobnym pliku, został użyty jako osobny komponent, co pozwoliło nam na łatwe podmienienie tego komponentu na alternatywne. W pliku gamma można zamienić nazwy komponentu z gammarom na gammarom_alt1 lub gammarom_alt2, co spowoduje dołączenie zamiast pamięci ROM, układów działających tak samo, lecz inaczej zbudowanych. gammarom_alt1 Ten komponent opisany jest bezpośrednio przy pomocy tablicy prawdy (with address select q <= 10101001 when 11101101,...). Zawartość sekcji architecture w pliku vhdl została wygenerowana arkuszem kalkulacyjnym (plik Obliczenia do układu.ods zakładka Tablica prawdy w VHDL ). gammarom_alt2 Ten komponent ma każdy bit wyjściowy opisany równaniem wygenerowanym przez program Espresso. Plik wejściowy dla programu został również utworzony automatycznie (plik Obliczenia do układu.ods zakładka Tablica prawdy dla ESPRESSO ). Program Espresso użyty został z parametrem -oeqntott, dzięki czemu wyjściowy plik zawierał gotowe równania. Po zastąpieniu odpowiednich znaków w równaniach ( & na and, na or...), wynik można było użyć w VHDLu. Porównanie rozwiązań gammarom i alternatyw Niezależnie od rodzaju komponentu, czas potrzebny na obliczenie wartości funkcji gamma jest dosyć zbliżony, jednak ze względu na liczbę potrzebnych komórek logicznych znaczną przewagę ma układ gammarom. Porównanie maksymalnych czasów oraz liczby komórek (dla całego modułu gamma) podano w tabeli: Komponent Maksymalny czas [ns] Liczba komórek logicznych gammarom 112,3 221 gammarom_alt1 120,1 540 gammarom_alt2 141,5 801

Automat odbiorczo-nadawczy USB entity automatusb Do komunikacji między komputerem a płytką wykorzystany został moduł USB (FTDI FT245BM) wpinany do płytki. Jego obsługa jest dosyć skomplikowana, dlatego też do komunikacji z tym układem został wykorzystany dodatkowy automat. Wejścia i wyjścia do komunikacja z układem FT245BM Wejścia RXT oraz TXE Wejścia informujące o stanie układu FT245BM. RXT związane jest z odczytem danych, zaś TXE z wysyłaniem. Wyjścia RD oraz WR Wyjścia, przez które układ FT245BM jest informowany o chęci odczytu (RD) bądź wysłania (WR) danych. Port dwukierunkowy data Port typu inout, z którego dane są odczytywane przy odbiorze danych i do którego są zapisywane przy wysyłaniu. Układ FT245BM pozwala na odczyt/wysłanie jednocześnie całych bajtów (a więc po 8 bitów). Pozostałe wejścia clk zegar Port, do którego powinien zostać podłączony zegar. Automat reaguje na rosnące zbocze zegara. rst reset Wejście, które w przypadku pojawienia się zera powoduje przywrócenie całego automatu do stanu oczekiwania (idle). wrstart start zapisu Wejście, które w przypadku pojawienia się jedynki powoduje rozpoczęcie wysyłania danych przez układ. rdstart start odczytu Wejście, które w przypadku pojawienia się jedynki powoduje rozpoczęcie odbioru danych przez układ. wrbyte dane do zapisu Wejście 8-bitowe zawierające dane, które mają zostać wysłane. Pozostałe wyjścia rdready odczyt zakończony Wyjście sygnalizujące stanem wysokim, że odbieranie zostało zakończone. wrready zapis zakończony Wyjście sygnalizujące stanem wysokim, że wysyłanie zostało zakończone.

rdbyte dane odebrane Wyjście 8-bitowe zawierające dane, które zostały odebrane. Na wyjściu podtrzymywany jest ostatnio odebrany bajt aż do odczytu kolejnego. Odbieranie danych Aby odebrać dane, automat sterujący powinien wykonać następujące kroki: 1. Ustawić rdstart = '1' (tylko aby rozpocząć, dalsze kroki wykonywane są niezależnie od stanu rdstart). 2. Oczekiwać na sygnał rdready = '1'. 3. Odczytać odebrane dane z rdbyte. Uwaga: rdbyte nie zmieni swojej wartości, dopóki ponownie nie uruchomimy odbierania (nawet po resecie). Wysyłanie danych Aby wysłać dane, automat sterujący powinien wykonać następujące kroki: 1. Ustawić dane do wysłania w wrbyte. 2. Ustawić wrstart = '1' (również jedynie, aby rozpocząć). 3. Oczekiwać na sygnał wrready = '1'. Dopiero w momencie można zmienić wartość ustawioną na wrbyte. Uwaga: Wysyłanie i odbieranie realizowane są wewnętrznie przez 2 odrębne automaty, więc nie należy przerywać cyklu odbioru lub nadawania uruchamiając drugi automat. Uwaga: Oba automaty sygnał gotowości przekazują w momencie, gdy są w stanie gotowości. Można więc czekać najpierw na stan gotowości, a dopiero następnie wysyłać. Działanie automatu Automat jest złożony z 3 prostych elementów osobnego automatu nadawczego i odbiorczego oraz bufora trójstanowego, który obsługuje przełączanie portu data między jednym a drugim automatem. Automat odbiorczy i nadawczy zostały zrealizowane identycznie jak w przykładach dr inż. Mariusza Rawskiego z wykładów (przykład USBRam w VHDL-u). Modyfikacje w stosunku do przykładu USBRam: Automaty nadawczy i odbiorczy nie zajmują się zapisem/odczytem danych z pamięci, więc usunięto stan, w którym inkrementowano licznik adresów, zapisywano dane itp. Dla większej przejrzystości podzielono całość na osobne pliki. Usunięto stany oczekiwania (przykład z wykładu był projektowany dla płytki z zegarem 66MHz, nasz zegar ma częstotliwość tylko 25,175MHz, zatem stany oczekiwania można było ograniczyć w odbiorniku do 2, w nadajniku do 1).

Automat sterujący gammamodule Automatem sterującym działaniem całego układu jest automat gammamodule. Są do niego dołączone wszystkie przedstawione wcześniej komponenty oraz komponent wygenerowany funkcją MegaWizard gammaram, a więc pamięć układu. Wejścia i wyjścia układu Układ porty związane z układem FT245BM te same, które zostały wymienione w opisie automatu USB. Poza tym jedyne wejścia to: clk zegar Wejście, do którego powinien zostać podłączony zegar. Automat reaguje na rosnące zbocze. rst reset Wejście, które przy stanie '0' powoduje reset automatu, czyli przejście do pierwszego stanu. Resetowanie zrealizowane jest asynchronicznie. Pin ten powinien zostać podłączony do jednego z przycisków na płytce. Ważniejsze sygnały wewnętrzne i rejestry gammar, gammag, gammab 8-bitowe wartości parametrów gamma dla składowych odpowiednio: czerwieni, zieleni, błękitu. pixelmax 8-bitowa liczba przechowująca liczbę wszystkich pikseli, które powinny zostać przetworzone, minus 1. addresscnt 10-bitowy licznik przechowujący adres komórki w komponencie gammaram, do którego dane są zapisywane, lub z którego są czytane. pixelcnt 8-bitowy licznik przetworzonych już pikseli. Po doliczeniu do pixelmax i ostatniej składowej, układ przechodzi z trybu odczytu do czytania lub odwrotnie. rgbcnt 4-bitowy licznik składowych. Wartość 00 (=0) odpowiada czerwieni, 01 (=1) zieleni, a 10 (=2) błękitowi. Według tego licznika układ ustala, którą wartość ma podać jako parametr do komponentu gamma (gammar, gammag, czy gammab).

Schemat działania W trakcie działania automat przechodzi przez następujące stany (jeżeli w punkcie nie opisano inaczej, po każdym stanie automat przechodzi do kolejnego niżej na liście): 1. Stan reset: Reset licznika adresów, licznika pikseli i licznika składowych. 2. Odbiór liczby pikseli wysyłanych naraz (pixelmax): 1. Stan start_rcv_pixelcnt: Uruchomienie automatu odbiorczego (rdstart <= '1'). 2. Stan wait_rcv_pixelcnt: Jeżeli zakończono odczyt (rdready = '1'), przejście do stanu start_rcv_gammar, w przeciwnym razie pozostanie w tym samym 3. Odbiór parametru gamma dla składowej czerwonej. 1. Stan start_rcv_gammar: Uruchomienie automatu odbiorczego (rdstart <= '1'), zapisanie wartości ostatnio odebranej z rdbyte do pixelmax. 2. Stan wait_rcv_gammar: Jeżeli zakończono odczyt (rdready = '1'), do stanu start_rcv_gammag, w przeciwnym razie pozostanie w tym samym 4. Analogicznie odebranie parametru gamma dla składowej zielonej. 1. Stan start_rcv_gammag: Uruchomienie automatu odbiorczego (rdstart <= '1'), zapisanie wartości ostatnio odebranej z rdbyte do gammar. 2. Stan wait_rcv_gammag: Jeżeli zakończono odczyt (rdready = '1'), do stanu start_rcv_gammab, w przeciwnym razie pozostanie w tym samym 5. Analogicznie odebranie parametru gamma dla składowej niebieskiej. 1. Stan start_rcv_gammab: Uruchomienie automatu odbiorczego (rdstart <= '1'), zapisanie wartości ostatnio odebranej z rdbyte do gammag. 2. Stan wait_rcv_gammab: Jeżeli zakończono odczyt (rdready = '1'), do stanu save_gammab, w przeciwnym razie pozostanie w tym samym 3. Stan save_gammab: Specjalny stan, w którym do gammab zapisywana jest ostatnio odebrana wartość z rdbyte. 6. Odbiór wartości, dla której powinna zostać obliczona funkcja gamma. 1. Stan start_rcv_val: Uruchomienie automatu odbiorczego (rdstart <= '1'). 2. Stan wait_rcv_val: Jeżeli zakończono odczyt (rdready = '1'), do stanu calc1, w przeciwnym razie pozostanie w tym samym 7. Stan calc1: Oczekiwanie na obliczenie wartości funkcji. 8. Stan calc2: Dalsze oczekiwanie (należy odczekać około 45ns 2 stany to około 80ns)

9. Stan save_value: Ustawienie '1' na wejściu we (write-enable) komponentu gammaram i zapis wyniku obliczenia. 10.Stan next_value: W przypadku, gdy licznik składowych ma wartość 10 (= 2), następuje sprawdzenie, czy przetworzono już wszystkie piksele (pixelmax = pixelcnt). Jeżeli tak, to wszystkie liczniki zostają zerowane i następuje przejście do stanu start_send. Jeżeli nie, licznik adresów oraz pikseli jest inkrementowany, a licznik składowych zostaje ustawiony na 00 (= 0), a automat przechodzi do stanu start_rcv_val. W przypadku, gdy licznik składowych ma wartość inną niż 10, następuje inkrementacja licznika składowych i adresów, a automat przechodzi do stanu start_rcv_val. 11.Wysyłanie wyniku funkcji: 1. Stan start_send_result: Uruchomienie automatu nadawczego (wrstart <= '1'). 2. Stan wait_send_result: Jeżeli zakończono wysyłanie (wrready = '1'), następuje przejście do stanu next_result, w przeciwnym razie pozostanie w tym samym 12.Stan next_result: Stan analogiczny do stanu next_value, jednak przechodzimy tym razem odpowiednio do stanu reset lub start_send. Przełączanie odpowiednich wyjść (np. gammaval) następuje poza automatem na podstawie wartości w licznikach.