Forum: FPGA, VHDL & Co. Bereich abprüfen


von Miriam (Gast)


Lesenswert?

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

von Jan M. (mueschel)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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;

von Sven H. (Gast)


Lesenswert?

Wie wäre es mit

Pixel / 80 + 1

?! ;)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.