Aufwand PCI express mit Virtex 5?

OP #1596443
Lesenswert?

Hat jemand Erfahrung, welcher Aufwand es ungefähr ist, den PCIe Core im 
Virtex 5 LXT zum Laufen zu bekommen? Wir planen ein auf USB 2.0 
basierendes Mess-System schneller zu machen, und PCIe würde sich da 
anbieten, da es mit PCI express cabling auch die Möglichkeit gibt, das 
aus dem PC heraus zu holen. Somit ließe sich das System wie gewohnt an 
PCs und Laptops anschließen.
Nun stellt sich aber die Frage, was an den PCIe Endpoint Block des 
Virtex noch alles dran muss, damit man eine sinnvolle Datenübertragung 
in/aus FIFOs realisieren kann. Mit dem Cypress FX2 bisher geht das ja 
recht einfach, aber bei PCIe fehlt uns da echt die Erfahrung, der 
Überblick.
Für DMA zum PC braucht man sicher noch einen DMA Core (z.B. von PLDA) 
oder? Wie ist die Treiber-Versorgung? Ist bei Xilinx da wenigstens ein 
Grundgerüst dabei?
Vielen Dank für eure Antworten.
Gast #1596535
Lesenswert?

Hi,
ich hab so ein Design Anfang 09 aufs Auge gedrückt bekommen und bin des 
öfteren dran verzweifelt. Treiber/Beispiele gabs zum damaligen Zeitpunkt 
von Xilinx so gut wie garkeine. Das Interface zum PCIe Core im FPGA 
entspricht dem Transaction Layer der PCIe Spec. Man muss also sämtliche 
Transfers selber verwalten, sowie größere Transfers selber in die 
Payload Size stückeln (meistens 128Byte). Wieviele Lanes möchtet ihr 
denn anschliessen? Bei 4 Lanes kommen die Daten auf einem 64bit breiten 
Bus mit 125MHz angeflogen. Es ist wirklich ein großer Aufwand, wenn man 
nicht tief in der PCIe Materie drinsteckt.

Gruß
OP #1596748
Lesenswert?

Wir benötigen eigentlich nur PCIe x1, schneller kann die Hardware eh 
nicht die Daten liefern. Sowas hab ich mir schon gedacht. Das Interface 
sieht aus, wie der Xilinx LocalLink, der auch am MPMC dran ist, dafür 
hab ich schon mal ein Interface gemacht. Allerdings ist man wohl auf 
einer sehr niedrigen Ebene im PCIe angesiedelt. Vielleicht sollten wir 
dann doch noch den DMA Core von PLDA dazu kaufen, das scheint dann etwas 
einfacher zu sein, der hat zumindest schon mal ein FIFO-Interface 
dran...

Eine andere Alternative wäre USB 3.0 allerdings siehts da ähnlich 
aus....eher noch schlechter...
#1596891
Lesenswert?

Evtl. hat Xilinx ja jetzt mit den 6er Spartans, die auch PCIe an Bord 
haben mit Ihrem Beispielen und generellem Support nachgeholt. Ich hab da 
nicht weiter geschaut. Der Coregenerator im V5 spuckt für den PCIe Core 
immerhin ein Beispieldesign aus, mit dem man sozusagen Register/Speicher 
mit Ein zelzugriffen beschreiben und lesen kann. Das Teil kann einen 
kleinen Überblick verschaffen.
Bei DMA sah es da aber düster aus. Bin aber auch seit Mitte 09 da raus. 
USB3.0 Device Controller gibts glaub ich noch garnicht. Gesehen hab ich 
bisher nur PCIe->USB3.0 Hosts und USB3.0->Sata Bridges.
OP #1596958
Lesenswert?

Hm OK, da schau ich mal. Für USB 3.0 gibts bei PLDA einen Device 
Controller IP Core. Das ist aber auch der einzige, den ich für FPGAs 
gefunden habe. Kostet alleine schon 12.000€ etwa, dazu kommt noch der 
2.0 Core, denn das muss mit dran sein bei USB 3.0 soewie der DMA-Core.
Deshalb sind wir momentan der Meinung, PCIe wäre vielleicht einfacher 
und schneller zielführend, weil es ja schon länger am Markt ist und weit 
verbreitet in den FPGAs mittlerweile.
OP #1597135
Lesenswert?

Ja, wir wollen schon bei Xilinx bleiben, dafür haben wir sämtliche Tools 
angeschafft. Das sind ja auch keine kleinen Investitionen. Eventuell 
wirds dann doch eine 2-Chip-Lösung, falls das interne zu komplex ist. 
Der Gennum GN4121 ist auch nicht verkehrt, und dann brauchts nur einen 
Spartan 3, der DMA IP Core wird gleich mitgeliefert. Damit kann man auch 
gleich den FPGA booten und Instant-On der PCIe Verbindung ist auch was 
wert. Allerdings ist man dann wieder auf das Wohlwollen von Gennum 
festgelegt.
Gast #1598648
Lesenswert?

Ich will in diesem Jahr auch noch die PCIe Geschichte angehen. Es gibt 
doch eine Demoboards von Xilinx, die einen PCIe-Anschluß besitzt. Dort 
steht immer das Beispiele dabei sind.

Heißt dies das dort eine Firmware auf dem FPGA drau ist und einige Daten 
per PCIe übertragen werden. Demnach muß doch auch ein Treiber vorhanden 
sein. Ich weiß nicht ob dann auch Quellcode vorhanden ist oder ob es ein 
fertiges BIT-File ist.


Es gibt eine Firma in Freiburg die macht VHDL-Schulungen für Xilinx. 
Dort wird ein PCIe Kurs angeboten. Jedoch habe ich noch nicht 
nachgefragt was dieser alles enthält.

Macht die PCIe Birdge-Lösung das ganze Protokoll selbstständig?
OP #1598676
Lesenswert?

Also bei den DemoBoards sind schon Beispiele dabei, ja. Allerdings sind 
die auf einem sehr niedrigen Level im Schichtenmodell. Einfache 
Datenübertragungen gehen wohl, allerdings ist da nix mit DMA oder 
solchen Späßen dabei. Desweiteren braucht man sicher die PCIe Spec, PCI 
SIG will 2500 USD oder sowas pro Jahr haben.
Die Bridges fackeln einen großen Teil des Protokolls im Chip ab, der PLX 
sogar den DMA Betrieb. Beim Gennum ist der DMA Core als kostenloser 
Verilog-Code dabei. Offenbar kommt man damit schneller zum Ziel, ist 
allerdings auf den Chiphersteller angewiesen. Auch preislich dürfte es 
interessanter sein, da ein DMA IP Core zum Beispiel bei PLDA um die 
10.000€ kostet. Die Chips kosten etwa 40 Dollar.
Die Kurse bei PLC2 hab ich mir auch schon angesehen, bringt sicher was, 
wenn man da mal hinfährt.
Gast #1598691
Lesenswert?

Leider findet man keine Datenblätter bei den meisten Produkten. So das 
man nicht weiß ob ich die Daten jetzt einfach wie bei einem SRAM 
Parrallel anlege und diese dann von der Karte übernommen werden. 
Anschließend erzeugt die Karte das Komplette PCIe-Protokoll.


Hier noch mal ein PCIe IP-Core

http://www.xilinx.com/support/documentation/ip_documentation/plbv46_pcie.pdf

Dieser IP-Core enthält gleich die Bridge.
Gast #1598826
Lesenswert?

Momentan habe ich leider keinen Internetanschluß zu Hause da ich gerade 
umgezogen bin. Aber per Telefon könnte man sich auch austauschen.

Mir ist gerade einfallen, das man doch beim PCIe Wizard Adressen angibt. 
Ich dachte immer bis jetzt das es die Speicheradressen für den PC sind 
wo die Daten abgespeichert werden sollen und das dies dann mit DMA 
geschieht.

Bei FPGA for FUN gibt es ein Tutorial wie man den PCIe Core mit dem 
Wizard benutzt. Vielleicht wird ja mal einer darus schlau ^^

http://www.fpga4fun.com/PCI-Express6.html
OP #1598876
Lesenswert?

Naja, da simple IO Transfers zu machenm, scheint nicht so schwer zu 
sein. Für das LocalLink Interface, was da quasi dran ist, hab ich schon 
mal ein Modul gemacht. Allerdings mit DMA ist dann noch nix, denn da 
müsste der Core ja von sich aus in den Adressraum des PC schreiben....da 
ist schon einiges mehr an Konfig nötig. Außerdem muss man sich beim 
Xilinx EndPoint Block um die Paketbildung selber kümmern. Telefon ist 
schlecht, abends hab ich keine Zeit. Momentan sind wir sowieso noch in 
der Projektfindungsphase:

USB 3.0 oder PCIe?
PCIe Bridge oder Endpoint Block im FPGA?
Oder doch GBit Ethernet?

Tja, das kann noch dauern.

Übrigens kostet das DevBoard von PLX etwa 500 USD, das von Gennum etwa 
1000 USD. Das Xilinx Board mit dem V5 kostet etwa 1200 USD.

Dann gibts hier noch ein Baord: 
http://www.cesys.com/fpga/virtex/pciev4base_de.html mit dem V4 und dem 
PLX. Klingt auch interessant. Da ist ein WhishBone Core dabei. 
Allerdings non-free nur zur Nutzung mit dem Board.
#1599894
Lesenswert?

Hallo Christian,

tut mir leid, dass ich in deinem Beitrag poste, aber wie ich gelesen 
habe, hattest du schon Erfahrung mit dem Cypress FX2 Controller. Bei mir 
startet auch gerade ein Projekt und USB waere die gewuenschte 
Schnittstelle zum PC. Ich habe schon gesehen, dass Cypress eine 
Entwicklungsumgebung anbietet, womit man Firmware fuer den Controller 
erzeugen kann. Da man aber auf PC Seite ein Windowstreiber benoetigt, 
wollte ich dich fragen, ob du auch dein eigenen Treiber geschrieben 
hast, oder die generic Windowstreiber verwendet hast. Ich habe keinerlei 
Erfahrung mit Treiberentwicklung und das waere sehr wichtig fuer mich.

Vielen Dank im voraus und nochmal Entschuldigung dass ich in deinem 
Beitrag schreibe.

Gruss
Valentin
OP #1599910
Lesenswert?

Cypress liefert einen sehr gut funktionierenden Treiber für den FX2 mit, 
es besteht kein Grund, da selbst was zu schreiben. Den Treiber gibts 
mittlerweile auch für x64 und ist sogar mit PDB Files, kann also auch 
signiert und durch WHQL gebracht werden. Wir benutzen den aktuellen 
Cypress Treiber, der klappt sehr gut. Das CyAPI, was dazu angeboten 
wird, ist etwas suboptimal, besser kommt man, wenn man direkt auf den 
IOCONTROLS des Treibers arbeitet.
Gast #1600056
Lesenswert?

Ich will jetzt auch nicht zu weit vom Thema abweichen. JEdoch würde ich 
als USB Lösung einen FTDI-Chip nehmen. Es gibt dort sogar einen USB 2.0 
High Speed Variante. Man muss beim FTDI-Chip keine Firmware schreiben 
und keinen Treiber schreiben. Einfach die Daten parallel anlegen einen 
Übernahmepulse erzeugen und schon ist alles erledigt. Das funktioniert 
so super.

Laut FTDI soll 25MByte pro Sekunde möglich sein.
OP #1600073
Lesenswert?

Ja stimmt, seit ein paar Monaten gibts die ja. 25MB reichen bei uns aber 
nicht aus, außerdem gabs die zum Projektstart noch nicht. Firmware ist 
quasi fertig und wird mitgeliefert, alles kein so großes Problem.

Zum Thema zurück: Ich hab mir den PEX8311 mal genauer angesehen. Die 600 
Seiten DataBook sind zwar viel, aber der scheint recht potent zu sein. 
DMA Controller ist gleich intern und der M-Modus am Local Bus scheint 
sich sehr gut an den FPGA anbinden zu lassen. Außerdem lassen sich die 
Local-Bus-Register ebenfalls aus einem EEPROM konfigurieren. Der Preis 
von 32 USD pro Chip in Verbindung mit dem kleinen FPGA (SPartan 3A oder 
sowas), der dann ausreicht, spricht auch dafür. Außerdem macht PLX das 
schon seit Jahren, das ist sicher ausgereift.
Mal schauen, was wir dann wirklich machen. Erst mal das PCIe Cabling 
ausprobieren, dann gehts weiter.
Gast #1604192
Lesenswert?

So ich war ein paar Tage unterwegs. Mir ist eingefallen es gib noch eine 
weitere Schnittstelle die für Dich in Frage kommen würde.

Nimm doch die Camera Link Schnittstelle. Dort gib es eine günstige 
Version mit ca 250MByte pros Sekunde und eine etwas teuere die kann dann 
650MByte pro Sekunde übertragen.

Du kaufst dann eine Framegrabberkarte für Camera Link, die steckt man in 
den PC. Dann hast Du 1 (für langsam) oder 2 (für schnell) Camera Link 
Kabel die vom PC zum Gerät führen. Es gibt auch Framegrabberkarten mit 
Glasfaser, somit hast Du gleich eine galvanische Trennung und weniger 
Probleme mit der Sicherheitsbetrachtung.

Gübstige Framegrabberkarten gibt es schon für 300€
OP #1604197
Lesenswert?

Hm, hatte ich schon mal gesehen. Aber unsere (auch bisher äußerst 
erfolgreiche) Entwicklungsstrategie ist: Standard-Interface. Was anderes 
kommt nicht in die Tüte. PCIe, USB 3.0 oder GbE ist an jedem neuen PC 
dran. PCIe external mit den Adaptern für billiges Geld herausführbar, 
auch am Laptop, was auch ganz wichtig ist. USB 3.0 ist ja auch im 
kommen, aber das haben wir schon fast aus dem Rennen geworfen...
Gast #1604239
Lesenswert?

@Christian R.:

ich habe jetzt einen weiteren Vorschlag ;-) Es geht zurück zu Altera:

Die neuen Cyclone IV GX haben PCEe Core integriert. Für die Tools 
brauchst Du also kein Geld auszugeben, denn mit Altera WebEdition kannst 
Du dann sowohl PCIe, NIOS (zwar nur kleinere Version, reicht aber für 
vieles), DMA und andere Sachen machen.

Die Evaluation Kits mit einem Cyclone IV sollen ab unter 100,- zu haben 
sein (bei EBV). Sind aber noch nicht verfügbar. So, wie ich Altera kenne 
(und damit habe ich ganze Menge Erfahrung), wird alles out of the box 
laufen. Eventuell die Treiber müsste man bei Jungo und Co kaufen.

Ich werde auf jeden Fall noch berichten, sollten die Kits hier 
irgendwann ankommen, ob und wie einfach/schwer sich alles umsetzen 
lässt.

Zum Preis des Cyclone IV GX kann ich aber leider nichts sagen, denke 
aber, dass sie eher auf dem Level der Cyclone III Serie bleiben, wenn 
nicht dadrunter (für nicht GX Variante)

Grüße,
Kest
(Firma: www.dossmatik.de) #1604925
Lesenswert?

Anders gefragt wie weit unterscheiden sich PCI und PCIe?

Es gibt von Lattice einen offengelegten PCI Core. Ich hatte diesen mal 
duch gekaut und auch das Buch PCI demystifyed durchgelesen. Da hatte ich 
PCI soweit verstanden, doch leider habe ich nie den Startschuß zu PCI 
erhalten.

Ansonsten fand ich PCI nicht sonderlich problematisch. Wie weit der 
Schritt zu PCIe nun ist, kann ich nicht beurteilen.
Moderator (Firma: Titel) Persönliche Seite #1612957
Lesenswert?

> Anders gefragt wie weit unterscheiden sich PCI und PCIe?
Sehr grundlegend:
1) der ältere PCI ist parallel, der neue PCIe ist seriell.
2) PCI ist ein "normaler" Bus, PCIe hat eine sternförmige Topologie.
Mehr dazu: http://de.wikipedia.org/wiki/PCI-Express
Manche verwechseln das mit PCI-X, das aber nur ein verbreiterter und 
getunter PCI-Bus ist: http://en.wikipedia.org/wiki/PCI-X
OP #1622757
Lesenswert?

Johann schrieb:
> Wenn Du es in Betrieb genommen hast wäre es schön wenn Du mal
> beschreibst wie aufwendig es war.

Jo, ich meld mich dann wieder. Erst mal Mitglied in der PCI SIG werden, 
um die Specs zu bekommen und eine PCI Vendor ID dann auch. Leider 
scheint es das Rapid Development Kit von PLX nicht mehr zu geben. 
Schade, das wäre ein guter Einstieg gewesen....
Gast #1627857
Lesenswert?

USB 3.0 aus dem Rennen zu werfen dürfte ein großer Fehler gewesen sein. 
Was man so auf der EmbeddedWorld und auf der Cebit so vertraulich gehört 
hat dürfte USB 3.0 innerhalb der nächsten 1-3 Jahre USB 2.0 
verdrängt/ergänzt haben. Alle größeren PC Hersteller haben schon 
Notebooks/Computer mit der Schnittstelle im Angebot, nur Intel weigert 
sich noch USB 3.0 in ihre Chipsätze zu integrieren.

Nachdem Intel eine gehörige Strafe an die EU bezahlen musste, scheint 
das Geld knapp zu werden :-)
OP #1627963
Lesenswert?

Wir haben USB 3.0 nicht aus dem Rennen geworfen, nur hinten angestellt. 
Da es ein hochgradig modulares System ist, ist auch die Schnittstelle 
austauschbar. Momentan gibts meines Wissens nur einen einzigen IP-Core 
für FPGA, der USB 3.0 kann, aber mit horrenden Initialkosten. Und da 
sich das USb 3.0 wahrscheinlich erst mit Windows 8 und kommenden 
Chipsätzen durchsetzen wird, machen wir in der Zwischenzeit PCIe. Das 
ist auch schön skalierbar, da können wir dann später auf x4 oder x8 
gehen, mit den internen EP-Blöcken in den FPGAs. Aber wie gesagt, einen 
Schritt nach dem anderen.
#1629074
Lesenswert?

also ich weiss ja nicht was das wird aber PCIe hoert sich ganz nett an, 
vor allem kann man daraus auch irgendwann ne einsteckkarte fuern laptop 
machen, falls man das braucht. Und usb 3.0, warum braucht man da so hohe 
initialkosten? kann man das nicht irgendwie selber implementiern? das 
wird doch wohl kaum schwerer sein also pcie, oder taeusche ich mich da?
OP #1629108
Lesenswert?

Naja, das Gerät ist eh ein externes. Da fällt durch das Cabled PCIe die 
Cardbus Karte für Laptops sowieso ab.

Bei USB 3.0 ist das Problem, dass es bisher keine universellen Bridges 
oder Device Controller Chips gibt. Also muss man das komplett im FPGA 
realisieren. Klar, kann man selber machen, aber da wirds sicher noch 
teurer. Der einzige mir bekannte Device Controller IP Core kommt von 
PLDA, der kostet alleine etwa 12k€ nur für den USB 3.0 Teil. Dazu kommt 
noch ein Core für DMA, sowie für USB 2.0 weil der FallBack zwingend 
erforderlich ist.
Selber machen kostet sicher noch mehr, unsere Mannmonate sind mit etwa 
10k€ veranschlagt, und weniger als 2 Monate wirds kaum dauern.

Also PCIe, da gibts wenigstens den Bridge Chip, der einen Großteil des 
Protokolls und den gesamten DMA abhandelt.

Dass wir uns richtig entschieden haben, USB 3.0 zu verschieben, zeigen 
die aktuellen Meldungen. Gerade die fehlende Unterstützung seitens Intel 
ist schwach.

Für eine kurzfristige Lösung noch dieses Jahr kam deshalb erst mal nur 
PCIe in Frage.
Gast #1629484
Lesenswert?

> Dass wir uns richtig entschieden haben, USB 3.0 zu verschieben, zeigen
> die aktuellen Meldungen. Gerade die fehlende Unterstützung seitens Intel
> ist schwach.

Intel wird ganz schnell aufwachen müssen, wenn sie den Zug nicht 
verpassen wollen.
OP #1631845
Lesenswert?

Hallo,

GigaStar ist auch interessant, aber am PC nicht dran. Die Orsys Module 
hatten wir schon in einer Vorgänger-Version. Viel zu langsam für die 
neue. Da sind wir ja selbst mit USB 2.0 leicht schneller.
Oberste Prämisse ist: Standard-Interface, was an jedem PC ist und die 
Logik auf dem Device so dumm wie möglich. Die Intelligenz sitzt im API 
auf der PC Seite.

Für USB 3.0 kannst du bei PLDA mal schauen, die haben einen IP-Core für 
den Virtex 5, der schaut recht gut aus.
#1632075
Lesenswert?

Christian R. schrieb:
> Also PCIe, da gibts wenigstens den Bridge Chip, der einen Großteil des
> Protokolls und den gesamten DMA abhandelt.
und
> GigaStar ist auch interessant, aber am PC nicht dran.

Das hab ich jetzt nicht verstanden. Es gibt doch für Gigastar eine 
PCI-Einsteckkarte:
http://www.inova-computers.ch/PMC_GigaSTAR_November_04.pdf

Ansonsten verstehe ich den Hinweis auf "PCIe" nicht.
OP #1632149
Lesenswert?

Achso, die Einsteckkarte hatte ich beim ersten drüber schauen nicht 
gesehen. Für mich sah das erst mal nach einer Punkt-zu-Punkt Verbindung 
zwischen 2 solchen Modulen aus.
Naja, auch interessant, kann man mal im Hinterkopf behalten. Aber wie 
gesagt, erst mal Standard-Interface. Und die GigaStar Karte kostet 
sicher einiges. Gibts das auch für ExpressCard Steckplatz?

Der Satz oben ist ja bissl aus dem Zusammenhang gerissen. "Also PCIe, da 
gibts die Bridge...." bezieht sich auf die Alternative USB 3.0 denn da 
gibts (noch) keine Bridge Chips.
#1632250
Lesenswert?

Christian R. schrieb:
> Achso, die Einsteckkarte hatte ich beim ersten drüber schauen nicht
> gesehen. Für mich sah das erst mal nach einer Punkt-zu-Punkt Verbindung
> zwischen 2 solchen Modulen aus.
> Naja, auch interessant, kann man mal im Hinterkopf behalten. Aber wie
> gesagt, erst mal Standard-Interface. Und die GigaStar Karte kostet
> sicher einiges. Gibts das auch für ExpressCard Steckplatz?
Kosten ca. 1200.- Euro / Stück inclusive Treiber
ExpressCard gibts leider nicht, da müsste man ein PCI-Expander 
zwischenschalten z.B. von Magma
http://www.magma.com/products.html
#1632270
Lesenswert?

Falls ihr noch nicht mit der MagmaBox gearbeitet habt, dann hier ein 
kleiner Hinweis: Wir haben festgestellt, dass es ein kleines Problem gab 
bei der Anfrage nach dem PCI-Bus seitens der Karte. Es dauerte relativ 
lange, bis der Bus verfügbar war und die (GigaStar)Karte ging manchmal 
in das TimeOut (no response from Bus oder so ähnlich). Das konnte nur 
durch eine spezielle Firmwareänderung auf der Karte behoben werden 
(Anfrage an den Hersteller, der hat den Timeoutzähler erhöht).
Viel Erfolg.
OP #1632278
Lesenswert?

Ah, danke für den Hinweis. Die Magma Box soll in erster Linie dazu 
dienen, das Cabled PCIe zu verstshen. Signalspiel anschauen, 
Augendiagramme, verschiedene Kabellängen....in das Messgerät an sich 
kommt eine Platine, die den PEX8311 und den PCIe Cable Redriver gleich 
on board hat. Vorne raus nur der Molex Stecker für das x1 PCIe Kabel.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren