Line 277... |
Line 277... |
|
|
------------------
|
------------------
|
type ROMQ_TYPE is array (0 to 64-1)
|
type ROMQ_TYPE is array (0 to 64-1)
|
of unsigned(7 downto 0);
|
of unsigned(7 downto 0);
|
|
|
constant qrom : ROMQ_TYPE :=
|
constant qrom_lum : ROMQ_TYPE :=
|
(
|
(
|
-- 100%
|
-- 100%
|
--others => X"01"
|
--others => X"01"
|
|
|
-- 85%
|
-- 85%
|
Line 301... |
Line 301... |
--X"1F", X"13", X"17", X"22",
|
--X"1F", X"13", X"17", X"22",
|
--X"24", X"22", X"1E", X"24",
|
--X"24", X"22", X"1E", X"24",
|
--X"1C", X"1E", X"1F", X"1E"
|
--X"1C", X"1E", X"1F", X"1E"
|
|
|
-- 75%
|
-- 75%
|
--X"08", X"06", X"06", X"07", X"06", X"05", X"08", X"07", X"07", X"07", X"09", X"09", X"08", X"0A", X"0C", X"14",
|
X"08", X"06", X"06", X"07", X"06", X"05", X"08", X"07", X"07", X"07", X"09", X"09", X"08", X"0A", X"0C", X"14",
|
--X"0D", X"0C", X"0B", X"0B", X"0C", X"19", X"12", X"13", X"0F", X"14", X"1D", X"1A", X"1F", X"1E", X"1D", X"1A",
|
X"0D", X"0C", X"0B", X"0B", X"0C", X"19", X"12", X"13", X"0F", X"14", X"1D", X"1A", X"1F", X"1E", X"1D", X"1A",
|
--X"1C", X"1C", X"20", X"24", X"2E", X"27", X"20", X"22", X"2C", X"23", X"1C", X"1C", X"28", X"37", X"29", X"2C",
|
X"1C", X"1C", X"20", X"24", X"2E", X"27", X"20", X"22", X"2C", X"23", X"1C", X"1C", X"28", X"37", X"29", X"2C",
|
--X"30", X"31", X"34", X"34", X"34", X"1F", X"27", X"39", X"3D", X"38", X"32", X"3C", X"2E", X"33", X"34", X"32"
|
X"30", X"31", X"34", X"34", X"34", X"1F", X"27", X"39", X"3D", X"38", X"32", X"3C", X"2E", X"33", X"34", X"32"
|
|
|
-- 15 %
|
-- 15 %
|
--X"35", X"25", X"28", X"2F",
|
--X"35", X"25", X"28", X"2F",
|
--X"28", X"21", X"35", X"2F",
|
--X"28", X"21", X"35", X"2F",
|
--X"2B", X"2F", X"3C", X"39",
|
--X"2B", X"2F", X"3C", X"39",
|
Line 325... |
Line 325... |
--X"FF", X"CE", X"FF", X"FF",
|
--X"FF", X"CE", X"FF", X"FF",
|
--X"FF", X"FF", X"FF", X"FF",
|
--X"FF", X"FF", X"FF", X"FF",
|
--X"FF", X"FF", X"FF", X"FF"
|
--X"FF", X"FF", X"FF", X"FF"
|
|
|
-- 50%
|
-- 50%
|
|
--X"10", X"0B", X"0C", X"0E", X"0C", X"0A", X"10", X"0E",
|
|
--X"0D", X"0E", X"12", X"11", X"10", X"13", X"18", X"28",
|
|
--X"1A", X"18", X"16", X"16", X"18", X"31", X"23", X"25",
|
|
--X"1D", X"28", X"3A", X"33", X"3D", X"3C", X"39", X"33",
|
|
--X"38", X"37", X"40", X"48", X"5C", X"4E", X"40", X"44",
|
|
--X"57", X"45", X"37", X"38", X"50", X"6D", X"51", X"57",
|
|
--X"5F", X"62", X"67", X"68", X"67", X"3E", X"4D", X"71",
|
|
--X"79", X"70", X"64", X"78", X"5C", X"65", X"67", X"63"
|
|
);
|
|
|
|
constant qrom_chr : ROMQ_TYPE :=
|
|
(
|
|
-- 50% for luminance! but used as chrominance, TODO!!
|
X"10", X"0B", X"0C", X"0E", X"0C", X"0A", X"10", X"0E",
|
X"10", X"0B", X"0C", X"0E", X"0C", X"0A", X"10", X"0E",
|
X"0D", X"0E", X"12", X"11", X"10", X"13", X"18", X"28",
|
X"0D", X"0E", X"12", X"11", X"10", X"13", X"18", X"28",
|
X"1A", X"18", X"16", X"16", X"18", X"31", X"23", X"25",
|
X"1A", X"18", X"16", X"16", X"18", X"31", X"23", X"25",
|
X"1D", X"28", X"3A", X"33", X"3D", X"3C", X"39", X"33",
|
X"1D", X"28", X"3A", X"33", X"3D", X"3C", X"39", X"33",
|
X"38", X"37", X"40", X"48", X"5C", X"4E", X"40", X"44",
|
X"38", X"37", X"40", X"48", X"5C", X"4E", X"40", X"44",
|
Line 364... |
Line 377... |
|
|
|
|
host_read(CLK, X"0000_0004", data_read,
|
host_read(CLK, X"0000_0004", data_read,
|
OPB_ABus, OPB_BE, OPB_DBus_out, OPB_RNW, OPB_select, OPB_XferAck);
|
OPB_ABus, OPB_BE, OPB_DBus_out, OPB_RNW, OPB_select, OPB_XferAck);
|
|
|
-- write quantization table
|
-- write luminance quantization table
|
for i in 0 to 64-1 loop
|
for i in 0 to 64-1 loop
|
data_write := X"0000_00" & qrom(i);
|
data_write := X"0000_00" & qrom_lum(i);
|
addr := X"0000_0100" + to_unsigned(4*i,32);
|
addr := X"0000_0100" + to_unsigned(4*i,32);
|
-- SOF & num_comps
|
host_write(CLK, addr, data_write,
|
|
OPB_ABus, OPB_BE, OPB_DBus_in, OPB_RNW, OPB_select, OPB_XferAck);
|
|
|
|
end loop;
|
|
|
|
-- write chrominance quantization table
|
|
for i in 0 to 64-1 loop
|
|
data_write := X"0000_00" & qrom_chr(i);
|
|
addr := X"0000_0200" + to_unsigned(4*i,32);
|
host_write(CLK, addr, data_write,
|
host_write(CLK, addr, data_write,
|
OPB_ABus, OPB_BE, OPB_DBus_in, OPB_RNW, OPB_select, OPB_XferAck);
|
OPB_ABus, OPB_BE, OPB_DBus_in, OPB_RNW, OPB_select, OPB_XferAck);
|
|
|
end loop;
|
end loop;
|
|
|