вылезла бяка. почему то происходит сдвиг пикселей.
при SCALE_x1 (пиксел в пиксел) сдвига нет
при удвоении пикселлов ( SCALE_x2 ) сдвиг на 2 пикселя ( в знакоместе )
при учетверении - сдвиг на 4 пикселя
Code: Select all
COLss <= COLs(4 DOWNTO 0) WHEN ( SCALE_x1 = '1' ) ELSE
COLs(5 DOWNTO 1) WHEN ( SCALE_x2 = '1' ) ELSE
COLs(6 DOWNTO 2);
PROCESS(CLK)
BEGIN
IF (RISING_EDGE(CLK)) THEN
CASE COLs(2 DOWNTO 0) IS
-------------------------------------------------------------------------------
WHEN "000" =>
VA <= MEM_SCR;
-------------------------------------------------------------------------------
WHEN "001" =>
-------------------------------------------------------------------------------
WHEN "010" =>
FONT <= VDi(7 DOWNTO 0);
COLOR <= VDi(15 DOWNTO 8);
-------------------------------------------------------------------------------
WHEN "011" =>
VA <= MEM_FONT;
-------------------------------------------------------------------------------
WHEN "100" =>
VA <= MEM_SEL;
-------------------------------------------------------------------------------
WHEN "101" =>
FONT_ROW2 <= VDi;
eCOLOR <= VDi(15 DOWNTO 8);
-------------------------------------------------------------------------------
WHEN "110" =>
COLOR0 <= VDi(15 DOWNTO 12);
COLOR1 <= VDi(11 DOWNTO 8);
COLOR2 <= VDi( 7 DOWNTO 4);
COLOR3 <= VDi( 3 DOWNTO 0);
FONT_ROW1 <= VDi;
-------------------------------------------------------------------------------
WHEN "111" =>
IF ( FONT_ColL = '1' ) THEN
bCOLOR <= eCOLOR;
ELSE
bCOLOR <= COLOR;
END IF;
IF ( FONT_none = '1' ) THEN
FONT_ROW0 <= COLOR & FONT;
ELSE
FONT_ROW0 <= FONT_ROW2;
END IF;
COLs0 <= COLs(3 DOWNTO 0);
END CASE;
CASE COLss(2 DOWNTO 0) IS
-------------------------------------------------------------------------------
WHEN "000" =>
IF ( FONT_8Pix = '0' AND COLs0(3) = '0' ) THEN
PIXEL1 <= FONT_ROW0(15);
ELSE
PIXEL1 <= FONT_ROW0(7);
END IF;
PIXEL2 <= FONT_ROW0(11 DOWNTO 10);
PIXEL4 <= FONT_ROW0(7 DOWNTO 4);
-------------------------------------------------------------------------------
WHEN "001" =>
IF ( FONT_8Pix = '0' AND COLs0(3) = '0' ) THEN
PIXEL1 <= FONT_ROW0(14);
ELSE
PIXEL1 <= FONT_ROW0(6);
END IF;
PIXEL2 <= FONT_ROW0(9 DOWNTO 8);
PIXEL4 <= FONT_ROW0(3 DOWNTO 0);
-------------------------------------------------------------------------------
WHEN "010" =>
IF ( FONT_8Pix = '0' AND COLs0(3) = '0' ) THEN
PIXEL1 <= FONT_ROW0(13);
ELSE
PIXEL1 <= FONT_ROW0(5);
END IF;
PIXEL2 <= FONT_ROW0(7 DOWNTO 6);
PIXEL4 <= FONT_ROW1(15 DOWNTO 12);
-------------------------------------------------------------------------------
WHEN "011" =>
IF ( FONT_8Pix = '0' AND COLs0(3) = '0' ) THEN
PIXEL1 <= FONT_ROW0(12);
ELSE
PIXEL1 <= FONT_ROW0(4);
END IF;
PIXEL2 <= FONT_ROW0(5 DOWNTO 4);
PIXEL4 <= FONT_ROW1(11 DOWNTO 8);
-------------------------------------------------------------------------------
WHEN "100" =>
IF ( FONT_8Pix = '0' AND COLs0(3) = '0' ) THEN
PIXEL1 <= FONT_ROW0(11);
ELSE
PIXEL1 <= FONT_ROW0(3);
END IF;
PIXEL2 <= FONT_ROW0(3 DOWNTO 2);
PIXEL4 <= FONT_ROW1(7 DOWNTO 4);
-------------------------------------------------------------------------------
WHEN "101" =>
IF ( FONT_8Pix = '0' AND COLs0(3) = '0' ) THEN
PIXEL1 <= FONT_ROW0(10);
ELSE
PIXEL1 <= FONT_ROW0(2);
END IF;
PIXEL2 <= FONT_ROW0(1 DOWNTO 0);
PIXEL4 <= FONT_ROW1(3 DOWNTO 0);
-------------------------------------------------------------------------------
WHEN "110" =>
IF ( FONT_8Pix = '0' AND COLs0(3) = '0' ) THEN
PIXEL1 <= FONT_ROW0(9);
ELSE
PIXEL1 <= FONT_ROW0(1);
END IF;
PIXEL2 <= FONT_ROW0(15 DOWNTO 14);
PIXEL4 <= FONT_ROW0(15 DOWNTO 12);
-------------------------------------------------------------------------------
WHEN "111" =>
IF ( FONT_8Pix = '0' AND COLs0(3) = '0' ) THEN
PIXEL1 <= FONT_ROW0(8);
ELSE
PIXEL1 <= FONT_ROW0(0);
END IF;
PIXEL2 <= FONT_ROW0(13 DOWNTO 12);
PIXEL4 <= FONT_ROW0(11 DOWNTO 8);
END CASE;
END IF;
END PROCESS;