Forum: FPGA, VHDL & Co. Timing für XCF16PVOG48C


von Johann (Gast)


Lesenswert?

Hallo Leute,

ich habe ein Board gebaut auf dem der FT2232H (USB auf JTAG) Converter 
von FTDI vorhanden ist. Dann habe ich das Tool XC3SPROG verwendet.

Ich möchte mir alle Teilnehmer in der JTAG Kette anzeigen lassen. Leider 
wird der PROM und der FPGA nicht erkannt. Wenn ich jedoch den Taskkopf 
an den TCK Pin vom FT2232H anlege, dann funktioniert alles so wie es 
soll. Der FPGA und der XILINX PROM XCF16PVOG48C wird erkannt. Dies ist 
auch reproduzierbar. Immer wenn ich den Taskkopf wieder entferne 
funktioniert es nicht mehr und wenn ich in wieder ranhalte geht alles.

Die Daten schalten mit der fallenden TCK Flanke und die Daten liegen 
stabil an wenn eine steigende TCK Flanke auftritt.

Zwischen steigender und fallender TCK Flanke vergehen 340ns.

Ich finde jetzt kein Datenblatt mit den Timings vom XCF16PVOG48C.

von Johann (Gast)


Lesenswert?

Ich habe das gefühl das der FTDI Chip falsch konfiguriert ist. Dieser 
übernimmt nicht die Daten mit der steigenden Flanke sondern mit der 
fallenden Flanke.

Der PROM schaltet die Daten (TDO) mit der fallenden Flanke. Wenn jetzt 
auch noch der FTDI mit der fallenden Flanke die Daten abfragt dann kommt 
genau dieser Fehler zustande. Durch den Taskkopf der eine Kapazität 
besitzt verändert sich leicht das Timing und es funktioniert. Dies merke 
ich auch wenn das Board länger ausgeschaltet war. Dann funktioniert 
alles. Sofern es 5 Minuten angeschaltet ist, schlägt die Übertragung 
fehl. Dies liegt daran das ein Bauteil leicht warm wird und die 
Schaltzeit sich verändert.

von Christian R. (supachris)


Lesenswert?

Vielleicht fehlt nur der Pull-Up Widerstand am TDO? Ich hab mit dem 
FT2232H auf einem Digilent Programmer Board keine Probleme, einen XCF32P 
zu programmieren. Geht mit XC3SProg gleich so.

von Johann (Gast)


Lesenswert?

Ich habe einen FT2232H Mini Modul (also SDK) direkt an die JTAG 
Schittstelle angeschlossen. Dort wird auch kein PULLUP benötigt.

von Johann (Gast)


Lesenswert?

DIES HABE ICH GEFUNDEN BEI XC3SPROG

this concludes to:
8   - Change TDI with the negative edge
9   - Sample TDO at the negative edge


BEIM XPROM habe ich im Datenblatt gelesen, das die Daten mit der 
fallenden Flanke geändert werden. Wenn jetzt der FTDI CHIP mit der 
fallenden Flanke die Daten abfragt dann wird es nicht immer sauber 
funktionieren.

von Johann (Gast)


Lesenswert?


von Johann (Gast)


Lesenswert?

Muss ich denn einen PULLUP am TDO hinzufügen damit es geht? Wo kann man 
dies nachlesen?

Es handelt sich um den TDO am FPGA ich dachte der kann den Ausgang auch 
so treiben.

von Johann (Gast)


Lesenswert?

Ich habe dies bei Xilinx gefunden:

Test Data Out. This pin is the serial output for all JTAG instruction 
and data registers.
The state of the TAP controller and the current instruction determine 
the register
(instruction or data) that feeds TDO for a specific operation. TDO 
changes state on the
falling edge of TCK and is only active during the shifting of 
instructions or data
through the device. TDO is an active driver output.



Demnach benötige ich keinen PULLUP, da TDO einen aktiven Treiber besitzt

von Christian R. (supachris)


Lesenswert?

Johann schrieb:
> Muss ich denn einen PULLUP am TDO hinzufügen damit es geht? Wo kann man
> dies nachlesen?

Nicht zwingend. Aber das hat bei uns schon desöfteren geholfen.

von Johann (Gast)


Lesenswert?

So ich habe mal den XC3SPROG Quellcode überflogen. Dabei ist mir 
folgendes aufgefallen

/*out on -ve edge, in on +ve edge */

buf[0] = ((tdo)?(MPSSE_DO_READ |MPSSE_READ_NEG):0)
|((tdi)?MPSSE_DO_WRITE:0)|MPSSE_LSB|MPSSE_WRITE_NEG;

Wenn ich dies richtig interpretiere, dann wird TDI mit der fallenden TCK 
Flanke gesetzt. Dies ist ja auch richtig. Somit wird die Setup Time für 
TDI eingehalten, da die Daten am XILINX PROM oder am FPGA mit der 
ansteigenden TCK Flanke übernommen werden.

Jedoch das TDO Signal wird mit der negativen TCK Flanke eingelesen. 
Genau hier liegt der FEHLER. Laut FPGA und XILINX PROM Datenblatt wird 
das TDO Signal mit der fallenden TCK Flanke verändert. Deshalb kann ich 
nicht die gleich Flanke benutzen um das Signal einzulesen. Dadurch wird 
die Setup Time vom FTDI Chip verletzt. Beim FT2232H muss z.B. das TDO 
Signal vor eintreffen der ansteigenden TCK Flanke mindestens 11ns stabil 
anliegen.

Das einhalten der Setup Zeit sollte jedoch kein Problem darstellen. Da 
das TDO Signal mit der fallenden TCK Flanke verändert wird muss der FTDI 
Chip das TDO Signal mit der ansteigenden TCK Flanke einlesen.

Das Problem ist nur wer verändert mir jetzt den XC3SPROG Quellcode so 
das ich es testen kann? Ich will nichts daran ändern weil ich nicht weis 
was alles dadurch nicht mehr funktioniert. Ich kann natürlich auch eine 
Kapazität an den TDO Pin löten, jedoch ist das nicht gerade die beste 
Lösung, da ich nicht weis ob beim FTDI Chip die Schmitt Trigger Eingänge 
aktiviert sind

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.