START _______________
Atari 16-bit
Floppy Drive DIN14-IDC34 adapter
ACSI-SCSI interface
Video digitizer faST
MegaSTe SCSI
internal interface
ST RAMcart
Peter Putnik's ACSI-CF Interface
Sack's PC-speed remake project
Vortex AT-ONCE remake project
Sack's AT-speed remake project
MagicSAC+ remake project
ICD ST Hard Drive Adapter BD remake project
ICD Advantage SCSI+ remake project
ICD AdSCSI Micro remake project
Realtime Clocks
Matrix M110 GAL Pack
ICD Advantage SCSI remake project
ICD Micro MegaSTe adaptation project
Emagic LOG3 Interface remake
C-Lab Combiner remake
Vortex ATonce-386SX DIP version remake project
Simple M68000 relocator
Vortex ATonce-386SX
MegaSTe version remake project
JRI's ST4096C remake project
TOS Card 2 restoration project
ICD AdSCSI MegaSTe
Barry Orlando's
32k Colors for ST
|
Video digitizer faST Prezentowany poniżej projekt został ukończony w 1996 roku. Powstały dwie wersje. Wiem, że czasu minęło wiele, technologia poszła do przodu i sens budowy takich
urządzeń gdzieś zanikł. Jednakże zamieszczam go tu z powodów sentymentalnych oraz z nadzieją, że może się komuś przyda. Zrobiony "na piechotę" na TTL, bo takie
były ledwie dostępne w tamtych czasach, działał obłędnie sprawnie i dał mi wiele satysfakcji ponieważ został przemyślany i zrobiony przeze mnie "od zera". Rysunki
powstawały na Atari ST choć już nie wiem w jakim programie. Widać w opisach czcionkę Chicago.
Schematy istnieją tylko w tym formacie. Brak zaprojektowanych PCB ponieważ
nie byłem w stanie w tamtym okresie zdobyć odpowiednio dużego laminatu, a i byłby problem z wykonaniem tak precyzyjnej i "gęstej" konstrukcji. Wprawdzie już znano
tzw. prasowanki, ale mimo wszystko to pozostawało poza zasięgiem.
Prototyp powstawał na uniwersalnych płytkach, gdzie układy były łączone cynarem. Sporo przewodzików było ale się opłaciło...
Wersja druga - zmieniona
Digitalizer Video dla Atari ST(e)
Opisane poniżej urządzenie daje możliwość zamiany analogowego
sygnału wizyjnego CVBS (Y) na ruchomy obraz cyfrowy oglądany na ekranie komputera w czasie prawie rzeczywistym.
Od dłuższego już czasu jestem zadowolonym posiadaczem Atari ST. (tekst pochodzi z 1996 roku ale dalej jestem zadowolonym atarowcem)
Komputer ten, w porównaniu z konkurencją, nie ma zbyt dobrej grafiki,
ale mając talent malarski można także na jego ekranie tworzyć całkiem
udane obrazki. W moim przypadku braki w umięjętnościach malarskich
postanowiłem nadrobić elektroniką. Posiłkując się różnoraką literaturą wziąłem się do pracy i uzyskałem taki oto efekt końcowy:
- podłączenie do komputera przez złącze cartridge
- czterobitowa kwantyzacja sygnału video (16 odcieni szarości)
- obraz całoekranowy (320x200) ale nie overscan - bufor 32 kB na dane video
- minimum 12 ramek w ciągu sekundy (w realu zdecydowanie więcej)
- digitalizacja sekwencji do RAM komputera
- zapis pojedyńczych obrazów na dysk w formacie DEGAS'a - bardzo prosta obsługa.
Źródłem sygnału może być dowolne urządzenie video wysyłające
standardowy sygnał wizyjny CVBS, S-VHS itp. Nie jest wymagana statyczność sceny. Dalszą obróbkę uzyskanego przez digitalizację
obrazu można wykonać dowolnym programem graficznym.
Założenia sprzętowe
Obraz telewizyjny, według standardu PAL, składa się z 50 półobrazów
transmitowanych w ciągu sekundy, poprzedzonych impulsami synchronizacji
pionowej - VSYNC. Każdy z półobrazów zawiera 312,5 linii wraz z
synchronizacją - HSYNC. Impulsy te są niezbędne do zapewnienia stabilnego
odtwarzania obrazu we wszystkich odbiornikach - także w przypadku opisywanego układu.
Dla procesu digitalizacji istotne jest to, że faktyczna ilość linii
niosących informację wizyjną wynosi 288 co daje czas ok. 18,5 ms -
1,5 ms zajmuje VSYNC oraz powrót plamki. Także w przypadku pojedyńczej
linii trwającej 64 mikrosekundy - 52 mikrosekundy są przeznaczone
dla sygnału użytecznego a reszta odpowiada za synchronizację HSYNC oraz wygaszanie poziome.
W jednym cyklu jest digitalizowany jeden półobraz. Z wymagań na
proporcje TV równe 4:3, dla 288 linii są pobierane 384 próbki sygnału wejściowego.
Ze względu na to, że układ wideo - SHIFTER w Atari ST jest w stanie
wyświetlić w niskiej rozdzielczości obraz o wymiarach 320x200 przyjąłem co następuje:
- ekran Atari ST jest oknem 320x200 rzutowanym na pole obrazu 384x288
- zmiana położenia okna w polu odbywa się poprzez zmiany czasów
opóźnienia synchronizacji układów digitalizera względem VSYNC i HSYNC.
Aby powyższe założenia były spełnione - digitalizacja dla okna 320x200
musi być wykonywana z okresem obliczonym dla pola 384x288. Jeżeli
w ciągu 52 mikrosekund mają zostać pobrane 384 wartości, to czas ten dla
320 próbek wynosi ok. 43,3 mikrosekundy co daje częstotliwość przetwarzania
7.407 MHz. Pozostaje jeszcze czas ok. 8,5 mikrosekundy - w granicach
którego można przesuwać okno w poziomie, sterując momentem wyzwalania od HSYNC.
Analogiczna sytuacja występuje dla ramki synchronizowanej impulsem
VSYNC z tym, że liczba linii jest stała - 200, a dla różnicy 88 linii zmiana
momentu wyzwalania dokonywana jest w zakresie co najmniej 6 ms. Umożliwia to przesuwanie okna w pionie.
Założenia te zostały przedstawione na rysunku 1.
Opis układu
Digitalizer składa się z czterech części : - układu wydzielania impulsów synchronizacji z przetwornikiem A/D -
SDA 9087 używanym w PIP (rys.2)
- bloku rejestrów wejściowych U1-U16, dzięki którym jest dokonywana
sprzętowa konwersja danych z przetwornika A/D na format bezpośrednio
akceptowany przez SHIFTER w Atari ST (rys.3)
- wyzwalania digitalizacji oraz generowania adresów (rys.4)
- pamięci wraz z interfejsem I/O (rys.5)
Sygnał wejściowy jest podawany równolegle na wtórnik dopasowujący
oraz na układ wydzielania synchronizacji zrealizowany na LM1881 (U39)
w schemacie zalecanym przez producenta. Zamiast impulsu HSYNC do
synchronizacji linii użyłem /BURST dostępny na wyjściu tego układu.
Impulsy /VS oraz /BURST są podane na wejścia bramek Schmitta (U40)
gdzie ulegają inwersji. Dodatkowo BURST steruje przetwarzaniem w
układzie SDA 9087 (U41) poprzez wejście ISC - sandcastle. Z wyjścia wtórnika sygnał jest podany na pin19 U41 - Yin będący wejściem
5-bitowego przetwornika "flash". SDA 9087 został zastosowany w układzie
aplikacyjnym z tą różnicą, że wprowadziłem regulację napięć odniesienia
przetwarzania opartą na potencjometrach: P1 - dolny próg i P2 - górny,
aby umożliwić dopasowanie do poziomu sygnału wejściowego. Z wyjść
Y01-Y04, próbki w postaci cyfrowej trafiają do bloku rejestrów wejściowych.
Układ zrealizowany przy użyciu rejestrów SIPO 74164 oraz D 74374 służy
do zamiany szesnastu czterobitowych próbek binarnych w 4 szesnastobitowe
słowa danych odpowiadające planom wyświetlania SHIFTER'a poprzez
synchroniczne z zegarem SysClock przesuwanie zawartości i zatrzaskiwanie
co 16 taktów w przerzutnikach D, skąd informacja jest przepisywana do RAM digitalizera.
W części wyzwalania digitalizacji i generowania adresów znajdują się m.in. układy formowania impulsów :
- U18 tworzy z VS impuls RCNA, o zmiennym opóźnieniu względem VS
regulowanym potencjometrem P3 - przesuwanie obrazu w pionie. Impuls ten
powoduje też zerowanie licznika adresów RAM (U32,U33) digitalizera oraz
przygotowanie obwodu kasowania licznika próbek U21,U22
- U19 tworzy z BURST impuls /HRES, o zmiennym opóźnieniu względem
BURST regulowanym potencjometrem P4 - przesuwanie obrazu w poziomie.
/HRES kasuje licznik próbek i wstrzymuje okresowo pracę zegara SysClock.
Przerzutniki U28 służą do przygotowania digitalizacji - U28a jest ustawiany
z komputera, iloczyn sygnału Q (U28a)z RCNA ustawia U28b. Taktowanie całości
zostało zrealizowane w postaci generatora START-STOP na bramce Schmitta
U26d. Reszta elementów służy do tworzenia sygnałów odczytu z rejestrów oraz
zapisu do RAM urządzenia - co zostanie omówione przy opisie działania.
Pamięć buforową zbudowano z dwóch układów 62256-100 (32kx8) pracujących
w konfiguracji 32kx16. Interfejs I/O jest zbudowany z U34,U35 i U36. RAM jest
sterowana z licznika U32,U33 na dwa sposoby: w czasie digitalizacji impuls
incADR, a w momencie odczytu sygnał wyboru /ROM3 sel. z portu cartridge ST,
powodują zwiększenie adresu po zapisie albo odczycie danych. Bramka U31
pracuje w układzie autozerowania licznika po osiągnięciu stanu 16000.
Przebieg próbkowania
Ze względu na to, że konstruktorzy Atari ST zabronili zapisywania
czegokolwiek do obszaru cartridge (ROM!), a także z powodu niedostępności
innych linii sterujących (np.IRQ) na złączu, został wybrany dosyć udziwniony sposób uruchamiania digitalizacji.
Start przetwarzania jest sygnalizowany stanem niskim na linii adresowej A15
cartridge przy adresowaniu obszaru $FAXXXX, co powoduje ustawienie
przerzutnika U28a. Po nadejściu impulsu RCNA zostaje ustawiony U28b ustalając
stan niski na wejściu bramki U30a. Zostaje wyzerowany licznik U32,U33,
następuje oczekiwanie na pojawienie się pierwszego impulsu /HRES, który
powoduje wyzerowanie licznika U21,U22 ustawiając wyjście bramki U25a w stan
wysoki i w momencie jego zakończenia poprzez bramkę AND, stanem wysokim,
uruchomienie generatora SysClock - następuje przetwarzanie danych pierwszej
linii. Wykresy czasowe stanów układu są przedstawione na rys.6.
Pierwsze, narastające zbocze SysClock powoduje zamknięcie i przesunięcie
w prawo informacji z przetwornika A/D w rejestrach U1-U8. Po szesnastu taktach
zostaje ustawiony przerzutnik U28a zezwalający na wykonywanie zapisu do RAM.
Zanegowany stan linii D (ZAP) licznika próbek, co 16 taktów zatrzaskuje przednim
zboczem informację z rejestrów 74164 w przerzutnikach D 74374. Poziom niski na
wyjściu /Q U28a odblokowuje dekoder U23, który wraz z bramkami U24 wytwarza
impulsy /OE1-/OE4 odblokowywujące kolejno dostęp do wejść danych RAM dla
przerzutnikom U9-U16. Na bramce U26b jest formowany impuls inkrementacji
adresu /incADR, a na U25b sygnał wpisu do pamięci /WE. Po początkowych
16 taktach przez kolejne 320 trwa zapis danych jednej linii. Osiągnięcie stanu 336
przez licznik próbek powoduje zatrzymanie pracy SysClock aż do momentu
pojawienia się następnego impulsu /HRES i wznowienia procesu dla następnej linii.
Po przyjęciu 16000 próbki i jej zapisie w pamięci - licznik adresów przyjmuje stan
16000, który zostaje zdekodowany przez bramkę U31. Poziom niski na jej wyjściu
(/END) zeruje licznik adresów - przygotowując RAM do odczytu, a także powoduje
ustawienie stanu początkowego przerzutników U20a i U20b zatrzymując w ten
sposób proces digitalizacji. Na wyjściu /Q U20a pojawia się stan wysoki
oznaczający koniec przetwarzania (/DDIR). Ten sygnał jest skierowany przez
bramkę U36d na linię danych cartridge D0 w obszarze $FAXXXX do odczytu
i oznacza koniec przetwarzania ramki oraz dane gotowe do odczytu przez
komputer. Jedynie prawidłowe przetwarzanie można uzyskać odpytując programowo stan tej linii.
Jak wspomniałem wcześniej, licznik adresów digitalizera jest wykorzystany
zarówno przy zapisie jak i odczycie, dlatego też jego taktowanie jest
przełączane, korzystając z bramek U36a i U36b, pomiędzy digitalizerem
a komputerem. Przy odczycie danych rolę impulsu inkrementacji spełnia
zanegowany strob dostępu do obszaru $FBXXXX - /ROM3sel. cartridge,
jednocześnie sterując dostępem buforów U34,U35 do szyny danych Atari ST.
Pamięć, w trakcie odczytu, ma stale otwarte wyjścia stanem niskim na liniach
/OE co skraca czas dostępu do danych. Po odczytaniu 16000 słów 16-bitowych
można ustawić linię adresową A15 w stan niski i zacząć digitalizację kolejnej ramki.
Na rys.8 znajduje się schemat układu sygnalizacji pracy urządzenia,
który został dołączony opcjonalnie, gdyż nie ma żadnego wpływu na digitalizację.
Konstrukcja
Układ został zaprojektowany na maksimum efektu, dlatego jest tak bardzo
rozbudowany. Osiągane szybkości nie są olbrzymie ale najprawdopodobniej
graniczne - przy zegarze 8 MHz w Atari ST nie jest możliwe pokonanie
ograniczeń prędkościowych. Należy zadbać o właściwe blokowanie zasilania
kondensatorami tłumiącymi zakłócenia szpilkowe a także o rozdzielenie
napięć zasilających część analogową i cyfrową przez zastosowanie dwóch
stabilizatorów 7805 zasilanych z zewnętrznego źródła prądu stałego 12V.
Modelowy digitalizer został wykonany z elementów TTLLS w związku z czym
całkowity pobór prądu wynosi ok. 800 mA. Przy zastosowaniu układów serii HC,HCT moc pobierana zmaleje do rozsądnych wartości.
Na płycie czołowej zostały umieszczone potencjometry regulacyjne P1-P4,
gniazdo wejściowe CINCH oraz (opcjonalnie) diody LED obrazujące przetwarzanie.
Rys.7 przedstawia widok i numerację styków w złączu cartridge
Wbrew pozorom przedstawione schematy mogą być dostosowane również
do innych komputerów, np. Atari 8-bit, ponieważ rozwiązania konstrukcyjne są
uniwersalne. Wystarczy tylko przeliczyć dane wyjściowe do projektu i dopasować
postać zapisu danych w RAM digitalizera oraz jej wielkość do posiadanego
komputera. Oczywiście - jeśli wymagana jest większa liczba bitów na pixel - to również możliwe jest do zmiany i dostosowania.
Oprogramowanie digitalizera
Podstawową konstrukcją programową jest pętla:
/-> sys_run:
| move.l #$FB0000,A0 ; skąd
| move.l #adr_ekranu,A1 ; dokąd
| tst.b $FA0000 ; start
| wait: | cmp.w #$FFFF,$FAFF00 ; D0=1 (koniec?)
| bne wait ; jeśli nie, pytaj dalej...
|
| rept 16000 ; 16000 razy
| move.w (A0),(A1)+ ; <-- ten rozkaz
| endr ; rozmnóż
| \----------<<< bra sys_run ; ...od początku.
Ten fragment będzie w nieskończoność uruchamiał digitalizer i
przepisywał dane z jego RAM bezpośrednio do pamięci ekranu Atari ST.
Do projektu załączam plik dfast.zip
z programem digitalizacji oraz plikiem źródłowym w formacie assemblera DEVPAC. Poniżej zamieszczam
kilka obrazków uzyskanych przy jego pomocy. Niestety - tylko z niedoskonałej
wersji pierwszej. Dyski z digitalizacjami uzyskanymi z prezentowanej wersji
gdzieś mi się zapodziały niestety - nad czym ubolewam niezmiernie... Obrazki
z wersji pierwszej posiadają zakłócenia objawiające się białymi pixlami powstałymi
z powodu zastosowania do taktowania niesynchronizowanego generatora
kwarcowego. Problem ten został naprawiony w wersji drugiej poprzez zamianę
generatora wolnobieżnego na synchronizowany z początkiem obrazu i obrazy oraz sekwencje były digitalizowane bezbłędnie.
Obrazki uzyskane przy pomocy faST (widoczne białe, błędne pixele).
Kolory (szaroniebieskie) są ustalone jako jedna z palet w programie obsługi.
Poniższy obrazek został poprawiony w pogramie graficznym na Atari ST.
Pochodzi z anime Gunsmith Cats.
Program DFAST.PRG jest programem autorskim,napisanym wyłącznie
w celu obsługi digitalizera i ze względu na szybkość całkowicie w assemblerze.
Funkcje jakie spełnia to:
- wyświetlanie na ekranie Atari ST ruchomego obrazu
- naciśnięcie spacji w dowolnym momencie powoduje zapytanie
o nazwę pliku. Nie trzeba dodawać rozszerzenia .PI1 - program
dopisuje je automatycznie. Gdy nazwa osiągnie długość 8 znaków,
następuje zapis bez potwierdzenia <RETURN>
- klawisze funkcyjne służą do zmiany 10 palet kolorów, które zostały
dobrane eksperymentalnie i są stałe, co nie znaczy, że nie można
ich zmienić w tekscie źródłowym
- wczytanie sekwencji jest uruchamiane klawiszem S, w tym momencie
dane są wczytywane pod kolejne adresy w Atari ST, ekran się nie
zmienia. Zakończenie jest sygnalizowane sygnałem dźwiękowym oraz
odtworzeniem utworzonej sekwencji, której długość jest zależna od
ilości pamięci.
W tym trybie jest możliwe:
- używając klawiszy "+" i "-" na klawiaturze numerycznej przeglądanie
kolejnych ramek sekwencji (zbytnie manewrowanie po pamięci może
skończyć się bardzo boleśnie... BOMBY!!!, ponieważ nie są pilnowane
dozwolone zakresy pamięci Atari) - odtworzenie sekwencji klawiszem R
- klawiszem spacji - zapis konkretnej ramki na dysk
- przełączenie palety klawiszami F1-F10 - zakończenie pracy z sekwencją klawiszem Esc.
Uwaga! W trybie ciągłej digitalizacji naciśnięcie Esc bez ostrzeżenia kończy pracę programu.
Oprogramowanie nie umożliwia zapisu sekwencji na dysk twardy. Po prostu -
w tym czasie nie miałem jeszcze dysku twardego i nie widziałem sensu włączenia
takiej opcji do programu choć z pewnością byłaby przydatna w późniejszym okresie.
Oprogramowanie umożliwia więc tylko sprawy podstawowe - do obróbki obrazu
należy użyć, jak zaznaczyłem na wstępie, konkretnego programu graficznego np. shareware "CRACKART".
Uruchomienie
Prawidłowo zmontowany układ działa bez żadnych dodatkowych zabiegów.
Po uruchomieniu programu DFAST.PRG można wykonać test polegający na tym,
że kolejno na wejścia A,B,C,D bloku rejestrów wejściowych podajemy stan
wysoki - przy włączonym odtwarzaczu i odłączonych wyjściach przetwornika
A/D - na ekranie Atari będą pojawiały się kolory w zależności od końcówki oraz ustawionej palety.
Przy podaniu przebiegu wewnątrzukładowego, np.: /incADR na ekranie bedą
pojawiały się pionowe pasy. W trakcie pracy digitalizera, trymerem C19
ustala się optymalną geometrię obrazu. Przy digitalizowaniu sygnału
CVBS będą widoczne efekty tzw. mory - czyli zakłóceń związanych z podnoś-
nymi chrominancji. W celu wyeliminowania tychże można obrabiać sygnał
monochromatyczny lub na wyjściu wtórnika wejściowego włączyć pułapkę chrominancji.
Wykaz elementów:
Rezystory:
R1: 680k R2, R11, R15, R17, R19, R20: 2,2k
R3: 75 R4: 22k R5: 27k R6, R7: 220
R8: 56k R9, R10, R21: 470 R12, R13, R14, R22: 1k
R16, R18: 2,7k R23, R24: 4,7k R25, R26, R27, R28, R29: 330
Kondensatory:
C1, C2, C5, C8, C10, C12, C23, C24: 100nF
C3, C9, C11, C13: 47uF/16V C4: 10nF C6: 47nF
C7, C21: 470pF C14: 1uF C16: 2,2nF
C15, C17: 33pF C18: 150 pF C19: trymer cer. 3-15pF
C20, C22: 1nF Półprzewodniki:
U1, U2, U3, U4, U5, U6, U7, U8: 74LS164 U9, U10, U11, U12, U13, U14, U15, U16: 74LS374
U17: 74S08 U18, U19: 74LS123 U20, U28: 74LS74
U21, U22, U32, U33: 74LS393 U23: 74LS155 U24: 74LS32
U25: 74LS10 U26: 74LS132 U27, U37: 74LS14
U30: 74LS02 U31: 74LS30 U34, U35: 74LS244
U36: 74LS125 U38: 7406 U39: LM 1881N
U40: 74LS132 U41: SDA 9087 S1, S2: 7805
T1: BC 547 D1, D2, D3, D4, D5: dowolne LED
Inne:
L1, L2, L3: ferryt 10uHZakończenie Prototyp sprzedałem komuś za niewielkie pieniądze. Pozostały mi tylko opisy
oraz schematy. Być może projekt okaże się dla kogoś na tyle interesujący, że spróbuje sobie układ zmontować i uruchomić chociażby dla frajdy z tym związanej. Polecam! i jeszcze jedno...
Na Forum padło pytanie ze strony Cypriana - czy nie dałoby się zmienić
digitizera w analizator cyfrowy. Oczywiście - jest to jak najbardziej możliwe, jednakże należy dokonać sporo zmian, ponieważ digitizer został stworzony specjalnie do
zapisu zcyfryzowanych analogowych danych obrazu. W analizatorze wystarczy jeden długi licznik liniowy bez podziału na licznik linii i licznik próbek oraz dużo
szybsze pamięci (np. cache) i wyzwalany generator zegarowy o kilku częstotliwościach taktujących próbkowanie. Bardzo ważnym elementem całości jest porządny program wyświetlania i analizy spróbkowanych danych. W dwóch słowach: da się. |