Forum: FPGA, VHDL & Co. schnelles (100MBit/s und 20m) Interface ActelFPGA - PC gesucht


von Michael B. (mibo)


Lesenswert?

Hallo Experten,

ich möchte Messdaten mit 100MBit/s in einen PC über 20 Meter 
transferieren. Das Messgerät basiert (soweit ich weiß) auf einem Actel 
A3P1000, der LVDS-Ausgänge besitzt. Ich möchte den Entwicklungsaufwand 
auf der FPGA-Seite gering halten.
Auf PC-Seite würde ich gerne eine PCI/PCI-X/PCIe-Karte kaufen, die das 
Übertragungsprotokoll von sich aus beherrscht, ich also nicht jedes Bit 
einzeln abfragen, parallelisieren, dekodieren und Fehler-checken muss. 
Linux-Treiber oder eine offene Dokumentation müssen vorhanden sein.

Was für ein Interface/Protokoll schlagt ihr vor?
100MBit/s-Ethernet (OSI layer1 und layer2) sind im FPGA sicher nur sehr 
aufwändig zu implementieren, oder? Der PC bräuchte dann nur eine 
zusätzliche Netzwerkkarte.

Danke fürs lesen
Michael

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Mit dem Cypress FX2 sollte 100 MBit/s über USB kein Problem sein. Siehe 
Beitrag "Projekt: Cypress USB FX2 an FPGA; Timing Analyse für FSM". Es gibt auch ein paar Open 
Source Projekte mit dem Chip, z.B. das USPR von GNURadio.

von Christian R. (supachris)


Lesenswert?

Dachte ich auch zuerst, nur muss man dann noch etwas nachhelfen, um auf 
die 20m zu kommen. USB Line Extender oder mehrere solche aktive 
Verlängerungen hintereinander....

von Michael B. (mibo)


Lesenswert?

Danke für Eure Antworten.

Ich muss den Cypress-USB-Thread jetzt erstmal versuchen zu verstehen.
z.B. ist immer nur von Windows DLLs die Rede - ich brauche es für Linux
Außerdem ist mir noch nicht klar, ob diese Cypress-USB-Platine nun einen 
Host (Master) oder einen Slave darstellt. Eine PC-USB-Karte kann ja 
(IMHO) nur als Host arbeiten - das FPGA-USB-Interface müsste also ein 
Slave sein.

Wegen der 20m habe ich bei USB auch etwas Bedenken, auch weil USB ja 
große Latenzen nachgesagt werden, was Signalrepeater eher verschlechtern 
werden.

Gruß
Michael

von Christian R. (supachris)


Lesenswert?

Der Cypress Chip ist ein Device. Für Linux geht das prima mit der LibUSB 
anzusprechen, machen wir hier auch. Die Latenzzeiten haben erst mal nix 
mit der Kabellänge zu tun und sind Host-Controller und Treiber-abhängig. 
Ordentliche Intel-Controller arbeiten im µs-Bereich. Die 20m schaffst du 
nur, wenn du mehrere Hubs hintereinander einsetzt, oder eben solche 
Line-Extender nimmst. Die Übertragungsrate und/oder Latenzzeit 
verschlechtert sich dadurch nicht. Ist auf jeden Fall einfacher zu 
implementieren als Ethernet. Dafür halt für lange Strecken nur mit 
Zusatz-Hardware geeignet. Bei Hy-Line gibts übrigens die Extreme USB 
Sachen, da kannst du per Glasfaser auch einige km weit USB machen.

von Falk B. (falk)


Lesenswert?

@ Michael Born (mibo)

>100MBit/s-Ethernet (OSI layer1 und layer2) sind im FPGA sicher nur sehr
>aufwändig zu implementieren, oder?

Nöö, das ist eher einfach. Und vor allem, es ist ein SEHR verbreiter 
Standard, vor allem auf der PC-Seite. Irgendwelche selbstgebastelten 
PCI-Karten sind heute fast ausgestorben, von gaaaaanz wenigen 
Spezialanwendungen mal abgesehen.

MFG
Falk

von Michael B. (mibo)


Lesenswert?

Falk Brunner wrote:
> @ Michael Born (mibo)
>
>>100MBit/s-Ethernet (OSI layer1 und layer2) sind im FPGA sicher nur sehr
>>aufwändig zu implementieren, oder?
>
> Nöö, das ist eher einfach. Und vor allem, es ist ein SEHR verbreiter
> Standard, vor allem auf der PC-Seite. Irgendwelche selbstgebastelten
> PCI-Karten sind heute fast ausgestorben, von gaaaaanz wenigen
> Spezialanwendungen mal abgesehen.
>
> MFG
> Falk

Also für USB habe ich dieses Modul mit Cypress-Chip gefunden, dass 
anscheinend sehr einfach (nur Datenleitungen anschließen) dem FPGA eine 
USB-Schnittstelle verpassen würde. 
http://www.braintechnology.de/braintechnology/usb_fastinterface27.html
Den zugehörigen SourceCode, den es angeblich bei Cypress gibt, habe ich 
auf die Schnelle nicht gefunden.

Gibt es ein solches "anschließen und fertig"-Modul auch für Ethernet 
Layer1+2 zu kaufen? Auf PC-Seite kann ich z.B. mit Ethereal/Wireshark 
Layer2 Pakete anschauen - ein Auslesen dieser Daten sollte also hier 
recht einfach sein. Da nur Gerät und PC an dem Ethernet-Kabel hängen 
würden, wären höhere Layer schon zuviel des Guten.

Beim lesen z.B. bei Wikipedia ist mir der Begriff SerDes 
begegnet.http://en.wikipedia.org/wiki/SerDes
Das führt zu folgender Idee:
8 Pins (Bits) vom FPGA meines Gerätes werden an ein "Ser"-Modul 
geschlossen, dass einen differenziellen, seriellen Datenstrom erzeugt, 
der über 20m Kabel übertragen werden kann.
Am anderen Ende ist ein "Des"-Modul, dass wieder parallele Daten daraus 
macht und diese an eine digital-I/O-PCI-Karte des PCs gibt.
Kriegt man solche SerDes-Module zu kaufen? Per Google habe ich erstmal 
nur Chipsätze gefunden, die quasi Kanonen für die Spatzen wären.
http://www.latticesemi.com/solutions/technologysolutions/highspeedserialio.cfm


Nochmal Danke für die bisherigen Vorschläge.
Ich versuche mir gerade einen Überblick über die verschiedenen 
Möglichkeiten zu verschaffen - wie ihr an meinen Fragen merkt, ist das 
Thema für mich Neuland.

Schönen Abend!
Michael

von Falk B. (falk)


Lesenswert?

@ Michael Born (mibo)

>Gibt es ein solches "anschließen und fertig"-Modul auch für Ethernet
>Layer1+2 zu kaufen?

Nennt sich MAC+Phy, manchmal sogar in einem Gehäuse. Z.B. DM9000. Einige 
FPGAs haben einen MAC schon als Hard-Core auf dem IC, aber auch ein 
Soft-MAC ist relativ einfach machbar, wenn man nicht jedes Normfeature 
braucht. Daten reinhauen, Raustakten, dabei CRC berechnen und am Ende 
CRC anhängen.

>8 Pins (Bits) vom FPGA meines Gerätes werden an ein "Ser"-Modul
>geschlossen, dass einen differenziellen, seriellen Datenstrom erzeugt,
>der über 20m Kabel übertragen werden kann.

Naja, 100 MBit/s sind für ein heutiges FPGA eher Kinderkram, da braucht 
man keinen extra SerDes. BEstenfalls einen PHY, der robustes Treiber 
(ESD) zur Verfügung stellt.

>Kriegt man solche SerDes-Module zu kaufen?

Ja, ist aber nicht sinnnvoll, weil keine Standard. Ein einfacher 
LVDS-Transmittter reicht für 100 Mbit/s. Allerdings ist die 
Datenrückgewinnung am Empfänger schon nicht ganz trivial. Dann doch 
besser einen fertigen SerDes nehmen, z.b.

http://www.national.com/analog/interface/serdes

Mit den Chanel Links hatte ich mal zu tun, sind eigentlich für 
Bildübertragung. Dort bekommt man schon einige Gbit/s durch, braucht 
aber spezielle Kabel und Stecker, nix mit CAT5 und RJ45.

MFg
Falk

von Michael B. (mibo)


Lesenswert?

Danke für die umfangreiche Antwort.

PHY+MAC waren in der Tat sehr gute Stichworte. Ich schaue mir nun das 
bei dacomwest.de gelistete 10/100MBit/s-Modul WIZ830MJ näher an.
Komischerweise sind 100MBit/s-Module sehr selten (ausgiebige 
google-Suche) und mit 1GBit/s habe ich nur ein Modul gefunden. Wenn der 
Aufwand für den Anschluß des Moduls an den FPGA gleich ist, könnte ich 
ja auch 1GBit/s nehmen - vielleicht braucht mans später mal...

Das 10/100MBit/s-Modul: 
http://www.wiznet.co.kr/en/pro02.php?&ss[2]=2&page=1&num=77

Das 1GBit/s-Modul: 
http://www.morethanip.com/boards_10_100_1000_dp83865.htm

Jetzt muss ich die Doku wälzen und verstehen, wie ich so ein Modul am 
Actel developer board zum Testen anschließe.

Gruß
Michael

von Christian R. (supachris)


Lesenswert?

Michael Born wrote:

> Das 1GBit/s-Modul:
> http://www.morethanip.com/boards_10_100_1000_dp83865.htm
>
> Jetzt muss ich die Doku wälzen und verstehen, wie ich so ein Modul am
> Actel developer board zum Testen anschließe.


Naja, der PHY ist ja PillePalle, da gibts massenhaft Chips. Aber da 
gehört ja mindestens noch der MAC dazu. Den könnte man von OpenCores 
nehmen. Da kann man zumindest ohne CPU schon mal UDP machen. Aber ob das 
sonderlich schön und sinnvoll ist, ist fraglich. Wir arbeiten momentan 
mit einem Virtex 4 mit eingebautem GbE-MAC und dem PowerPC Prozessor da 
drin, um mit möglichst viel Auslastung der 1Gbit-Stecke Daten per UDP an 
den PC zu transferieren. Klappt auch soweit ganz gut, aber das FPGA ist 
mit PPC, MAC, DMA-Controller und bissl eigener Logik auch schon voll 
wieder (FX12).

von Michael B. (mibo)


Lesenswert?

Ui, Du hast Recht. Das ist ja nur der PHY - hatte ich übersehen.
Dann läufts wohl auf das WIZ830-Modul hinaus.

Warum gibts so ein PHY+MAC für 1GBit/s nicht als fertiges Modul zu 
kaufen? Weil die Anforderungen alle zu unterschiedlich sind?

@supachris:
Warum benutzt ihr UDP? Ist MACRAW (wie es z.B. bei dem WIZ-Modul heißt) 
nicht schneller und einfacher, da es auf dem niedrigen Layer2 liegt?

von Christian R. (supachris)


Lesenswert?

Ganz einfach: Damit es kompatibel zu allen PCs ist, keine extra Treiber 
o.ä. am PC nötig sind, und routingfähig muss es auch sein. Wir wollen 
keine Sonderlösungen, sondern robuste Standard-Lösungen.

Die Module wird´s so nicht geben, weil wie gesagt die Anforderungen 
extrem unterschiedlich sein können. Das ist ja nicht wie bei USB einfach 
anstecken und geht, sondern da ist ja einiges an Protokoll und 
Konfiguration nötig....

von Michael B. (mibo)


Lesenswert?

Nach einigen Diskussionen hat sich die Problemstellung bei mir nochmal 
etwas geändert. Vielleicht könnt Ihr mir dazu auch noch einen Tip geben.

Den FPGA zu programmieren, damit er das WIZ830MJ Ethernet-Modul 
initialisiert und ihm seine Daten sendet ist wohl zu aufwändig (und 
evtl. sind in dem Gerät auch nicht mehr genügend Zellen frei).
Viel einfacher wäre es, das Ethernet-Modul über einen Microcontroller in 
Software anzusprechen. Der MC würde also über einen parallelen Bus Daten 
vom FPGA bekommen und diese an das Ethernet-Modul schicken.
Das führt mich zu zwei Fragen.
1. Welchen MC würdet ihr empfehlen? (Er sollte die 100MBit/s schaffen)

2. Das Ethernet-Modul hat ja selber schon einen Controller drauf, den 
man aber nicht programmieren kann. Wäre es vielleicht einfacher, direkt 
einen Microcontroller zu nehmen, der schon eine Ethernet-Schnittstelle 
hat, und bei dem noch die Kommunikation mit dem FPGA in Software zu 
realisieren? (MC-Vorschläge sind sehr gerne willkommen)

Schönen Abend!
Michael

von Falk B. (falk)


Lesenswert?

@ Michael Born (mibo)

>Den FPGA zu programmieren, damit er das WIZ830MJ Ethernet-Modul
>initialisiert und ihm seine Daten sendet ist wohl zu aufwändig

Glaub ich nicht.

> (und
>evtl. sind in dem Gerät auch nicht mehr genügend Zellen frei).
>Viel einfacher wäre es, das Ethernet-Modul über einen Microcontroller in
>Software anzusprechen. Der MC würde also über einen parallelen Bus Daten
>vom FPGA bekommen und diese an das Ethernet-Modul schicken.

Viel zu umständlich.

>Das führt mich zu zwei Fragen.
>1. Welchen MC würdet ihr empfehlen? (Er sollte die 100MBit/s schaffen)

Das packen nur mittelgrosse 32 Bit Prozessoren, ARM, PowerQUICK & Co.

>2. Das Ethernet-Modul hat ja selber schon einen Controller drauf, den
>man aber nicht programmieren kann. Wäre es vielleicht einfacher, direkt
>einen Microcontroller zu nehmen, der schon eine Ethernet-Schnittstelle
>hat, und bei dem noch die Kommunikation mit dem FPGA in Software zu
>realisieren? (MC-Vorschläge sind sehr gerne willkommen)

Kann man machen, ist aber im Prinzip das Gleiche.

Pack die Initialisierung in den FPGA und sprich direkt mit dem 
Ethernettranceiver. Das ist einfacher als man denkt. Ne kleine State 
Machine liest am Anfang ein paar Dutzend Konfigurtionsworte aus einem 
BRAM und schreibt sie in den Ethernet-IC. Fertig. Danach schreibt sie 
die Daten in den IC.
 Wenn die paar Logikzellen nicht mehr da sind ist das FPGA eh zu voll 
und man braucht einen grösseren.

MFG
Falk


Schönen Abend!
Michael

von Michael B. (mibo)


Lesenswert?

Danke für die Antwort.

Allerdings wurde nun doch der Beschluss gefasst, dass ein 
Mikrocontroller zwischen dem FPGA-Gerät und dem PC vermitteln soll.
Ich werde mich nun also auf die Suche nach einem ARM-Entwicklerboard mit 
100MBit/s Ethernetanschluss machen.

Gruß
Michael

PS: Über Tips zum Mikrocontroller freue ich mich natürlich auch. Dazu 
habe ich einen neuen Thread aufgemacht.
Beitrag "ARM-Entwicklerboard mit Ethernet gesucht und allgem. Fragen"

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.