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
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.
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.
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.
> 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.
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
> 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.
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
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
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.
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
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ß
> 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.
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.
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
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!).
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.
> 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.
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.
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ß
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.
> 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.
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
> 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.
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