Hallo! Ich habe vor, einen FPGA mit einem PCI-Bus an ein CPU-Modul anzubinden. Dieser soll somit der CPU komfortabel weitere Peripherie via PIC zur Verfügung stellen. Die Platine/FPGA ist also NUR über den PCI-Bus mit derm CPU-Modul verbunden. (Also kein JTAG oder sonstige Möglichkeiten den FPGA zu programmieren) Ich habe bereits nur in Erfahrung bringen können, dass es "wahrscheinlich" möglich ist einen (bestimmten) Lattice-FPGA (der den Flash integriert hat) über PCI upzudaten. Nun zu meiner Frage: Hat irgendjemand Erfahrung/Tipps/Lösungen/..., ob es überhaupt möglich ist bzw. wie man den FPGA updaten könnte und ob es z.B. ein Lattice sein muss oder ob es ev. auch mit 1x externen Flash mit z.B. Altera möglich wäre. Bin für jede Information dankbar! Andreas
Der PCI-Teil deiner Karte kann nicht vom FPGA bedient werden. Dieser braucht nämlich ca. 1/2 Sekunde beim Hochfahren um Programmiert zu werden, und in dieser Zeit muss der PCI-Kram schon laufen, da er vom Mainboard schon angesprochen wird. Damit hatten schon andere Projekte Probleme, ich glaub das war beim "Open Graphics Project". Deshalb wirst du eine Spezialschaltung für das PCI-Interface brauchen, z.B. auf Basis eines einfachen CPLD (diese sind ja sofort programmiert, weil die Programmierung im internen Flash steht). Mit etwas Geschick müsstest du es hinkriegen, dass dieses PCI-Interface auch einen beliebigen FPGA (nicht nur deinen speziell rausgesuchten) über den PCI programmieren kann. Einen separaten Flash-Speicher auf der Karte brauchst du dann (dafür) nicht mehr sondern kannst alles vom Host aus programmieren.
Du brauchst keinen CPLD für einen PCI-Master/Target. Ein FPGA ist schnell genug konfiguriert. Selber schon gemacht. Soll das FPGA denn als Master/Target fungieren? Wenn ja, brauchst Du aber zumindest ein Konfigurationsflash. Wenn der Rechner dann hochgefahren ist, könntest Du einen speziellen Zugriff auf Dein PCI-Target machen und das Flash neu schreiben. Allerdings musst Du dann sowieso den Rechner neu starten damit das FPGA konfiguriert und enumeriert werden kann. Es gibt zwar die Möglichkeit PCI-geräte hotplugeable zu machen, habe ich aber noch nie versucht. Du spielst wohl auf den Lattice XP bzw. XP2 an. Die haben die Möglichkeit die Konfiguration zur Laufzeit zu wechseln. Allerdings muss das PCI-Subsystem trotzdem konfiguriert werden, was einen neustart erfordert.
Danke für die raschen Antworten, haben mir schon weitergeholfen. Der FPGA soll anfangs nur als Target dienen (um die Sache fürn Anfang einfacher zu halten). Aber in weiterer Folge ev. auch als Master. Versuche gerade mir ein Bild zu machen, welchen PCI Core ich verwenden soll. Hersteller-spezifische (z.B. durch Wizards fertig generierte), oder vllt. doch gleich die opencores pci-bridge mit definiertem WB-interace (aber leider in verilog), oder eine dritte Lösung hätt ich auch noch bei der Hand welche die Daten einfach in einer FIFO zur Verfügung stellt (nur Target verfügbar). Alles hat irgendwie Vor-&Nachteile. Vllt könntet ihr mir auch hier eure Meinung sagen. Ich persönlich würde gleich zur PCI-bridge von opencores tendieren, aber ich hab noch nicht rausgefunden wie schwierig es ist (bzw. welche Komplikationen es verursachen könnte) den Verilog-Code in die VHDL-Umgebung einzubinden. PS: Hohe Geschwindigkeiten sind nicht die Priorität, eher die Flexibilität z.B. durch einfachen Austausch von Komponenten -> definiertes FPGA-internes Interface (z.B. Wishbone).
Verilog sollte sich in das VHDL-Modell einbinden lassen, zumindest wird dies schon von vielen Tools unterstuetzt. Bisher sind mir das nur Probleme bei der case-sensistivitaet bewusst, also Verilog unterscheidet Gross- und Kleinschreibung, VHDL nicht und somit kann VHDL evtl. manche Verilog-Signale nicht unterscheiden.
Ich verwende den PCI-Master/Target von Lattice mit einem ECP2. Das funktioniert soweit auch ganz gut. Gab allerdings einige Fallstricke zu überwinden. Wie die anderen Cores sind, kann ich nicht beurteilen. Das schöne an dem Master-Target core ist, das Target und Master "getrennt" sind. D.h. man kann vollkommen unabhängig vom Master erstmal ein Target bauen und dann den Master hinterher. Als Synthesetool kommt für Mixed-mode bei Lattice Mentors Precision synthesis zum Einsatz. Man kann ganz einfach die Verilog-Komponenten wie VHDL-Komponenten instanziieren.
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.