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.
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.
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.
Ich habe einen FT2232H Mini Modul (also SDK) direkt an die JTAG Schittstelle angeschlossen. Dort wird auch kein PULLUP benötigt.
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.
Ich habe es unter README JTAG TIMING gelesen http://xc3sprog.svn.sourceforge.net/viewvc/xc3sprog/trunk/Readme.JTAG_Timing?revision=720&view=markup
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.