Elektroda.pl
Elektroda.pl
X
IGE-XAO
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Karta "graficzna" na układach 74xx

Kubald 03 Mar 2013 21:53 13824 2
  • Karta "graficzna" na układach 74xx

    Kiedy przyjaciel autora zasugerował mu wzięcie udziału w konkursie na stronie Dangerous Prototypes, dotyczącym budowy urządzeń wyłącznie z układów logicznych TTL serii 74xx, autor stwierdził – czemu nie? Stąd powstał projekt karty wideo dla masochistów – urządzenia zbudowanego wyłącznie w oparciu o układy logiczne TTL, które generuje wszystkie niezbędne sygnały w standardzie VGA. A żartobliwa nazwa wzięła się z konieczności wykonania – palcami! – mnóstwa połączeń owijanych. Dla osób, które pragną skopiować poniższe rozwiązanie autor poleca nabycie urządzenia do owijania drutu.

    Na poniższym filmie można zobaczyć działanie urządzenia oraz podstawy jego budowy.


    Link


    Urządzenie składa się z 3 głównych bloków:
    1. Generatora impulsów synchronizacji poziomej.
    2. Generatora impulsów synchronizacji pionowej.
    3. Generatora sygnałów kolorów składowych (R/G/B).

    Impulsy synchronizacji pionowej i poziomej mogą zostać wygenerowane np. za pomocą liczników dwójkowych sterowanych sygnałem zegarowym z generatora kwarcowego. Maszyna stanów odpowiadająca za generowanie kolorów składowych ma przypisane 8 kolorów do każdego ze stanów.
    Licznikami użytymi do generowania sygnałów synchronizacji pionowej i poziomej są układy 74193 (4-bitowy licznik dwójkowy). Zespół 8-wejściowych bramek NAND (układ 7430) i sześciu inwerterów TTL (7404) służą do wykrywania unikalnych zliczeń liczników. Każde zliczenie ma przypisaną funkcję, jak np. generowanie rozpoczęcia i końca sygnału synchronizacji poziomej czy zerowanie liczników.

    Do zbudowania całości autor użył w sumie 8 układów 74244 (osiem buforów), 7 układów 74193 (liczniki 4-bitowe), jeden układ 74138 (demultiplekser 3:8), 6 układów 7430 (8-wejściowa bramka NAND), jeden układ 7408 (bramka AND), 6 układów 7404 (inwerter TTL), jednego układu 7402 (bramka NOR) i 7400 (bramka NAND). Dodatkowo wykorzystany został timer 555 i generator kwarcowy 10 MHz, a także garść elementów biernych. Całość została zmontowana na płytce uniwersalnej.

    Zasada działania zostanie przedstawiona w trzech krokach. Pierwszy będzie dotyczył standardu VGA dla rozdzielczości 800 pikseli x 600 linii, drugi – użycia generatora 10 MHz zamiast 40 MHz do generowania impulsów synchronizacji; trzeci – generowania kolorów za pomocą maszyny stanów.

    Karta "graficzna" na układach 74xx

    Zgodnie z powyższym rysunkiem, symulowany będzie tryb 800x600 przy odświeżaniu 60 Hz. Jednemu pikselowi odpowiada sygnał zegara 40 MHz. Z kolei poniższa grafika pozwala zobaczyć, jak naprawdę wyglądają przesyłane sygnały VGA – rozdzielczości 800x600 odpowiada w rzeczywistości 1056 jednostek danych w 628 liniach, przy czym część nigdy nie jest wyświetlana na monitorze.

    Karta "graficzna" na układach 74xx

    Z kolei poniższa tabela pokazuje, jak poradzić sobie z użyciem zegara 10 MHz zamiast 40 MHz – jest to podyktowane faktem, że układy z serii 74xx z reguły nie są w stanie pracować z sygnałami szybszymi niż 25 MHz.

    Karta "graficzna" na układach 74xx

    Maszyna stanów odpowiadająca za generowanie koloru została zrealizowana na demultiplekserze 74138. Na wejścia układu podawany jest sygnał zegarowy, powodujący kolejne przełączenia stanów. Kolory zmieniają się następująco:
    -> biały -> czerwony -> żółty -> zielony -> morski -> niebieski -> fioletowy -> czarny ->

    Każdy z kolorów generowany jest z wykorzystaniem pojedynczego kanału RGB lub wszystkich z nich. Sygnały odpowiadające kolorom powstają z wykorzystaniem 8-bitowego przetwornika DAC zbudowanego z rezystorów (dla 256 kolorów, w przypadku generowania tylko barw opisanych maszyną stanów wystarczają 3 rezystory). W standardzie VGA podanie napięcia 1V na każdy kanał koloru odpowiada 100% nasycenia danej barwy; a podanie 0V – 0% nasycenia. Na wyjściu przetwornika DAC znajduje się rezystor 75Ω, tworzący dzielnik napięcia. Do sterowania kanałem koloru niebieskiego wystarczą tylko dwa rezystory.

    Karta "graficzna" na układach 74xx

    Schemat całego urządzenia znajduje się poniżej:

    Karta "graficzna" na układach 74xx

    Blok generowania sygnałów synchronizacji poziomej wykorzystuje sygnał generowany przez oscylator kwarcowy (10 MHz), który podawany jest na wejście pierwszego z trzech liczników. Drugi licznik sterowany jest bitem przeniesienia pierwszego, trzeci – drugiego. Bramka NAND służy wykryciu pojawienia się wartości 210 (11010010), 242 (11110010) i 264 (100001000). Wartość 210 powoduje podanie wysokiego stanu na wyjście impulsów synchronizacji, wartość 242 – wyzerowanie wyjścia impulsów synchronizacji, a wartość 264 – wyzerowanie liczników i ponowne rozpoczęcie zliczania. Inwertery i bramki AND służą poprawnemu wysterowaniu wejść 8-wejściowej bramki NAND i skróceniu danych dłuższych niż 8 bitów. Sygnały Enable_0 i Enable_1 wskazują, kiedy mogą być przesłane do monitora dane o kolorach.

    Układ synchronizacji pionowej działa podobnie – sterowany jest impulsami synchronizacji poziomej i zlicza do momentu pojawienia się wartości 601 (1001011001) oraz 605 (100101101), które odpowiednio sterują przerzutnikiem flip-flop, aby wygenerować sygnały synchronizacji. Wartość 628 (1001110100) powoduje zresetowanie liczników i ponowne rozpoczęcie zliczania. Rola inwerterów i bramek AND jest podobna jak powyżej.

    Ostatnim blokiem jest maszyna stanów do generowania kolorów. Schemat został stworzony dla obwodu generującego do 256 kolorów, jednak w urządzeniu wykonano połączenia pozwalające generować jedynie 8 barw. Wersja z 256-bitową głębią kolorów wymaga wykonania połączeń oznaczonych liniami przerywanymi. Generatorem sygnału zegarowego jest tutaj multiwibrator 555, sygnał podawany jest do licznika, którego 3 młodsze bity sterują demultiplekserem. Z każdym zliczeniem demultiplekser przedstawia na wyjściach inny stan. Wyjścia demultipleksera powodują aktywowanie jednego z 8 buforów 74244, który wystawia na wyjście z góry ustalona wartość opisującą dany kolor. Blok sterowany jest również poprzez sygnały Enable_0 i Enable_1 z bloku generującego sygnał synchronizacji poziomej.

    Układ został zmontowany na płytce uniwersalnej, z wykorzystaniem połączeń owijanych. Autor zaprojektował też przejściówkę, która umożliwia wyprowadzenie poszczególnych sygnałów ze złącza VGA na rząd goldpinów i łatwe połączenie z urządzeniem.

    Karta "graficzna" na układach 74xx
    Karta "graficzna" na układach 74xx

    Więcej szczegółów dotyczących na przykład techniki połączeń owijanych i wykonania urządzenia znaleźć można na stronie źródłowej.

    Możliwymi modyfikacjami jest np. sprzężenie bloku generującego sygnały synchronizacji z blokiem generującym kolory, co pozwoliłoby na rysowanie kształtów na ekranie. Oczywiście, dużo prościej byłoby to zrealizować, implementując całe urządzenie w strukturze układu FPGA.

    Źródło

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    Kubald
    Poziom 15  
    Offline 
    Specjalizuje się w: spektroskopia exafs/xanes, uc, it
    Kubald napisał 192 postów o ocenie 64, pomógł 0 razy. Mieszka w mieście Kraków. Jest z nami od 2004 roku.
  • IGE-XAO
  • #2
    unitrax
    Poziom 9  
    Należy teraz czekać na resztę komputera na bramkach logicznych.
    Jestem pod wrażeniem.
  • IGE-XAO
  • #3
    Michal64
    Poziom 11  
    Witam!

    Nie trzeba czekać na resztę komputera, był tu taki prezentowany w zeszłym roku:Link.

    Pozdrawiam!