repo2/eclaireXL_ITX/scaler/pixels.vhdl @ 1476
970 | markw | LIBRARY ieee;
|
|
USE ieee.std_logic_1164.all;
|
|||
package Pixels is
|
|||
type t_Pixel is record
|
|||
red : std_logic_vector(7 downto 0);
|
|||
green : std_logic_vector(7 downto 0);
|
|||
blue : std_logic_vector(7 downto 0);
|
|||
end record t_Pixel;
|
|||
type t_Pixel2x2 is array (0 to 3) of t_Pixel;
|
|||
type t_Pixel4x4 is array (0 to (4*4-1)) of t_Pixel;
|
|||
function pixel_to2x2(v: t_Pixel4x4) return t_Pixel2x2;
|
|||
function pixel2x2_idx(i,j : integer) return integer;
|
|||
function pixel4x4_idx(i,j : integer) return integer;
|
|||
end package Pixels;
|
|||
package body Pixels is
|
|||
function pixel_to2x2(v: t_Pixel4x4) return t_Pixel2x2 is
|
|||
variable res : t_Pixel2x2;
|
|||
begin
|
|||
for i in 0 to 1 loop
|
|||
for j in 0 to 1 loop
|
|||
res(pixel2x2_idx(i,j)) := v(pixel4x4_idx(i,j));
|
|||
end loop;
|
|||
end loop;
|
|||
return res;
|
|||
end pixel_to2x2;
|
|||
function pixel2x2_idx(i,j : integer) return integer is
|
|||
variable res : integer;
|
|||
begin
|
|||
res := i*2+j;
|
|||
return res;
|
|||
end pixel2x2_idx;
|
|||
function pixel4x4_idx(i,j : integer) return integer is
|
|||
variable res : integer;
|
|||
begin
|
|||
res := i*4+j;
|
|||
return res;
|
|||
end pixel4x4_idx;
|
|||
end Pixels;
|