Odbiór danych z UART :: Sterowanie wyświetlaczem LCD :: Główny automat sterujący

Sterownik LCD z komunikacją RS232 w VHDL

Niniejszy kod ten powstał w ramach zaliczenia przedmiotu Projektowanie Programowalnych Układów Scalonych na Wydziale Elektroniki i Technik Informacyjnyh Politechniki Warszawskiej. Zadanie polegało na stworzeniu układu sterującego alfanumerycznym wyświetlaczem LCD opartym o sterownik zgodny z HD44780 w postaci oprogramowania układu FPGA. Układ miał odbierać dane i komendy sterujące z wykorzystaniem portu szeregowe UART.

Projekt został zrealizowany w postaci kodu VHDL. Posiada konstrukcję modularną, wydzielić można następujące moduły:

Wszystkie trzy układy sterujące zostały zrealizowane w formie automatów.

Odbiór danych z UART

Jest to bardzo prosta implementacja odbiornika UART zrealizowana w formie automatu o 11 stanach. Stany numerowane są od 0 do 10, wyróżnić można następujące grupy stanów:

Za wyjątkiem stanu 1 możliwe jest przejście tylko do stanu następnego (dla stanu 10 stanem następnym jest 0). Przejścia do kolejnych stanów odbywają się w momencie gdy licznik RX_CLK_CNT osiągnie połowę wartości maksymalnej (RX_CLK_DIV - 1) - wtedy jest wystawiany sygnał zezwolenia dla układu czytającego dane i wybierającego stan następny. Wyjątkiem jest przejście ze stanu 0 do stanu 1 które odbywa się na skutek detekcji zera na linii rxd, z przejściem tym związane jest także wyzerowanie i wystartowanie licznika RX_CLK_CNT.

Sterowanie wyświetlaczem LCD

Układ sterujący komunikacją z LCD ma zachowanie odpowiednich zależności czasowych w komunikacji na szynie LCD. Zrealizowany jest jako 5 stanowy automat o następujących stanach:

Stany przełączane są kolejno (IDLE - START - E_UP - E_DOWN - IDLE), z tym że przejścia (za wyjątkiem przejść do oraz z IDLE) odbywają się przez stan WAIT_TIME. Stan ten korzysta z dodatkowych informacji (ustawianych przed wejściem do tego stanu) - stanu do którego ma automat przejść po zakończeniu oczekiwania (LCD_STATE_AFTER_WAIT) oraz liczby cykli zegara przez które należy czekać (LCD_CLK_DIV).

Główny automat sterujący

Układ ten odpowiedzialny jest za inicjalizację wyświetlacza oraz wysyłanie do niego danych odebranych z UART. W przypadku gdy z UART zostanie odebrany znak DEL (kod 0x7f) wysyłana jest komenda czyszcząca wyświetlacz. Automat posiada następujące stany:

Graf stanów automatu:
POWIĘKSZgraf stanów



Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/inne/other_projects/uart2lcd) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2014-01-07 19:27:43 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).