Max M. schrieb:
> Fuer die Simulation moechte ich den Wert von data jetzt
> initialisieren, bzw. auf 0 setzen. Wie kann ich das machen?
Nee, willst Du nicht. Du willst den Wert von data auf den Wert
initialisieren, der für den gewählten Typ die 0 darstellt. Das ist was
anderes.
Dazu musst Du den Wert irgendwie zum Elaborationszeitpunkt dahin
bringen.
Zum Beispiel über ein zusätzliches Generic:
1 | ...
|
2 | entity delay_generic is
|
3 | generic (
|
4 | type DATA_TYPE;
|
5 | LATENCY : natural;
|
6 | init_value : DATA_TYPE
|
7 | );
|
8 |
|
9 | ...
|
10 | signal data : data_vector(0 to LATENCY - 1) := (others => init_value);
|
11 | ...
|
Oder - wenn Du sowohl faul als auch schlau bist (und es dich nicht
stört, dass andere den "Trick" erst mal nicht erkennen):
mit dem Wissen, dass (z.B.) uninitialisierte std_logic in der Simulation
nicht deswegen den Wert 'U' annimmt, weil sie nicht initialisiert ist
(wer euch das beigebracht hat, hat gelogen), sondern weil sie mit 'U'
initialisiert wird (weil 'U' der "linkste" mögliche Wert des Typs ist
und alle Signale in VHDL in der Simulation mit eben dem initialisiert
werden) kannst Du die Initialisierung mit 0 einfach dadurch erzwingen,
indem Du einen Datentyp nimmst, der eben 0 als "leftmost" Wert hat.
Also z.B. natural oder bit (oder irgendein anderer, selbst definierter
Typ, dessen mögliche "leftmost value" eben 0 entspricht). Dazu musst Du
an dem existierenden Code gar nichts ändern (möglicherweise aber aus
anderen Gründen, aber da kommst Du noch drauf).