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