Hallo, kann mir mal jemand erklären wie ein FPGA zu seiner Konfiguration kommt? Ich hab hier ein Board dass sich die Konfig aus nem SPI Flash holen müsste. Tut sie aber nicht und ich habe die Befürchtung der Grund dafür liegt darin dass das SPI Flash keinen Takt bekommt. Wie läuft sowas prinzipiell ab?
Damit das klappt muss im Normalfall das FPGA dafür in den entsprechenden Mode gebracht werden. Bei Xilinx geschieht das über die Mode Pins. Wie genau steht im jeweiligen Configuration User Guide.
<Glaskugel> Modepins richtig? </Glaskugel> Ansonsten wende dich vertrauensvoll an das Datenblatt des FPGAs, das du uns hier verschweigst. Da steht sowas in aller Breite drin.
FPGA ist der XCS3502E. So wie ich das im Datenblatt sehe müssten bei dem Board die Modepins MO auf 3.3V M1 auf Low und M2 auf 3.3V stehen. Dann müsste Prog_B am FPGA PIN doch auf Low gehen damit dieser sich die Config aus dem SPI Flash zieht oder? Das ist übrigens das Schematic dazu... http://dangerousprototypes.com/wp-content/media/2010/02/cct-med.png
Wolfgang M. schrieb: > FPGA ist der XCS3502E. Aha, also XC3S250E :) > So wie ich das im Datenblatt sehe müssten bei dem Board die Modepins > MO auf 3.3V > M1 auf Low > und M2 auf 3.3V stehen. Nee, Master SPI Mode hat die M(2:0) = 001 > Dann müsste Prog_B am FPGA PIN doch auf Low gehen damit dieser sich die > Config aus dem SPI Flash zieht oder? PROG_B ist ein Eingang. Lässt du den unbeschaltet, startet das FPGA die Config, wenn intern alles fertig ist. Ansonsten kannst du mit einem low am PROG_B ein Re-Config auslösen oder die Config verzögern, z.B. durch einen Reset-Generator. Lies mal den Configuration User Guide UG332: www.xilinx.com/support/documentation/user_guides/ug332.pdf
Hab nochmal mit dem Oszi nachgemessen. Problem am FPGA ist dass INIT_B nicht auf high geht, der FPGA also seinen Config nicht fertig lädt und startet. PROG_B ist so lange high wie ich die Reset Taste gedrückt halte. Jetzt habe ich mal ein wenig ins DB eingelesen. DONE ist mit dem PIC verbunden und aus irgendwelchen diversen Gründen bleibt die Datenleitung immer auf Low. Eigentlich sollte diese doch auf High gehen sofern alle Daten vom FPGA geladen wurden. Im Datenblatt steht dass so lange DONE auf Low ist der Startup Prozess verhindert wird. Ich vermute mal dass es also am PIC liegt der die DONE Leitung nicht auf high zieht, kann dass sein? Während des Config Prozesses scheint der FPGA sich Daten zu holen, da ich den CCLK Ausgang mal auf's Oszi gelegt habe und ich da nen Takt mit 1,25MHZ sehen konnte... FPGA ist wie folgt konfiguriert: M0 = 1 M1 = 0 M2 = 0 VS0=1 VS1=1 VS2=1
Wolfgang M. schrieb: > DONE ist mit dem PIC verbunden und aus irgendwelchen diversen Gründen > bleibt die Datenleitung immer auf Low. Im ISE-Projekt-Navigator gibt es bei Generate Programming File die Einstell-Möglichkeit "drive DONE-pin high".
Hm, jetzt bin ich mir unsicher ob der DONE Pin vom FPGA gesetzt wird sobald er die Konfig geladen hat, oder vom PIC sobald er die Konfig zum FPGA geschoben hat. EIgentlich sollte es doch laut Moding PINs vom FPGA gezogen werden oder, und somit der DONE Pin vom FPGA gesetzt werden. Ich glaube dass der PIC das Ding überwacht und je nachdem die LED ACT treibt. Wenn du sagst dass die Xilinx Umgebung die Einstellmöglichkeit bietet DONE auf HIGH zu treiben, heisst das dass der FPGA das selber macht, sobald er fertig mit dem ziehen der Konfig ist? Woher weiss der FPGA ob er fertig ist? Stellt man die Größe des Flash in der Umgebung beim Synthetisieren ein? Ah. Sehe grade in der Board Doku. Der FPGA zieht die Konfig.
Wolfgang M. schrieb: > PROG_B ist so lange high wie ich die Reset Taste gedrückt halte. Dein Satz ist nicht ganz verständlich. Mit einem Low-Signal auf der PROG_B-Leitung startet man den Initialisierungsprozeß. Im Normalfall ist PROG_B High. Vermutung von mir, da ich die Schaltung nicht kenne: Wenn du die Reset-Taste betätigst, sollte PROG_B auf Low gehen und die Konfig-Daten einlesen. > Jetzt habe ich mal ein wenig ins DB eingelesen. > > DONE ist mit dem PIC verbunden und aus irgendwelchen diversen Gründen > bleibt die Datenleitung immer auf Low. Eigentlich sollte diese doch auf > High gehen sofern alle Daten vom FPGA geladen wurden. > > Im Datenblatt steht dass so lange DONE auf Low ist der Startup Prozess > verhindert wird. > > Ich vermute mal dass es also am PIC liegt der die DONE Leitung nicht auf > high zieht, kann dass sein? Der PIC ist nicht für die DONE Leitung verantwortlich, sondern der FPGA. Wenn der FPGA die DONE-Leitung nicht auf High setzt, hat er z.B. kein gültiges Konfigurations-File geladen/gefunden. Gruß, Thomas EDIT: Da war ich wohl etwas langsam beim tippen...
Hm, jetzt hab ich ne Idee. Die Software des PIC kann ich zum schreiben / sowie zum auslesen des SPI Flashs hernehmen. Mal sehen ob die gleichen Daten gelesen werden wie geschrieben. Vielleicht ist das ja die Ursache... Was hab ich sonst noch an Möglichkeiten festzustellen ob's ein FPGA Problem ist, ob der Flash hinüber ist, oder ob ich schlicht und einfach die falsche Software in den Flash geladen habe?
Wolfgang M. schrieb: > Hm, jetzt bin ich mir unsicher ob der DONE Pin vom FPGA gesetzt wird > > sobald er die Konfig geladen hat, oder vom PIC sobald er die Konfig zum > > FPGA geschoben hat. Leider bezeichnet Xilinx den Pin funktionslogisch falsch! In den Referenz-SCH wird der immer wie lo active verdrahtet, was dazu führt, dass die LED aus geht. Drive Done high braucht man nur, wenn man keinen pullup hat, bzw in einer längeren Kette mit mehreren arbeitet. Im Grunde sollte es so sein, dass die Leitung done auf VDD gepullt ist und von jedem einzelnen FPGA runtergezogen wird, das noch unkonfiguriert ist. Sobald die Config steht, geht der Pin auf TRistate und überlässt den anderen die Entscheidung.
Da liegt der Hund begraben. Der FPGA sagt nicht dass er fertig wird. Hm. Kann das jetzt ein FPGA Problem sein, oder ein Flash Problem? Gibts da irgendwelche Pins die man abgreifen kann um zu sehen dass der FPGA noch nach nem validen Konfig File sucht. Was macht der FPGA wenn er keine gültige Konfig vorfindet? Loopt er dann in ner Endlosschleife und sucht gar nichts mehr? oder sucht er permanent weiter? Und woran sehe ich überhaupt dass ne Konfig gültig ist? Hab hier ein Bin File und ein MCS File vorliegen. Müssten doch beide funktionieren oder?
Problem gelöst. Falsche Software. Habs aber erst gemerkt nachdem ich nochmals nen Reset am FPGA durchgeführt habe. Anscheinend hat er zwei Anläufe gebraucht.
Jetzt würds mich aber trotzdem noch interessieren ob der FPGA kontinuierlich pollt oder nicht oder ob er sich "aufhängt" Ausserdem scheinst noch ne ziemlich unzuverlässige Hardware zu sein. In 2 von 4 Versuchen klappts, in den anderen nicht. Deswegen kam das Board wohl auch durch die HW checks. Muss es wohl austauschen lassen...
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.