Forum: FPGA, VHDL & Co. Quartus II liefert beim kompilieren zwei Warnung


von KM45 (Gast)


Lesenswert?

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

von Tim (Gast)


Lesenswert?

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

von Rolf S. (audiorolf)


Lesenswert?

Mit dem output driving GND bin ich mal schwer reingefallen und habe mir 
einen Cyclone V kaputtgebraten. Default sollte "Z" sein und nicht ein 
drive.

von Gästchen (Gast)


Lesenswert?

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.

von Sigi (Gast)


Lesenswert?

Am Besten die unbenutzten Pins auf "Z"
mit internem Pullup setzen. Das lässt
sich in Quartus in Device-Einstellungen
definieren.

von KM45 (Gast)


Lesenswert?

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.

von P. K. (pek)


Lesenswert?

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.

von Andreas B. (andreas_b77)


Lesenswert?

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.

von Sigi (Gast)


Lesenswert?

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.

von KM45 (Gast)


Lesenswert?

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.

von Duke Scarring (Gast)


Lesenswert?

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

von KM45 (Gast)


Lesenswert?

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'.

von Duke Scarring (Gast)


Lesenswert?

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:
1
...
2
    constant dac_cs_disable  : std_ulogic := '1';  -- 1 = disable DAC 
3
    constant amp_cs_disable  : std_ulogic := '1';  -- 1 = disable programmable pre-amplifier
4
    constant ad_conv_disable : std_ulogic := '0';  -- 0 = disable ADC
5
6
begin
7
8
    -- default output drivers, to pass bitgen DRC 
9
    -- outputs used by design are commented
10
    --
11
    ad_conv           <= ad_conv_disable;
12
    amp_cs            <= amp_cs_disable;
13
    amp_shdn          <= '1';
14
    --
15
    clk_sma           <= 'Z';
16
    --
17
    dac_clr           <= '0';
18
    dac_cs            <= dac_cs_disable;
19
    --
20
    ds_wire           <= 'Z';
21
    --
22
    e_txd(3 downto 0) <= (others => '1');
23
    e_tx_en           <= '0';
24
    e_tx_er           <= '0';
25
    e_mdc             <= '1';
26
    e_mdio            <= 'Z';
27
...
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

von KM45 (Gast)


Lesenswert?

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?

von Andreas B. (andreas_b77)


Lesenswert?

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.

: Bearbeitet durch User
von KM45 (Gast)


Lesenswert?

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.

von Duke Scarring (Gast)


Lesenswert?

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

von Andreas B. (andreas_b77)


Lesenswert?

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?

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.