Quickstart CPLD

Gast #203095
Lesenswert?

Hallo,

ich bin gerade dabei mich in die CPLDs zu vertiefen. Ich habe mir einen
Programmer und ein Testboard geätzt & bestückt mit einem XC9536...

Beim Durcharbeiten des Quickstart.pdf für das WEBPACK ISE 7.0 bin ich
leider nicht ganz glücklich geworden. Ich habe das Tutorial auf den
XC9536 umgemünzt. In dem Tutorial wird ein einfacher UP/DOWN-Counter in
VHDL programmiert, simuliert, gemappt...Das hat auch alles schön
funktioniert. Auch das downloaden auf das Target funktioniert. ABER die
LEDs machen alles andere als binär zählen. Sie blinken in einem nicht
auszumachenden Wechselspiel, obwohl Simulationergebnis das Richtige
anzeigt.

Ich glaube ich habe ein Problem mit dem CLOCK-Signal,bei dem Counter.
In dem UCF File müssen die Zeiten für die CLOCK angegeben werden. Da
bin ich mir überhaupt nicht schlüssig was ich da eintragen soll. Bzw.ob
sich das überhaupt auf den Code auswirkt.

Vielleicht hatte ja jemand das gleiche Problem und hat es schon gelöst.
Ich bin dankbar für jede Idee.

MfG Michael

PS:Ich auch ein paar einfache Logikverknüpfungen programmiert, die
funktionieren alle super. (Also Hardware scheint zu stimmen).
Gast #203099
Lesenswert?

Der Code ist OK.

Wie hoch ist Deine Taktfrequenz?
Welches Gehäuse hat der CPLD und welchen Pin benutzt Du als
Takteingang?
Was genau machen die LEDs? Wird da binär gezählt, aber die LEDs sind
falsch angeordnet?
Was passiert wenn Du die Taktfrequenz ordentlich runterdrehst,
z.B. 1 Hz?
Gast #203100
Lesenswert?

Taktfrequenz liegt bei ca 10 Hz. Das Gehäuse ist ein PLCC44.
Ich benutze den Pin5 IO_GCLK.
Die LEDs blicken schon in einem Code der sich nach 15 mal wiederholt.
Die LEDs sind definitiv nicht vertauscht.

Vielen Dank für die Hilfe und sorry für die verspätete Antwort.

Michael
Gast #203101
Lesenswert?

Das geht ja auch, du selektierst mit linken Mausklick die Testbench
Source und stellst über rechten Mausclick die ModelSim Properties ein.
Es sollte sich ein Popup öffnen. Dort kannst du "Simulation
Resolution" und "Simulation Run Time" einstellen. Wichtig ist das
die Zeitangabe ein Vielfaches der Auflösung ist. Wenn du also mit
Picosekunden Auflösung arbeitest kann in Laufzeit ein ziemlich großer
Wert drinnen stehen.

Gruß Hagen
Gast #203106
Lesenswert?

>Die LEDs blicken schon in einem Code der sich nach 15 mal wiederholt.
>Die LEDs sind definitiv nicht vertauscht.

Das sieht für mich aber verdammt nach danach aus.

Programmier halt einfach mal ein Lauflicht:

Mach count_int anstatt 4 Bits 2 Bits breit und schreib anstatt
"count_out <= count_int" folgendes:

  with count_int select
    count_out <= "0001" when "00",
                 "0010" when "01",
                 "0100" when "10",
                 "1000" when others;


Da siehst Du ja dann ob die LEDs in der richtigen Reihenfolge leuchten.
Gast #203108
Lesenswert?

Also der Code (wie schon jemand schrieb) scheint in Ordnung zu sein.
Das einzige, was mir noch einfällt, ist, dass die Pins des CPLD
softwaremäßig falsch zugeordnet sind. Schau mal, ob unter
"Properties" im Kontext von "User Constraints", "Use Location
Constraints" die Option "Always" aktiviert ist. Wenn "Try" aktiv
ist, dann schau nach, ob die Pinbelegung wirklich mit der von dir
gewünschten übereinstimmt.

Gruss Henrik
Gast #203109
Lesenswert?

Hallo Henrik,

danke für den Tip. Es ist (leider) always aktiv.

Mir fällt da noch was ein. Ich hatte beim Punkt Implement Design immer
eine Warning bei Fit.

CPLD:823 - Clock CLK appearing in an
OFFSET timespec currently must be explicitly declared as a global
clock...".

Ich habe dann die Warnung nach dem vorgeschlagenen Tipp repariert.
--------------------------------------------------------------------

The OFFSET constraint applies only to CPLDs when the clock is on a
global clock net. This can be achieved by performing one of the
following:

1. Placing the following constraint on the clock net
NET myclock BUFG=CLK;
(replace myclock with the name of the clock signal).

2. Inserting a BUFG component in the clock path immediately after the
input pin.

Either of the above will force the CPLD Implementation tools to use a
global clock pin of the CPLD for this input. You might also pin assign
to a specific global clock pin if desired.

Currently OFFSET constraints may not be applied to clocks on non-global
clock nets. To work around this issue, apply From:To constraints for the
clock path and the data paths individually.

Ich war mir da nicht sicher ob ich das richtig verstanden habe. Ich
habe in User Constraints (text), die Zeile:

NET "CLOCK"  LOC = "P5" | BUFG = CLK ;
----------------------------------------------------
eingebunden.

Evt hab' ich da was falsch gemacht....
Im Anhang ist das counter.ucf File. Vielleicht kann da jemand mal einen
Blick drauf werfen.

Vielen Dank,
Michael
Angehängte Dateien:
Gast #203114
Lesenswert?

Also ich hab mir das pdf nochmal angeschaut. Ich habe mir ja nur die
Idee von der Schaltung geholt.

Die Package in der pdf-Schaltung ist ein VQFP ich habe ein PLCC.
PLCC != VQFP oder ????


Wie gesagt das mapping meiner Pins sollte stimmen, da ja das Lauflicht
perfekt funktioniert.

Michael
Gast #203115
Lesenswert?

Die blödesten Fehler sind die, wo man anschliessend nicht weiss woran es
lag.

Ich habe mir das Service Pack 2 über Nacht gezogen. Also Updatepackete
größer 300 MB kann man nicht als Update bezeichnen, oder? Sondern
vielmehr als neues Programm.

Aufjedenfall funktioniert jetzt der unveränderte Code, ein gutes hat
natürlich auch eine verlängerte Fehlersuche man lernt das Programm
richtig gut kennen :-).

Vielen Dank an alle die mir geholfen haben,
Michael

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren