Forum: FPGA, VHDL & Co. USB Schnittstelle + Firmware Update?


von Steffen Hausinger (Gast)


Lesenswert?

Hallo zusammen,

ich möchte einen Spartan 3 mit einer USB-Schnittstelle versehen. Die 
Schnittstelle soll beim Aufstarten die Konfiguration in den FPGA 
einspielen und im späteren Betrieb dann als Schnittstelle zur Außenwelt 
dienen.

Wie kann ich meine Aufgabe lösen? Ich lese hier häufiger vom FT2232, mit 
dem es evtl. klappen könnte, aber auch von den Problemen damit. Wenn ich 
es richtig verstehe, dann kann man den einen Port des FT2232 als JTAG 
konfigurieren und damit den FPGA programmieren und später mit dem 
anderen Port während des Betriebes dann Daten austauschen. Ist das so 
richtig?

Grüße
Steffen

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Steffen Hausinger schrieb:
> Hallo zusammen,
>
> ich möchte einen Spartan 3 mit einer USB-Schnittstelle versehen. Die
> Schnittstelle soll beim Aufstarten die Konfiguration in den FPGA
> einspielen und im späteren Betrieb dann als Schnittstelle zur Außenwelt
> dienen.
>
> Wie kann ich meine Aufgabe lösen? Ich lese hier häufiger vom FT2232, mit
> dem es evtl. klappen könnte, aber auch von den Problemen damit. Wenn ich
> es richtig verstehe, dann kann man den einen Port des FT2232 als JTAG
> konfigurieren und damit den FPGA programmieren und später mit dem
> anderen Port während des Betriebes dann Daten austauschen. Ist das so
> richtig?
>
> Grüße
> Steffen


Es ist so möglich doch nicht ganz von Pappe.

Ich nutze das Programm xc3sprog zum Programmieren öfters. Das kann mit 
USB-Jtag mit dem FTDI-Chip einen Spartan 3 umgehen und den FPGA 
programmieren. Das ist die erste Teilaufgabe deiner Frage.

Über die JTAG Schnittstelle kann man auch im Betrieb kommunizieren. Das 
habe ich selber noch nicht praktiziert. Da müsstest du dir einen Treiber 
selber schreiben und das JTAG Protokoll implementieren.
Einfacher ist eine asynchrone Schnittstelle in VHDL zu schreiben und auf 
dem zweiten Kanal des FTDIs zu legen.

von Christian R. (supachris)


Lesenswert?

Einfacher wäre eventuell der Slave Serial Modus des Spartan 3, da kannst 
du ebenfalls die MPSSE des FT2232 benutzen und nachher dann im SPI Modus 
mit dem Spartan kommunizieren. Das Konfigurieren des S3 über SPI ist 
auch recht simpel.
Muss denn der Spartan unbedingt über den USB Chip booten? Eventuell tuts 
auch ein SPI Flash, den du im Betriebn ebenfalls aktualisieren kannst, 
da die Pins frei benutzbar sind nach der Konfig. Da startet die Büchse 
auch ohne Host-Programm.

von Steffen Hausinger (Gast)


Lesenswert?

Danke für Eure Antworten!

Ich denke, mein Vorhaben ist nicht deutlich geworden. Ich möchte 
zweierlei Dinge machen:

(1) Den FPGA über USB konfigurieren. Hintergrund ist, dass er genau 
einmal konfiguriert werden soll und anschließend seine Konfiguration 
batteriegepuffert hält (Ausleseschutz).

(2) Die Anwendung des FPGA über USB mit einem PC kommunizieren lassen.

Der FT2232 hat ja zwei Kanäle. Einen würde ich mit dem MPSS als JTAG 
konfigurieren und damit die Konfiguration laden. Den anderen würde ich 
halt als parallele Schnittstelle ("FT245-kompatibel") konfigurieren und 
damit meine Anwendung im Betrieb kommunizieren lassen.


Das xc3sprog ist offensichtlich ein Tool, mit dem man den Spartan 3 über 
JTAG konfigurieren kann. Stimmt das? Ich finde hier 
(http://www.rogerstech.co.uk/xc3sprog/) leider keinerlei Infos, sondern 
nur den Download. Dort sind aber offensichtlich nur die Quellcodedateien 
enthalten?

von Uwe Bonnes (Gast)


Lesenswert?


von Steffen Hausinger (Gast)


Lesenswert?

Danke für den Link! Auf sourceforge habe ich gestern auch geschaut, aber 
die Verlinkung zu xc3sprog funktionierte nicht.

Klappt das denn grundsätzlich so, wie ich mir das mit dem FT2232 
vorstelle?

von Christian R. (supachris)


Lesenswert?

Grundsätzlich sollte das gehen. Aber hat der Spartan 3 überhaupt su gute 
Stromspar-Eigenschaften, damit dein Plan mit der Batterie klappt? 
Vorgesehen ist das ja nicht....und sooo wenig Strom brauchen die auch 
nicht gerade.
Ausleseschutz würde ich mit einen Spartan 3 AN machen, da ist der Flash 
intern.

von Uwe Bonnes (Gast)


Lesenswert?

@Steffen: Was klappt an dem Link
http://sourceforge.net/projects/xc3sprog/develop
nicht?

@Christian:
JTAG Zugriff erlaubt auch direkten Zugriff auf die IO und ist damit 
universeller als Slave Serial.

von Christian R. (supachris)


Lesenswert?

Uwe Bonnes schrieb:
> @Christian:
> JTAG Zugriff erlaubt auch direkten Zugriff auf die IO und ist damit
> universeller als Slave Serial.

Das ist mir vollkommen klar, ich arbeite fast täglich mit dem Boundary 
Scan System von Göpel hier....

von Steffen Hausinger (Gast)


Lesenswert?

Der FPGA wird in einem Gerät eingesetzt, das praktisch dauerhaft extern 
mit Spannung versorgt wird. Die Pufferung muss daher nur den Frachtweg 
überstehen. Den 3AN hatte ich mir auch angesehen (er ist prädestiniert 
für meine Aufgabe), aber er hat zu wenig Block RAM oder ist nur im BGA 
Gehäuse lieferbar. Deshalb muss ich auf den 3A mit externer 
Confuguration ausweichen. Im Moment baue ich aber eh noch auf meinem 
Starter Board rum und dort sitzt der 3E.

Der Link funktioniert (inzwischen). Am Montagabend habe ich versucht, 
mich über "http://sourceforge.net/projects/xc3sprog/"; auf 
"http://xc3sprog.sourceforge.net/"; weiterleiten zu lassen und das hat 
leider nicht funktioniert.

Vielen Dank für Eure hilfreichen Antworten!!

Steffen

von Christian R. (supachris)


Lesenswert?

Hmm...und ein Design, was in einen kleinen S3 im TQFP passt, ist so 
ausgebufft und einzigartig, dass so ein Aufwand getrieben werden muss, 
um das Bit-File zu schützen? Was passiert, wenn doch mal der Saft alle 
ist? Elektronik-Schrott?

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.