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….
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…
@ 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
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…
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
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?
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??
> 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
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
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 :)
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 ...
@ 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
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??
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
Vielen Dank an alle für die Tollen Anregungen … War etwas überrascht wie schnell die Beiträge geschrieben wurde… Gruß Andrej
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.