Forum: FPGA, VHDL & Co. FPGA & PCIe, vorgehen PowerUp/Programmierung


von Florian P. (db1pf)


Lesenswert?

Hallo,

ich muss als Teil meine Diplomarbeit über PCIe Daten zwischen PC und 
FPGA austauschen. Ich weiß, dass es sowohl von der Hardware- wie auch 
von der Softwareseite nicht ganz einfach ist. Im Moment habe ich aber 
noch keine Vorgaben was Übertragungsgeschwindigkeit o.ä. angeht, so dass 
es jetzt erst mal um das eigentliche zustandekommen der Übertragung 
geht.

Was mir im Moment aber noch nicht ganz klar ist, wie das Board im System 
(PC) programmiert wird. Eigentlich ist ja PCIe Hotplug-fähig, aber ich 
habe bereits gelesen dass es von der Betriebssystemseite nicht richtig 
unterstütz wird.
Somit kommen zwei Möglichkeiten in Betracht:
1. Board ausbauen, flashen, einbauen, PC einschalten
2. Board im laufenden PC programmieren, PC rebooten

Die erste Option ist sehr aufwändig, ich müsste das Board häufig aus- 
und einbauen, zum Programmieren externe Stromversorgung anschließen, 
etc. Das würde ich gerne vermeiden.

Bei der zweiten Option bin ich mir nicht sicher, ob das so funktioniert. 
Kommt das BIOS damit klar, dass ein PCIe-Slave auf einmal nicht mehr 
ansprechbar ist (während der Programmierung) und dann anschließend neu 
konfiguriert werden muss (PnP?)
Oder muss ich den Rechner über den Reset-Knopf 'am arbeiten hindern' und 
in der Zeit das Board programmieren?
Oder reicht es nach dem Programmieren den Reset-Knopf zu betätigen?


Würde mich freuen, wenn mir jemand seine Erfahrungen / Arbeitsablauf 
mitteilen könnte.


Noch ein paar Informationen zum Board:
Es handelt sich um das ML506 von Xilinx 
(http://www.xilinx.com/products/devkits/HW-V5-ML506-UNI-G.htm), mit 
einem Virtex-5 FPGA...

Vielen Dank,
Grüße,
Florian

von ---- (Gast)


Lesenswert?

Hallo,

willst du das Board über den PCIe programmieren oder über einen 
Programmierkabel? Wenn du ein Programmierkabel verwendest, kannst du vor 
der Programmierung den Treiber deaktivieren und nach dem Programmieren 
wider aktivieren. Habe viel mit PCI entwikelt, bei einem deaktivierent 
Treiber war es sogar möglich (unter Spannung) die Karte auszubauen, 
wider einzubauen und den Treiber zu aktivieren, ohne Windows neu zu 
booten.

Gruss

von Florian P. (db1pf)


Lesenswert?

Hallo,

erst mal vielen Dank für deine Antwort. Das hört sich vielversprechend 
an.

Ich werde das FPGA über einen externen Programmer programmieren. Die 
Anbindung an PCIe ist nicht der Kern der Arbeit, die Schnittstelle soll 
nur verwendet werden um die Daten auszutauschen. Somit möchte ich hier 
auch den einfachern Weg gehen und das Programmieren über PCIe erst mal 
sein lassen ;)


Grüße,
Florian

von D. I. (Gast)


Lesenswert?

Es kann aber auch bei deaktiviertem Treiber passieren dass beim 
Programmieren des Boards der System freezed. Stell dich schonmal auf 
einige Reboots ein. Du solltest es deswegen auch wenns im PC steckt noch 
extern mit dem Netzteil versorgen, solange du am testen bist.

von Florian P. (db1pf)


Lesenswert?

Hallo D.I.,

das Board wird nicht über den PCIe-Stecker mit Spannung versorgt. Es hat 
einen Anschluss für 5,2" Laufwerke, über den es versorgt wird.
Sollte ich trotzdem noch ein weiters Netzteil anschließen? (Weiß jetzt 
gar nicht ob es unterstützt wird, ich meine da muss man einen Schalter 
umlegen...) Aber die Versorgungsspannung aus dem PC-Netzteil sollte doch 
stabil sein oder?

Auf die System-freezes bin ich schon vorbereitet. Darum möchte ich das 
Board auch nicht über den PCIe-Bus programmieren sondern extern, von 
einem anderen Rechner aus.


Danke, Grüße,
Florian

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

Hallo Florian,

du schreibst das neue Design einfach in den Flash und verhinderst, dass 
der FPGA nach Abschluss der Programmierung daraus neu konfiguriert wird. 
Dafür gibt es ein Häkchen. Dann fährst du den PC herunter, schaltest aus 
und bootest neu.

Tom

von D. I. (Gast)


Lesenswert?

Ja ich weiß schon was du meinst. Aber ich meinte du sollst es extern mit 
dem mitgelieferten netzteil versorgen, also nicht mit dem selben 
netzteil mit dem du auch den pc anfährst

von Christian Leber (Gast)


Lesenswert?

@Florian Pfanner
Mach dir nicht soviele Gedanken, programmier das Board einfach im 
Rechner  und sobald es fertig ist powercycle den Rechner einfach.
Extra Netzteil oder so brauchst du nicht.

Hotplug faehig sind nur slots in wenigen teuren Servern.


Viel komplizierter ist das Aufsetzen einer Simulationsumgebung fuer 
deinen code, viel Glueck! :-)

von Florian P. (db1pf)


Lesenswert?

Hallo,

erstmal vielen Dank für die Antworten. Ich habe bereits begonnen die 
Testbench aufzusetzen bzw. die von Xilinx zum laufen zu bringen. Die 
Simulation dauert nur ewig...
Im Moment bin ich noch dabei mich in das Testprogramm einzuarbeiten. Ist 
aufwändiger als ich dachte ;)

Grüße,
Florian

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.