Я пытаюсь создать генератор паттернов с 2 модами, 1 полосой и 2 панелями. С полосами было довольно легко, но я топчу по панелям.
Генератор становится осью, координатой y дисплея и должен решить, какой цвет он должен быть на основе информации x / Y.
Я хочу избежать:
Pseudo code
IF(x between 0-40 AND y between 0-40) THEN panel = 1
IF(x between 0-40 AND y between 40-80) THEN panel = 2
et c.
, потому что у меня 100 панелей, и код должен легко настраиваться.
Генератор полос I кодируется следующим образом:
stripes : PROCESS(modus, segment, column)
BEGIN
IF(modus = '0' AND enable = '1') THEN --Mod 0 -> Stripes enabled
IF(column < (40+ (160*segment)) THEN
red <= (OTHERS => '1');
green <= (OTHERS => '0');
blue <= (OTHERS => '0');
ELSIF(column < (80+ (160*segment))) THEN
red <= (OTHERS => '0');
green <= (OTHERS => '1');
blue <= (OTHERS => '0');
ELSIF(column < (120+ (160*segment))) THEN
red <= (OTHERS => '0');
green <= (OTHERS => '0');
blue <= (OTHERS => '1');
ELSIF(column < (160+ (160*segment))) THEN
red <= (OTHERS => '0');
green <= (OTHERS => '0');
blue <= (OTHERS => '0');
END IF;
END IF;
END PROCESS;
segment: PROCESS(column,row,modus)
BEGIN
IF(modus = '0' AND enable = '1') THEN
IF(column < (pixels_x/4) then
segment := 0;
ELSIF(column < (pixels_x/2) then
segment := 1;
ELSIF(column < (3*pixels_x/4) then
segment := 2;
ELSE
segment := 3;
END IF;
ELSIF (modus = '1' AND enable = '1') THEN --Mod 1 -> Panels enabled
END IF;
END PROCESS;
Я кодирую на VHDL, но я просто ищу псевдокод, который поможет мне понять, как решить эту проблему без жесткого кодирования операторов IF / ELSE