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