Forum: FPGA, VHDL & Co. VHDL signal Optimierung


von U.G. L. (dlchnr)


Lesenswert?

Habe gestern gelesen (Link habe ich leider nicht mehr parat), dass 
Signale in VHDL nie wegoptimiert werden - würde bedeuten, dass bei 
meiner bisher gängigen Praxis mit CUPL & Co, aktive low Eingänge und 
Ausgänge intern generell aktive high verfügbar zu haben, gleich mal eine 
unnötige Laufzeit bei Ein- und Ausgänge entsteht, wenn ich das wie folgt 
implementiere:

signal nInp : std_logic := '1';
signal Inp  : std_logic := '0';
signal nOut : std_logic := '1';
signal Out  : std_logic := '0';

Inp  <= not nInp;
nOut <= not  Out;

Gibt es da eine bessere Lösung?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

U.G. L. schrieb:
> Habe gestern gelesen (Link habe ich leider nicht mehr parat), dass
> Signale in VHDL nie wegoptimiert werden -
Was man nicht alles liest. Vergiss das.
Natürlich wird das optimiert. Und genauso natürlich gibt es diesen 
Inverter nicht. Denn im FPGA hast du eh nur LUTs und Flipflops.

Sieh dir einfach mal den Technologieschaltplan (technology schematic) 
an.

von dlchnr (Gast)


Lesenswert?

Ah doch - wäre auch zu blöd gewesen ('ne LUT für'n nverter zu verbraten, 
nur damit man sich das Sigan auch anschauen kann) :-)

> Sieh dir einfach mal den Technologieschaltplan (technology schematic)
> an.

Bin mir nicht sicher, was Du meinst - den prinzipiellen Aufbau von FPGAs 
kennen ich, hab' früher viel mit LOG/ic und der 3000er von XILINX 
gemacht - vermutlich meinst Du die Pläne der erzeugten Schaltung, wie 
sie auf Deiner Webseite zu finden sind. Die sind wohl ein Feature der 
Xilinx-IDE, in der gerade von mir verwendeten iCEcube2-IDE hab' ich 
sowas noch nicht gefunden - da werd' ich mich in die Tiefen von 
irgendwelchen Reports begeben müssen, um solche Deteils zu klären - aber 
so weit bin ich noch nicht.

von J. S. (engineer) Benutzerseite


Lesenswert?

oh oh oh ...

U.G. L. schrieb:
> Signale in VHDL
> aktive low Eingänge und
> Ausgänge intern generell aktive high verfügbar zu haben

Signale sind Schaltungs-LOGIK, Also was Abstraktes, das nur angibt, 
woher ein Knoten eine Information bekommen soll. Daher gibt es auch kein 
"wired or" und ähnliche Spässe in VHDL. Ob und wann das was wegoptimiert 
wird, liegt an der Beschreibung.  Der Inverter, den Du da hinschreibst, 
muss nicht notwenindigerweise als LUT auftauchen!

Eingänge sind wiederum Physik und Lo-aktive Eingänge sind besondere 
Physik, die es in FPGAs nicht gibt. Du musst also den Umweg über einen 
Inverter nehmen und das solltest Du auch tun.

> unnötige Laufzeit bei Ein- und Ausgänge entsteht
Um die mach Dir mal keine Sorgen. Dies kannst Du in VHDL alleine eh 
nicht kontrollieren.

> ('ne LUT für'n nverter zu verbraten,
Ob dort letzlich eine LUT benutzt wird, um was zu invertieren, hängt von 
der Realisation der Schaltung, also der Abbildung derselben auf andere 
LUTs ab. Auch das ist in der VHDL Beschreibung durch Dich nicht 
festlegbar.

> Bin mir nicht sicher, was Du meinst - den prinzipiellen Aufbau von FPGAs
> kennen ich, hab' früher viel mit LOG/ic und der 3000er von XILINX
> gemacht
Es gibt da kleine Unterschiede, ja :-D , welche aber bei DIESER Frage 
weniger eine Rolle spielen. Bei Deinem Problem geht es mehr um die 
Designmethodik:

Bei GALs und PLDs hat man früher in der Tat die Leitungen beschreiben 
können und Inverter an Eingängen und in Takten wurden so hingesetzt. Das 
ist vorbei.

Was Du im Logikdesign hinschreibst, ist nur eine funktionelle 
Repräsentation dessen, was hinterher in die LUTs reingefummelt wird. Die 
Software dreht die entstehenden boolschen Gleichungen, die Du mit VHDL 
indirekt letztlich erzeugst, direkt 3x durch den Wolf, bis nichts mehr 
von der Struktur über ist.

Lies Dir mal den Artikel über FPGAs hier und im WIKI durch.

: Bearbeitet durch User
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.