Spisu treści:

Wyświetlacz lustrzany: 8 kroków
Wyświetlacz lustrzany: 8 kroków

Wideo: Wyświetlacz lustrzany: 8 kroków

Wideo: Wyświetlacz lustrzany: 8 kroków
Wideo: MUSISZ ZROBIĆ SWOJĄ LICZBĘ KROKÓW CO GODZINĘ ALBO… PRZEGRYWASZ! ◉_◉ 2024, Lipiec
Anonim
Wyświetlacz lustrzany
Wyświetlacz lustrzany
Wyświetlacz lustrzany
Wyświetlacz lustrzany
Wyświetlacz lustrzany
Wyświetlacz lustrzany

Celem tego projektu jest stworzenie funkcji wyświetlania obrazu Smart Mirror. Lustro może wyświetlać prognozy (słonecznie, częściowo słonecznie, pochmurno, wietrznie, deszcz, grzmoty i śnieg) oraz wartości temperatury od -9999° do 9999°. Wartości prognozy i temperatury są zakodowane na sztywno, tak jak gdyby emulowały je analizowane z API pogodowego.

Projekt wykorzystuje płytę Zynq-Zybo-7000 z systemem FreeRTOS i Vivado 2018.2 do projektowania i programowania sprzętu.

Części:

Zynq-Zybo-7000 (z FreeRTOS)

19 LCD (640x480)

Kabel VGA

Lustro akrylowe 12 "x 18"

Krok 1: Konfiguracja Vivado

Konfiguracja Vivado
Konfiguracja Vivado
Konfiguracja Vivado
Konfiguracja Vivado

Pobierz Vivado 2018.2 z Xilinx i skorzystaj z licencji Webpack. Uruchom Vivado i „Utwórz nowy projekt” i nadaj mu nazwę. Następnie wybierz „Projekt RTL” i zaznacz „Nie określaj obecnie źródeł”. Wybierając część, wybierz „xc7z010clg400-1” i naciśnij „Zakończ” na następnej stronie.

Krok 2: Pakowanie adresu IP sterownika VGA

Pakowanie IP sterownika VGA
Pakowanie IP sterownika VGA
Pakowanie IP sterownika VGA
Pakowanie IP sterownika VGA

Dodaj plik vga_driver.sv do źródeł projektu. Następnie kliknij „Narzędzia” i wybierz „Utwórz i spakuj nowy adres IP”. Wybierz „Spakuj swój bieżący projekt”. Następnie wybierz lokalizację IP i „Dołącz pliki.xci”. Kliknij „OK” w wyskakującym okienku, a następnie „Zakończ”.

W „Kroki pakowania” przejdź do „Przegląd i pakiet” i wybierz „IP pakietu”.

Teraz vga_driver powinien być dostępny jako blok IP.

Krok 3: IP Zynq

Zynq IP
Zynq IP
Zynq IP
Zynq IP
Zynq IP
Zynq IP
Zynq IP
Zynq IP

W sekcji „Integrator IP” wybierz „Utwórz projekt blokowy”. Dodaj „System przetwarzania ZYNQ7” i kliknij dwukrotnie blok. Kliknij „Importuj ustawienia XPS” i prześlij plik ZYBO_zynq_def.xml.

Następnie w sekcji „Konfiguracja PS-PL” otwórz menu „AXI Non Secure Enablement” i zaznacz „Interfejs M AXI GP0”.

Następnie w sekcji „Konfiguracja MIO” otwórz menu rozwijane „Application Processor Unit” i zaznacz „Timer 0” i „Watchdog”.

Na koniec, w "Clock Configuration" otwórz menu "PL Fabric Clocks" i zaznacz "FCLK_CLK0" i przy 100 MHz.

Krok 4: IP GPIO

IP GPIO
IP GPIO
IP GPIO
IP GPIO

Dodaj dwa bloki GPIO do projektu blokowego. GPIO będą używane do kontrolowania adresu piksela i składowych RGB pikseli. Skonfiguruj bloki tak, jak pokazano na powyższych obrazkach. Po dodaniu i skonfigurowaniu obu bloków kliknij „Uruchom automatyzację połączeń”.

GPIO 0 - Kanał 1 kontroluje adres piksela, a Kanał 2 kontroluje kolor czerwony.

GPIO 1 - Kanał 1 kontroluje kolor zielony, a Kanał 2 kontroluje kolor niebieski.

Krok 5: Zablokuj pamięć

Pamięć bloku
Pamięć bloku
Pamięć bloku
Pamięć bloku
Pamięć bloku
Pamięć bloku

Dodaj adres IP generatora pamięci bloku do projektu bloku i skonfiguruj, jak pokazano powyżej. Kolory pikseli są zapisywane w adresach pamięci, które są następnie odczytywane przez sterownik VGA. Linia adresowa musi odpowiadać ilości używanych pikseli, więc musi mieć 16 bitów. Dane są również 16 bitowe, ponieważ jest 16 bitów koloru. Nie obchodzi nas czytanie jakichkolwiek bitów potwierdzających.

Krok 6: Inne IP

Załączony plik pdf przedstawia ukończony Projekt Bloku. Dodaj brakujący adres IP i zakończ połączenia. Również "Make Externals" dla kolorowych wyjść VGA oraz wyjść synchronizacji pionowej i poziomej.

xlconcat_0 - łączy poszczególne kolory w jeden 16-bitowy sygnał RGB, który jest podawany do pamięci RAM bloku.

xlconcat_1 - Łączy sygnały kolumn i wierszy ze sterownika VGA i jest podawany do portu B bloku RAM. Umożliwia to sterownikowi VGA odczytywanie wartości kolorów pikseli.

VDD - Stałe WYSOKIE połączone z zezwoleniem na zapis w bloku RAM, dzięki czemu zawsze możemy się do niego dostać.

xlslice_0, 1, 2 - Plasterki są używane do dzielenia sygnału RGB na pojedyncze sygnały R, G i B, które można podać do sterownika VGA.

Po zakończeniu projektowania bloku wygeneruj opakowanie HDL i dodaj plik ograniczeń.

*Block Design jest oparty na samouczku napisanym przez benlin1994*

Krok 7: SDK

Kod, który uruchamia ten projekt blokowy, znajduje się poniżej. Init.c zawiera funkcje obsługujące rysunek (prognozy, liczby, symbole stopni itp.). Główna pętla w main.c jest uruchamiana, gdy płyta jest zaprogramowana. Ta pętla ustawia wartości prognozy i temperatury, a następnie wywołuje funkcje rysowania w init.c. Obecnie przegląda wszystkie siedem prognoz i wyświetla jedną po drugiej. Zaleca się dodanie punktu przerwania w wierszu 239, aby można było zobaczyć każdy obraz. Kod jest skomentowany i da ci więcej informacji.

Krok 8: Wniosek

Aby ulepszyć obecny projekt, można wstępnie wczytać obrazy prognozy w postaci plików COE do generatorów pamięci bloków. Więc zamiast ręcznie rysować prognozy, jak to zrobiliśmy w kodzie C, można by wczytać obrazy. Próbowaliśmy to zrobić, ale nie mogliśmy tego uruchomić. Udało nam się odczytać wartości pikseli i wyprowadzić je, ale stworzyliśmy niechlujne obrazy, które w niczym nie przypominały tych, które wrzuciliśmy do pamięci RAM. Arkusz danych Generatora pamięci bloków jest przydatny do przeczytania.

Projekt jest zasadniczo połową Smart Mirror, ponieważ brakuje w nim aspektu łączności internetowej. Dodanie tego dałoby kompletne inteligentne lustro.

Zalecana: