Hallo. Ich will mehrere Beriche definieren. Dazu brauch ich eine Abfrage, ich dachte da an eine switch case Anweisung. Folgende Situation: variable Pixel: Integer; Pixel kann Werte von 0...480 annehmen. Wenn Pixel >0 und <80 dann X <= "0001"; Wenn Pixel >= 80 und <160 dann X <= "0010"; Wenn Pixel >= 160 und <240 dann X <= "0011"; ... Wie kann ich solch eine Abfrage in VHDL realisieren? Vielen Dank im Vorraus
Switch kann leider nur auf einen Wert (oder wenige verschiedene) pro case ueberpruefen. Du brauchst eine Folge von if/elsif, genau so, wie du es schon oben geschrieben hast. Da Komperatoren mit </> in Hardware relativ gross sind, kannst du auch ueberlegen, ob es nicht sinnvollere Loesungen gibt, z.B. wenn die Pixel immer der Reihe nach durchlaufen werden.
> Ich will mehrere Beriche definieren.
Angenommen, das Signal pixel läuft von 0 nach 480
(warum eigentlich nicht 479?). Wie wärs dann mit sowas:
1 | process (clk) |
2 | begin
|
3 | if rising_edge(clk) then |
4 | case pixel is |
5 | when 0 => X <= "0001"; |
6 | when 80 => X <= "0010"; |
7 | when 160 => X <= "0011"; |
8 | when 240 => X <= "0100"; |
9 | when 320 => X <= "0101"; |
10 | when 400 => X <= "0110"; |
11 | when 480 => X <= "0111"; |
12 | when others => X <= X; -- sonst Wert halten |
13 | end case; |
14 | end if; |
15 | end process; |
Sven H. wrote: > Wie wäre es mit Pixel / 80 + 1 > ?! ;) Na toll, eine Division im FPGA. Viel Spass damit ;-)
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.