Forum: Mikrocontroller und Digitale Elektronik ARM M3 für die Bildschirmsteuerung ausreichend?


von Wilder Kater mit Schwanz (Gast)


Lesenswert?

Hallo.
Gegeben ist  ARM M3 mit max 67 Mhz.
Ich habe 0 (Null) Erfahrung mit  ARM Architektur/Programmierung und nur 
wenig mit µC allgemein.Deswegen frage ich mal hier, ob so ein µC für 
VGA Bildschirm (z.B. 1280x1024) ausreichend ist.
Der µC soll nichts besonderes ausrechnen, nur  den externen Datenfluss 
auf dem Bildschirm  mit ca. 25 FPS   ausgeben.

Das Problem ist, dass ich hauptsachtlich FPGA benutze, aber für die 
Bildschirmsteuerung ist FPGA ziemlich aufwändig. Klar kann man mit FPGA 
alles realisieren, aber ich will das Rad nicht neu erfinden. Außerdem 
habe ich gehört, dass ARM schon richtige Bibliotheken dafür hat, also 
wäre die Bildschirmsteuerung samt   Mustergenerierung etc, damit viel 
einfacher.

 Also nochmal die Frage, reicht ARM M3 aus?=)

von Frank K. (fchk)


Lesenswert?

Text? Grafik? monochrom? Farbe?

Wenn der Videocontroller entsprechend nachhilft, kannst Du eine ganze 
Menge machen.

von Wilder Kater mit Schwanz (Gast)


Lesenswert?

Hmm, stimmt, habe ich ganz vergessen die  Info anzugeben:

Das Bild ist RGB mit 16 Bit Auflösung.  Zurzeit ist es nur geplannt, 
dass der µC nur die  Pixeldaten (über  3 pins für R,G  und B 
entsprechend) von dem FPGA  empfängt, und direkt auf dem TFT 
ausgibt.Also muss der µCdie ganze Synchronisierung etc. behandeln.

Später, wenn noch Ressourcen übrig sind, würde ich gerne auch Text  und 
simple 2D Grafiken anzeigen.
Wäre das möglich?

von Wilder Kater mit Schwanz (Gast)


Lesenswert?

Frank K. schrieb:
> Text? Grafik? monochrom? Farbe?
>
> Wenn der Videocontroller entsprechend nachhilft, kannst Du eine ganze
> Menge machen.

Was meinst du mit  Videokontroller?


Genauer gesagt handelt es sich um Cypress Psoc 5PL Dev Board.

http://www.cypress.com/?rID=51577

von Didi S. (kokisan2000)


Lesenswert?

Also wenn Du alles mit dem µC erledigen willst, braucht der kleine schon 
ein bischen Dampf unter der Haube. Auflösungen von 1280x1024 in 24 Bit 
Farbe ist vermutlich utopisch, da Du ja den gesamten Bildchirmspeicher 
im µC benötigst.
Außerdem ist VGA ein analoges Signal und Du brauchst einen flotten DAC 
oder etwas Ideenreichtum ...

Schaue auf jeden Fall mal hier rein:
http://www.lucidscience.com/pro-vga%20video%20generator-1.aspx

Für mehr Informationen schaue doch mal hier:
http://mbed.org/forum/mbed/topic/2459/?page=1
http://mbed.org/forum/mbed/topic/186/
http://www.microvga.com/

Gruß
kokisan

von Martin K. (martinko)


Lesenswert?

Hi,

Ich habe jetzt nicht so viel Erfahrung mit FPGA, aber ich dachte bisher 
das dies doch eher einfacher mit einem FPGA zu machen ist als mit einem 
Mikrocontroller. Ist das notwendige Timing damit nicht leichter und 
stabiler zu erreichen?

Gruß Martin

von PittyJ (Gast)


Lesenswert?

Ich habe auch mal VGA mit einem FPGA gemacht. Soweit ich mich erinnere 
war der Basis-Pixeltakt 25MHz. Es wird also schon sehr sportlich, wenn 
man mit einem 67 MHz Prozessor ein 25 MHz RGB-Signal darstellen will. 
Das sind rund 2.5 Takte pro RGB-Pixel.
Das reicht kaum aus, den Wert aus dem Speicher zu holen und auf einen 
Port zu geben. Geschweige denn, noch Graphiken nebenbei zu zeichnen.

Oder sehe ich da irgendetwas falsch?

von Uwe B. (derexponent)


Lesenswert?

@Wilder Kater mit Schwanz,

ich habe mit dem STM32F4 (bei 168MHz) eine VGA Ausgabe mit
640x480 Pixel programiert

wobei die reale Auflösung bei 320x240 liegt
bei 8bit Farbe braucht das ca. 76 kByte RAM

das Hauptproblem ist der Pixeltakt der Horizontalen Zeile
bei 640 Pixel und 50 Hz Bildwiderholrate sind das ca. 25MHz
das habe ich mit dem STM nicht hinbekommen !!

ich habe dann die Auflösung halbiert und brauche damit
nur noch mit ca. 13MHz die Pixelwert per DMA ausgeben

das schafft der STM gerade noch so

hier gibt es ein Youtube Video
von meiner Library (allerdings nicht von mir)

http://www.youtube.com/watch?v=axJRn_WZFY0

1280 Pixel halte ich also auch für "sehr schwer"
wenn nicht gar unmöglich
(lass mich da aber gern belehren)


ich habe das ganze auch schon per FPGA gelöst
der Aufwand für das anzeigen sind ca 20 Zeilen VHDL :-)
(für ein Statisches Bild aus dem RAM)
..soviel zu deinem "ziemlich aufwändig"

wobei ich hier nicht wüsste wie man hier deinen geforderten
"externen Datenfluss" ins RAM bekommt
(was dieser Datenfluss auch immer heißen mag)

Gruss Uwe

von GS (chromosoma)


Lesenswert?

Hm. Also einen Tft Display mit 1280 x1024  habe ich mit meinem Fpga 
board erfolgreich gesteuert. Die ganze Synchronisation ist wirklich mit 
fpga leicht zu schafen. Nur die ganze kompligierte ausgabe wollte ich 
mit vhdl nich machen, sprich Textausgabe,grafen etc. Eine sache ist ja 
ein Bild aus SRAM auslesen, andere sache die verdammte Buchstaben zu 
generieren.
PS.
Ich bin der Fragesteller

von Uwe B. (derexponent)


Lesenswert?

>Hm. Also einen Tft Display mit 1280 x1024  habe ich mit meinem Fpga
>board erfolgreich gesteuert

dann teil die Aufgabe doch auf :

benutz das FPGA um die Daten aus dem Grafik-Speicher
per VGA auf dem Bildschirm anzuzeigen

und schaff eine Schnittstelle zu einer externen CPU (welche auch immer)
und lass die CPU das Aufbereiten der Grafik-Daten übernehmen

dann muss die CPU nur noch in der "Austastzeit"
die Daten zum FPGA übertragen

oder einfacher : benutz zwei Bildpuffer
einer wird vom FPGA angezeigt, der zweite wird
gemütlich von der CPU beschrieben
(und es muss nur noch hin- und her- geschaltet werden)

Gruss Uwe

von GS (chromosoma)


Lesenswert?

Meinst du, dass sowohl FPga als auch  der mikrocontroller den 
gemeinsammen  Speicher  benutzen?D.h der mikro generiert text.etc, 
schreibt die pixeldaten auf dem Sram chip, und Fpga gibs die daten aus. 
Das wäre eine Möglichkeit.

von Uwe B. (derexponent)


Lesenswert?

>Meinst du, dass sowohl FPga als auch  der mikrocontroller den
>gemeinsammen  Speicher  benutzen?

Ja...entweder als externes RAM oder einfacher
ein internes DUAL-Port-RAM im FPGA
wo die schreib/lese funktionen vom FPGA verwaltet werden können

oder gleich eine Soft-CPU im FPGA
(wenn du dazu die Möglichkeit hast)

Gruss Uwe

von Didi S. (kokisan2000)


Lesenswert?


von W.S. (Gast)


Lesenswert?

Wilder Kater mit  Schwanz schrieb:
> Ich habe 0 (Null) Erfahrung mit  ARM Architektur/Programmierung und nur
> wenig mit µC allgemein.Deswegen frage ich mal hier, ob so ein µC für
> VGA Bildschirm (z.B. 1280x1024) ausreichend ist.

VGA ist 640x480
Ansonsten kommt es drauf an, an was du da eigentlich gedacht hast. So 
wie du schreibst, ist alles nur wirr.

Wenn du dir meit nem CPLD oder FPGA ne passende Ansteuerung für ein 
Display machst, dann passt ein ARM (sofern er nen externen Bus hat) 
immer.

Wenn du aber dran denken solltest, den ARM den Bildrefresh machen zu 
lassen, bist du komplett auf dem Holzweg.

Ansonsten ist 800x480 die sinnvolle obere Grenze bei uC wie z.B. 
LPC2478.

W.S.

von Wilder Kater mit Schwanz (Gast)


Lesenswert?

Ja, ich denke der Plan steht nun fest.
  FPGA wird die ganze Display Steuerung übernehmen, zumal  das FPGA 
Board sowieso eine ordentliche VGA Schnittschtelle + 512KB SRAM und 8MB 
SDRAM besitzt.

Der Text und diverse Grafen werden von ARM Modul generiert und in SRAM 
auf FPGA Board geschrieben.Das sollte ARM porblemlos schafen. Die 
Aktualisierungsrate für den Text usw. kann  problemlos   unter 25 fps 
liegen. Hauptsache  das Bild von der CCD Kamera wird Live übertragen, 
aber das schaft FPGa schon ohne probleme.

Ich muss   nur herausfinden, wie ich die  grafische ARM-Komponente in 
die Pixelmatrix konventiere....

von Uwe B. (derexponent)


Lesenswert?

>Ich muss   nur herausfinden, wie ich die  grafische ARM-Komponente in
>die Pixelmatrix konventiere....

ich würde da gar nichts "konvertieren" sondern die CPU mit dem FPGA so 
verbinden, das die CPU das Grafik-RAM vom FPGA wie ein eigenes externes 
RAM bedienen kann (mit entsprechenden Bus- und Steuerleitungen)

und der FPGA muss dann nur noch den Inhalt vom Grafik-RAM per VGA 
ausgeben

von WaMin (Gast)


Lesenswert?

SO wuerde ich das auch machen.
Das FPGA liest (in einer Art Endlosschleife) die Daten aus
dem RAM (Bildspeicher) und ist fuer die Ansteuerung und das
Timing des Displays zustaendig. Der ARM Mikrocontroller ist
fur die Aufarbeitung der Daten zustaendig und schreibt diese
dann jeweils in den Bildspeicher.

von Uwe (Gast)


Lesenswert?

1280x1024x16 Bit= 2,5Mbyte Pro Frame
Für das SRAM zu viel.
Wie schnell ist denn dein SDRAM.
Bei 25Hz und 2,5Mbyte Pro Frame sind das 62,5MByte/s.
Und wenn du da zwischendurch auch noch reinschreiben willst das ganze 
mal 2, also 125MByte/s. Mit nen 66MHzx16Bit SDRAM sportlich.

von MCUA (Gast)


Lesenswert?

>..da Du ja den gesamten Bildchirmspeicher im µC benötigst.
Das benötigte RAM (einige MB) wird wohl weder im uC noch im FPGA 
ausreichend vorhanden sein, so dass man auf jedes Fall externes RAM 
anbinden muss, das dann mit DualPort-Beschaltung.

von W.S. (Gast)


Lesenswert?

Uwe schrieb:
> Mit nen 66MHzx16Bit SDRAM sportlich.

Hähä.. ja, so ähnlich seh ich das auch.

Nun gut, für solche Fälle sollte man ein 32 Bit breites RAM verwenden, 
aber es bleibt ne echte Herausforderung - selbst für Könner.

W.S.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.