Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Jaki ARM z dużą ilością pamięci danych

al555 07 Mar 2007 09:29 3995 17
Computer Controls
  • #1
    al555
    Level 20  
    Proszę o pomoc w wyborze ARM, podstawowe kryterium RAM (pamięć danych - potrzeba min. 80000 x 16bitów = ok. 160 kB jako bufor do LCD)

    - LPC2294 - 16kB wewnętrznego RAM - ale jest dodatkowa magistrala z możliwością podpięcia pamięci, tylko nie wiem czy można to wykorzystywać jako pamięć danych czy jako pamięć programu ( czytałem o kopiowaniu programu z Flasha do Ramu i uruchamianiu )
    - ew. w odwodzie AT91SAM7X256 - 64kB

    ARM9 raczej na razie odpada



    Dla AT91SAM7X256 z 64kB wewn. RAMu : ilu elementową tablicę 8 bitową mogę pomieścić w takiej pamięci przy deklaracji typu

    unsigned char Tablica[nnn]

    Zapewne nie jest to 64k, ale nie wiem czy 32k czy tylko 16k elementów ?



    Co myślicie o płytach Olimex LPC-E2294 oraz LPC-L2294 - uruchamiał ktoś takie płyty ?
  • Computer Controls
  • #2
    MirekCz
    Level 35  
    W 64kB możesz pomieścic 64k tablicę danych 8 bitowych...

    Są arm9 (str911 i 912), które mają 96kB ram i 256/512kB flash i są w obudowach tqfp80 , tqfp128 - na digikey koszt <20$.

    Poza tym w rozsądnych obudowach nic innego nie ma. Więc jedyna możliwość to pamięć zewnętrzna ram z jakąś szybką kością.

    Może napisz dlaczego akurat potrzebujesz 80000x16bitów?
  • #3
    al555
    Level 20  
    Biblioteki do wyświetlacza LCD który używam (320x240 kolor 16 bit ) mają opcje pracy na buforze RAM, dzięki temu można zyskać na czasie odświeżania LCD - stąd zapotrzebowanie na RAM

    320x240 = 76800 x 16 bitów na kolor + dane do programu.


    Można oczywiście pracować bezpośrednio zapisując dane do LCD, ale zależy mi na czasie odświeżania.

    Trudno jest skonfigurować zewnętrzną pamięć danych dla LPC2294 ? Pracuje się na wskaźnikach do takiej pamięci, czy można jej używać identycznie jak pamięci wewnętrznej ?

    Typ obudowy nie ma znaczenia ( no może kulki byłyby trochę kłopotliwe ;-) ).
  • #4
    And!
    Admin of Design group
    Podstawowa sprawa, jakie przepustowości są potrzebne ?
    Na ARMach są dostępne dość szybkie SPI,
    można do nich podłączyć zrobiony np. w FPGA kontroler zewnętrznej RAM i sterownik LCD jednocześnie (taka prawie karta graficzna by wyszła).
  • Computer Controls
  • #5
    al555
    Level 20  
    To byłby przerost formy nad treścią ;-)

    Wyświetlacz jest już uruchomiony na ATmega128 i czas rysowania całego ekranu to ok. 0.8 s.
    Chciłbym przyspieszyć "tylko" 10x
    Myślę że sam ARM wystarczy, jak będę miał na pokładzie jeszcze wystarczająco dużo RAMu żeby buforować wyświetlanie to w zupełności wystarczy.

    Zresztą nie wiem czy SPI nawet na ARMie dało by radę. FPGA odpada.
  • #6
    adamusx
    Level 27  
    A w jaki sposob przesylasz dane do wyswietlacza? Jakis interfejs rownolegly??
    Skoro nie uzywasz SPI, to rozumiem ze wysylasz dane rownolegle do wyswietlacza np za pomoca jednego z portow ATMegi tak?
    Wez pod uwage to ze SAM7S moze maksymalnie operowac na pinach wyjsciowych z predkoscia okolo 7MHz,a to w przypadku petli ktora na przemian tylko ustawia i zeruje pin. Ty musisz najpierw odczytac dane z pamieci,a potem wystawic je na danych pinach, wiec w najoptymistyczniejszym wariancie pewnie nie bedzie to robione szybciej niz 3Mhz/s.
    Pewnie wyjdzie to podobnie jak uzycie SPI z maks predkoscia 24Mhz (dla zegara 48Mhz).

    Dlaczego chcesz przesylac caly obraz do wyswietlacza?? Rozumiem cos takiego w momencie wyswietlenia statycznego obrazu, ale w innych przypadkach raczej wysyla sie tylko wartosci dla konkretnych pikseli.
    Poza tym co da buforowanie LCD, skoro pewnie wygenerowanie tych 160KB nowego obrazu zajmie wiecej czasu niz jego przeslanie.
  • #7
    al555
    Level 20  
    To jest dosyć duży , wyświetlacz LCD 6" (320x240) kolorowy z panelem dotykowym. Sterownik S1D13706F00A2 (EPSON), interfejs do sterownika to ok. 25 linii sterujących ( w tym 17 linii adresowych) oraz 16 linii danych.
    ( typowa aplikacja sterownika S1D dla LCD typu STN 8bit)

    Całość jest uruchomiona na ATmega128 16MHz z zewnętrzną pamięcią RAM 64kB, śmiga dosyć ładnie tylko odrobinę ( dosyć dużą odrobinę ) za wolno.
    Sterowanie odbywa się oczywiście za pomocą buforów ( 74_573 oraz 74_245) na co schodzi odrobinę czasu.


    Jeśli chodzi SPI to nawet 24MHz/8bitów to jest 3MHz na bajt ( tzn zmianę 8 bitów z częstotliwością 3MHz) a to jest mniej niż 7MHz a pamiętaj że zapis do portu dla ARMa to zapis ( chyba ) 32 linii naraz !

    Na tyle już skalkulowałem wymagania ( w tym czasowe) że jestem (prawie) pewien że zastosowanie samego ARMa podniesie zauważalnie czas odświeżania, a zastosowanie ARM7 z dużą ilością pamięci danych będzie w zupełności wystarczające.

    Na czym polega buforowanie?
    Wykonanie 2 przykładowych operacji bez bufora - zmazanie całego ekranu i narysowanie kilku elementów ( np. kwadratów) powoduje najpierw zmazanie całego ekranu ( widać że ekran jest pusty) a potem rysowanie dodatkowych elementów ( widać 2 przebiegi rysowania na LCD).
    Oczywiście powiesz że jak będzie procesor szybszy to nie będzie widać momentu przerysowywania ekranu - ja nie jestem do końca tego taki pewien.

    Taka sama operacja na buforze - powoduje że na ekran wrzucana jest za jednym przebiegiem zawartość zmazanego ekranu z naniesionymi elementami.
    Zyskujemy dużo czasu. Obraz jest statyczny ( przyciski, napisy itp ) ale z dużą ilością szczegółów, przy zmianie ekranu musi być przerysowany cały ekran, a chciałbym mieć zapas mocy na umieszczanie kilku klatek/s obrazu VIDEO

    Quote:
    Poza tym co da buforowanie LCD, skoro pewnie wygenerowanie tych 160KB nowego obrazu zajmie więcej czasu niż jego przesłanie.


    To jest jakaś pomyłka - odkąd operacje na RAMie są wolniejsze od operacji na portach I/O ? Tyle samo zapisujesz w buforze co wysyłasz do sterownika ! Piksel po pikselu !
    Więc lepiej kilka razy wykonywać operacje na RAMie niż na portach - nie jest to mój domysł - to praktyczna informacja.

    ALE ZESZLIśMY Z GłóWNEGO TEMATU !

    Proszę o informacje czy dodatkowa pamięć RAM na płytach Olimex LPC-E2294 oraz LPC-L2294 może być w pełni wykorzystywana jako dodatkowa pamięć danych !
  • #8
    Krisgorn
    Level 19  
    al555 wrote:
    Proszę o informacje czy dodatkowa pamięć RAM na płytach Olimex LPC-E2294 oraz LPC-L2294 może być w pełni wykorzystywana jako dodatkowa pamięć danych !


    Tak. Przecież właśnie po to jest ta pamieć.
  • #9
    j3di
    Level 11  
    Ja mam pytanie co to za wyswietalcz...
    do mojego projektu tez bym takeigo potrzebowal, a do tych co znalzlem nie moge dostac datasheeta kontrolerow :/

    potrzebuje tft 320x240 65K (262K)
  • #10
    al555
    Level 20  
    Różne wyświetlacze są dostępne i do wszystkich które spotkałem była dokumentacja - z tym że ja mówię o kupowanych nowych wyświetlaczach a nie z drugiej ręki.

    Ja używam Hitachi ale to nie jest TFT tylko jeszcze STN, duży wybór ma Gamma, Maritex i JM.

    Kontroler najczęściej sam musisz dołożyć do płytki sterującej wyświetlaczem. Np. EPSON, Solomon lub sam zaprojektować FPGA ( ew. wykorzystać uC z wbudowanym sterownikiem)
    Dokumentacja do kontrolerów jest na stronach producentów. Z tym ze nie jest łatwo o kontroler. Najłatwiej jest o S1D13706 ale wystarcza tylko na sterowannie 320x640 w 8 bitach koloru ( ma 80kB RAMu )

    Pozdrawiam.
  • #11
    j3di
    Level 11  
    robie wlasnie projekt... na prace dyplomowa

    arm + 3(5) kamerek + wyswietlacz

    poczatkowo chcialem podlaczyc duza matryce z laptopa, ale wlasnie jest problem z dokumentacja do "tanich" z allegro...
    potem szukalem z telefonow, ale jednak 320x240 to bedzie malo...
    potrzbuje takiej 640x480... bo takie tez bede mial sensory obrazu...

    planuje teraz zrobic plytke do (arm'a+ram) + (ram i cpld) jako sterownik do jakiejs matrycy

    wiem ze bede mial z tym duzo zabawy :|

    pytanie...
    czy matryce od laptopow nie maja wbudowanych kontrolerow?????
  • #12
    al555
    Level 20  
    A już byłem w połowie pisania tekstu nt. "co tu nie rozumiesz ? ;-) Szybko skasowałeś ten fragment ;-)

    Idziesz drogą identyczną jak ja. Też zdecydowałem się na (arm'a+ram) + (ram i cpld).
    Matryca 640x480 TFT a jako CPLD wybór padł (wstępnie) na XC9572XL, myśle że FPGA to zbyt dużo. Zastanawiam się nawet nad dwoma bankami pamięci RAM dla obrazu, żeby można przełączać dwa obrazy, a dokładnie wyświetlać z jednego a drugi w trakcie wypełniać nowymi danymi. Nie jestem w stanie do końca oszacować ile czasu potrwa przesłanie obrazu z ARMa do CPLD, stąd ten bufor.

    Generator do CPLD myślę w granicach 50..80MHz ( max. 100MHz).

    No i najważniejsze - nie wiem jaki wybrać ARM. Napewno ARM7, wstępnie LPC2294.To wstępne przymiarki.

    Napisz jak zamieszasz skonfigurować swoja płytę.
    A kamery będziesz miał z cyfrowym interfejsem czy analogowym + przetwornik ?


    Duże wyświetlacze (powyżej 320pix) mają zawsze sterownik ale najczęściej nie mają kontrolera.
    W wyświetlaczu 320x240 nie sterujesz 76800 liniami do każdego pixela - o to dba sterownik. Taki układ zawsze jest zintegrowany z wyświetlaczem.
  • #13
    upanie
    Level 22  
    I ja wtrącę swoje trzy grosze.
    Troszkę nie chce mi się liczyć tajmingów do Twojego projektu ale uczulę Cię na RAM zewnętrzny do ARMa. Otóż zewnętrzna pamięć jest dużo wolniejsza od wewnętrznej. Wewnętrzna pamięć jest w zasadzie jednocyklowa a zewnętrzna pewnie ok. 7-mio. Zatem skoro zegar wynosi 60MHz to masz ponad 100ns dostępu do zewnętrznego RAMu. No chyba, że coś popieprzyłem.
    Problem z taką "kartą" graficzną polega na cholernie szybkim RAMie. Jak sobie wszystko dobrze policzyć to trzeba napierdzielać dane do wyświetlacza z diabelnie dużą prędkością a to wiąże się z dużą szybkością RAMu. Poza tym do tegoż RAMu trzeba jeszcze coś zapisywać co oznacza, że musi on być conajmniej 2x szybszy. Zawsze można poszerzać szynę danych co skutecznie obniża zapotrzebowanie na szybkość RAMu. Można też obniżać częstotliwość odświeżania.

    Powodzenia.
  • #14
    al555
    Level 20  
    Wydaje mi się, że szybkie pamięci SRAM są chyba jednak dostępne, a 60MHz to nie jest dużo.
    Tak naprawdę to widziałem na stronie Gammy ( ale fakt - nie pytałem ) pamięci AMIC np. A43L0616B (1M x 16) 3,3V 166MHz.
    Mam nadzieję że taka pamięć nie będzie wymagała dodatkowych cykli opóźnienia z ARMem poganianym 60MHz zegarem ( a już absolutnie 7 cykli opóźnienia).
    Dopytam jutro jeszcze - ale mam nadzieję że to tylko teoretyczny problem !

    Ale dzięki za uwagę ...

    -------------

    DOPIERO JAK PRZECZYTAŁEM PRZEDOSTATNI POST TRZECI RAZ TO DOTARŁO DO MNIE ŻE NIE PISAŁEŚ o cyklach opóźnienia tylko o ilości cykli dla pojedynczego dostępu !
    Przyglądnę się tematowi !
  • #15
    upanie
    Level 22  
    No fakt, nie jasno to napisałem, ale o to właśnie chodzi. W ARMach pamięci są podłączone poprzez szynę AHB i ona właśnie wprowadza dodatkowe cykle. Nie wiem czy jest to 5 czy 7 ale ileś jest i trza to mieć na względzie. Być może w Twoim projekcie to nie ma znaczenia ale to już Twój zgryz ;)

    Powodzenia
  • #16
    j3di
    Level 11  
    1. Odnosnie Arma to ostatecznie padlo na 9tke, ale ta prymitywna...
    Dostepne jako sample z ST. Slyszalem ze peryferiale sa w nich glupio sterowane, ale ja praktycznie z nich nie bede korzystal, wiec mi taki odpowiada szczegolnie ze jest szybszy od 7ek. 96MIPsow.

    2. kamerki bede mial cyfrowe..., dokldaniej to sa "prawie gole" sensory...
    z podstawowa elektronika, do poprawy kolorow, focusa, itp...
    Strona: http://www.micron.com/products/partdetail?part=MT9V131L12STC

    I wlasnie... jesli ktos bylby zainteresowany takim sensorkiem to prosze o kontakt... bo niestety w polsce maja dystrybutorow, ale musze wziasc minimum ok 15kamerek...
    potrzebuje okolo 7, reszte bede sprzedawal...
    cena to ok 10-11e...

    3. cpld(ew. fpga)+ram...

    nie zalezy mi na 30fps'ach... 1klatka mi wystarczy... bo w moi projekcie co innego jest glownym celem... dokladnie to male przerobki na sciagnietych z kamerek obrazach i potem tylko pokazac rezultat.

    rozmiar danych do przeslania z ramu do wyswietlacza to 640*480*24bity = 900kB/s
    W przesylaniu danych z arma do sterownika(cpld+ramu) problemu nie ma, bo wystarczy tak jak pisal AL555, zastosowac "stronicowanie" i przelaczac ram z danymi do wyswietlenia.

    (Arm9 ale nie ten minimal... tylko np AT91RM9200 (200MIPsow) ma kontroler SDRAMU, niestety malo flasha i obudowa pqfp208 - dla mnie utrudnienie).
    Najlepsze ze kosztuje tyle samo co ten prymitywny...
  • #17
    al555
    Level 20  
    j3di: jak tam uruchamianie LCD ? udało się - co wybrałeś ?
  • #18
    j3di
    Level 11  
    Ostatecznie staneło na zestawie:

    ###################################
    ARM966
    SRAM 2MB
    LCD 2x20
    CZYTNIK KART SD
    KAMERKA CYFROWA 640x480 30fps
    SPARTAN3 200 z 32MB SDRAM 133MHz i 8MB FLASH
    MATRYCA COLOR 12,1" 800x600 18bit
    ###################################

                                                                      ------------ 32MB SDRAM (bufor)
    SRAM 2MB -------(EMI)--|                           |
    CZYTNIK SD ----------ARM ----/16----- SPARTAN3 200 ----- MATRYCA
    KAMERKA --------------|   |                         |
    LCD 2x20------------------|                         |------- 8MB FLASH

    niestety mam ciężki semestr na uczelni (same projekty) więc nie mam za bardzo czau na rozwój...

    Narazie zrobione:
    - podpięte: czytnik, lcd, kamerka, ram(na ukończeniu), cześć oprogramowana
    - podpięty sdram, flash :) (na minimodule)
    - opracowany kontroler do lcd w fpga

    Po nowym roku biorę się ostro do roboty, w końcu trzeba oddać prace dyplomową :)