mikrocontroller.net

Forum: FPGA, VHDL & Co. Erfahrung mit Arduino und FPGA?


Autor: Michael H. (hisun)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Suche Freelance-Support für ein Projekt mit
einem Arduino compatiblen FPGA Dev Board (z.Bsp. Papilio DUO 2MB SRAM).
Hat jemand Erfahrung?
Bitte melden!!

Autor: Targo Tacheles (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Wenn'de FPGA hast, brauchste kein Ardiono-board mehr - nimm nen 
Arduino-SoftCore:
http://www.embedds.com/fpga-powered-soft-arduino/

Autor: Michael H. (hisun)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Mit dem FPGA will ich die Daten von einigen schnellen RS 422 einsammeln
und evaluieren.
Der Arduino soll die Ergebnisse über ein Ethenert Shield weitergeben.
Deshalb scheint die Kombination von Arduino und FPGA leistungsfähig zu 
sein.

Autor: Lars R. (lrs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einteilige Lösung (Arduino als Softcore auf FPGA):
. kompakter
. eventuell geringere Bauteilekosten

Zweiteilige Lösung
. geringerer Entwicklungsaufwand
. FPGA-Design weniger komplex
. Arduino ggf. leistungsfähiger
. Arduino-Teil kann ohne FPGA-Kenntnisse programmiert oder ausgetauscht 
werden.

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Michael H. schrieb:
> Mit dem FPGA will ich die Daten von einigen schnellen RS 422 einsammeln
> und evaluieren.
Wie schnell sind die denn?
Üblicherweise ist nämlich genau sowas am einfachsten reinste Software 
auf einem potenten uC.

Targo Tacheles schrieb:
> nimm nen Arduino-SoftCore
Diese "Lösung" ist in jedem Fall unbedingt teurer als eine zweiteilige 
Lösung. Oder andersrum: idR. lohnt sich ein Softcore nur, wenn man ihn 
sich "schönsäuft"...
Denn wenn du nur einen einzigen AD-Wandler des Arduino verwenden willst, 
ist der Softcore am Ende.

Michael H. schrieb:
> Hat jemand Erfahrung?
Du willst das sicher nicht hören, aber druck es dir einfach mal aus und 
leg es ganz hinten in den Projektordner:
Nimm einen Prozessor, der schnell genug ist und ausreichend Ressourcen 
hat. Das ist hinterher betrachtet auf jeden Fall billiger.

Denn du solltest auf jeden Fall auch die Update-Geschichte nicht aus den 
Augen verlieren...

Autor: Michael H. (hisun)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Lothar M. schrieb:
> Michael H. schrieb:
>> Mit dem FPGA will ich die Daten von einigen schnellen RS 422 einsammeln
>> und evaluieren.
> Wie schnell sind die denn?
Jede RS422: Baudrate 921600
> Üblicherweise ist nämlich genau sowas am einfachsten reinste Software
> auf einem potenten uC.
>
> Targo Tacheles schrieb:
>> nimm nen Arduino-SoftCore
> Diese "Lösung" ist in jedem Fall unbedingt teurer als eine zweiteilige
> Lösung. Oder andersrum: idR. lohnt sich ein Softcore nur, wenn man ihn
> sich "schönsäuft"...
Wir suchen eine Lösung, der Preis spielt keine entscheidente Rolle.
> Denn wenn du nur einen einzigen AD-Wandler des Arduino verwenden willst,
> ist der Softcore am Ende.
Nein, wir wollen 10 RS422 über den FPGA einsammeln und
die Ergebnisse verifizieren. Arduino ist für externe Kommunikation über 
TCP/IP.
>
> Michael H. schrieb:
>> Hat jemand Erfahrung?
> Du willst das sicher nicht hören, aber druck es dir einfach mal aus und
> leg es ganz hinten in den Projektordner:
> Nimm einen Prozessor, der schnell genug ist und ausreichend Ressourcen
> hat. Das ist hinterher betrachtet auf jeden Fall billiger.
>
> Denn du solltest auf jeden Fall auch die Update-Geschichte nicht aus den
> Augen verlieren...
Was spricht gegen einen fertigen Arduino mit FPGA (z.Bsp. Papilio DUO 
2MB SRAM)???

Autor: Strubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael H. schrieb:
> Mit dem FPGA will ich die Daten von einigen schnellen RS 422
> einsammeln
> und evaluieren.
> Der Arduino soll die Ergebnisse über ein Ethenert Shield weitergeben.
> Deshalb scheint die Kombination von Arduino und FPGA leistungsfähig zu
> sein.

Wenn der Atmel nur Ethernet machen soll: Den Wiznet-Chip kannst du auch 
direkt ans FPGA hängen, sollte es fertige Wings für geben. Aber das FPGA 
macht eigentlich vom Entwicklungsaufwand nur Sinn, wenn du keinen uC 
findest, der genug UARTs hat, und allenfalls brauchst du noch 
DMA-Unterstützung, wenn der ZPUino die Transferrate nicht schafft. Da 
wirds dann eher etwas aufwendiger. Von der Soft-Arduino-Sache würde ich 
eher absehen, das wird typischerweise Gefrickel.
Apropos ADC: Mit dem Spartan3 und den Diff-Inputs kann man sich was von 
Hand stricken. Beim ZPUino gibt's auch nen fertigen Core dafür.

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael H. schrieb:
> 10 RS422
OK, da wird die Luft dünn, so viele serielle Schnitten hat kaum ein 
µC...

> Jede RS422: Baudrate 921600
>
> 10 RS422
Mit kontinuierlichem Datenstrom?
Also Netto-Datenrate ca. 1MByte/sec?

> 10 RS422 über den FPGA einsammeln und die Ergebnisse verifizieren
Welche Art von "Verifikation" soll da passieren? Eine Filterung? Auf 
welcher Ebene? Müssen dafür die Daten interpretiert und gespeichert 
werden?

> Was spricht gegen einen fertigen Arduino mit FPGA (z.Bsp. Papilio DUO
> 2MB SRAM)???
Nichts.
Allein, dass noch keine Erfahrung mit FPGAs vorliegen spricht gegen das 
FPGA an sich. Aber jeder hat mal klein angefangen, und es wird eben 
einfach Lehrgeld kosten... ;-)

: Bearbeitet durch Moderator
Autor: The Aargauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Baudrate 921600! mir RS 422.

Macht das überhaupt der Treiberchip mit?

Ciao

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
The Aargauer schrieb:
> Macht das überhaupt der Treiberchip mit?
Der SN65HVD179 kann bis zu 25MBit/sec...

Autor: Michael H. (hisun)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar M. schrieb:
> Michael H. schrieb:
>> 10 RS422
> OK, da wird die Luft dünn, so viele serielle Schnitten hat kaum ein
> µC...
>
Zumindest soviele RS422 wie möglich.
>> Jede RS422: Baudrate 921600
Ja
>>
>> 10 RS422
> Mit kontinuierlichem Datenstrom?
> Also Netto-Datenrate ca. 1MByte/sec?
Ja
>
>> 10 RS422 über den FPGA einsammeln und die Ergebnisse verifizieren
> Welche Art von "Verifikation" soll da passieren? Eine Filterung? Auf
> welcher Ebene? Müssen dafür die Daten interpretiert und gespeichert
> werden?
Prüfen auf Grenzwertüberschreitung mit Hysterese, wenn nein ignorieren, 
wenn ja weitergeben.
>
>> Was spricht gegen einen fertigen Arduino mit FPGA (z.Bsp. Papilio DUO
>> 2MB SRAM)???
> Nichts.
> Allein, dass noch keine Erfahrung mit FPGAs vorliegen spricht gegen das
> FPGA an sich. Aber jeder hat mal klein angefangen, und es wird eben
> einfach Lehrgeld kosten... ;-)
Deshalb wollen wir ein fertiges Arduino/FPGA Board (z.Bsp. Papilio DUO 
2MB SRAM) verwenden.

Autor: Strubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

ah, das mit den 10 UARTs hatte ich überlesen.
Ansich habe ich einen Setup für den Papilio mit 3 UARTs, den man auf 
eine gewisse Zweierpotenz (max 16) aufbohren kann. Siehe MaSoCist 
(Beitrag "SoC release ('MaSoCist')")
Aber: Da fehlt der DMA, und die CPU ist in der OpenSource-Release die 
olle nicht-gepipelinete Zealot.
Ohne DMA kriegst du die Daten nicht weg, auch auf nem Arduino könnte es 
knapp werden.
Mit der ZPUng (pipelined-ZPU) ginge das ev. ohne DMA.
Bandbreite mit Wiznet-Ethernet sollte reichen, bei ca. 1 MByte/s. (10 * 
100kB).
Wenn du aber puffern musst, bist du gleich bei "Memory am FPGA" und TCP, 
das bringt eine Menge Overhead. Damit bist du faktisch schon bei 
embedded Linux und hast da ev. nicht gleich die Treiber zum FPGA an der 
Hand.
Die pragmatischste Lösung die mir da einfiele, wäre, einfach 4 
Linux-Steckmodule a 3 UARTs auf die Platine zu hauen und den Kram halt 
übern Hub verkabeln und per NTP und Timestamp im Protokoll zu 
synchronisieren. Den Schwellwertcheck kannste locker in Software 
erschiessen.
Oder soll's irgendwann Stückzahlen regnen?

Gruss,

- Strubi

Autor: Lars R. (lrs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<10x RS 422/>
  |
  V
<FPGA mit Memory> #(zB. Papilio DUO 2MB SRAM)
  |
  V
10x <RS 422 data processing/>
10x <Fifo für Speicherzugriff/>
01x <write from Fifos to mem/>
  |
  V
1x <Memory_Read + SPI Slave/>
  |
  V
</FPGA mit Memory>
  |
  V
<Raspberry PI mit SPI-Master>
  |
  V
<Raspberry Ethernet/>
  |
  V
</Raspberry PI>

Edit: Falls ein Teil des Dataprocessing auch auf dem PI laufen darf 
(schnell genug dafür ist er), so wird es auf dem FPGA noch etwas 
übersichtlicher, modularer und leichter modifizierbarer. Das ist dann 
eigentlich ganz hübsch. Falls es final so nicht sein darf, kann die 
Verarbeitung auf dem PI auch nur ein Zwischenschritt bei der Entwicklung 
sein.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.