Tom wrote:
> OK dann werde ich das über das Zwischensignal lösen.
>
> Warum funktioniert dann aber eigentlich die Sache mit dem
> Verkettungsoperator & beim Erstellen des Zwischensignals? Da ist es doch
> auch eine Signalzuweisung und man schreibt eine Operation hin?
Hm interessant. "Weil es VHDL nicht zuläßt!" - wäre eine korrekte
Antwort, aber damit wäre ich auch nicht zufrieden.
"Weil man so Hardware nicht vollständig beschreiben kann" scheint den
nagel auf den Kopf zu treffen, ist aber auch nicht für den frager
verständlich.
Also:
Port Map (=>)und Signalzuweisung (<=) sind zweierlei, der Effekt nur
scheinbar derselbe. Wenn man VHDL laut list sagt man bei dem Portmap
Pfeil
"gets" und bei der Signalzuweisung "is connected to". Der feine
Unterschied
liegt im zeitliche Verhalten. In der Signalzuweisung ist immer eine
Verzögerung enthalten. Mindestens ein Simulationsschritt (Delta-cycle)
in echt einige Pico bis Nanosekunden. Die zeit schreibt man für die
Simulation auch an die Zuweisung (a <= b after 2 ns;) ran. Bei der
Portmap wird die verzögerung nicht mit beschrieben, die Portmap ist
verzögerungsfrei. In Echt
hast du nun 4 leitungen die du an die Komponente führst, jede
unterschiedlich lang und dadurch mit unterschiedlichen Verzögerungen
behaftet. Ohne das Zwischensignal kann die Simulation keine
Verzögerungen berechnen, also wirst du gezwungen diese Zwischensignal
vorzugeben. Daher stammt wohl die festlegeung nur signale (Modelle mit
verzögerung) in portmaps zu verwenden und keine Operatoren.
Wenn ich es mir recht Überlege ist "&" das Problem, weil dadurch das
Verzögerungsmodel verkürzt wird.
Meint
a <= b & c & d after 3 ns;
verschleiert die unterschiedlichen verzögerungen. Ist aber leichter zu
überschauen als.
a(2) <= b after 3 ns;
a(1) <= c after 3 ns;
a(0) <= d after 3 ns;
Also kurz gesagt, da in VHDL Signale mit Verzögerungen modelleirt
werden,
kann man die Signalzuweisung nicht wie eine Speicherstellenzuweisung in
C
verwenden. ist halt ne andere Philosophie di dahinter steht.