mikrocontroller.net

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


Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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_s...

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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)...

Autor: Randy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank (Gast)
Datum:

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

Autor: Randy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Randy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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".

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.