Hallo zusammen! Ich habe ein Problem mit einem XC2S50. Kleine Serie. Bei einigen Boards funktioniert alles wunderbar. Nur bei zweien nicht. Exakt gleicher Fehler. Serie wurde vom Platinenhersteller gefertigt. Mode Pins: M0 offen M1 offen M2 GND -> Serial Mode Weder der DONE-Pin wird high, noch gibt es eine Änderung an den I/Os. -Daten liegen an. -Clocks sind korrekt und haben die richtige Länge und Anzahl -Wenn ich eine falsche Config-Datei schreibe schaltet der FPGA korrekterweise den Init-Pin auf Low. (CRC-Check) -DOUT liefert keine Daten bei überlanger Config. -Spannungsversorgung ist da. -Hab die Pins mit Diodentest auf Kontakt zum FPGA getestet. (Schutzdioden) An was kann das noch liegen? Hat jemand eine Idee? Gruß Frank
> Hat jemand eine Idee? Kannst du das FPGA über JTAG ansprechen und konfigurieren? Wenn nein: FPGA kaputt. > An was kann das noch liegen? Ist ein Pullup am Done-Pin? Oder ist die Option "Drive Done Pin High" eingeschaltet? http://www.xilinx.com/itp/xilinx10/isehelp/pp_db_startup_options.htm
Danke für Deine Antwort! JTAG hab ich leider nicht rausgeführt. Done-Pin funktioniert bei den andern Boards einwandfrei. Pull-Up hab ich auch schon getestet. Kein Erfolg. FPGA kaputt? Wie kommt das zustande, würde mich dann interessieren. Bei allen andern Boards gehts ja. Gruß Frank
> JTAG hab ich leider nicht rausgeführt. Das ist ungünstig... :-/ Denn das ist ja die Test- und Entwicklungs-Schnittstelle schlechthin. Kannst du evtl. Drähte dort hinlöten? Das ist ja nur ein kleines FPGA, vermutlich im TQFP-Gehäuse. > FPGA kaputt? > Wie kommt das zustande, würde mich dann interessieren. ESD, Prozessprobleme, zu heiß gelötet (ROHS)...
> Mode Pins: > M0 offen > M1 offen > M2 GND > -> Serial Mode Ich hab jetzt nicht nachgesehen, aber AFAIR hatte ich für den Serial Slave Modus (d.h. der FPGA nimmt der seriellen Takt von außen statt ihn selber vorzugeben) alle drei Pins offen gelassen. HTH Randy
>> M0 offen >> M1 offen >> M2 GND >> -> Serial Mode > ... alle drei Pins offen ... So wie die Mode-Pins hier beschaltet sind, ist das jeweils der Slave Serial Mode. @Frank: ist das der, den du willst? > M0 offen > M1 offen Ich habe bei EMV Burst-Prüfungen mit offenen Eingängen (auch wenn der Hersteller geschrieben hatte: "internal Pull Ups, can be left open or tied to Vcc") sehr schlechte Erfahrungen gemacht. Seither gibt es für mich keine unbeschalteten, offenen Eingänge mehr.
Package ist FG256, komme also an die pins nicht mehr ran. Der Mode stimmt. Funktioniert auch auf den andern Boards wunderbar. Ja stimmt, ich hab M0 und M1 auch mal über 1k auf 2,5V gelegt. Keine Änderung. Bei dem Package ist es ja sogar so, dass die Leiterbahnen jedes Pads auch nach außen hin weggehen. Ich nehme mal an, dass der Hersteller so den Chip testen kann. Nur leider ist auf der Oberseite keines der JTAG-Pins. Mich würde mal interessieren an was es jetzt liegt, weil er braucht doch nur 3 Pins zum Prorammieren. Hab aber gelesen, dass wenn der TMS des JTAGs auf High liegt, tut er nix mehr. Also wenn man bedenkt, dass die Hardware des FPGAs so verschaltet ist, dass durch ein High am TMS alles zweitrangig ist, warum dann nicht auch der Programmiervorgang und der ERC (INIT-Pin). Das Problem ist schlicht, dass er nicht abschließt und die Start-Condition laufen lässt. Als ob er auf etwas warten würde. Im Datenblatt finde ich nichts entsprechendes. Es steht bei dem Ablauf der Programmierung nur am ende, dass er DONE high werden lassen sollte, aber nicht was los ist, wenn der DONE nicht high wird. Man könnte ihn zwar durch den INIT-Verzögern, wenn man INIT auf low zieht, aber das tue ich nicht (oszi). Er ist mit gültigen dDaten die ganze Zeit high. Gruß Frank
> Im Datenblatt finde ich nichts entsprechendes. Es steht bei dem Ablauf > der Programmierung nur am ende, dass er DONE high werden lassen sollte, > aber nicht was los ist, wenn der DONE nicht high wird. Systematisch den Fehler zu suchen ist da in der Tat schwierig... hast du dran gedacht dass du nach dem letzten Byte noch ein paar leere Takte brauchst bis DONE auf high geht? Wechselst du das Datenbit auf der steigenden oder fallenden Flanke von Clk? MSB oder LSB first? Fängst du gleich mit der Sync-Sequenz an oder schickst du vorher noch ein paar Dummy Bytes? JTAG hast du ja leider nicht rausgeführt, sonst könnte man mal mit dem "offiziellem" JTAg Adapter einen Programmierversuch starten (-> das nächste mal zum debuggen JTAG rausführen, auch wenn man nicht vor hast es zu benutzen.) Sonst fällt mir auch nicht ein... HTH Randy
Ja am Anfang und am Ende sind leere Bytes. Bei steigender Flanke wird übergeben. Wie schon gesagt, auf den anderen Boards geht es! Ich glaube es liegt entweder am JTAG was an, was nicht soll, oder der FPGA hat beim Löten was abbekommen. Schade drum. JTAG werd ich in Zukunft rausführen. Danke Euch allen! Gruß Frank
> JTAG werd ich in Zukunft rausführen.
Das macht Sinn. Es ist ja auch die Schnittstelle, mit der man testen
kann, ob alle Balls sauber verlötet sind...
> Wie schon gesagt, auf den anderen Boards geht es!
Das hatte ich überlesen. Meine Überlegungen waren eher für die Kategorie
"es geht prinzipiell nicht".
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.