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).
Kannst Du mal den Code posten?
>obwohl Simulationergebnis das Richtige anzeigt.
Funktionale Simulation oder Timingsimulation?
Sorry Jochen. Ich hab' vergessen auf Deine zweite Frage zu antworten. Die Simulation habe ich gestartet mittels anklicken von "Simulate Behavioral VHDL Model". Ich vermute funktionale Simulation.
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?
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
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
Hallo, hast du zufällig die Schaltung von Holger Klabunde aufgebaut? Damit hatte ich das gleiche Problem ;-) Ich hatte einfach nur die LED-Platine verkehrt gesteckt :( -=jens=-
Hallo Inder, ne hab' ich nicht. Die Schaltung, die ich aufgebaut habe, ist ein Abwandlung von der Xilinx vorgeschlagenen Schaltung xapp078.pdf.
>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.
Hallo Jochen, ich habe Deine Vorschlag programmiert. Ich habe ein perfektes Lauflicht. :-) oder doch :-( Ich hab' keine Ahnung, worans noch liegen kann....
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
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
Hallo Michael, wenn du dein Board nach der XAPP078 aufgebaut hast, liegen deine LEDs an den Pins:13,14,16,18-22 und nicht wie von dir angegeben auf 25-28. -=jens=-
ach ja CLK macht sich auf einen der GCKn Pins besser (muss allerdings nicht unbedingt)
>der 555 liegt lt. XAPP078 auf Pin 43 (GCK1)
Weil das ein VQFP-Gehäuse ist.
Beim PLCC stimmt Pin 5.
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
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
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.