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
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
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
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
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
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
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 ?!?)
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.