Samer Afach schrieb:
> Wenn man einen Initialen Wert für eine Variable angibt, kann das
> Sythesisiert werden?
Ja, aber:
> wird die Variable MYVEC den Wert "11111111" haben
> jedesmal wenn den process aufgerufen wurde?
Nein. Diesen Wert hat sie nur 1x, nach dem "Booten".
Denn sonst würde das ja bedeuten, dass eine Variable nicht speichernd
sein darf!
Aber was passiert denn hier:
1 | process(clk)
|
2 | variable MYVEC: STD_LOGIC_VECTOR(7 downto 0) := (others => '1');
|
3 | begin
|
4 | irgendein_signal <= variable; -- lesend zugreifen
|
5 | -- oder
|
6 | if (variable="10101010") then ... -- auch hier lesender Zugriff
|
7 | -- oder
|
8 | variable := variable-1; -- wieder ein lesender Zugriff...
|
9 |
|
10 | variable := neuer_wert; -- schreibender Zugriff.
|
11 | end process;
|
Hier muss die Variable speichernd sein, weil zuerst lesend darauf
zugegriffen wird!
Wenn du die Variable jedesmal mit diesem Wert belegen willst, dann
mußt du die erste Operation mit der Variablen schreibend machen:
1 | process(clk)
|
2 | variable MYVEC: STD_LOGIC_VECTOR(7 downto 0) := (others => '1');
|
3 | begin
|
4 | variable := (others => '1'); -- schreibender Zugriff.
|
5 |
|
6 | -- dann erst lesend zugreifen
|
7 | irgendein_signal <= variable;
|
8 |
|
9 | if (variable="10101010") then ...
|
10 |
|
11 | variable := variable-1;
|
12 | end process;
|