habe ein Design mit einem M4A5-32 unter Abel bzw. IspLever-Classic. Die Sache funktioniert wie beabsichtigt, aber in bestimmten Betreibsfällen gibt es auf der Ausgangsleitung wilde Schwingungen (ca. 100Mhz) welche durch "Handauflegen" der Schaltung wieder verschwinden. Nun habe ich Verdacht auf offene Eingänge am Chip die übersprchen. Viele Leitungen sind nicht programmiert, nicht beschaltet, leider auch kein Pullup. Das sind IO pins, reine Input bzw. Clock pins und JTAG pins. Im Constraint File habe ich schon langsame Ausgänge eingestellt-> keine Änderung. Was ist mit offenen Eingängen zu tun, bzw. kann man hier irgenwie Pullups programmieren ? An welcher Pinsorte ist ein HW Pullup oder GND nötig?
Offene CMOS-Eingangspins sind generell schlecht, weil sich dort dann eine Spannung im Bereich um Vcc/2 einstellt und beide Transistoren des Eingangstreibers "halb" leiten. Dadurch hat das IC eine erhöhte Stromaufnahme und ist sehr sensibel für Einkopplungen. Und wenn dann noch eine wacklige Versorgung (Entkopplung ungünstig) dazukommt, dann kann das Ganze sogar zu schwingen beginnen... Abhilfe: Pullups/Pulldowns einbauen oder die nicht benötigten Pins als Ausgang definieren.
Die Eingänge M4A5 haben entweder einen weak Pullup, oder einen Keeper (Bus friendly laut Datenblatt). Default ist Pullup. In beiden Fällen liegt bei einem unbeschalteten Eingang ein definierter Pegel an. Das kann also nicht die Ursache sein.
Die Ursache war ein nachgeschalteter RS422 Differentialtreiber. Ich habe dort ein ca. 10cm langes Kabel eingesteckt mit einem unbekannten Sub-D Stecker aus der Grabbelkiste (mit integrierten Entstör-L). Der Bustreiber fängt mit etwa 100 Mhz an zu klingeln. Schliesst man die Treiberleitung korrekt ab oder hängt eine Last dran, ist alles wieder im grünen Bereich.
Lattice User schrieb: > Die Eingänge M4A5 haben entweder einen weak Pullup ist das bei denen standardmässig so oder wurde das von dir so programmiert?
Matthias schrieb: > ist das bei denen standardmässig so oder wurde das von dir so > programmiert? Das "programmiert" man nicht, sondern gibt es im Constraintfile vor. Das Constraintfile kann über den "Constraint Editor" modifiziert werden. Dort findest du unter dem Reiter "Global Constraints" den Punkt "PULLUP". Hier kann entweder "UP" oder "HOLD" eingestellt werden.
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.