Hallo Tim,
http://www.carookee.de/forum/VHDL/14/Unterschied_zwischen_Prozee.10877964-0-01105
scheint dasselbe Posting zu sein :-)
> Darf ich denn auf ein Signal aus zwei Prozessen
> schreiben, welches ich vorher in der Architectur
> deklariert habe?
Ja schon. Du musst das Signal aber als resolved
deklarieren. z.B. ist std_logic und std_logic_vector
als resolved definiert.
Normalerweise verwendet man sowas, wenn man Tristate-
Busse beschreiben möchte. (Ich würde es in keinem
anderen Fall verwenden, und bei Tristate auch sehr
"explizit" beschreiben, do dass die Tristatebuffer
vom Rest der Schaltung irgendwie separiert sind.)
Achtung, Du musst selber dafür sorgen, dass das Signal
nur "sinnvoll" getrieben wird, z.B. im einen Prozess
Tristate ist (oder zumindest H, L oder W), während´
der andere darauf schreibt. Wenn nicht, passiert
das, was Du in deinem Beispiel beschreibst ... ;-)
Der Wert des Signals wird über die sogenannte
Resolution Function bestimmt. Hierbei ergibt z.B.
0 und 0,Z,L,H,W = 0, 0 und 1,X,- = X, 0 und U = U,
analog für 1 usw ...
Schau einfach mal in die IEEE std_logic-Library (ist
normalerweise irgendwo unter Soucre Code, IEEE bei
der Installation des Simulators.
> ...was eine einfache Angabe der Fehlermeldung
> übrigens auch erbraht hätte.
Nicht unbedingt. Wenn das Signal als std_logic definiert
ist, dann ist dies aus Sicht von VHDL zulässig (std_logic
ist resolved std_ulogic). Bei std_ulogic oder bit hätte
es ne Fehlermeldung gegeben. Normalerweise bekommt man
während der Synthese auch ne Warning oder ne Note (zumindest
machen manche Synthesetools das so).
Gruss,
Alex