Forum: FPGA, VHDL & Co. Problem | Ausgabe Counterwerte beim CPLD


von Christian (Gast)


Lesenswert?

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)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Tackt
Der Tackt ist eigentlich ein Takt ;-)

Woher hast du den Counter?
Wie ist der Reset beschaltet?

von Christian (Gast)


Lesenswert?

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

von Klaus F. (kfalser)


Lesenswert?

- 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.

von Christian (Gast)


Lesenswert?

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

von Klaus F. (kfalser)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Was steht im UCF File?

> selbst nachdem ich die ise, ucf und ngd  Datein neu einlese
Mach mal "Cleanup Project Files". Das hilft immer ;-)

von Christian (Gast)


Lesenswert?

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

von Klaus F. (kfalser)


Lesenswert?

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.

von Klaus F. (kfalser)


Lesenswert?

> Alle Signale aus dem Top Level Modul werden immer an Pins geführt,
Korrektur : Alle Ports aus dem Top-Level Modul

von Christian (Gast)


Lesenswert?

Gut zu wissen. Nur leider wurden ja auch die im UCF File vorgegebene 
Einstellungen nicht übernommen. Hast du da eine Idee zu.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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)

von Klaus F. (kfalser)


Lesenswert?

Ist die Fitting Option "Use Location Constraints" auch auf "Always" 
gesetzt ?

von Christian (Gast)


Lesenswert?

Jap, hat zwar etwa gedauert bis ich die Option gefunden habe, aber der 
Wert steht auf Always.

von Klaus F. (kfalser)


Lesenswert?

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 ?

von Christian (Gast)


Lesenswert?

@ 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

von Christian D. (cdrueke)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.