Wie sollte man mit ungenutzten Pins am FPGA umgehen? Beim Microcontroller kann es ja sinnvoll sein, diese auf ein Level zu ziehen, um z.B. Strom zu sparen, der sonst durch ständige Umladevorgänge in den floatenden Eingangsstufen verbraucht würde. Wie sieht das bei FPGAs aus? Kann man das überhaupt verallgemeinern, oder kommt es auf den FPGA-Hersteller/Typ an?
Wenn die entsprechenden IOPads unkonfiguriert bleiben, sind die Pins hochohmig. Die floaten dann zwar herum, aber da die Eingangstreiber disabled sind, richtet das keinen Schaden an und man kann die Pins einfach hängen lassen. Macht auch Sinn, sonst müsste man bei großen FPGA alle unbenutzen Pins auf einen definierten Level legen, was das Platinenlayout schon massiv kompliziert machen kann.
Für FPGAs gilt das gleiche, keine CMOS Eingänge floaten lassen. Es gibt für alle Synthesetools eine Einstellung was mit ungenutzen Pins passieren soll. Da kann man "0", "1" oder auch Pull-Up einstellen. Bei Altera/Intel ist es das hier im QSF-File: set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED WITH WEAK PULL-UP"
Danke für die schnellen Antworten. Leider scheinen diese sich etwas zu widersprechen. @User Was genau sind ungenutzte Pins? Dürfen diese Pins gar nicht im constraints-file auftauchen, oder sind Pins gemeint, die nicht getrieben/gelesen werden, aber trotzdem z.B. im Hauptmodul des HDL-Codes als Eingang vorkommen, aber nicht weiter verwendet werden.
Bei Intel gibt mehrere verschiedene Optionen mit Vor- und Nachteilen. Manche reduzieren den Stromverbrauch, andere z.B. den Ground Bounce. Diese Optionen haben dann auch unterschiedliche Anforderungen an die Beschaltung der Pins.
Lisa schrieb: > @User Was genau sind ungenutzte Pins? Dürfen diese Pins gar nicht im > constraints-file auftauchen, oder sind Pins gemeint, die nicht > getrieben/gelesen werden, aber trotzdem z.B. im Hauptmodul des HDL-Codes > als Eingang vorkommen, aber nicht weiter verwendet werden. Auch hier haengt es von FPGA Hersteller / Typ und der zugehoerenden software ab. In der Regel kannst du aber davon ausgehen, dass Pins die im Hauptmodul vorkommen aber nicht weiter verwendet werden wegoptimiert werden und dann die gesetzte Regel fuer nicht verwendete Pins greift.
Bei einigen Famlien von Logikbausteinen (CPLD, FPGA) von Xilinx gibt es auch die interessante Option, einen Pin mit dem KEEPER-Attribut zu versehen. Solch ein Pin wird dann durch einen schwachen Treiber auf den Pegel gezogen, den er eh schon hat. Hierdurch hat mit eine ähnliche Charakteristik wie bei einem Pull-Up- oder Pull-Down-Widerstand, aber es fließen keine unnötigen Ausgleichsströme, wenn der Pin extern doch auf einen anderen festen Pegel gezogen werden sollte. Ob das für Deinen konkreten Fall das richtige ist, muss von Pin zu Pin separat entschieden werden.
Vielen Dank für die interessanten Antworten. Ich werde dann wohl erst herausfinden müssen, was meine Tools machen und wie ich dieses Verhalten überhaupt beeinflussen kann. Konkret sind das Yosys zusammen mit nextpnr auf einem ice40 FPGA. Ich denke mal, dass in diesem Fall wohl nextpnr die Entscheidung über ungenutzte Pins treffen bzw. festlegen muss.
Lies dir am Besten die Beschreibung der IOs mal durch. In deinem Fall wäre pull down oder GND sicher das Passendste.
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.