Hallo,
Ich habe folgendes Problem. Ich habe einen 16Bit Binär Counter
Implementiert, und dann die Werte auf einen Outputpin gelegt. In Pace
dann den Clock Eingang auf die interne Clock (P38 | IO_GCK2) und den
0'te Bit auf einen Ausgang (P119) gelegt. Leider kommt auf dem Ausgang
kein Signal an, wenn ich diesen mit einem Oszi abgreife. Eigentlich
sollte dort ja die Halbe Tacktfrequenz anliegen. Das Problem tritt
typischerweise auch an allen andern Bitstellen auf. Hauptproblem dabei
ist aber, dass er intern (auf dem CPLD) wohl nicht zählt. In der
Simulation funktioniert alles einwandfrei.
Am Ausgang selber liegt es wohl nicht, wenn ich den Tackt über einen
obuf direkt wieder ausgebe, kann ich den 1zu1 abgreifen.
Hoffe jemand hat eine Idee.
MFG
Christian
Noch ein paar Angaben:
"programmieren" tu ich mit Xilinx ISE 10.1.03
programmieren in " da ich fast ausschließlich in Schematic arbeite.
Zum CPLD: Xilinx Coolrunner-II Xc2c256-TQ144 (kein X-Board)
Mit dem Takt haste wohl recht ;-).
Den Counter hab ich aus der Symboldantenbank von ISE. Genau genommen ist
es der CB16CE. Der CLR ist in diesem Fall direkt auf GND weil ich
erstmal gucken wollte ob er überhaupt was ausgiebt. Eigentlich müsste er
dann doch direkt wieder bei 0 anfange, oder nicht?
MFG
- Schau die den Fitter Report an.
Dort siehst Du genau, was erzeugt wurde und auf welche Pins gelegt
wurde.
- Zum Überprüfen, ob richtig Programmiert wurde, kannst Du die Signatur
zurücklesen.
Hm,
Also ich hab mir den Fitterbericht angeguckt und musste festellen, dass
die Ausgänge nicht auf den Pinnen ausgegeben werden wie ich sie in PACE
eingestellt habe. Zu dem werden selbst die Ausgänge "gefittet" ( ich
nenn das mal so), denen ich geigentlich garkein Pin zugewiesen habe. In
PACE ist alles, selbst nachdem ich die ise, ucf und ngd Datein neu
einlese, so wie ich es eingestellt habe.
Woran kann es liegen, dass ISE mir die Pins verstellt, zumal es in
andern Projekten mit der selben ISE version am selben Rechner und dem
selben CPLD schon mal funktioniert hat.
MFG
Christian
Woran es liegt kann ich auch nicht sagen, aber Du kannst die ucf Datei
auch manuell ändern und richtigstellen.
Mit PACE stehe ich immer auf Kriegsfuß, habe eigenlich noch nie
verstanden wie es funktioniert.
Leider hat der Cleanup nicht geholfen.
Hier mal die UCF datei. Diese ist nun von einem ander Projekt. Das
Problem ist dasselbe.
1
#PACE: Start of Constraints generated by PACE
2
3
#PACE: Start of PACE I/O Pin Assignments
4
NET "DataOut_clk" LOC = "P102" ;
5
NET "DataOut_Sync" LOC = "P104" ;
6
NET "Intern_clk" LOC = "P38" ;
7
8
#PACE: Start of PACE Area Constraints
9
10
#PACE: Start of PACE Prohibit Constraints
11
12
#PACE: End of Constraints generated by PACE
Die Pinbelegungen stimmen laut UCF file.
Hier mal die ersten 5 Zeilen der Pinliste des Fitterreports.
1
Pin List
2
Pin Num Pin Type Assigned Signal Bank I/O Standard
3
1 VCC VCC
4
2 I/O/GTS2 DataOut_clk 2 LVCMOS18
5
3 I/O/GTS3 DataOut_clk_LED 2 LVCMOS18
6
4 I/O DataOut_Sync 2 LVCMOS18
7
5 I/O/GTS0 DataOut_Sync_LED 2 LVCMOS18
Was auffällt ist halt, dass die Pinnummer nicht mit denen aus dem UCF
file übereinstimmen und, dass den _LED Signalen auch Pins zugewiesen
sind obwohl laut UCF keine Einstellunge vorgenommen wurden.
MfG
Alle Signale aus dem Top Level Modul werden immer an Pins geführt,
unabhängig davon ob sie im UCF File zugewiesen wurden.
Wenn keine Vorgabe gemacht wird, dann werden sie irgendwie plaziert, wo
es dem Fitter günstig erscheint.
> Nur leider wurden ja auch die im UCF File> vorgegebene Einstellungen nicht übernommen
Im UCF steht nichts von einem P119 ... :-o
(da fehlen auch die Signale DataOut_clk_LED und DataOut_Sync_LED)
Ist das UCF-File unter den Projekt-Sources Fenster aufgelistet?
Wenn Du auf das UCF File doppelklickst, dann öffnet sich der Timing
Constraints Editor.
Links kann man den Punkt Ports auswählen, dann bekommst Du eine Liste
der Signale. Was steht dort ?
@ Lothar Miller
Das Missverständniss mit der Pinbelegung P119, resultiert daraus, dass
ich nun die UCF und den Fitterreport von dem eigentlichen Projekt
gepostet habe. Die Angaben die ich in meinem ersten Post gemacht habe,
bezogen sich auf ein neues Projekt, welches ich nur zu Testzwecken
gemacht habe um zu sehen woran es liegen könnte.
Der Stand des Problems:
Nach dem ich heute Morgen wieder an meinem Rechner gegangen bin, und
Implement Design noch mal neu gestartet habe, musste ich zu meiner
Verwunderung festellen, dass die Pins nun so gelegt sind wie ich es
geplant habe.
Das Taktsignal kann ich nun auch abgreifen. Auch unter Ports scheint nun
alles zu stimmen. Ich befürchte das ISE da ein Problem hatte. Was genau
kann ich nicht sagen und hoffe das es nich mehr auftritt.
Leider ist das Signal was durch den Zähler generiert wird nicht an dem
Angegebene Pin abgreifbar, obwohl die Simulation mir zeigt, dass dort
ein Signal anliegen sollte. Ich werd noch mal ein wenig rumprobieren.
Wenn ich das Problem weiter eingrenzen kann werd ich mich nochmal
melden.
Danke schon mal bis hierhin für die Hilfe.
MfG
So jetzt auch registriert ;-).
Das Problem scheint jetzt soweit behoben. Gelegen hat es an der
fehlenden Zuordnung der Pins. Die Ursache ist im nachhinein recht
einfach, aber wohl ein Schwachstelle von ISE.
Teilweise hat ISE, nachdem ich die Pins in PACE zugeordnet habe das UCF
file nicht in das Projekt mit eingebunden. Nachdem ich das per addSource
manuel gemacht habe funktionierte das dann auch.
Leider hab ich die Erfahrung gemacht, das ISE zwischenzeitig die UCF
trotzdem noch ignoriert. Zum beispiel, wenn schon einmal eine UCF im
Prjekt vorhanden war, oder man ein andere Schematik als Toplevel Modul
gesetzt hat. Hier half eigentlich nur ein Cleanup, teilweise war auch
neustart von ISE von nöten.
Naja hinteher ist man dann immer schlauer und ich weis wonach ich gucken
muss, wenn wieder mal was nicht funktioniert.
Danke nochmal für die Hilfe
MfG
Christian