Forum: FPGA, VHDL & Co. Konfiguration XILINX Spartan-3


von Benjamin (Gast)


Lesenswert?

Hallo zusammen,

ich probiere momentan ein eigenes FPGA Board auf der Basis des XC3S400 
im TQFP-144 Gehäuse aufzubauen.
Bitte keine Vorschläge mir ein StarterBoard oder ähnliches zu kaufen. 
Ich will nicht nur VHDL lernen, sondern auch wissen wie man solch ein 
Chip einschließt und mittels Selbstbau lern zumindest ich am besten und 
meisten wie meine Erfahrung gezeigt hat.

So nun zum ersten Problem:

Ich häng erst noch an der JTAG Chain. Meine Chain besteht aus dem oben 
genannten FPGA und dem dazugehörigen Platform ROM XCF02S.

Ich nehme VCCAUX = 2,5V, d.h ja nun dass das JTAG Interface vom FPGA aus 
auch mit 2,5V Pegeln läuft. Wunderbar. Beim JTAG Kabel geb ich ebenfalls 
VREF = VCCAUX = 2,5V vor. Bis dahin deckt sich auch alles mit 
Datenblätter und vereinzelte Beispielbeschaltungen, welche ich im Netz 
gefunden habe.

Der Platform ROM besitzt unter anderem den Versorgungspin namens "VCCJ", 
der die Pegel für das Interface einstellt. Stimmt das so?
Nun sehe ich aber z.B auch bei Schaltplänen von StarterBoards, dass 
dieser VCCJ Pin aber an 3,3V hängt.

Hat meine JTAG Chain nicht vom PC 2,5V Pegel, dann beim FPGA auch noch 
aber nach dem Platform PROM plötzlich 3,3V Pegel, welche dann wieder 
zurück zum PC gehen? Ist das nicht schädlich für den JTAG Programmer?

Ist mein Gedankengang überhaupt richtig? Wenn ja, wieso wird es dann 
trotzdem so beschaltet?



Ich hoffe auf eine klärende Antwort. :)



Viele Grüße,
Benjamin

von Bürovorsteher (Gast)


Lesenswert?

XCF...: Pin 18 auf +3,3V; 19 und 20 auf +2,5 V. Spannung für das 
JTAG-Kabel von der Leiterplatte auf +2,5 V legen.  Das JTAG-Kabel 
benutzt diese Referenzspannung für die Ausgangspegeleinstellung. Damit 
geht dann die Post ab.
VCCJ ist lediglich die interne Versorgungsspannung für den Flash, hat 
mit den IOs am Flash also nichts zu tun.

von Bürovorsteher (Gast)


Lesenswert?

Ist hundertfach so aufgebaut und funktioniert. Wenn VCCJ auf +2,5V 
liegt,
bekommst du den Flash meist nicht programmiert. Dass weiß ich, weil ich 
es in grauer Vorzeit mal falsch angeschlossen hatte.

von FreundVonWilli (Gast)


Lesenswert?

Hi,

schau einfach mal in folgenden Thread rein:

Beitrag "FPGA + PROM mittels FT2232 programmieren"

ist ein kleines Board, das glaube ich funktioniert.

Gruss

von Rudolph (Gast)


Lesenswert?

Bürovorsteher schrieb:
> VCCJ ist lediglich die interne Versorgungsspannung für den Flash, hat
> mit den IOs am Flash also nichts zu tun.

VCCJ ist die JTAG I/O-Spannung, wie mir das Datenblatt sagt.

von Bürovorsteher (Gast)


Lesenswert?

> VCCJ ist lediglich die interne Versorgungsspannung für den Flash, hat
> mit den IOs am Flash also nichts zu tun.

Sry, dieser Satz muss richtig heißen:
"VCC (pin 18) ist lediglich die interne Versorgungsspannung für den 
Flash, hat mit den IOs am Flash also nichts zu tun und muss an 3,3 V 
liegen"

Rudolph hat Recht, VCCJ ist die IO-Spannung für den JTAG.

von Benjamin (Gast)


Lesenswert?

Danke für die Antworten.

Dann hab ich die Datenblätter doch nicht falsch gelesen. Mich hat immer 
nur durcheinander gebracht, dass ich hier 2 Schaltpläne habe, wo immer 
alle Versorgungsspannungen des ROMs (VCCJ, VCCO und VCCINT) auf 3,3V 
lagen. Aber nun hab ich den Serienwiderstand gesehen, der zwischen TDO 
des ROMs und TDI des FPGA liegt um diesen 3,3V "fähig" zu machen.
Warum man dann aber nicht einfach die Spannung auf 2,5V ändert ist schon 
komisch. Nahja.


Nun zum zweiten Teil der Konfiguration, zu dem ich auch ein paar Fragen 
als Anfänger habe:

Zu den seriellen Datenleitungen zwischen FPGA und PROM find bei quasi 
allen Designs externe Pullups zu verschiedenen Rails.

Im Datenblatt find ich aber zu jedem Pin die Aussage, dass der FPGA an 
diesen Pins überall "dedicated internal pullups" hat. Wieso überall 
diese zusätzlichen externen?



Es grüßt ein sich fragender
Benjamin

von Bürovorsteher (Gast)


Lesenswert?

> Wieso überall diese zusätzlichen externen?

Die internen Pullups haben einen undefinierten Widerstand von irgendwo
im Bereich 10 - 100 kOhm. Damit sind sie für einen schnellen 
Datentransfer zwischen Flash und FPGA ungeeignet (zu groß) und werden 
durch niederohmige (z.B. 4,7 kOhm) überbrückt.

von Alex W. (a20q90)


Lesenswert?

Poste doch einfach mal Deine Schaltung, und wir können Dir sagen was 
noch zu tun ist!

von Benjamin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

anbei hab ich mal den bisherigen Schaltplan angehängt. Was ist falsch 
und gehört korrigiert?

VCCO_BOTTOM ist übrigens auf VCCO = 3,3V gelegt.

Und bitte eine kurze Erklärung dazu, wenn was anders gemacht werden 
soll.


Danke für eure Hilfe,
Benjamin

von Benjamin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo nochmal,

sry für den Doppel Post, aber ich hab den Schaltplan bisschen 
übersichtlicher dargestellt. Nun sind die einzelnen Verbindungen 
deutlich ersichtlich.

Stimmt das so? Ist irgendwas falsch?


Grüße,
Benjamin

von Bürovorsteher (Gast)


Lesenswert?

Jetzt kann ich das entziffern.:-))
Wenn du Vccaux an +2,5 V legst (was hier richtig ist), musst du Pin 19 
auch auf +2,5 V legen, da dir der Flash ansonsten 3,3 V an die 
Programmiereingänge des FPGA legt. Das wäre nicht gut.
Wozu glaubst du, den Taster zu brauchen?
Ansonsten sieht der Rest richtig aus. Die Pinnummern des FPGA habe ich 
nicht überprüft, von den Signalbezeichnungen her stimmt es aber.

von Benjamin (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die Antwort.

Aber nach zig Seiten Datenblätter Lesens stellt sich mir die Sache 
anders da. Ich schreib mal, so wie ich es denke.


ROM:

VCCINT: interne Spannung für das Flash --->3,3V
VCCJ: JTAG Interface Spannung, sollte also gleich  mit VREF beim JTAG 
Adatper und mit VCCAUX des FPGA sein -->2,5V
VCCO: hier steht im Configuration Guide von XILINX, dass diese Spanunng 
gleich der VCCO_4 oder VCCO_BOTTOM des FPGA sein soll. Diese Spannung 
beträgt bei mir 3,3V.
Laut Datenblatt des ROMs ist VCCO die Spannung für die AUSGANGStreiber. 
Eingänge sind bis zu 5V kompatibel. Da ist quasi egal was anliegt. Da 
die JTAG Pins mit VCCJ ja schon ihre Versorgung bekommen haben, bleiben 
also nur noch die Pins für die serielle Verbindung über. Das wären
- CLK (Eingang)
- CE (Eingang)
- CF (Eingang)
- OE/RES (Eingang)
- DO (Ausgang)
D0 ist hier der einzige Ausgang oder? Sprich VCCO hat nur Auswirkung auf 
den Pegel dieses Output Pins. Richtig? Nun würde auch Sinn machen, warum 
VCCO vom ROM mit VCCO_BOTTOM vom FPGA gleich sein muss. D0 geht auf DIN 
vom FPGA, welcher nen Pullup intern zu VCC_BOTTOM hat. Da INIT_B auch 
unter VCC_BOTTOM "liegt", geh ich hier auch von Pegel aus, die 
VCC_BOTTOM groß sind (in meinem Fall 3,3V). Nun müsste ich aber den 
externen INIT_B Pullup nicht nach VCCAUX, sondern nach 3,3V schalten. 
Dem Eingang des Flash macht diese widerrum nix aus, weil die Eingänge 5V 
tolerant sind.

Die anderen Pins des FPGAs (CCLK, DONE, PROG_B) laufen alle unter 
VCCAUX, also Pullup nach 2,5V.



Diese Verschaltung scheint mir nun sehr logisch, widerspricht sich aber 
teilweise mit deiner Aussage oben.


Den Schaltplan mit Richutngen und Pegel hab ich  mal angehängt. So stell 
ich mir das vor.





Den Taster dachte ich für einen "mechanischen" Reset zwischendurch. Eine 
LED für "erfolgreiche Konfiguration" soll auch noch dazu. Aber eins nach 
dem anderen.


Grüße,
Benjamin

von FPGASchubser (Gast)


Lesenswert?

Hallo Benjamin,

hast du denn auch die XAPP über die 3,3 V kompatible Ankopplung für die 
IO's des FPGA gelesen und verstanden ? Sobald Pins des (an sich nur 2,5V 
kompatiblen) FPGA mit 3,3 Volt verschaltet werden (auch die JTAG pins 
auch das Flash) brauchts Längswiderstände in den Verbindungen und ein 
"Überspannungs - Abführwiderstand" am Ausgang des 2,5 Volt Reglers.

Gruß

von Bürovorsteher (Gast)


Lesenswert?

>  Diese Verschaltung scheint mir nun sehr logisch, widerspricht sich aber
> teilweise mit deiner Aussage oben.

Ja, hier hast du recht. Der Widerspruch besteht schon, wenn Vcco4 an 
+3,3V liegt. Aus diesem Grunde hatte ich die Bank 4 meist mit +2,5V 
versorgt und dort Sachen angehangen, die auch mit mit 2,5V laufen bzw 
nur als Ausgänge benutzt. Irgendwo ist da der Spartan3 nicht zu Ende 
gedacht. Die Pins DIN und INIT_B hätten keine Dual-Use-Pins sein dürfen, 
sondern hätten besser auch Dedicated Configuration Pins sein sollen, die 
mit Vccaux versorgt werden.
Darüber habe ich mich auch schon oft geärgert.
Wenn du Vcco4 mit 3,3V haben willst bleibt dir nur der Weg mit den 
zusätzlichen Widerständen.

Chapeau, du hast dir die Sache genau angesehen!

Ist eben blöd, wenn man sich zu Fragen äußert, die man irgendwann mal 
geklärt und dann abgehakt hat, ohne noch mal genau nachzudenken.
Scheiß Alter.

von Christian R. (supachris)


Lesenswert?

Bürovorsteher schrieb:
> Die Pins DIN und INIT_B hätten keine Dual-Use-Pins sein dürfen,
> sondern hätten besser auch Dedicated Configuration Pins sein sollen, die
> mit Vccaux versorgt werden

Das wäre auch blöd. Da wäre man dann bei SPI Flash auf 2.5V Typen oder 
irgendeine Level-Anpassung angewiesen. Stört mich jetzt eben bei einem 
Virtex 5: Da sind die CCLK und DIN pins in der Config-Bank, müssen somit 
mit der gleichen Spannung wie VCCAUX betrieben werden. In unserem 
Gesamtsystem ist JTAG und Config aber 2,5V, weil eben auch ein paar 
Spartan 3 drin sind. Irgendwo muss dann ein Levelshifter rein. Schon 
irgendwie blöd.

Ansonsten betreiben wir die XCF04S am S3E mit VCCINT = 3.3V, VCCJ = VCC= 
= 2.5V. Die Pull-Ups gehen an 2.5V weil wir die Bank mit dem INIT_B und 
DIN auch an 2,5V haben.

von Bürovorsteher (Gast)


Lesenswert?

> Das wäre auch blöd.

Allen Leuten Recht getan ist eine Kunst, die niemand kahn. :-)

von Benjamin (Gast)


Lesenswert?

Die Serienwiderstände muss ich doch nur dazwischen machen, wenn ich mit 
was größerem als 0,3V bis 0,5V über der jeweiligen Versorgung des Pins 
hinein will. Richtig?

Sagen wir mal ich lass die VCC_BOTTOM = 3V3:


D0 (ROM) 3V3 --> DIN (FPGA) 3V3              --> passt
INIT_B (FPGA) 3V3 --> OE/RES (ROM) 5V tol.   --> passt (pullup nach 
3V3!!)
CCLK (FPGA) 2V5 --> CLK 5V tol.              --> passt
DONE (FPGA) 2V5 --> CE 5V tol.               --> passt (pullup nach 2V5)
PROG_B (FPGA) 2V5 --> CF 5V tol.             --> passt (pullup nach 2V5)

müsst doch allles ohne Serienwiderstände funktionieren, oder?

Oder kann ich die Anschlüsse CLK, CE, CF, OE/RES des ROMs nicht als 
reine Eingänge sehen (5V tol.), sondern muss davon ausgehen, dass die 
auch mal was in Richtung FPGA treiben?
--> dann bräucht ich Serienwiderstände zum Schutz des FPGAs



Sry der vielen Nachfragen. Aber genau das will ich mit dem Selbstbau 
auch bezwecken, nicht einfach kaufen und benutzen. Ich will verstehen, 
warum wie man was macht. Und das lern ich nicht, wenn ich einfach ein 
Schaltplan nachbau.


Danke für die bisherigen Antworten.


Viele Grüße,
Benjamin

von Bürovorsteher (Gast)


Lesenswert?

CF  und OE/\RESET sind Ausgänge, aber open-drain. Da du dort die 
externen Widerstände an den richtigen Spannungen dran hast, ist das i.O.
INIT_B wäre das letzte Hindernis, aber da der Flash mindestens 3,3 V am
Eingang aushält, geht das auch gut.
Allerdings habe ich den Satz "Failure to power the PROM correctly while 
supplying a 5V input signal may result in damage to the XCFxxS device" 
in DS123 nie wirklich verstanden.
Aber hier haben wir nur 3,3 V.
Sollte also auch ohne irgendwelche Längswiderstände gehen.

Jetzt habe ich durch deine bohrenden Fragen wieder was gelernt, nämlich 
dass ich Bank 4 auch mit 3,3 V laufen lassen kann! (aber nicht für 
Vcco/Vccj 1,5 oder 1,8 V am Flash!).

von Christian R. (supachris)


Lesenswert?

Mal eine grundsätzliche Frage: Wieso eigentlich den XCF PROM? Wenn du 
keinen Ausleseschutz für das Design benötigst, würd ich lieber einen SPI 
Flash nehmen. Den kann man dann auch durch das Design immer wieder neu 
programmieren und ist dazu noch viel billiger. Den Platform Flash kann 
man ja ausschließlich über JTAG programmieren. Die AT45DB und M25P/M45PE 
Chips werden von Impact über indirect programming unterstützt.

von Bürovorsteher (Gast)


Lesenswert?

> würd ich lieber einen SPI Flash nehmen.

Der S3 braucht den XCF. SPI Flash gibt es erst beim S3A.

Ich nehme jetzt größtenteils den S3AN, da ist der SPI-Flash gleich drin 
und um den Kopierschutz braucht man sich auch keine Gedanken mehr 
machen.
Außerdem ist er preislich unschlagbar.

von Christian R. (supachris)


Lesenswert?

Ja, der AN ist praktisch, aber den gibts leider nur in so riesigen 
Gehäusen. War leider nix passendes für uns dabei. Schade, dass es den 
6er nicht mit internem Flash gibt, aber das Dual-Die hätte den 
vermutlich viel teurer gemacht.

von FPGASchubser (Gast)


Lesenswert?

Hallo,

mir scheint mein letzter Beitrag nicht Ernst genommen worden zu sein.
Daher versuche ich es nochmal:

Der XC3S400 ist ein 2,5 Volt Device - nicht 3,3 Volt.

Jedes Signal das man anlegt und das mehr als 2,5 Volt aufweist wird über 
clamping - Dioden nach VCC (2,5Volt) hin abgeleitet - wohin auch sonst. 
Jedes milliAmpere das in die 2,5 Volt - Versorgung "hineingepresst" wird 
also aus dem VCC - Pin des FPGA herausfliessen und muß außen irgenwo 
verbraten werden.

Wenn die Schaltung an der 2,5 Volt Stromversorgung keine weiteren 
Verbraucher hat als den FPGA dann sieht es folgendermassen aus:

Solange der Strom für die Versorgung des gesamten FPGA größer ist als 
der "Gegenstrom" aus den Clamping-Dioden wird nichts passieren.

Wenn das aber nicht mehr zutrifft und die VCC - Pins des FPGA plötzlich 
Strom abgeben wollen anstatt welchen zu ziehen dann erhöht sich 
unweigerlich die VCC Spannung auf zerstörende Größenordnungen.

Die typischen Längsregler der 2,5 Spannugsversuorgung haben auch keine 
Waffe dagegen. Deren Möglichkeiten bestehen ja nur darin den eigenen 
Innenwiderstand zu variieren. Wenn der aber bereits auf undendlich steht 
ist es essig mit Regeln. Der kann nur maximal ganz zumachen, er kann 
keinen Strom in die Gegenrichtung ableiten.

Also, macht Serienwiderstände an alle Inputs die mit 3,3 Volt 
beaufschlagt werden und am 2,5 Volt Regler einen "Abführwiderstand", der 
dafür sorgt, das jedweder Strom der durch den FPGA VCC - Pin abfließen 
muss auch abfließen kann!!!

Lest hierzu mal die XAPP453 durch.


>>>Allerdings habe ich den Satz "Failure to power the PROM correctly while
>>>supplying a 5V input signal may result in damage to the XCFxxS device"
>>>in DS123 nie wirklich verstanden.

ich denke das geht in die gleiche Richtung!!

Gruß

von Christian R. (supachris)


Lesenswert?

FPGASchubser schrieb:
> Hallo,
>
> mir scheint mein letzter Beitrag nicht Ernst genommen worden zu sein.
> Daher versuche ich es nochmal:
>
> Der XC3S400 ist ein 2,5 Volt Device - nicht 3,3 Volt.

Das gilt doch aber nur für die Config Pins, für die VCCAUX zuständig 
ist. Und er betreibt ja die JTAG Kette und den Platform Flash mit 2,5V, 
also kein Problem. Die Unklarheit war ursprünglich ledigleich am VCCJ 
Anschluss des Platform Flash. Sowie den Anschluss der Shared Pins an den 
Platform Flash, die in einer 3,3V Bank liegen.

von Bürovorsteher (Gast)


Lesenswert?

> Der XC3S400 ist ein 2,5 Volt Device - nicht 3,3 Volt.

Wo bitte steht das geschrieben? Ich kann das dem DS 099-1 (Family Data 
Sheet) nicht entnehmen, eher im Gegenteil: die I/O unterstützen LVTTL 
und LVCMOS mit 3,3 V. Irgendwo anders im DS ist Vcco max mit 3,45 V 
angegeben.
Einen Hinweis auf Spannungseinschränkungen des XC3S400 kann ich nicht 
entdecken.
Ich bitte um Belehrung mit Quellenangabe.

von FPGASchubser (Gast)


Lesenswert?

Hallo,

ich dachte ich hätte die XAPP453 genannt ?
http://www.xilinx.com/support/documentation/application_notes/xapp453.pdf

Der gesamte Fall JTAG mit 3,3 Volt an Spartan3 Device ist hier 
beschrieben.

Gruß

von Benjamin (Gast)


Lesenswert?

Hallo,

ich hab mir grad nochmal sämtliche nützliche AppNotes angeschaut, auch 
das neue von dir gepostete. Vielen Dank dafür, das kannte ich noch 
nicht.

Dennoch lese ich darin nichts neues. Deine Pauschalangabe des 2,5V 
Devices kann ich auch nirgend finden. Vielmehr wird die max. Input 
Spannung immer in Bezug der internen Versorungsspannungn des jeweiligen 
Pins gegeben.

Also bei den Dedicated Configuration Pins wäre das VCCAUX = 2,5V. Aber 
die anderen zwei Pins (DIN, INIT_B) hängen unter der Fuchtel von 
VCCO_BOTTOM bzw. VCCO_4. Und diese Rail läuft bei mir mit 3,3V.

Daher sind die zwei Bedinungen auf Seite 3 in deiner geposteten AppNote 
war (Gleichung 1 und 2).

Das mit den OpenDrain Ausgängen des PROMs hab ich mittlerweile auch in 
einer AppNote gefunden.


Ich denke, dass ich nun recht gut verstanden habe, wie man die 
Configuration anschließt und befinde meine open gepostete auch für 
richtig.



Wenn nicht, möchte ich das mit Quellangabe bitte belegt haben.




An die anderen zwei sehr fleißigen Mitdiskutierer spreche ich meinen 
Dank aus! Ihr habt mir echt geholfen.

Vielen Dank dafür!


Grüße,
Benjamin

von Bürovorstehen (Gast)


Lesenswert?

> Ich denke, dass ich nun recht gut verstanden habe, wie man die
> Configuration anschließt und befinde meine open gepostete auch für
> richtig.

Ich auch, ich kann keinerlei Verstöße gegen irgendwelche IO-Bedingungen 
entdecken.

Die Config-AN kenne ich auch, daher hatte ich Bank 4 vorsichtshalber mit 
2,5 V betrieben. Bei genauer Betrachtung geht die Schaltung von Benjamin 
genausogut.

von Bürovorsteher (Gast)


Lesenswert?

Hallo Benjamin,

nur mal so zur Bestätigung - klappt die Sache, so wie du sie gemacht 
hast?

Gruß - Bv

von Benjamin (Gast)


Lesenswert?

Hallo zusammen,

leider kann ich noch nichts bestätigen, weil ich die letzten Monate 
aufgrund von Prüfungen das Projekt erstmal ruhen lassen musste. Nun 
gehts damit fleißig weiter. Der Schaltplan für den Logic Analyzer ist in 
den letzten Zügen. Ich werde Rückmeldung geben, sobald ich die Platine 
vor mir habe.

Viele Grüße,
Benjamin

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.