Hallo zusammen, da ich absoluter Neuling auf dem Gebiet bin, brauche ich euren Rat und Hilfe. Ich bin gerade dabei einen "FPGA-Board" selber zu entwickeln (B-Abeit), habe aber Schwierigkeiten mit der Konfiguration des FPGAs. Vorraussetzungen/Eckdaten: über USB -> FPGA + ConfigDevice ansprechen (konfig und programmieren) + externen Flash/RAM (das Board wird in der Lehre eingesetzt, FGPA realisiert CPU und der "assembler code" soll erst in den Speicher geladen werden und im zweiten Schritt erst holt der FPGA sich es aus dem Speicher, ich denke es geht auch über FPGA) FPGA: Xilinx Spartan6 Laut meiner Recherche geht es mit den Einsatz von USB-Controller Chip (FTDI, Cypress...) ? Doch was steckt wirklich dahinter ? komplexität ? Oder kennt ihr andere Möglickeiten ? Grüsse Qu
:
Bearbeitet durch User
Um den Spartan6 zu konfigurieren gibt es mehre Möglichkeiten. In deinem Fall ist es die JTAG Schnittstelle. Es gibt USB zu JTAG Adapter, die eine USB Controller von FTDI nutzen. Dass der Andapter von der IDE erkannt wird, muss der Treiber stimmen. Denn Aufwand kann ich dir nicht sagen. Oder du nimmst zum Programmieren das Tool xc3sprog http://xc3sprog.sourceforge.net/ Ist Komandozeile und geht auch sehr zuverlässig.
Habe selber vor ein paar Jahren etwas ähnliches als Bachelor Arbeit und nachher als Wissenschaftlichermitarbeiter realisiert. Damals noch mit Spartan3: http://www.microlab.ti.bfh.ch/wiki/huce:microlab:projects:internal:gecko:start Die ganze FPGA Konfiguration und Kommunikation übernimmt ein Cypress FX2, war mühsam und langwierig das ganze zu programmieren (Der FX2 ist nicht gedacht, um so viel arbeit zu übernehmen, da sollte ein Treiber auf PC Seite das meiste erledigen, wir wollten aber eben genau keinen Treiber schreiben). Funktioniert aber ganz nett und kann z. B. direkt aus Matlab/Labview angesteuert werden (Ist alles OpenSource): http://www.microlab.ti.bfh.ch/wiki/huce:microlab:projects:internal:gecko:gecko-system:gecko3com:start Wesentlich einfacher und mitlerweile auch öfter anzutreffen sind Lösungen mit USB Chips von FTDI. Die verbreitete Variante ist ein zweikanaliger Chip, ein Kanal übernimmt direkt die Funktion eines JTAG Programmierkabels und der andere Kanal dient zur Kommunikation mit dem Design im FPGA. Dies ist z. B. ein Projekt, dass den FTDI FT2232D nutzt: http://gadgetforge.gadgetfactory.net/gf/project/butterfly_one/ Der FT2232H ist schneller als der FT2232D, zu diesen beiden Chips müsstest du auch mehrere Diskussionen und Projekte hier im mikrocontroller.net Forum finden.
Qu Heylan schrieb: > da ich absoluter Neuling auf dem Gebiet bin, brauche ich euren Rat und > Hilfe. Link: http://www.xilinx.com/support/documentation/user_guides/ug332.pdf Transferring the data to the FPGA itself, for configuration, is not very complex have a look at UG332 from Xilinx if you are working with Spartan 3, not sure what the equivalent user guide is for Spartan 6 but for Artix7 it is UG470. Gruss Holger.
Einfachte Variante ist immer Slave serial, da kannst du das Bit File einfach per SPI drauf schieben, geht auch sehr gut über einen FTDI Controller.
Qu Heylan schrieb: > über USB -> FPGA + ConfigDevice ansprechen (konfig und programmieren) > + externen Flash/RAM (das Board wird in der Lehre eingesetzt, FGPA > realisiert CPU und der "assembler code" soll erst in den Speicher > geladen werden und im zweiten Schritt erst holt der FPGA sich es aus dem > Speicher, ich denke es geht auch über FPGA) > > FPGA: Xilinx Spartan6 > > Laut meiner Recherche geht es mit den Einsatz von USB-Controller Chip > (FTDI, Cypress...) ? Doch was steckt wirklich dahinter ? komplexität ? > Oder kennt ihr andere Möglickeiten ? Hallo Qu, wenn das Board später regelmässig von unterschiedlichen Personen eingesetzt wird tut man gut daran eine möglichst standardmäßige Programmierung zu Implementieren. Macht weniger Arbeit in der Dokumentation und der gebetsmühlenartigen "RTFM" Sagerei... Wenn ggfs. der Einsatz vom Xilinx EDK oder des Chipskopes zur Debatte stehen und dann kein zusätzliches Xilinx-USB "Kabel" zum Einsatz kommen soll erübrigt sich die Suche nach exotischen Alternativen. Zu bedenken wäre ggfs. der Einsatz von Digilent Adept(2). Das ist ein kleines SMD bestücktes Platinchen welches die komplette Funktionalität bereit stellt um alle o.g. genannten Tools nutzen zu können. Ist zwar mit rund 30EUR nicht ganz billig, erspart aber ggfs. einige Diskussionen. Gruß Vanilla > > Grüsse > > Qu
Erstmal vielen Dank für die schnelle Reaktion und die Infos ;-) Ich habe mich in der zwischenzeit für das FTDI Chip entschieden und über die Feiertage in das Datenblatt eingelesen. Doch es hat immer noch nicht "Klick" gemacht :( Der FT2232H hat ja mehrere Schnittstellen, die man verwenden kann (synchr/asynchr FIFO Interface, synchr/asynchr BitBang Interface, MPSSE (JTAG, SPI, I2C)...) Nur weiss ich nicht, welche dieser Schnittstellen für welche Art von Anwendungen geeignet sind ? Oder welche Schnittstelle für die Kommunikation mit dem FPGA und welche für die Konfiguration optimal wäre ? Außerdem würde ich den gewöhnlichen JTAG Anschluss wie auf den meinsten Boards auch auf der Platine haben und für Fall der Fälle mit Impact arbeiten. Die Frage ist, kann man nun für die Konfiguration mit FT2232H eine andere Schnittstelle (zB SPI) und mit dem Xilinx Adapter den JTAG nutzen. Würde es der Spartan6 mitmachen ? LG
Dem Spartan wäre das egal. Aber einen nackten FT2232 kannst du mit Impact nicht benutzen. Das Digilent PlugIn setzt einne bestimmten EEPROM Inhalt voraus, damit es funktioniert. Ansonsten kannst du den JTAG Anschluss des MPSSE direkt an den Spartan anschließen und das FPGA über die Software XC3Sprog programmieren. Für die "normale" Kommunikation wäre der Synchrone FIFO Parallel-Anschluss das beste. Vergiss nicht, den Clock Pin des FT2232 dann an einen GCLK des Spartan anzuschließen.
So leute, letztendlich haben wir uns drauf entschieden alle drei Varianten aufs Board zu packen und testen was das zeug hält (zB. wie weit die verschiedenen Software tools mitmachen). Plan ist folgendermaßen: 1. via ISE und XILINX Adapter -> JTAG -> FPGA -> SPI-FLASH die gewöhnlich Art falls nichts funktioniert 2. via XC3Sprog oder FT2232 Boundary Scan Tooling USB -> FT2232H Ch.B -> JTAG -> FPGA altern. mit Jumper -> FT2232H Ch.B -> SPI -> SPI-Flash USB -> FT2232H Ch.A -> seriell oder synchr/asynchr FIFO 3. via ISE USB -> Nachbau Xilinx USB-JTAG-Adapter http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter -> JTAG -> FPGA -> SPI Flash Gedanken mach ich mir immer noch über einen externen Speicher(beinhaltet Assembler Code), den ich mittels USB direkt programmieren kann, woraus der FPGA sich später die Daten rauslesen kann ? Was haltet ihr davon, abgesehen wie sinnvoll das ganze ist ? irgendwelche Tipps oder Gefahren ? @Christian R. Für die serielle Kommunikation reicht ja eine Verbindung auf zwei freie I/O Pins, wie sieht es eigentlich bei FIFO aus ? Auch einfach mit freien PINs FPGA verbinden ? LG
Qu Heylan schrieb: > Gedanken mach ich mir immer noch über einen externen Speicher(beinhaltet > Assembler Code), den ich mittels USB direkt programmieren kann, woraus > der FPGA sich später die Daten rauslesen kann ? Keine Ahnung wie das mit den SPI Flash bei Xilinx aussieht und im Detail funktioniert, aber gibt es nicht die Möglichkeit, ein grösseres Flash zu nehmen und dann den FPGA Bitstream und den Code ins gleiche Flash zu packen?
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.