Hallo, ich bin Neuling in Bezug auf Quartus II, VHDL und FPGAs und
erhalte beim Kompilieren die beiden folgenden Warnungen:
Warning: The Reserve All Unused Pins setting has not been specified, and
will default to 'As output driving ground'.
Warning: Found 36 output pins without output pin load capacitance
assignment.
Ich wäre dankbar für Hinweise, was diese beiden Fehler bedeuten und wie
ich diese beseitigen kann.
Vielen Dank
Es sind Warnungen und keine Fehler.
1. Warnung: unbenutzte Pins werden auf (hochohmig) Masse gezogen.
-> nichts tun und wohlwollend nicken
2. Warnung: für bessere Abschätzungen von Ausgangstreibern kann man noch
eine kapazitive Last in den Constraints spezifizieren.
-> nichts tun als üblicher Anfänger, das ist erst nützlich wenn du dein
Timing/Power nach außen sehr genau spezifizieren.
Vor Input/Output Constraints drücken sich auch Leute, die sich nicht
mehr als Anfänger bezeichnen wollen
Tim schrieb:> Es sind Warnungen und keine Fehler.>> 1. Warnung: unbenutzte Pins werden auf (hochohmig) Masse gezogen.> -> nichts tun und wohlwollend nicken
Uiuiui, Vorsicht!
Ich meine, da steht 'As output driving ground'.
Was für mich heißt, aktiv LOW. Die Ausgänge treiben 0 heraus.
Das ist das exakte Gegenteil von hochohmig :-)
Daher: Schaltung kontrollieren!
Warum das Default: Nicht aus Jux:
Floatende Eingangsstufen (ein FPGA-Port ist auch ein Eingang) kann zu
hohen Stromaufnahmen bis zur Zerstörung eines IC führen. Warum? Zeichnet
man sich halt eine CMOS-Stufe auf. Wenns blöd läuft, sind beide FET
(teilweise oder ganz) an. Nicht gut.
Darum hat ein Eingang - falls nicht anders im Datenblatt angegeben -
immer einen definierten Status zu haben. Altera weiß das natürlich, drum
der Default.
vielen Dank für die Hilfe.
Bei den unbenutzten Pins handelt es sich um ein paar "ledr", ein "clk"
und *,
welche im Pin Planner die Richtung unknown haben.
Alle Pins haben im Pin Planner den I/O Standard: 3,3-V LVTTL, außer
*, dort steht 3,3-V LVTTL default.
Außerdem erhalte ich die folgenden Warnungen, welche sich auf die
unbenutzten ledr und die clk beziehen:
- Ignored locations or region assignments to the following node....
- Ingored I/O standard assignments to the following nodes.....
- Found invalid Fitter assignments. See the Ignored Assignments panel in
the Fitter Compilation Report for more information.....
Kann ich nicht einfach diese unbenutzten Pins, bis auf *, aus dem Pin
Planner löschen?
Die unbenutzten Pins auf "Z" mit internem Pullup zu setzen, davor habe
ich irgendwie etwas Angst, da absoluter Neuling auf diesem Gebiet.
KM45 schrieb:> Kann ich nicht einfach diese unbenutzten Pins, bis auf *, aus dem Pin> Planner löschen?
Ja das kannst Du. Aber nur, wenn Du die entsprechenden Pins auch aus der
Toplevel-Entity entfernst (resp. auskommentierst).
Pins, die im Toplevel vorhanden sind müssen platziert werden (d.h.
können nicht unbenutzt sein, auch wenn Du damit in Deinem Design nach
nichts machst). Wenn Du das nicht tust, macht es der Placer (was in der
Regel nicht erwünscht ist).
KM45 schrieb:> Die unbenutzten Pins auf "Z" mit internem Pullup zu setzen, davor habe> ich irgendwie etwas Angst, da absoluter Neuling auf diesem Gebiet.
Da ist kein Problem dabei. Du hast einen definierten Pegel, aber der
Strom der im schlimmsten Fall gezogen wird ist nicht zerstörend.
KM45 schrieb:> Bei den unbenutzten Pins handelt es sich um ein paar "ledr", ein "clk"> und *,> welche im Pin Planner die Richtung unknown haben.
Gefährlicher Fehlschluss! Unbenutzte Pins sind alle I/O Pins, die im
Pin Planner keine Zuweisung haben.
Wenn an denen was angeschlossen ist und sie bloß "unbenutzt" sind, weil
die entsprechende Funktion in der Entwicklung noch nicht implementiert
ist, kann "As output driving ground" böse enden. Das sollte nur
verwendet werden, wenn sicher ist, dass an unbenutzten Pins auf der
Platine wirklich nichts angeschlossen ist.
Ansonsten ist "As input tri-stated with weak pull-up" die richtige
Einstellung.
Andreas B. schrieb:> Ansonsten ist "As input tri-stated with weak pull-up" die richtige> Einstellung.
Und wenn man ins Datenblatt schaut: Die Pullups
haben mehrere 10 KOhm. Nimmt man z.B. 40kOhm und
300 unbenutzte Pins, dann fliesst da mal so viel
wie durch eine LED, sollte also nicht kritisch sein.
OK, danke.
Hab ich jetzt auf "As input tri-stated with weak pull-up" umgestellt und
die Warnung ist weg, super.
Ich überlege jetzt nur noch wie ich die restlichen Warnungen beseitige.
KM45 schrieb:> Ich überlege jetzt nur noch wie ich die restlichen Warnungen beseitige.
Erfahrungsgemäß lassen sich (im Gegensatz zur Softwarecompelierung) bei
FPGA-Designs nicht alle Warnungen beseitigen...
Duke
das die Warnung
"Warning: The Reserve All Unused Pins setting has not been specified,
and
will default to 'As output driving ground'."
durch die Umstellung auf "As input tri-stated with weak pull-up" weg ist
zwar super, aber es hat den Nachteil, dass alle LEDs welche nicht
benutzt werden dauerhaft leuchten. Aber dies ist wohl der Nachteil bei
einer Umstellung auf 'Z'.
KM45 schrieb:> aber es hat den Nachteil, dass alle LEDs welche nicht> benutzt werden dauerhaft leuchten.
Es ist guter Designstil, wenn man im obersten Modul alle Ausgänge des
FPGA eines Evalboards mit sinnvollen Werten belegt:
Das eigentlich Design kommt bei mir in ein inneres Modul.
Dort kann man in der Entitybeschreibung logische Bezeichner verwenden.
Im obersten Modul erfolgt die Zuordnung zu den tatsächlich genutzten
Pins, die ihre Bezeichnung aus dem Schaltplan erhalten.
Damit lässt sich ein inneres Modul relativ leicht portieren.
Duke
Hallo Duke,
ich habe bereits die unbenutzten LEDs aus dem Pin Planner entfernt
(Top-Level-Entity).
Alle LEDs welche sich nicht mehr im Pin Planner befinden oder jemals
befanden
leuchten nun schwach seit der Umstellung auf "As input tri-stated with
weak pull-up" .
Wie kann ich LEDs die sich nicht mehr im Pin Planner befinden Werte
zuweisen? Vielleicht verstehe ich etwas falsch, da absoluter Anfänger?
Wenn du die LED Pins ansteuern willst (auch wenn es nur ein fester
Zustand ist, um sie dunkel zu lassen), dann brauchst du auch die
Zuweisungen im Pin Planner.
Im Top-Level in VHDL kommt dann halt "led1 <= '0';" oder was auch immer,
je nachdem wie die Pins genannt werden und ob '1' oder '0' der passende
Wert ist.
ok, vielen Dank.
Wenn ich die unbenutzten Pins auf "As output driving an unspecified
signal" setze, dann erscheint die Warnung
"Warning: The Reserve All Unused Pins setting has not been specified,
and will default to 'As output driving ground'"
ebenfalls nicht mehr und ich gehe davon aus, dass dann auch die Leds
nicht mehr schwach leuchten.
Kann ich mit dieser Einstellung das Board schädigen?
Es handelt sich um ein einfaches Programm in welchem lediglich die
Switches, die LEDs und die Siebensegmentanzeige benutzt werden.
KM45 schrieb:> Kann ich mit dieser Einstellung das Board schädigen?
Diese Frage kann man nur mit Hilfe des Schaltplanes beantworten.
Du hast uns aber noch nicht einmal verraten, was Du für ein Board hast.
> unbenutzten Pins
Tu einfach so, als wenn Du diese Pins benutzt (mit Zuweisung im
Pinplanner!). Dan belegst Du diese Pins in deinem Design mit einem
festen Wert.
Duke
KM45 schrieb:> Wenn ich die unbenutzten Pins auf "As output driving an unspecified> signal" setze, dann erscheint die Warnung>> "Warning: The Reserve All Unused Pins setting has not been specified,> and will default to 'As output driving ground'"
Die Warnung erscheint nicht weil es nicht mehr unspezifiziert ist
nachdem es explizit so eingestellt wurde.
"Driving unspecified signal" ist potentiell noch gefährlicher als
"driving ground". Bei letzterem kann man ja Glück haben und "driving
ground" macht nichts kaputt. Bei "unspecified signal" ist das ja
zufällig und wenn es einmal nichts kaputt macht, kann es nach der
nächsten Synthese genau anders sein.
Die LEDs leuchten dann halt nicht schwach durch die Pull-Ups, sondern
sind ganz aus oder hell an. Der Zufall bestimmt, was der Fall ist.
Warum die ganze Umstände, einfach Input Tri-Stated mit Pull-Up für
undefinierte Pins und die LEDs mit definierten Werten versorgen. Das ist
einfach und da geht nichts kaputt. Was soll das ganze Rumgemurkse um die
Definitionen für LEDs zu vermeiden, nur damit am Ende irgendwann das
Board raucht?