if rising_edge (mac_clk_in) then if start_button <= '1' then if counter_index := '1' then counter_index := counter_index + 1; dat_send <= dat_send_complete(counter_index); elsif counter_index := '2' then counter_index := counter_index + 1; dat_send <= dat_send_complete(counter_index); elsif counter_index := '3' then counter_index := counter_index + 1; dat_send <= dat_send_complete(counter_index); elsif counter_index := '4' then counter_index := counter_index + 1; dat_send <= dat_send_complete(counter_index); end if; ----------- ERROR:HDLParsers:164 - "D:/Programme/Xilinx92i/EIA-232/MAC.vhd" Line 30. parse error, unexpected AFFECT, expecting THEN ERROR:HDLParsers:164 - "D:/Programme/Xilinx92i/EIA-232/MAC.vhd" Line 34. parse error, unexpected AFFECT, expecting THEN ERROR:HDLParsers:164 - "D:/Programme/Xilinx92i/EIA-232/MAC.vhd" Line 38. parse error, unexpected AFFECT, expecting THEN ERROR:HDLParsers:164 - "D:/Programme/Xilinx92i/EIA-232/MAC.vhd" Line 42. parse error, unexpected AFFECT, expecting THEN ERROR:HDLParsers:164 - "D:/Programme/Xilinx92i/EIA-232/MAC.vhd" Line 47. parse error, unexpected IF, expecting PROCESS ----------------------- ich bin absoulter Anfäner und kann mir die Fehler nicht erklären
<= ist eine Zuweisung an ein Signal := ist eine Zuweisung an eine Variable (*) = ist ein Vergleich (*) als "absoulter Anfäner" solltest du erst einmal einen Bogen um Variablen machen - in Hardware gibt es nur Signale.
ERROR:HDLParsers:808 - "D:/Programme/Xilinx92i/EIA-232/MAC.vhd" Line 30. <= can not have such operands in this context. ERROR:HDLParsers:164 - "D:/Programme/Xilinx92i/EIA-232/MAC.vhd" Line 34. parse error, unexpected AFFECT, expecting THEN ERROR:HDLParsers:808 - "D:/Programme/Xilinx92i/EIA-232/MAC.vhd" Line 38. <= can not have such operands in this context. ERROR:HDLParsers:409 - "D:/Programme/Xilinx92i/EIA-232/MAC.vhd" Line 39. Signal 'counter_index' counter_index is at left hand side of variable assignment statement. ERROR:HDLParsers:808 - "D:/Programme/Xilinx92i/EIA-232/MAC.vhd" Line 42. <= can not have such operands in this context. ERROR:HDLParsers:409 - "D:/Programme/Xilinx92i/EIA-232/MAC.vhd" Line 43. Signal 'counter_index' counter_index is at left hand side of variable assignment statement. dann kommt das. und ursprünglich wollte ich die anweisungen so schreiben: if rising_edge (clk) AND (siganlA < signalB < 10) OR (signal A /= 11) warum geht soche zuweisungen nicht?
In den
1 | if then elsif |
Anweisungen darfst du nicht mit ":=" abfragen, sondern nur mit "=". Vergleiche wie siga < sigb < 10 gehen in VHDL nicht. Es ist kein C !!
Die erfahrung das es < nicht geht abe ich auhc gemacht. Laut meinem Buch geht es aber. Mit besonderem verweis das es gerade bei if anweisungen geht
Vergleiche sind durchaus moeglich, je nach eingebundenen Paketen auch mit std_logic_vector: if signal <= '1' then Auch '0' erfuellt dann natuerlich die Bedingung - hat mir schon ein paar Fehlersuchen eingebracht, wie schnell ist so ein < getippt... In VHDL kann man im Gegensatz zu C aber immer nur einen Vergleich in einem statement schreiben. In Hardware sollte man darauf aber verzichten, da der Ressourcenbedarf sehr hoch ist.
Mal abgesehen von den oben besprochenen Sachen. Ich zähle drei "if"'s, aber nur ein "end if".
1 | if rising_edge(mac_clk_in) then |
2 | if start_button = '1' then |
3 | if counter_index = '1' then |
4 | counter_index := counter_index + 1; |
5 | dat_send <= dat_send_complete(counter_index); |
6 | elsif counter_index = '2' then |
7 | counter_index := counter_index + 1; |
8 | dat_send <= dat_send_complete(counter_index); |
9 | elsif counter_index = '3' then |
10 | counter_index := counter_index + 1; |
11 | dat_send <= dat_send_complete(counter_index); |
12 | elsif counter_index = '4' then |
13 | counter_index := counter_index + 1; |
14 | dat_send <= dat_send_complete(counter_index); |
15 | end if; |
16 | end if; |
17 | end if; |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.