Forum: FPGA, VHDL & Co. Cyclone oder Spartan an Ethernet


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Ich gedenke eine I/O erweiterung zu bauen für 2 unabhängige 
Einsatzmöglichkeiten:

1. FPGA-FPGA link über LWL zb mittels FTLX8574D3BCL benötigt hierbei 
werden einige gbps.

2. FPGA-Datenbank (auf PC über Ethernet (FTLX8574D3BCL)) link. Hierbei 
sollte eine signalliste auf dem FPGA mit der DB auf dem PC 
Synchronisiert werden. LWL GBE, benötigt werden ca 200mbps.

Angedacht habe ich Cyclone oder Spartan, aber evtl. würde insbesondere 
für Punkt 2 ein SOC benötigt. Weiter die Frage nach der IP für dieses 
vorhaben. Bietet dies ein Hersteller frei zur Verfügung?

Was würdet ihr für dieses Vorhaben empfehlen?

von Martin S. (strubi)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

Wenn nur das Streaming schnell sein muss und nicht zig kleine Anfragen 
bewaeltigt werden muessen, tut's ein Minimalansatz mit UDP-Stack, ein 
Spartan6-LX9 mit RISC-V SoC reicht gerade noch so knapp, besser klappts 
mit einer ZPU-Architektur.
Ansonsten kannst du auch mit Linux und hard-core(ARM) SoC draufhauen, 
aber auch bei den entsprechenden Komplexitaeten ins Stolpern kommmen.
Nicht zu vergessen: Auch Lattice Semi (plus third parties) haben 
wunderschoene Streaming-Referenzdesigns fuer ihre ECP5 Plattformen.
Schlussendlich gilt fuer alle: Kostenlos sind die IP nirgendwo, das 
Knowhow auch nicht. Das wichtigste ist ein effizienter DMA-Core, sonst 
bringt das alles nix (und du duempelst auf uIP/lwip-Performance rum).

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
In der Xilinx Welt koennte je nach Aufgabe auch der Artix was sein, das 
haengt halt stark von der Rechenpower ab. Schau dir mal das AC701 
Evalboard an, das hat eigentlich genau das drauf was du suchst und zu 
allem Beispiel Designs:

https://www.xilinx.com/products/boards-and-kits/ek-a7-ac701-g.html#hardware

Die MGTs gehen bis 6.6 Gbps, ist die Frage ob dir das reicht? Falls 
nicht muss es die naechst groessere Familie sein, das sind dann die 
Kintex.

Der Artix 7 200T ist schon ein ziemlich maechtiger FPGA, evtl. kommst du 
auch schon mit einem wesentlich kleinerem FPGA zurecht, z.B. ein 50T. 
Zum evaluieren ist das allerdings auch kein Fehler erstmal mit dem 
dicken FPGA anzufangen, dein Design soweit fertig zu machen und dann 
entsprechend den richtigen Chip auszuwaehlen.

von Weltbester FPGA-Pongo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hast du das ETH auf dem AC701 mal zum Laufen bekommen?

von Gustl B. (gustl_b)


Bewertung
-1 lesenswert
nicht lesenswert
Und warum FPGA? Das sind Aufgaben die eine CPU gut machen kann, ich sehe 
keinen Grund für Parallelität oder rekonfigurierbare Logik.

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Weltbester FPGA-Pongo schrieb im Beitrag #6435735:
> Hast du das ETH auf dem AC701 mal zum Laufen bekommen?

Ging das an mich? Falls ja, muss ich mit Nein antworten, allerdings nur 
weil ich es nie ausprobiert habe und nicht mehr im Besitz eines AC701 
bin. :-(

Gustl B. schrieb:
> Und warum FPGA? Das sind Aufgaben die eine CPU gut machen kann, ich sehe
> keinen Grund für Parallelität oder rekonfigurierbare Logik.

Nope, FPGAs scheinen erstmal genau das Mittel der Wahl zu sein. FPGAs 
sind geradezu zum schaufeln grosser Datenmengen gemacht. Und ueber 
welche CPU hat den Anbindung fuer seinen Fiberlink?

von Sigi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Punkt 1 und Lösung via CPU schliessen sich ja wohl
bei der Datenmenge total aus.
Frage dazu: Moderne (und teure) FPGAs haben ja
dedizierte Cores mit entsprechend schnellen
Schnittstellen nach aussen. Gibt es für kleinere
FPGAs auch Phys zum Zwischenschalten zwischen
FPGA-Pins und Fiberlink-Controller, so ab 10Gbps?

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Sigi schrieb:
> Gibt es für kleinere
> FPGAs auch Phys zum Zwischenschalten zwischen
> FPGA-Pins und Fiberlink-Controller, so ab 10Gbps?

Das ist schwierig. Zumindest in der Xilinx Welt fangen MGTs ueber 10 
Gbps erst bei den Kintex an. Die wuerde ich aber schon nicht mehr zu den 
kleineren FPGAs zaehlen.

Die Alternative waehrend dann externe SerDes Bausteine, so dass man auf 
MGTs komplett verzichten kann.

von Gustl B. (gustl_b)


Bewertung
0 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6435398:
> Ich gedenke eine I/O erweiterung zu bauen für 2 unabhängige
> Einsatzmöglichkeiten:

Es ist völlig unklar für welches Gerät diese Erweiterungen seien sollen.
Nur um Daten von A nach B zu schaufeln braucht man keinen FPGA. Da kann 
man auch Standardhardware nehmen. Z. B. Netzwerkkarten für PCIe. Gibt es 
fertig und auch mit hohen Datenraten.

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Bewertung
-2 lesenswert
nicht lesenswert
Gustl B. schrieb:
>
> Es ist völlig unklar für welches Gerät diese Erweiterungen seien sollen.
> Nur um Daten von A nach B zu schaufeln braucht man keinen FPGA. Da kann
> man auch Standardhardware nehmen. Z. B. Netzwerkkarten für PCIe. Gibt es
> fertig und auch mit hohen Datenraten.

Diese Quatsch Diskussion hatten wir vor ein paar Wochen schonmal. Es 
sind genug Infos vorhanden um eine fachkundige Antwort zu geben. Und 
wenn man dem nicht maechtig ist, darf man sich auch einfach nur 
enthalten. ;-)

von Gustl B. (-gb-)


Bewertung
-1 lesenswert
nicht lesenswert
Tobias B. schrieb:
> Es sind genug Infos vorhanden um eine fachkundige Antwort zu geben.

Sehe ich nicht so.

Um was geht es denn? Sollen viele Daten zwischen zwei noch unbekannten 
Geräten ausgetauscht werden? Dann wäre interessant welche Geräte das 
sind. Heutzutage haben sehr viele PCIe oder FMC und für beides gibt es 
fertige Hardware.

Sollen Daten zwischen zwei FPGAs ausgetauscht werden weil die Daten aus 
noch unbekannten Gründen in FPGAs anfallen/vorliegen? Dann wäre 
interessant ob die FPGA Hardware schon fertig ist oder nicht. Denn
1. gibt es genug FPGA Boards mit (q)sfp+ drauf (Terasic hat viele)
2. Könnte man je nach Anwendung den Umweg über einen Rechner gehen. Also 
Daten vom FPGA über DMA in den Rechner und dann wieder über normale 
Netzwerkhardware raus zum zweiten Rechner. Es wurden keine Anforderungen 
an die Latenz genannt.

Mir ist weiterhin unklar warum da FPGA drinnen sein muss.
Die Entwicklung eigener Hardware mit sfp+ und FPGA wird deutlich teurer 
wie Hardware von der Stange.

Sigi schrieb:
> Punkt 1 und Lösung via CPU schliessen sich ja wohl
> bei der Datenmenge total aus.

Tobias B. schrieb:
> Und ueber
> welche CPU hat den Anbindung fuer seinen Fiberlink?

Quasi jeder moderne PC mit PCIe. Da kauft man sich eine Netzwerkkarte 
und hat die 10 GBit/s (auch 40 GBit/s gibt es zu kaufen). Und selbst ein 
ganzer PC der das kann ist günstiger wie eine Neuentwicklung. Klar, 
braucht mehr Strom. Aber auch dazu steht nix in den Anforderungen.

Tobias B. schrieb:
> darf man sich auch einfach nur enthalten. ;-)

Das konnte ich noch nie, bin gerne ein seltsamer unangepasster 
Aussenseiter.

: Bearbeitet durch User
von Sigi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Gustl B. schrieb:
> Quasi jeder moderne PC mit PCIe. Da kauft man sich eine Netzwerkkarte
> und hat die 10 GBit/s (auch 40 GBit/s gibt es zu kaufen).

Ein PC ist aber nicht nur die CPU, das Wesentliche ist
beim PC der PCIe-Bus, der als DMA-Kanal genutzt wird.
Die CPU spielt hier nur die dirigierende Komponente.

Es gibt sogar schon PCIe-Karten mit 4* 40 GB/s, dank
PCIe und DDR4 kein Problem. Probleme treten aber dann
auf, wenn die Daten auch noch in "Realzeit" bearbeitet
werden müssen, da ist selbst ein schneller PC zu
langsam. Wurde aber hier in Foren schon oft genug
beschrieben.

von Gustl B. (-gb-)


Bewertung
-1 lesenswert
nicht lesenswert
Sigi schrieb:
> Ein PC ist aber nicht nur die CPU

Hatte ich auch nicht behauptet. War auch nicht gefordert.

Sigi schrieb:
> in "Realzeit" bearbeitet
> werden müssen, da ist selbst ein schneller PC zu
> langsam. Wurde aber hier in Foren schon oft genug
> beschrieben.

Realzeit wurde nicht gefordert. Mag auch sein, dass es wirklich FPGAs 
braucht, aber nur um Daten von A nach B zu schaufeln gibt es fertige 
Lösungen. Selbst mit FPGA gibt es fertige Lösungen. Das ist alles 
deutlich günstiger wie eine Eigenentwicklung.

von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke für die vielen Antworten

Nun zu Aufgabenstellung 1:
Es geht um IO Erweiterung, also einen HauptFPGA hat einige seiner IOs 
ausgelagert. Aus EMV Gründen -> LWL
Latenz kritisch. bis zu 150 Signale, um jitter gering zu halten mit 
relativ hoher Updategeschwindigkeit >20MHz ==> einige GBit/s

Aufgabenstellung 2:
Nun der HauptFPGA soll mit dem PC kommunizieren. Wie ist eigentlich 
egal. Sollte jedoch LWL sein. Von mir aus auch PCI-E über LWL oder USB 
über LWL oder was auch immer. Leider ist ETH das einzige was ich kenne, 
das LWL ist und bis in den GBaud Bereich geht. Daher die ETH Idee.

FPGA Board ist noch nicht evaluiert. Das ganze ist Netzbetrieben -> 
Stromverbrauch nicht spezifiziert. Im Blick ist aktuell der Cyclone 10 
GX

von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Noch vergessen: Aufgabenstellung 2 ist nicht latenz kritisch, einige 
100mbit/s genügen ebenfalls.

von Gustl B. (-gb-)


Bewertung
0 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6444908:
> FPGA Board ist noch nicht evaluiert.

OK, welche Hardware gibt es doch schon und ist fest gesetzt, darf also 
nicht ausgetauscht werden?

FPGA schrieb im Beitrag #6444908:
> der HauptFPGA

Gibt es den schon mit Platine? Hat der schon den LWL Anschluss oder 
welche Anschlüsse hat die Platine für Erweiterungen?

von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Gustl B. schrieb:
> OK, welche Hardware gibt es doch schon und ist fest gesetzt, darf also
> nicht ausgetauscht werden?

HW Gibts aktuell noch keine.

Ein paar Details worums im grossen geht:
Eine Steuerung mit total ca. 600 (low speed) LWL I/O, welche zwingend im 
FPGA verarbeitet werden müssen. Daneben existieren noch etliche PLC I/O 
sowie entsprechend von anderen Herstellern Netzwerkgebundene Daten, 
welche von einem PC bearbeitet werden. Diese sind nicht delaykritisch, 
die Daten müssen jedoch dem FPGA zur verfügung stehen. Desshalb wird 
eine Kommunikation FPGA-PC benötigt.

Da eine einzige Platine mit 600 LWL I/O sinnbefreit wäre(!) und die LWLs 
nur relativ low speed sind, ist eine IO Erweiterung geplant. Diese 
verschiedenen Board, sollten bestenfalls über ein identisches Layout 
verfügen. Die gesamte logik würde dann einfachheitshalber im HauptFPGA 
sein, und die anderen Platinen sind nur erweiterungs I/O.

Anyway lange story kurz: es geht um die LWL Schnittstellen FPGA-PC sowie 
FPGA-FPGA mit den bereits beschriebenen Eigenschaften

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Kannst du vielleicht noch die maximale Datenrate pro LWL spezifizieren? 
Zwischen 1 und 10 Gbps (und so interpretiere ich jetzt mal "mehrere") 
liegen in der Regel die harten Grenzen, vor allem bei den kleinen FPGAs.

Und ich nehme mal an, dass auch gilt: Je mehr LWL pro FPGA angeschlossen 
werden koennen, desto besser?

von Gustl B. (gustl_b)


Bewertung
0 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6445278:
> ca. 600 (low speed) LWL I/O

FPGA schrieb im Beitrag #6445278:
> LWLs nur relativ low speed

Was denn konkret?

FPGA schrieb im Beitrag #6445278:
> etliche PLC I/O

Sehr unkonkret.

FPGA schrieb im Beitrag #6445278:
> entsprechend von anderen Herstellern Netzwerkgebundene Daten, welche von
> einem PC bearbeitet werden. Diese sind nicht delaykritisch, die Daten
> müssen jedoch dem FPGA zur verfügung stehen.

Welche Datenrate? Wieder sehr unkonkret.

FPGA schrieb im Beitrag #6445278:
> es geht um die LWL Schnittstellen FPGA-PC sowie FPGA-FPGA mit den
> bereits beschriebenen Eigenschaften

Verstehe ich nicht warum.

Du könntest ein FPGA Board nehmen mit PCIe, dickem FPGA und ordentlich 
Erweiterungsmöglichkeiten. Das steckst du in den PC. Damit kannst du 
problemlos Daten zwischen PC und FPGA austauschen.
Und dann schließt du an dieses FPGA Board noch mehrere IO Platinen für 
die vielen LWLs an. Aber die kannst du auch elektrisch mit dem FPGA 
Board verbinden, es gibt FMC. Je nach Datenrate der LWLs reichen 
vielleicht schon die FPGA IOs direkt aus über mehrere FMCs. Der FMC HPC 
kann 400 IOs.
Sonst gibt es IO Expander oder man könnte kleine FPGAs auf die IO Karten 
setzen die dann seriell mit dem HauptFPGA reden.

Und wenn die IOs eines FPGAs nicht reichen, dann kannst du in einen PC 
auch mehrere FPGA Steckkarten stecken. Da bekommst du locker deine 600+ 
IOs. Die können schnell miteinander reden, ins RAM vom Rechner 
schreiben, ...

Aber du kannst auch eine externe Platine nehmen mit schnellem LWL zum PC 
und vielen IOs für die langsamen LWLs. Im PC dann eine LWL Netzwerkkarte 
von der Stange.

von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Gustl B. schrieb:
> Was denn konkret?

FPGA schrieb im Beitrag #6444908:
> Latenz kritisch. bis zu 150 Signale, um jitter gering zu halten mit
> relativ hoher Updategeschwindigkeit >20MHz ==> einige GBit/s

Wie bereits beschrieben. min 20MHz sampling rate, 150 LWL pro Board als 
Startgrösse.

Gustl B. schrieb:
> Sehr unkonkret.

Die PLC Daten sind hier auch grösstenteils orthogonal zu dieser 
Diskussion.

Gustl B. schrieb:
> Damit kannst du
> problemlos Daten zwischen PC und FPGA austauschen.

Ok, super, danke, so gehts eigentlich auch. Und würde die PC-FPGA 
Problematik komplett lösen. Kannst du bitte kurz die problemlose:

- Treiber mit DMA für Windows/Linux
- IP Core welcher die Daten in einem vom usercode zugreifbaren BRAM 
abspeichert (z.b. mit 512 64 bit Sendeadressen und 512 64 bit 
Empfangsadressen welche, der IPcore/Treiber ständig mit dem PC Ram 
abgleichen)

der Algemeinheit verfügbar machen?

Eigentlich ist es angedacht, das FPGA Board ausserhalb des PCs zu 
platzieren. Wie sieht es bezüglich des PCI-E und aus dem Rechner 
rausführen. Existieren Signalbufferkabel? Gar LWL konverterter?

von FPGA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Tobias B. schrieb:
> Kannst du vielleicht noch die maximale Datenrate pro LWL spezifizieren?
> Zwischen 1 und 10 Gbps (und so interpretiere ich jetzt mal "mehrere")
> liegen in der Regel die harten Grenzen, vor allem bei den kleinen FPGAs.

bis zu 150 Signale, um jitter gering zu halten mit relativ hoher 
Updategeschwindigkeit >20MHz ==> einige GBit/s
in dem bsp. wärens min 3GBit/s. Anyway wenns mehr als 20MHz drinn liegen 
ist dies auch super.


Tobias B. schrieb:
> Und ich nehme mal an, dass auch gilt: Je mehr LWL pro FPGA angeschlossen
> werden koennen, desto besser?

Nicht unbedingt, da das Board dann auch entsprechend gross würde, einge 
geschickte balance zwischen Grösse/Anzahl boards wird angestrebt. Mit 
150 LWL pro Board ist eher das obere Anzahl LWL limit bezogen der 
Sinnvolligkeit erreicht.

von Gustl B. (-gb-)


Bewertung
0 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6445935:
> Und würde die PC-FPGA
> Problematik komplett lösen. Kannst du bitte kurz die problemlose:
>
> - Treiber mit DMA für Windows/Linux
> - IP Core welcher die Daten in einem vom usercode zugreifbaren BRAM
> abspeichert (z.b. mit 512 64 bit Sendeadressen und 512 64 bit
> Empfangsadressen welche, der IPcore/Treiber ständig mit dem PC Ram
> abgleichen)
>
> der Algemeinheit verfügbar machen?

Warum ich? Sowas gibt es von den FPGA(Board) Herstellern.
Such doch einfach mal bei Google, ich habe hier in sehr kurzer Zeit 
schon mal https://www.xilinx.com/support/answers/65444.html gefunden.

FPGA schrieb im Beitrag #6445935:
> Wie sieht es bezüglich des PCI-E und aus dem Rechner
> rausführen. Existieren Signalbufferkabel? Gar LWL konverterter?

Gibt es ebenfalls. Und zwar von Thunderbolt3 über 
https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=67&No=1143 
bis zu 
https://www.telexsus.com/products/lecroy/pcie-external-cable-30-to-pcie-slot-adapter 
.

FPGA schrieb im Beitrag #6445935:
> Wie bereits beschrieben. min 20MHz sampling rate, 150 LWL pro Board als
> Startgrösse.

Gut, muss die komplette Datenmenge "nur" in das HauptFPGA oder auch in 
den PC? Also welche Datenrate muss zwischen FPGA und PC erreicht werden?

20 MHz ist für einen FPGA IO eher gemütlich. Nur die Anzahl der IOs die 
du brauchst zwingt dich vermutlich zu Zusatzhardware, diesen IO Karten 
mit eigenem FPGA. Ist aber machbar. Mehrere IO Karten und die übertragen 
die Daten auf wenigen IOs schnell zum HauptFPGA. Muss kein LWL sein, 
kann aber.

von Christoph Z. (christophz)


Bewertung
0 lesenswert
nicht lesenswert
FPGA schrieb im Beitrag #6435398:
> 1. FPGA-FPGA link über LWL zb mittels FTLX8574D3BCL benötigt hierbei
> werden einige gbps.

FPGA schrieb im Beitrag #6445935:
> FPGA schrieb im Beitrag #6444908:
>> Latenz kritisch. bis zu 150 Signale, um jitter gering zu halten mit
>> relativ hoher Updategeschwindigkeit >20MHz ==> einige GBit/s
>
> Wie bereits beschrieben. min 20MHz sampling rate, 150 LWL pro Board als
> Startgrösse.

Ach so, darum hast du ein 10 Gbit/s SFP+ Modul (FTLX8574D3BCL) als 
Ansatz.
Dieses benötigt auch >10 Gbit/s Transceiver im FPGA. Also zum Beispiel 
bei Xilinx Kintex-7 oder neuer.

Entsprechend solltest du / eure Firma auch fit sein mit High-Speed 
Leiterplatten und entsprechender Messtechnik (> 40 GHz).

Ich würd mal ganz genau über die >20 MHz Updategeschwindigkeit 
nachdenken. Das ist sehr hoch und in den meisten Umgebungen unnötig, 
weil es muss in kurzer Zeit auf etwas reagiert werden, aber dieses etwas 
kommt nicht mit 20 MHz vorbei. Durch Synchronisation der Systeme lässt 
sich der Jitter drücken ohne so hohe Updateraten.

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.

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