Hallo,
ich muss mich aktuell in VHDL einarbeiten und da ich eher aus der C/C#
Ecke komme, sind mir ein paar Dinge nicht ganz klar. Vorallem was nun
parallel läuft, und was nicht
Genauer geht es hier aktuell um das Verhalten von zwei "if" in einem
Prozess.
Kleines Codebeispiel:
1 | process(clk)
|
2 | variable VTest : std_logic := '0';
|
3 | begin
|
4 | if(rising_edge(clk)) then
|
5 | if (VTest = '1') then --if eins
|
6 | OutputSingal := NOT(OutputSingal);
|
7 | end if;
|
8 |
|
9 | if(InputSignal = '1') then --if zwei
|
10 | VTest := NOT(VTest);
|
11 | end if;
|
12 | end if;
|
13 | end process;
|
ergibt jetzt erstmal kein Sinn, soll ja nur ein Bsp. sein.
Nun zur Frage: Kann ich davon ausgehen, dass das erste if (also das nach
der Flankenabfrage) immer vor dem zweiten ausgeführt wird? Heißt, dass,
sollte VTest in der zweiten if geändert werden, die Auswirkung sicherst
beim nächsten Takt auswirkt? Oder wird beim synthetisieren das irgendwie
doch parallel verpackt?
Falls von Bedeutung: Vivado 2014.4, Ziel ist das ZedBoard.