Forum: Mikrocontroller und Digitale Elektronik Datenübertragung zwischen ARM und FPGA


von Andrej (Gast)


Lesenswert?

Hallo Leute,

hat eventuell jemand eine Idee wie man Daten zwischen einem FPGA und ARM 
übertragen kriegt.

Auf dem ARM soll Linux laufen. Die Daten werden in dem ARM verarbeitet 
und anschließend in einen FIFO-Speicher auf den FPGA übertragen.

Die Daten sollten schon pararell ausgegeben werden. Wie könnte das 
Problem mit dem Clock gelöst werden da der FPGA und ARM eigene Clocks 
haben…

Danke im Voraus….

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Mit FIFOs

von Andrej (Gast)


Lesenswert?

Naja das mit dem FIFO ist eigentlich nicht das Problem…

Aber wie werden die GPIO- Pins des ARMs angesteuert? Da auf dem ARM 
Linux laufen soll so muss folglich ein Treiber geschrieben werden der 
die Pins letztendlich ansteuert oder bin ich mit dem Treiber auf einem 
falschen Pfand…

Gibt es eventuell schon brauchbare Lösungen mit den man ein Pararell Bus 
zwischen dem ARM und FPGA aufbauen könnte…

Währe jetzt für jede Hilfe Dankbar…

von Falk B. (falk)


Lesenswert?

@ Andrej (Gast)

>Gibt es eventuell schon brauchbare Lösungen mit den man ein Pararell Bus
>zwischen dem ARM und FPGA aufbauen könnte…

Hat der ARM keinen exteren Bus? Dann könnte man das FPGA ganz einfach 
anschliessen, wie eien exterenen RAM.

MFG
Falk

von Andrej (Gast)


Lesenswert?

Habe mir erstmal dieses Board bestellt: EP9302 ARM Webserver, aus dem 
Webshop….
Link: 
http://shop.mikrocontroller.net/csc_article_details.php?nPos=0&saArticle[ID]=88&VID=aefrVheVvEyo2LSS&saSearch[word]=&saSearch[category]=ARM&saSearch[special]=

Laut Schaltplan hat der ARM eine Reihe von unbeschalteten Pins die ich 
für den FPGA nehmen könnte…

Das Problem ist wie sollen die Pins auf Seiten des ARM konfiguriert 
werden? Gibt es hierfür  schon fertige Code die das übertragen der Daten 
sowie eine Adressierung erlauben…

Es muss ja schon so was geben, ob die Daten an den FPGA angelegt werden 
oder nicht ist erstmals zweitrangig…

von Peter D. (peda)


Lesenswert?

Ich kann da nur mit dem Kopf schütteln.

Man nehme ein paar Modewörter (ARM, Linux, FPGA, VHDL), schütte sie in 
einen großen Topf und rühre kräftig um, fertig.


Wenn man dagegen was lauffähiges haben will, muß man die Datenblätter 
schon selber lesen und verstehen.

Und für solche Boliden mit hohen Frequenzen sollte man hardwaremäßige 
Kenntnisse haben, wie MMIO funktioniert und auch vom Layouten.


Peter

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Der Bus ist bei diesem Board nicht herausgeführt. GPIOs zu verwenden ist 
nicht optimal, die CPU wird stark belastet und man kann kein DMA nutzen. 
Einfacher wäre SPI, aber wenn ich mich richtig erinnere ist der SPI-Takt 
beim EP9302 auf ca. 14 MHz begrenzt. Welche Übertragungsrate brauchst du 
denn?

von Andrej (Gast)


Lesenswert?

Eine Übertragungsrate von 12MBit währe schon mal nicht schlecht, es kann 
aber sein das eine doppelt so hohe Übertragungsrate benötigt wird 
(24Mbit)…

Ich habe mal mit den Atmel-Microcontroller sowie FPGA’s von Xilinix 
gearbeitet, da währe das ganze für mich etwas übersichtiger nur fällt 
mir in diesem Fall die Idee wie ich die Daten vom ARM runterkriege zumal 
die Daten vom Linux generiert werden… Ok ich könnte die Daten über die 
schon implementierten Bus- Schnittstellen übertragen nur die erlauben 
eine eingeschränkte Übertragungsgeschwindigkeit….

Habe hier einen Board gefunden der einen ARM sowie einen FPGA enthält 
die Übertragungsgeschwindigkeit soll laut Datenblatt 480 MBit betragen.

Link: http://www.iotech.dk/en/products/arm9_fpga/

Hätte vileicht jemand eine Idee wie die das realisiert haben??

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Der ARM wird vermutlich direkt mit dem Datenbus am FPGA hängen.

von Dominic R. (dominic)


Lesenswert?

> The FPGA is connected directly to the address and data bus of the ARM9.
> This gives a high flexibility for FPGA usage and a high data
> transmission speed to between FPGA and ARM9.

Das Datasheet ist da doch recht eindeutig... ;)

Alternativ wäre ein schnelles serielles Interface denkbar, dazu muss 
dein ARM natürlich ein entsprechendes Interface bieten. Vorteil wäre ein 
deutlich einfacheres Board Layout.

Gruß,

Dominic

von Peter D. (peda)


Lesenswert?

Andrej wrote:

> Ich habe mal mit den Atmel-Microcontroller sowie FPGA’s von Xilinix
> gearbeitet, da währe das ganze für mich etwas übersichtiger

Der Unterschied zum AVR ist minimal (32Bit statt 8Bit Daten, 32Bit statt 
16Bit Adressen, kein Adreßlatch).


> nur fällt
> mir in diesem Fall die Idee wie ich die Daten vom ARM runterkriege zumal
> die Daten vom Linux generiert werden…

Du wirst einen Linux Treiber schreiben müssen. Linux wird Dir bestimmt 
den direkten Memory-Zugriff verwehren.


> Ok ich könnte die Daten über die
> schon implementierten Bus- Schnittstellen übertragen nur die erlauben
> eine eingeschränkte Übertragungsgeschwindigkeit….

Höher als mit dem implementierten Daten/Adreßbus geht nicht !


http://en.wikipedia.org/wiki/Memory-mapped_IO


Peter

von Christoph L. (clechner)


Lesenswert?

Interessantes Board. Das FPGA hängt in der Tat am Adressbus, siehe 
http://www.iotech.dk/download/presentations/s1_data_sheet-1.pdf Seite 4.
Derartige Datenraten auf anderem Wege auszutauschen wäre auch nicht 
besonders sinnvoll :)

von Christoph L. (clechner)


Lesenswert?

Oha, da waren andere wohl schneller als ich.

Aber das mit dem Linux-Treiber ist ja auch nicht soo schwer. Es gibt 
sicher genug Anschauungsmaterial ...

von Falk B. (falk)


Lesenswert?

@ Christoph Lechner (clechner)

>Derartige Datenraten auf anderem Wege auszutauschen wäre auch nicht
>besonders sinnvoll :)

Alles relativ. PCI-Express ist seriell mit 2,5Gbit/s/Kanal. So ählich 
arbeiten auch schnelle Speicher GDDR3 etc.

MfG
Falk

von Andrej (Gast)


Lesenswert?

Lässt sich eigentlich mit den freien Pins vom „EP9302 ARM Webserver“ ein 
Pararellbus aufbauen??

Kenn eventuell jemand ein vergleichbares Board denn ich oben erwähnt 
habe mit dem FPGA und ARM am besten von einem deutschen Hersteller??

von Peter D. (peda)


Lesenswert?

Andrej wrote:
> Lässt sich eigentlich mit den freien Pins vom „EP9302 ARM Webserver“ ein
> Pararellbus aufbauen??

Ich denke, Du hast schon mal nen FPGA an nen AVR drangepappt ?

Dann solltest Du doch wissen, daß MMIO nur mit ganz bestimmten Pins geht 
und sonst nicht !


Bitbefehle aufm ARM sind schlichtweg scheußlich.
Einen Parallelbus aus beliebigen Pins per Bit-Banging zu emulieren, 
dürfte daher noch langsamer als SPI sein.


Peter

von Andrej (Gast)


Lesenswert?

Vielen Dank an alle für die Tollen Anregungen …

War etwas überrascht wie schnell die Beiträge geschrieben wurde…

Gruß
Andrej

von michael s (Gast)


Lesenswert?

Hi,
habe die frage nach Herstellern nochmal aufgegriffen:
Beitrag "Dev Board mit FPGA & µC"

MfG
Michael

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.