Hallo, ich habe mir ein Custom Board für einen XC3S500E-FG320 aufgebaut. Im Prinzip funktioniert es schon ganz gut - aber leider nur, wenn ich es über JTAG Flashe. Ich bringe weder das Platform Flash (XCF04S) noch das SPI Flash (M25P80) zum laufen. Das Board ist stark an das Design des Spartan3E Starter Kits angelehnt. Die MODE-Pins sind korrekt belegt: 000 für XCF04S 100 für SPI für HSWAP habe ich sowohl einen Pullup, als auch einen Pulldown ausprobiert - keine Änderung (Pulldown bzw. offen steht im Referenzdesign...) VS0-VS2-Pins sind auf 111 über Pullups gelegt Bei beiden Bausteinen kann ich während des Power-ups an den Clock- und Datenpins Signale erkennen. Dauern um die 5ms - dann ist Ruhe. Die DONE-LED bleibt aus :-( Wenn ich nach dem Powerup kurz auf die PROG-Taste drücke, dann kommt ein kontinuierlicher Rechteck auf dem Clock-Signal - bis ich das Board stromlos mache... Programmieren kann ich beide Bausteine über IMPACT und das USB-II Cable. Ich kann die Bausteine auch auslesen (READBACK) und erhalte sinnvolle Daten. Jetzt bin ich am Ende - und hoffe, dass mir hier jemand helfen kann!!! Beste Grüße, Andreas
Hallo hp-freund, vielen Dank für Deine Antwort. Den Link kannte ich leider schon. Bei Meinem Design liegt der CS-Pin des XCF04S über einen Jumper auf GND. Mit einem Oszi habe ich mir auch schon die Signale angeschaut. Wie gesagt, die Pegel sehen eigentlich gut aus. Keine Störungen auf den Signalen zu erkennen. Ich habe heute mal in die Richtung "falsche Konfiguration" gesucht: Stichwort CCLK --> habe auch im bitgen.ut auf CCLK umgestellt - ohne Erfolg. Was aber auch zu Erwarten war, weil das ja IMPACT autmatisch macht (machen sollte...). FRAGE: Kann es evtl. am Powerup liegen? In welcher Reihenfolge müssen die Spannungen CORE, AUX und IO kommen? --> habe schon diverse Datenblätter gewälzt - aber keine richtige Antwort gefunden. Anscheinend gibt es wohl Probleme, wenn +3,3V am Schluss kommt...??? Ich hoffe, mir kann jemand helfen :-((( Gruß, Andreas
Hallo nochmal, ich bin langsam (mal wieder) am verzweifeln :-( Ich habe nun nochmal mit dem XCF04S herumprobiert (auch wenn ich eigentlich langfristig mit dem SPI-Flash arbeiten muss...) Auf der D0-Leitung sehe ich, dass sowohl nach dem PowerUp, als auch nach der Betätigung des PROGB-Buttons für ca. 4 Sekunden daten kommen. Die Daten scheinen auch mit dem, was ich hineinprogrammiert habe übereinzustimmen - habe mir mal die MCS-Datei angesehen. Sie ist etwa halb voll - und es kommen auch 50% Daten, dann nur noch 0xFF... Seltsamerweise kommt CCLK ewig mit 1,25 MHz - auch nach dem die Daten zu Ende sind... DONE wir natürlich nicht HIGH :-(( --> Kann mir irgendjemand weiter helfen? Ist der Fehler in der Hardware, oder in der Software zu suchen? Ich habe mir schon ein Starterkit bestellt - nur um dieses Problem einzukreisen (werde es aber erst nächste Woche erhalten...) Beste Grüße, Andreas
> DONE wir natürlich nicht HIGH :-((
Schon mal in den Optionen von "Generate Programming File" (Rechtsklick)
mit dem Häckchen bei "Drive DONE pin high" herumprobiert?
>> habe mir mal die MCS-Datei angesehen. Sie ist etwa
halb voll - und es kommen auch 50% Daten, dann nur noch 0xFF...
ich würde mal sagen du hast eine zu kleine Flash Größe ausgewählt und
flasht nur die Hälfte des Bitfiles.
Regel Nummer 1 : wenn du du mit Impact das MCS nicht genau so auslesen
kannst wie du es reingeschrieben hast, dann kann es gar nicht
funktionieren.
Einzige Ausnahme : wenn der Flash größer ist als das Bitfile kommt
danach noch Müll, den kann man ignorieren.
Aber wenn du etwa 1mb nur korrekt ausliest und danach nur FFs kommen und
die original mcs 2mb groß ist, dann ist auf jeden Fall etwas falsch
gelaufen.
Habe mich selbst ne ganze Zeit mit dem MCS rumgeschlagen, deswegen gilt
bei mir immer : MCS auslesen und mit DIV-Tool mit der alten Vergleichen.
Sollte ein Unterschied vor dem End of file (Befehl "01" im original mcs)
auftreten, dann ist der Flash vorgang definitiv gescheitert und ein
konfigurieren aus dem Flash ist nicht möglich.
Hallo, danke nochmal für Eure Antworten! @Lothar: Diese Option habe ich auch schon ausprobiert - hat keine Veränderung gebracht. @Iulius: Die Flashgröße ist schon OK. Das sind 4M Platz. Benötigt wird etwas über 2M. Der Flash ist zu 53% beschrieben. Ich bin mir sehr sicher, dass im Flash die selben Daten stehen, wie in der MCS-Datei. Habe sowohl ein Verify (gab keinen Fehler!) über JTAG gemacht, als auch die Daten über Readback ausgelesen und verglichen:
1 | :10543000040000000400000004000000040000005C |
2 | :10544000040000000400000004000000040000004C |
3 | :105450000C000180000000A00C000580000000008E |
4 | :105460000C0000800000FAEA0C000180000000B08F |
5 | :10547000040000000400000004000000040000001C <-- bis hier hin alles das selbe |
6 | --> ab jetzt kommen die 0xFF |
7 | :10548000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C |
8 | :10549000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C |
9 | :1054A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C |
10 | :1054B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC |
11 | :1054C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC |
12 | :1054D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC |
13 | |
14 | --> Und das abschliessende EndOfFile (Du meintest wahrscheinlich Befehl 0x00 - oder?) |
15 | :00000001FF |
16 | --> Man könnte natürlich darüber nachdenken, ob das EOF VOR den ganzen 0xFFs kommen müßte...??? |
--> Und genau das sehe ich auch auf dem Oszilloskop. 1,84 Sekunden sich ändernder Datenstrom 1,56 Sekunden sich nicht ändernder Datenstrom (0xFF) Ich habe irgendwie den bösen Eindruck, dass mein FPGA defekt ist. Ich werde mal eine weitere Leiterplatte bestücken und ausprobieren. Ich kanns mir zwar nicht vorstellen, aber das ist jetzt die einizige Möglichkeit, die es noch auszuschließen gilt... Für weitere Vorschläge bin ich aber trotzdem dankbar! Beste Grüße, Andreas
Hallo, das war es wohl auch nicht :-( Die neue Leiterplatte geht auch nicht. OK, jetzt könnte man noch über einen FPGA-Serienfehler nachdenken - das halte ich aber dann schon sehr weit hergeholt... Hat noch jemand Ideen? Kann jemand evtl. ein bei Ihm funktionierendes bit- UND mcs-File posten? --> Es geht natürlich um keine Funktion, sondern nur darum das FPGA zu flashen... Beste Grüße, Andreas p.s.: @Iulius: Du hattest natürlich Recht mit dem INTEL-Befehl 0x01... ;-)
Naja, sowas hatte ich auch schon. Teilweise waren mehrere Zeilen mit FFs gefüllt (flash hat nichts geschrieben), teilweise waren nur ein paar Bits nicht geschrieben, aber weil beim Auslesen eine Checksumme oder CRC gebildet wird bricht das FPGA ab. Das geht soweit das es sich trotz nur 1 bit Fehler irgentwo im ausgelesenen MCS nicht vollständig konfiguriert und somit nicht "startet" Deswegen lese ich zur Verifikation grundsätzlich das komplette MSC wieder aus und checke es bis zum "01" (automatisiert mittlerweile versteht sich) Das verify von ISE hab ich noch nie probiert, kann bei gelegenheit mal testen ob das anspringt wenn ein Fehler vorliegt. Wie auch immer, ich bleibe dabei : stimmt es bis zum 01 nicht, dann kannst du auf dem Board ewig suchen und messen, es kann nicht funktionieren.
Hallo Iulius, ich habe mal die MCS-Files angehängt. Ich denke, dass der DIFF in Ordnung ist - oder? Gruß, Andreas
Nach fast 4 Tagen Suche (entspricht ca. 45 Stunden!!!) habe ich den Fehler gefunden: Es muss sowohl die Clock, als auch die Datenleitung mit jeweils 2 100Ohm Widerständen gegen 3,3V und GND terminiert werden. zusätzlich noch den Reihenwiderstand - und schon geht es. Unterm Strich hattest Du Recht Iulius! Wahrscheinlich hat das eine oder andere Bit am Anfang oder am Ende der Datenübertragung nicht gestimmt - folgich falsches CRC und kein "start" Ich trinke jetzt erstmal ein Siegesbier!!! ;-) Beste Grüße und danke für Eure Hilfe! Andreas
> Es muss sowohl die Clock, als auch die Datenleitung mit jeweils 2 100Ohm > Widerständen gegen 3,3V und GND terminiert werden. Das sieht mir aber nach Problemen beim Layout aus... :-/ Das hättest du aber am Oszi sehen können/müssen (Über- und Unterschwinger). Meine konfigurieren alle ohne irgendwelche Terminierung.
Hallo Lothar, ich habe mal einen Spartan3 aufgebaut. Der ist damals auch ohne Terminierung gelaufen. Da war aber auch nur ein Flash dran. Hier sind ja zwei dran (M25P80 und XCF04S). Die CCLK-Leitung ist ca. 6cm lang - ging leider nicht anders... Es mag sein, dass man auch ohne diese Terminierung auskommen kann, wenn die Leitungen kürzer geführt werden. Xilinx schreibt im Dokument ug332.pdf folgendes:
1 | The best signal integrity is ensured by following these basic PCB guidelines: |
2 | • Route the CCLK signal as a 50 Ω controlled-impedance transmission line. |
3 | • Route the CCLK signal without any branching. Do not use a “star” topology. |
4 | • Keep stubs, if required, shorter than 12.5 mm (0.5 inches). |
5 | • Terminate the end of the CCLK transmission line. |
Im Schaltplan des Spartan3E-Starterkits findet man diese Terminierung auch (ist aber sehr gut versteckt...) Die Über-/Unterschwinger habe ich schon gesehen. Da sie aber kleiner 100mV waren (ich kann es leider nicht mehr nachmessen...) habe ich denen erstmal keine große Bedeutung zugeordnet. Weil ja (meiner Meinung nach) keine High/Lowpegel davon betroffen waren. Beste Grüße, Andreas
> Terminate the end of the CCLK transmission line Da klingelt was, da muss ich mal nochmal nachsehen... Three minutes later... Richtig, am S3 habe ich auch die Terminierung. Das Design ohne Abschlusswiderstände war noch beim Spartan 2 :-o Da fällt mir noch was auf: > gegen 3,3V und GND Kann dein FPGA noch 3.3V am Programmierinterface ab? Aus dem DS099:
1 | A 3.3V-tolerant configuration interface simply requires add- |
2 | ing a few external resistors as described in detail in |
3 | "The 3.3V Configuration of Spartan-3 FPGAs" (XAPP453). |
Hallo, nur nebenbei: Ich habe gerade mal die configuration rate auf 25MHz gestellt - funktioniert immernoch bestens --> werde ich aber im Zielprojekt natürlich nicht verwenden (Weichei...). Wegen 3,3V: Um JTAG mit 3,3V nutzen zu können, braucht man Serienwiderstände (siehe Datenblatt). Meine Flashbausteine laufen auch mit 3,3V --> Bank2 wird ebenfalls mit 3,3V gespeist. Ich habe mich hier strikt an Datenblätter und vor allem die Vorlage des Starterkits gehalten. Hoffe ich ;-) Gruß, Andreas
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.