Forum: FPGA, VHDL & Co. FPGA kein Done (serial mode)


von Frank (Gast)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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

von Frank (Gast)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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

von Randy (Gast)


Lesenswert?

> 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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>> 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.

von Frank (Gast)


Lesenswert?

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

von Frank (Gast)


Lesenswert?

Achja, der M2 ist nur für die Internen Pullups zuständig.

von Randy (Gast)


Lesenswert?

> 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

von Frank (Gast)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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...

von Randy (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.