Project

General

Profile

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;

(4-4/6)