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
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.
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....
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
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.
@ 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
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
@ 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
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
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).
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?
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....
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
@ 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.