Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

512kb RAM 6 lub 18bit

Awatar użytkownika
Sova
-
-
Posty:510
Rejestracja:10 lis 2003, o 21:43
Lokalizacja:Ostrołęka
Kontaktowanie:
512kb RAM 6 lub 18bit

Postautor: Sova » 16 paź 2006, o 18:16

Witam

nie chodzi o to, że nie chce mi się szukać na googlu, ale o to, że nic te poszukiwania mi nie powiedziały. Chciałbym się zapytać, czy istnieją dokładnie takie pamięci:

*pamięć RAM(nieograniczona ilość zapisów - ponieważ EPROM lub EEPROM z tego względu odpadają-zapis będzie bardzo częsty)
*pojemność 512kb
*6bitowa lub 18bitowa(to bym połączył sobie trzy 6cio bitowe)
*równoległa - i odczyt/zapis danych i adresowanie musi być równoległe

liczby wyglądają mi tak trochę egzotycznie(6 i 18 ), więc możę znacie jakieś 8bitowe lub 24bitowe, poprostu chodzi mi o taką pojemność(512kb) - 6bitowe to byłby już poprostu rarytas :).

Drugie moje pytanie, ponieważ odczyt będzie komórka po komórce chciałbym zastosować szybki counter 19to bitowy(dokładnie do adresowania tych 512kb pamięci 2^19) taki, który poprzez np zobcze narastające lub opadające sygnału zegara zwiększa wartość. Oczywiście zakładam też, ze takie nie istnieją, więc może znacie jakieś szybkie 8bitowe, tylko, ze teraz koniecznie musiały by mieć opcję syganlizacji wyjścia poza zakres 256(w liczniku+sterowniku wyświetlacza LED to nazwane było CARRY OUT).

Bardzo proszę o pomoc

radzio
Moderator
Moderator
Posty:967
Rejestracja:13 maja 2003, o 10:33
Lokalizacja:Sosnowiec
Kontaktowanie:

Postautor: radzio » 16 paź 2006, o 18:34

-> http://www.idt.com/?catID=58757 tylko obawiam się, że nie kupisz tego w Polsce, zwłaszcza w pojedyńczych sztukach. Nie podałeś też jakiego czasu dostępu oczekujesz... w TME mają sporo 512KBajtowych pamięci o organizacji 8bitowej... złożyć 3 takie pamięci będzie chyba taniej niż ściąganie jednego egzotycznego IDT.

PS. Kombinujesz sterownik do LCD kolorowego ??

Awatar użytkownika
Sova
-
-
Posty:510
Rejestracja:10 lis 2003, o 21:43
Lokalizacja:Ostrołęka
Kontaktowanie:

Postautor: Sova » 16 paź 2006, o 19:05

Tak dokłądnie - chcę zrobić statyczne sterowanie LCD kolorowym. Dostęp nie musi być aż taki szybki, szacuję taktowanie matrycy na około 15MHz to wychodzi koło 66ns/cykl, chciałbym móc w tym cyklu i odczytać komórkę i zapisać nową danę do tej samej. Teoretycznie to wszystko nawet prosto wygląda.

Wydumałem sobie, że najłatwiej zrobić to tak:

dać pamięć 800*600 = 468,75kB RAM równoległej(6 bitowa) adresowanej także równolegle. Do nóżek adresu podpiąc ten counter o którym wcześniej wspomniałem(2^19 = 512kB), a zliczanie podłączyć do sygnału taktującego matrycę. Przez to otrzymałbym zwiększanie o jeden adres przez jeden takt zegarowy matrycy. Matryca odczytuje dane na swoim odpowiednim 6bitowym porcie wejściowym co jeden takt, jak dobrze doczytałem na stanie wysokim sygnału taktującego. Oczywiście do tego portu byłaby własnie podłączona pamięć i nadawałaby dane bardzo dokładnie w czasie - zewzględu na wspólny zegar...

W ten sposób otrzymałbym statyczne sterowanie LCD - jak wspomniałem, matryca odczytuje dane o pixelach przy stanie wysokim sygnału zagara, to na niskim można zapisać nowe.

Dla uproszczenia nie wspomniałem o sygnałach sychnronizacji i o tym, że są trzy porty 6biotowe w takich starszych matrycach(dla każdego koloru jeden), ale to wszytko tez da się zrobić.

Po zakończeniu "klatki" counter zeruje się i robi to samo od nowa.

Co o tym myślisz Radzio, jeśli rozumiesz mój pomysł, może masz znasz konkretne układy, które by się nadawały(takie na zarobki hobbystów ;) ).

[ Dodano: 16-10-2006, 20:25 ]
Fakt na TME znalazłem 8bitowy 512kB SRAM 5V 10ns dostęp - to by sie wszystko zgadzało. cena < 15PLN :)

Co do adresowania, to pomyślałem sobie teraz, że nie byłoby głupim sposobem liczyć w dół.

800*600 (bo tyle bajtów mi potrzeba) = 480000 - a to żadnym sposobem nie jest jakaś liczba, która w jakimkolwiek liczniku może powodować sygnał CARRY OUT, ale gdyby tak istaniały liczniki programowalne, dałoby im się na wstępie liczbę 480000 i leciało w dół, aż osiągnie 0, potem nada sygnał CARRY OUT, następnie to pobudzi układ, który na nowo wpisze mu 480000 itd.

radzio
Moderator
Moderator
Posty:967
Rejestracja:13 maja 2003, o 10:33
Lokalizacja:Sosnowiec
Kontaktowanie:

Postautor: radzio » 16 paź 2006, o 19:51

Co o tym myślisz Radzio, jeśli rozumiesz mój pomysł, może masz znasz konkretne układy, które by się nadawały(takie na zarobki hobbystów ;) ).
[ciach]
to żadnym sposobem nie jest jakaś liczba, która w jakimkolwiek liczniku może powodować sygnał CARRY OUT, ale gdyby tak istaniały liczniki programowalne, dałoby im się na wstępie liczbę 480000 i leciało w dół, aż osiągnie 0, potem nada sygnał CARRY OUT, następnie to pobudzi układ, który na nowo wpisze mu 480000 itd.
Myślę, że najbardziej odpowidni będzie jakiś układ PLD... np jakiś układ z rodziny XC9500XL. Robienie tego na pojedyńczych licznikach i bramkach nie bardzo ma sens...

[ Dodano: 16-10-2006, 21:09 ]
Ogólnie mówiąc PLD to bardzo dużo bramek i przerzutników, które możesz połączyć prawie tak jak Ci sie to podoba. Tak więc masz możliwość w jednym układzie scalonym zmieścić kilkadziesiąt(set) zwykłych 74xx połączonych w konkretny układ. Rysujesz schemat, specjalny program przerabia go na postać gotową do wgrania do układu PLD i już masz gotowy układ cyfrowy. ISE firmy Xilinx udostępnia całe mnóstwo gotowych elementów bibliotecznych (liczniki, komparatory, relestry przesuwne, bramki itp itd) tak więc stworzenie takiego licznika jest stosunkowo proste (jeśli orientujesz się w zwykłej cyfrówce i wiesz co chcesz osiągnąć). Układy są bardzo tanie w porównaniu do układu pełniącego tą samą funkcję a zrobionego na klasycznych 74xx. Zapoznaj się z ofertą sklepu www.kamami.pl - układy CPLD Xilinxa koszują już od 6,5zł za najprostszą wersję, programator jest zbliżony w prostocie do STK200 tak więc rozpoczęcie zabawy z tymi układami nie jest ani trudne ani kosztowne.

Noszę się z zamiarem zrobienia podobnego sterownika dla LM64P83 (monochomatyczna matryca 640x480) i nie wyobrażam sobie robienia tego na czymś innym niż PLD.

Awatar użytkownika
Sova
-
-
Posty:510
Rejestracja:10 lis 2003, o 21:43
Lokalizacja:Ostrołęka
Kontaktowanie:

Postautor: Sova » 17 paź 2006, o 12:36

Wiesz radzio, "przespałem się" z tym pomysłem choć śpię już z nim dawno :P, 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

Wróć do „Elektronika - tematy dowolne”

Kto jest online

Użytkownicy przeglądający to forum: Bing [Bot] i 148 gości