Forum: FPGA, VHDL & Co. Probleme mit der CLOCK


von jörn (Gast)


Lesenswert?

Moin,

ich habe mir ein XC9572-Experimentierboard gebaut und dieses an Stelle
des dort vorgesehenen NE555 mit 15 Hz mit einem 1 MHz Quarzoszillator
versehen. Nun wird dieser Takt auf dem Layout über eine relativ weite
Strecke geführt und auch die Masseführung ist nicht ganz optimiert.
Teste ich nun ein Programm, dass den Takt über einen 20bit Counter
runterteilen soll, so leuchten alle Leuchtdioden der angeschlossenen
Ausgabeleiste kontinuierlich, was wohl auf einen deutlich höheren Takt
(wahrscheinlich durch Störimpulse) schließen läßt (Bei einem 20bit
Counter sollte die MSB-LED doch wohl mit ungefähr 1 Hz blinken). Den
Takt kann man durch einen Jumper unterbrechen (der CLOCK-Eingang (P9
bei mir) ist dann NC). Mache ich dies, so erlöschen die LEDs, nähere
ich mich aber der unterbrochenen Taktleitung, so leuchten sie wieder
auf.
Liegt diese Störempfinlichkeit wirklich nur an meinem schlechten Layout
oder habe ich vielleicht Constraints falsch gesetzt? Sind CPLDs wirklich
so empfindlich für Störimpulse? (Ich habe in manchen Provisorien bei
anderen Bauteile höhere Takte noch schäbiger geführt und es ging
trotzdem)

Danke schon mal,

Jörn

von Jörn K. (joern)


Lesenswert?

Was für eine ISE Version benutzt du?

Prüf mal nach ob die Option "Create Programmable GND Pins on Unused
I/O" bei den Fittingeinstellungen gesetzt ist.

Gruß Jörn

von jörn (Gast)


Lesenswert?

Ich benutze die Version 7.1, habe ich mir gerade vor kurzem
runtergeladen.
Die Option mit den GND-Pins habe ich jetzt eingestellt. Geholfen hat es
leider nicht. Stimmt vielleicht etwas mit meinen Timing-Contraints
nicht? Ich habe eine High-Zeit von 500 ns und bei "Clock to Pad" und
"Pad to Setup" jeweils 50 ns.
Ich habe echt keine Ahnung, wodran mein Fehler noch liegen könnte.

Gruß,

Jörn

von Jörn K. (joern)


Lesenswert?

Die Option "GND-Pins" hat bei einem meiner Design für Probleme
gesorgt,
würde ich nicht unbedingt benutzen. Ich habe mich etwas ungeschickt
ausgedrückt.

Hast du mal dein Design simuliert, ob dort alle i.O. ist?

Poste mal deinen Code, dann ist die Fehlersuche etwas einfacher als
einfach nur herum zustochern.

Gruß Jörn

von tobias o. (Gast)


Lesenswert?

Habe mir mal mittels HCMOS Gatter und Quartz einen Taktgenerator für
CPLD gebaut, da ich keine inverter hatte habe ich  NAND Gattern
genommen, jedenfalls war die resultierende frequenz das 3 fache der
angegebenen Quartzfrequenz. Mit eigentümlichen Anschwingverhalten, beim
einschalten erst langsam, und dann immer schneller schwingend bis zur
maximalfrequenz, das anschwingen dauerte etwa 5 sekunden.

Tip: nimm einfach einen atiny als taktgenerator, da weist du was du
hast, direkt vor dem CPLD einen schmitt trigger einsetzen, und du hast
keine Probleme mehr.
Unbenutzte Pins lege ich grundsätzlich auf float, so ist die Gefahr für
versehentliche Kurzschlüsse geringer.


G. Tobias

von jörn (Gast)


Angehängte Dateien:

Lesenswert?

Moin,

ich habe mal alle Dateien, die aus meiner Sicht etwas mit dem Problem
zu tun haben könnten in den Anhang gepackt. Den Takt erzeugt ein
Quarzoszillator, diese Teile, bei denen man nur VCC und GND anschließen
muß und dann kommt da ein Takt raus. Das Programm und die Benennungen
sind ein bißchen wirr, aber eigentlich sollte es nicht daran liegen
können, denn wenn ich nur einzelne der Ausgangspins ansteuern möchte,
so leuchten auch nur die allerdings blinken sie nicht!
Mittlerweile vermute ich den Fehler auch mehr im Design. Entgegen dem
Original habe ich die Masseflächen etwas anders gestaltet, damit ich
Drahtbrücken sparen kann. Dachte nicht, dass es da so empfindlich drauf
reagieren würde, gerade weil 1 MHz ja nun noch nicht so hochfrequent ist
und ich andere Schaltungen mit diesen Oszillatoren zusammengepfuscht
habe, die wirklich funktionierten.
In einem Anflug blinden Aktionismus würde ich jetzt als nächstes eine
sternförmige Masse an alle GND-Pins des CPLDs löten um so die
Masseloops zu überbrücken oder aber kleine Kondensatoren direkt gegen
Masse an den Takteingang. Macht das Sinn?

Ich bin echt ein wenig ratlos!

Gruß,

jörn

von FPGA-User (Gast)


Lesenswert?

Meckert die Synthese nicht, dass es LOC-Constraints
für 8 DOUT-Bits gibt, Du aber nur 3 davon belegt hast ?

Ist die Stromversorgung kräftig genug für den XC9572?
Wenn es das 5V-Device ist, was ich annehme, dann brauchst
Du mindestens 200 mA für das CPLD.

Kannst Du mal mit nem Oszi an so einem LED-Ausgang messen ?
(Und besser noch : am Takteingang ?!?)

von jörn (Gast)


Lesenswert?

Doch die Synthese meckert. Ursprünglich hatte ich auch alle 8 bit
belegt, wollte dann aber noch mal sicher gehen, dass der wirklich auf
meine Programmierung reagiert und nicht nur alle Ausgangspins high
sind, deshalb diese etwas blöde Ausgabe.
Als Festspannungsregler benutze ich einen 7805, der 1 A schaffen
sollte. Das billige Netzteil schafft immerhin 6 VA bzw. 500 mA maximal.
Es wird aber schon relativ warm.
Nachmessen mit einem Oszilloskop konnte ich leider bisher noch nicht.
Ist der XC9572 denn sonst sehr anspruchsvoll beim Layout? Wie sind Eure
Erfahrungen so?

Gruß,

Jörn

von FPGA-User (Gast)


Lesenswert?

meine Erfahrung :

Eingangs-Pins sind sehr empfindlich, IC neigt zum Schwingen
wenn Eingänge nicht richtig beschaltet sind, d.h. offen
oder kein definiertes Low / High,
Layout : Masse sollte großflächig sein, Vcc mögl. an jedem
Pin mit einem C 100 nF abblocken, dann sollte eigentlich
alles bestens funktionieren, habe damit einen 7-Stelligen
Frequenzzähler gebaut, benötigt 98 Proz. Ressourcen im
9572, Fmax = 200 MHz -> Stromaufnahme CPLD ca. 200 mA, aber
nur, weil ich fast alle Macrozellen im Low-Power-Mode
betreibe, nur die ersten paar Flip-Flops laufen im strom-
fressenden "High-Performance" Mode, sonst wäre es noch mehr

von jörn (Gast)


Lesenswert?

Danke für die viele Hilfe. Bin heute extra in die Uni gefahren und habe
einmal mit einem Oszilloskop nachgemessen. Mit dem oben hochgeladenen
Programm lag an allen LED-Ausgängen der halbe Takt an, der Takt vom
Quarz war in Ordnung.
Ich habe es also noch mal neu aber praktisch identisch programmiert und
nun funktioniert es einwandfrei. Richtig zufriedenstellen kann einen
eine solche Problemlösung natürlich nicht, aber immerhin funktioniert
es jetzt.

Gruß,

Jörn

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.