Forum: FPGA, VHDL & Co. FPGA Konfig.Möglichkeiten über USB


von Qu H. (quheylan)


Lesenswert?

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
von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

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.

von Christoph Z. (christophz)


Lesenswert?

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.

von Holger (Gast)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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.

von Vanilla (Gast)


Lesenswert?

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

von Qu H. (quheylan)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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.

von Qu H. (quheylan)


Lesenswert?

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

von Christoph Z. (christophz)


Lesenswert?

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
Noch kein Account? Hier anmelden.