Hallo zusammen!
Ich bin ein absoluter Neuling in Sachen FPGA. Daher entschuldigt, wenn
die Problemlösung trivial sein sollte....
Also Folgendes:
Ich benutze einen FPGA der Marke XILINX Spartan6, programmiert wird im
ISE Webpack. Ich habe ein kleines Testprogramm in VHDL geschrieben, um
so einen ersten Einstieg zu bekommen. Es handelt sich um ein AND Gatter:
1
libraryIEEE;
2
useIEEE.STD_LOGIC_1164.ALL;
3
4
entityAND1is
5
Port(A:inSTD_LOGIC;
6
B:inSTD_LOGIC;
7
C:outSTD_LOGIC);
8
endAND1;
9
10
architectureBehavioralofAND1is
11
12
begin
13
14
C<=(AANDB);
15
16
endBehavioral;
Das UCF. File:
1
NET"A"LOC="P5"|IOSTANDARD=LVTTL;
2
NET"B"LOC="P6"|IOSTANDARD=LVTTL;
3
4
NET"C"LOC="P7"|IOSTANDARD=LVTTL;
Ich lege also nun eine Spannung an P5 und P6 an (3,5V) und dann sollte
an P7 gemäß der Wahrheitstabelle eines AND-Gatters ein High-Pegel
anliegen.
Allerdings kann ich mit einem Multimeter nur ein Rauschen von 80 mV
feststellen.
Ich kann den FPGA ohne Fehler programmieren, dazu habe ich das
Statusregister ausgelesen. Der DONE PIN besitzt den Wert 1.
Ich habe auch versucht, andere Pins anzusprechen, aber überall nur ein
Rauschen von 80mV....
Ich habe absolut keine Ahnung, was falsch sein kann. Wie gesagt, ich bin
absoluter Neueinsteiger, habe früher mit Atmel µC gearbeitet, da war
alles überschaubar ;)
Gruß
> (3,5V)
Ist schon grenzwertig. Versuche lieber, bei max. 3.3V zu bleiben...
> Ich habe absolut keine Ahnung, was falsch sein kann.
- Sagt dir das Pinlisting nach dem Routing auch die richtigen Pins?
Nicht, dass das UCF aus irgendwelchen Gründen ignoriert wird.
- Es gibt beim internen Startup des FPGAs die Möglichkeit, das an einen
Takt zu binden. Das Feature muss bei dir ohne Takt natürlich aus sein
(müsste bei den Bitstream-Optionen sein).
- Kannst du statisch auf die Pins was geben (C<='1')?
Was ich hier von dir sehe, sieht für mich mal soweit gut aus und ich
würde auch erwarten, dass das wie gewünscht funktioniert.
Aber irgendwo muss ja noch ein Problem sein.
- Gibt der Synthesizer oder das Place&Route Warnungen aus? Hast du alle
durchgelesen und verstanden? Da steckt oft sehr wichtige Information
drin.
- Bist du sicher, dass die Pins die du nutzt P5, P6 und P7 am Gehäuse
des FPGA sind und nicht die Bezeichnung auf deinem Board (und der FPGA
Pin anders heisst)? Dein FPGA müsste 256 Pins oder mehr haben um Pins
mit P* zu haben.
- Bist du sicher, dass du dein Design in den FPGA geladen hast und nicht
ein anderes Design?
Sonst habe ich grad keine Ideen.
Hallo,
ich habe einen XC6SLX9, da sind die Pins alle mit Pxx gekennzeichnet.
Den Fehler, einen falschen Pin erwischt zu haben, kann ich zu 100%
ausschließen, das habe ich x-fach gecheckt.
Auch eine statische Zuweisung (C<='1') ist erfolglos. Es gibt auch sonst
keine Fehler- oder Warnmeldungen. Wo kann ich denn das besagte
Pinlisting einsehen?
Danke!
entchen schrieb:> Ich habe auch versucht, andere Pins anzusprechen, aber überall nur ein> Rauschen von 80mV....
Wie sieht denn die Hardware aus? Ist das ein fertiges Eval- Board?
Hallo
ich habe mit einem Oszi alle Spannungsversorgungen überprüft. Alles so
wie es sein soll, kein Kurzschluss oder Ähnliches.
Das Board an sich sollte fehlerfrei sein.
Gibt es vielleicht noch ein Startup Signal, welches an den FPGA geführt
werden muss, damit dieser anläuft?
Gruß
Nee, der läuft von alleine an. Wenn DONE high wird (achtung, open
drain!) dann hat er ein Design geladen. Prog_B low pulsen lädt neu, aber
wenn du nur über JTAG das Bitfile rein lädtst bringt das ja nix.
So ich habe tatsächlich einen Fehler entdeckt:
Der FPGA lässt sich programmieren; es wird kein Fehler ausgeworfen.
Wenn ich aber danach versuche, das Statusregister auszulesen, dann
bekomme ich Fehlermeldungen:
1
INFO:iMPACT - Current time: 25.04.2014 13:09:09
2
PROGRESS_START - Starting Operation.
3
Maximum TCK operating frequency for this device chain: 25000000.
4
Validating chain...
5
Boundary-scan chain validated successfully.
6
'1': Programming device...
7
LCK_cycle = NoWait.
8
LCK cycle: NoWait
9
done.
10
'1': Reading status register contents...
11
[0] CRC ERROR : 0
12
[1] IDCODE ERROR : 0
13
[2] DCM LOCK STATUS : 1
14
[3] GTS_CFG_B STATUS : 1
15
[4] GWE STATUS : 1
16
[5] GHIGH STATUS : 1
17
[6] DECRYPTION ERROR : 0
18
[7] DECRYPTOR ENABLE : 0
19
[8] HSWAPEN PIN : 1
20
[9] MODE PIN M[0] : 1
21
[10] MODE PIN M[1] : 1
22
[11] RESERVED : 0
23
[12] INIT_B PIN : 1
24
[13] DONE PIN : 1
25
[14] SUSPEND STATUS : 0
26
[15] FALLBACK STATUS : 0
27
INFO:iMPACT:2219 - Status register values:
28
INFO:iMPACT - 0011 1100 1110 1100
29
INFO:iMPACT:579 - '1': Completed downloading bit file to device.
Oliver schrieb:> Wenn ich aber danach versuche, das Statusregister auszulesen, dann> bekomme ich Fehlermeldungen:
Und wo genau ist da jetzt der Fehler?
Hallo,
die Meldung des Statusregisters nach der Programmierung und das Ergebnis
nach erneutem Auslesen des Statusregistres ist nicht identisch, z.B. ist
der Done und INIT_B Pin nicht gesetzt...
Da stimmt wohl was mit der Beschaltung des Prog_B oder Init_B Pins
nicht. Im Boot Status und History steht drin, dass kein File geladen
wurde, also hat jemand nach dem Programmieren nochmal an der Prog_B
Leitung gezupft oder die Spannung ausgeschalten oder so. Dass der FPGA
intern nur einen SRAM für die Config hat, weißt du, oder? Also Spannung
weg = Config weg.
Bei Fehlermeldungen wird das Programm nicht fertig compiliert.
Das sind nur Warnungen die nichts aussagen über deine Funktion.
Du kannst im Programm die Pins die du nicht brauchst auf "lo" setzen.
Dann funktioniert es.
Also kontrollier dein PINS.
Gruss
Peter, du bist erst seit 2 Wochen im FPGA Geschäft unterwegs. Dazu hin
noch mit FPGAs einer anderen Firma. Meinst du, es ist sinnvoll, dass du
hier Ratschläge gibst?
Lothar Miller schrieb:> Peter, du bist erst seit 2 Wochen im FPGA Geschäft unterwegs. Dazu hin> noch mit FPGAs einer anderen Firma. Meinst du, es ist sinnvoll, dass du> hier Ratschläge gibst?
Bitte zur Sache. Sind Peters Vorschläge bzgl. unbenutzer Pins und
Fehleranalyse zweckdienlich oder nicht?
MfG,
Fpga Kuechle schrieb:> Lothar Miller schrieb:>> Peter, du bist erst seit 2 Wochen im FPGA Geschäft unterwegs. Dazu hin>> noch mit FPGAs einer anderen Firma. Meinst du, es ist sinnvoll, dass du>> hier Ratschläge gibst?>> Bitte zur Sache. Sind Peters Vorschläge bzgl. unbenutzer Pins und> Fehleranalyse zweckdienlich oder nicht?
Sie sind NICHT zweckdienlich, weil kein Wort dazu verloren wird, WIE das
zu machen ist. DASS man die Zuordnung kontrollieren muss, ist eh klar.
Und wie man die Pinzuordnung macht wurde auch erwähnt...
Peter mischt den ganzen Laden auf. Köstlich :-)
Und das geilste ist, dass sein Tipp auch noch stimmt: Wenn man die
nichtbenutzten Pins auf lo hat ( er meint sicher pulldown) dann kriegt
man sofort mit, ob das routing stimmt und der pin überhaupt gemapped
wird.
Hat hier schon einer dran gedacht, mal das PINout file zu checken?
Und, ist überhaupt der richtige FPGA eingestellt?
Egal, irgendwo hast Du Recht:
Wenn in einigen Jahren die Bierbachs haufenweise die Foren bevölkern und
ihr Halbwissen weitergeben, haben die Millers keine Chance mehr. Dann
dominieren deren Vorschläge die threads und die Ergebnisse werden immer
mittelmässiger, mir kanns Recht sein.
Ich lach mich schlapp.
Laut Statustegistern ist gar kein Bitfile geladen worden, da sind die
Pin Zuordnungen erst mal zweitrangig. Ich tippe auf fehlenden Pull Up am
Init_B Pin.
Ist das Board Home made...als Anfänger ...
Hast du ein gekauftes 2tes Test-Board das geht ?
Hast du ein Scope ?
Hast du mal eine LED mit Driver, das Multimeter is nicht so gut.
Tip:
Ich würde mal mit Chipscope da ein Test-HDL machen, u. das via JTAG
Clock
machen (via Project einstellen ).
Tip:
------------------------------------------
UCF
NET "A" LOC = "P5" | IOSTANDARD = LVTTL ;
mit | PULLUP. noch dazu via UCF
------------------------------------------
Tip:
Ein RS232 Port machen .via Terminal ..
HDL Geichung RX route to TX.
--> RS232 LoopBack und damit testen.
Tip:
Ext. Oscilator abklemmen. (evtl. Störung during Config).
########################################################################
#
Gruss Holger.
Tolle Samstagabend-Unterhaltung!
Es gab noch nicht einmal einen Schaltplan oder wenn auch nur ein Foto
des Boards.
Ich könnte ja auch noch mal Knochen werfen und mir daraus irgendwas
zusammenreimen, ich lass es aber wohl lieber ...
Also: Was für ein Board ist das? Schaltplan? Foto?
Gruß,
Thomas
PS: Gleich im ersten Satz vom TO steht dass er Neuling ist. Da helfen
Tipps mit Chipscope und RS232-Port ganz besonders ...
FPGA-Analysator schrieb im Beitrag #3632085:
> Peter mischt den ganzen Laden auf. Köstlich :-)>> Und das geilste ist, dass sein Tipp auch noch stimmt: Wenn man die> nichtbenutzten Pins auf lo hat ( er meint sicher pulldown) dann kriegt> man sofort mit, ob das routing stimmt und der pin überhaupt gemapped> wird.>
Kann man nicht verlagemeinern, beim MachXO2 von Lattice haben die Pins
vor der Konfiguration und wenn unbenutzt einen weak Pulldown, also low.
>> Wenn in einigen Jahren die Bierbachs haufenweise die Foren bevölkern und> ihr Halbwissen weitergeben, haben die Millers keine Chance mehr. Dann> dominieren deren Vorschläge die threads und die Ergebnisse werden immer> mittelmässiger, mir kanns Recht sein.>
Siehe oben: Wie war das mit dem Halbwissen?
Thomas T. schrieb:> Tolle Samstagabend-Unterhaltung!>> Es gab noch nicht einmal einen Schaltplan oder wenn auch nur ein Foto> des Boards.
Ja , da könnte wirklich die ursache liegen. Es ist ja nicht unüblich das
der FPGA ein signal generiert das reset-Mimik des boards aktiviert. wenn
das nach dem laden des testdesign den falschen Pegel führt, fängt die
ganze configuration von vorn an.
MfG
> Ist mir total unbekannt.
Mir fällt auf: ich weiß von dir noch wesentlich weniger als du von mir
wissen könntest...
> Ist mir total unbekannt.
Das ist nicht das Einzige. Können wir jetzt wieder zur Sache kommen,
oder willst du eine persönliche Diskussion anfangen? Die können wir
gerne mal im Knopf in Warthausen ausdiskutieren. Oder ich komme mal hoch
zu dir im Urlaub...
Du könntest auch einfach eine PN an mich schicken und Fragen, was ich so
mache...
Lothar Miller schrieb:>> Ist mir total unbekannt.> Das ist nicht das Einzige. Können wir jetzt wieder zur Sache kommen,> oder willst du eine persönliche Diskussion anfangen?
Pass auf Alter, er hat schon einen anderen hier per PM in Angst und
Schrecken versetzt. Die neuen Alten sind nicht zu unterschätzen :-)
Naja, der Peter, alias "Funkheld" ist auch schon z.B. im
Robotrontechnik-Forum sehr merkwürdig dadurch aufgefallen, dass er
offensichtlich nicht gewillt war, sich die simpelsten Grundlagen selbst
anzueignen. Nach entsprechenden Hinweisen, vielleicht doch mal im Netz
oder in Büchern nach Wissen zu stöbern, wurde er dann pampig, und das
nicht nur einmal.
Nun ist er also hier gelandet und ich kann durchaus verstehen, wenn hier
jemandem der Kragen platzt
Sinus Tangentus schrieb:> Naja, der Peter, alias "Funkheld" ist auch schon z.B. im> Robotrontechnik-Forum sehr merkwürdig dadurch aufgefallen, dass er> offensichtlich nicht gewillt war, sich die simpelsten Grundlagen selbst> anzueignen. Nach entsprechenden Hinweisen, vielleicht doch mal im Netz> oder in Büchern nach Wissen zu stöbern, wurde er dann pampig, und das> nicht nur einmal.
[Ironie Ein]
Ach komm, Google liefert soooo viele Ergebnisse, wer soll sich denn da
durcharbeiten?
Da kann man doch lieber in einem Forum eine Frage stellen und die
Antwort findet sich dann im Thread direkt unter der Frage...
[Ironie Aus]
> Nun ist er also hier gelandet und ich kann durchaus verstehen, wenn hier> jemandem der Kragen platzt
100% ACK...
Gruß,
Thomas
PS: Ich gehe mal im Robotrontechnik-Forum stöbern... :-)
Peter Bierbach schrieb:> Miller hin oder her ...ich weiss nicht was er er real in der> Bundesrepublik produziert. Ist mir total unbekannt.
So hat jeder seine Bildungslücken. Nur versucht vor so einer
öffentlichen Antwort jeder Andere erst mal selber, diese Lücke zu
stopfen. In diesem Fall ist das nicht arg schwer. Das Kreuzworträtsel
der Times ist signifikant komplizierter.
Zum Thema: ich warte noch immer gespannt auf den Schaltplan...
Sinus Tangentus schrieb:> Naja, der Peter, alias "Funkheld" ist auch schon z.B. im> Robotrontechnik-Forum sehr merkwürdig dadurch aufgefallen,
und nicht nur dort
Lies mal im FPGA Forum!
Über dies gibt es sogar im Xilinx Forum seit Kurzen einen Typen, der
Fragen derselben Qualität stellt!
Hallo zusammen,
hier hat sich ja einiges getan ;)
Zum Board: Dieses funktioniert, allerdings kann ich das hier nicht
veröffentlichen, da das Teil einer Studienarbeit an der Uni ist ;)
Ich habe den Fehler in der Zwischenzeit gefunden: Der FPGA ließ sich
korrekt programmieren, allerdings habe ich bei den Process Properties
wohl den Punkt enable external clock übersehen; jetzt ist der FPGA auch
mit dem Takt versorgt und arbeitet.
Zu den Process Properties habe ich dann noch eine Frage:
Wenn ich einen externen Flashspeicher installieren und beschreiben will,
müssen dann irgendwelche werte in den Process Properties geändert
werden?
Ich habe vor, den Speicher M25P80 zu nehmen. Daher muss doch die
ISP-Busweite auf 1 gesetzt werden, richtig?
Vielen Dank bisher für euer Bemühen.
Oliver schrieb:> Ich habe den Fehler in der Zwischenzeit gefunden: Der FPGA ließ sich> korrekt programmieren, allerdings habe ich bei den Process Properties> wohl den Punkt enable external clock übersehen; jetzt ist der FPGA auch> mit dem Takt versorgt und arbeitet.
Wie is dann die Zeile aus dem Log
[2] DCM LOCK STATUS : 1
zu erklären? Oder beziehst Du Dich hier auf den StartUpClock?
MfG,
Hallo
ja ich meine die StratUpClock. Außerdem habe ich in den
ProcessProperties floating bei unused IO-Pins gesetzt.
Allerdings will mein SPI Flash nicht so recht, ich kann diesen nicht
programmieren, ein Verify funktioniert auch nicht. Checksum schlägt auch
fehl. Die Readbackdatei zeigt mir, dass der Flash komplett leer ist.
Hier mal der Log aus iMPACT:
1
ROGRESS_START - Starting Operation.
2
Maximum TCK operating frequency for this device chain: 25000000.
3
Validating chain...
4
Boundary-scan chain validated successfully.
5
'1': SPI access core not detected. SPI access core will be downloaded to the device to enable operations.
INFO:iMPACT:2492 - '1': Completed downloading core to device.
15
'1': IDCODE is '13' (in hex).
16
'1': ID Check passed.
17
'1': IDCODE is '13' (in hex).
18
'1': ID Check passed.
19
'1': Erasing Device.
20
'1': Using Sector Erase.
21
'1': Programming Flash.
22
'1': Reading device contents...
23
Failed at address, 0
24
'1': Verification Terminated
25
INFO:iMPACT - '1': Flash was not programmed successfully.
26
PROGRESS_END - End Operation.
27
Elapsed time = 14 sec.
So wie das scheint, erfolgt im FPGA der korrekte Aufbau der
SPI-Schnittstelle. Auch wird der Flashspeicher richtig erkannt
(M25P80)...
Auch im Internet und auf Xilinx konnte ich keine weitere Beschreibung
des Problems finden!
Gruß
Da stimmt was am Flash oder der Verbindung dahin nicht, der M25P80 hat
ganz sicher keine ID 13. Kontrollier nochmasl die Verdrahtung und
Spannung am Flash.
> Da stimmt was am Flash oder der Verbindung dahin nicht,
Dank der Überkreuzung MOSI/MISO und den mehrfachen
MOSI/MISO/CLK/CS-Pinbelegungen kann es gern passieren, dass man die
Falschen verdrahtet...
BTDT ;)
Nötig sind für M1=0 & MO=1 (SPI-Flash):
CSO_B -> /CS zum Flash
MOSI/CSI_B/MISO0 -> SI zum Flash
D0/DIN/MISO/MISO1 -> SO vom Flash
CCLK -> SCK vom Flash
> Nötig sind für M1=0 & MO=1 (SPI-Flash):> CSO_B -> /CS zum Flash> MOSI/CSI_B/MISO0 -> SI zum Flash> D0/DIN/MISO/MISO1 -> SO vom Flash> CCLK -> SCK vom Flash
Jap, die Verdrahtung stimmt soweit. Ich habe das Board nicht selbst
gefertigt, aber was mir auffällt, ist dass auch der D1/MISO2 Pin mit dem
CS des SPI Flashs verbunden ist....
In der Xilinx Application Note zu SPI Flashs habe ich keinen Hinweis
dazu gefunden...
Hallo,
noch eine kurze Ergänzung:
Mit dem Oszi habe ich die Signale an den Pins INITB, PROGB, CSOB und
CCLK erfasst.
Fazit: PROGB läuft, wie es soll, INITB geht kurz auf LOW (und sollte
dort bleiben), wechselt dann aber zu HIGH.
Daher liegt an CCLK auch nur kurz ein Clocksignal an; CSOB geht von LOW
sofort wieder auf HIGH.
Was kann denn das für eine Ursache haben, dass der INITB Pin nur kurz
auf LOW liegt? Von außen ist der INITB Pin mit einem 4,7 kOhm Pullup
versehen
ARGH, irgendwann kommt man mit den Signalen ganz durcheinander :D
Also: INITB geht kurz auf LOW, dann wieder auf HIGH (so ist es
richtig!). Allerdings bleibt INITB nicht auf HIGH, sondren fällt schnell
wieder auf LOW zurück, was nicht sein darf.
Hier die Signale, wie sie sein sollten:
http://www.xilinx.com/support/documentation/application_notes/xapp951.pdf
(Seite9 oben). Streng genommen ist das eine Applicatin Note für
Spartan3, sollte aber auch für Spartan6 gültig sein
Oliver schrieb:> aber was mir auffällt, ist dass auch der D1/MISO2 Pin mit dem> CS des SPI Flashs verbunden ist....
Das ist schon mal merkwürdig. Da weiß man nicht, was das Bootloader
Design auf der Leitung macht. Kannst du die auftrennen?
Erfolgt denn ein Zugriff auf den Flash? Normal hat der M25P80 die ID
0x20201410 also ist die 13 da ganz verkehrt.
> Allerdings bleibt INITB nicht auf HIGH, sondren fällt schnell> wieder auf LOW zurück, was nicht sein darf.
Könnte aber schon, INITB kann nach der Konfiguration als normaler Pin
arbeiten.
Oliver schrieb:> Allerdings will mein SPI Flash nicht so recht, ich kann diesen nicht> programmieren, ein Verify funktioniert auch nicht. Checksum schlägt auch> fehl. Die Readbackdatei zeigt mir, dass der Flash komplett leer ist.FPGA SPI x1/x2 Configuration Interface
aus dem UG470
Link:
http://www.xilinx.com/support/documentation/user_guides/ug470_7Series_Config.pdf
oder
UG332 from Xilinx if you are working with Spartan
Viel Erfolg.
Gruss Holger.
Christian R. schrieb:> Oliver schrieb:>> aber was mir auffällt, ist dass auch der D1/MISO2 Pin mit dem>> CS des SPI Flashs verbunden ist....
Hier ist noch ein Bild dazu.
Gruss Holger.
> M25P80 Device.
Hier als Vergleich für Spartan 3 SPI Mode. (MSPxx).
Oben auf dem Bild für (Series 7 )ist der SPI Data-Vevtor 2 Bit, Data at
Rising edge,und falling edge.
Fazit: FPGA Device muss zum SPI Inteface passen.
Gruss Holger.