Wiesz radzio, "przespałem się" z tym pomysłem choć śpię już z nim dawno

, ale spojrzałem na to z innej strony. Chciałem na początku zrobić to na 8051, ale niestety jego graniczne czestotliwości nie pozwalały na zapis i odczyt tak szybko danych, więc od niego odszedłem, potem wpadłem na taki pomysł, że przecież pamięci SRAM mogą obsługiwane być zwykłymi licznikami binarnymi do adresowania, ale cały czas nie myślałem o procach, a teraz pomyślałem sobie, że przecież proce(nawet wolne) mogą sterować takim szybkim licznikiem i to może załatwić sprawę.
Moja koncepcja jest taka:
w aplikacji byłyby następujące układy(zakładając narazie czarnobiały obraz-bo do trzech kolorów potrzeba trzy takie aplikacje):
*pamięć SRAM 512kB
*licznik binarny 19bitowy(lub pare liczników połączonych kaskadowo) - adesowanie pamięci SRAM
*uC 8051(jakiś prosty nawet AT89C051)
*liczniki liczące dekady(dwa połączone też kaskadowo)
Zastoswać nawet AT89Cx051, to by było serce aplikacji. Procesor ma duże ograniczenia 24MHz max i 12 taktów proca to jedna komenda prosta - za wolny. Jednak jak wcześniej pisałem pamięć SRAM może być obsługiwana w inny(szybszy) sposób - adresowanie może być generowane przez licznik binarny(lub pare liczników) który liczy impulsy zegara matrycy. Takie liczniki mogą zliczać impulsy o dużej częstotliwości(na pewno 40MHz), a matryca ma tez przecież ograniczenie, więc ponad 40MHz nie wyjdziemy(chodzi o zegar taktujący matrycę).
Cała sztuczka polagałaby na tym, że AT89Cx051 generowałby sygnały sychronizacji pionowej i poziomej i włączałby licznik binarny sterujący pamięcią SRAM w odpowiednich momentach. Problem pojawia się, kiedy go wyłączyć i tu teraz pomyślałem sobie, że można zastosować następne liczniki, tyle, że dziesiątkowe:
Matryca 18bitowa od laptopa ma takie linie:
*zegar
*ENAB(zezwolenie nadawania, stan wysoki oznacza nadawanie info o pikselach)
*HSYNCH(synchronizacja pozioma)
*VSYNCH(synchronizacja pionowa)
*R0-R7
*G0-G7 } tu nadaje się info o kolorze w postaci cyfrowej(3 * 6bit)
*B0-B7 /
Matryca potrzebuje 600 wierszy po 800 pikseli - matryca przy każdym takcie zegara pobiera info o pikselu, jesli na lini ENAB(linia zezwalająca na nadawanie) jest stan wysoki. Następnie po każdej lini potrzebuje trochę czasu na sychronizacje w poziomie, no i oczywiście syglał na lini HSYNCH(to generował by AT89Cx051). Po zakończeniu klatki potrzebuje pare "pustych" lini(bez ENAB - tego sygnału zezwalającego), i sygnału sychronizacji pionowej na lini VSYNCH(co też genarowałby uC). Problem jest z tym liczeniem 800 pikseli, ale jeśliby zastosować liczniki zliczające dekady, to dwa takie kaskadowo zliczałyby ostatecznie setki. Procesor zdąrzy zliczać setki, a jak napotka 8mą setkę wyłączy sygnał ENAB i licznik adresów pamięci(zaqtrzyma odczyt z pamięci), odczeka chwilkę tyle ile trzeba, nada sygnał HSYNCH i rozpocznie nowe liczenie, nowe zwiększanie adresu SRAM. Po 600 takich cyklach(600 można zliczyć też na procu) uC nada te pare pustych lini, wygeneruje sygnał VSYNCH dla matrycy, zzeruje licznik adresowy i daje od początku - w ten sposób raz zapisane dane o pikselach w pamięci SRAM będą cały cvzas nadawane.
Teraz tylko jest cała sztuka, znaleść takie liczniki, kupić SRAM i napisać program
[ Dodano: 17-10-2006, 21:15 ]
Jednak do tego celu musicie pomóc mi znaleźć licznik dziesiętny lub dzielnik dziesiętny mogący zliczać częstotliwość 40MHz
Jest sporo układów które na wyjściu dają kod BCD, ale to pociąga za sobą stosowanie bramek logicznych(w celu przeniesienia), a każdy następny element to dodatkowy koszt i miejsce na płytce(nie mówiąc o energi przezeń pobieranej)
ja potrzebuje tylko nóżki CARRY OUT. Idealnym układem byłby taki jak CD4017 - tyle że mogący zliczyć zbocza sygnału 40MHz