Hallo, ich bin auf der Suche nach einen Bus Functional Model das einen PCIe Rootpoint nachstellt. Ziel ist es das ich ein paar Schreib und Lesezugriffe auf den Endpoint durchzuführen. Daher meine Frage kennt jemand ein frei verfügbare BFM und alternativ wie aufwendig wäre die Entwicklung eines solchen Modells und wo müsste ich am besten anfangen. Altera bietet zwar eine Testbench an, die dort verfügbareb Befehle stellen allerdings große Einschränkungen dar. Vielen Dank für die Antwort! mfg andreas
Hallo, na mein Problem ist z.B. gerade das die BAR-Adressen automatisch konfiguriert werden und ich möchte diese Adressen manuell vergeben. Da die Konfigurationsroutine von Altera, dies über einen "Shared Memory" macht such ich mich gerade durch die vhdl sourcen um dies manuell zu editieren. Falls jemand eine Idee hat wie man das machen könnte bitte einmal posten mfg
>na mein Problem ist z.B. gerade das die BAR-Adressen automatisch >konfiguriert werden Hast du mittlerweile herausfinden können, wo ma die BAR-Adressen einstellen kann? Habe gerade das gleiche Problem. Volker
Schau Dir doch mal diese Lösung an: http://www.trellisys.eu/Downloads/EcpxPCIeBFM.pdf Den Lattice Core gibt es momentan für kleines Geld: http://www.latticesemi.com/products/fpga/ecp3/ecp3surgepromotions.cfm Gruss Lupi
>Schau Dir doch mal diese Lösung an: >http://www.trellisys.eu/Downloads/EcpxPCIeBFM.pdf >Den Lattice Core gibt es momentan für kleines Geld: >http://www.latticesemi.com/products/fpga/ecp3/ecp3... Ja für Lattice und Aldec, aber nicht für Altera und Modelsim!
Hallo, @Volker: Ich glaube jetzt eine Lösung gefunden zu haben. Und zwar sind die Adressen zweimal hinterlegt - einmal im Endpoint und einmal im Rootpoint (genauer im Shared Mem). Beide müssen geändert werden. Am besten du schaust dir mal den "Configuration space" von dem PCIe-EP an. Desweiteern musst du die Routine "ebfm_cfgwr_imm_wait" von Altera nutzen. Damit schreibst du die neuen Basis adressen in die Regsiter 10h bis 24h. Zur erinerung sind BAR-Adressen vom PCIe. Danach nicht vergessen die Änderungen im Shared Mem durchzuführen, sonst klappt keine Adressierung über BAR und Offset mehr. Dazu die variable "protect_bfm_shmem := 0;". Löst den Schreibschutz für die entsprechenden Abschnitte im Shared Mem und dann mit der Procedure "shmem_write" an die Scpeicherstellen 10h bis 24h die BAR Adressen ebenfalls aktualisieren. Danach den shared Mem wieder Schreibschützen mit "protect_bfm_shmem := 1;". Falls noch Unklarheiten bleiben kann ich mal noch einen VHDL-Schnippsel hochladen. viele Grüße andreas
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.