Thanks for the reply. The colour discrepancy seems to be mostly in the red space with HMDI output. I've followed the programming guide and I've extracted my current code below but I cant see any errors.
-- Select between YCbCr 4:2:2 and RGB 4:4:4 modes
g_rgb444_support : if (RGB444 >= 2) generate
cfg_ycbcr_mode <= not cfg_rgb444;
end generate;
g_no_rgb444_support : if (RGB444 <= 1) generate
cfg_ycbcr_mode <= '1' when (RGB444 = 0) else '0';
end generate;
-- Instructions
data <=
("0000000001110100010010000010",
-- Power-up the TX
x"72" & "1" & x"41" & "1" & x"10" & "10",
-- Fixed registers that must be set on power up
x"72" & "1" & x"98" & "1" & x"03" & "10",
x"72" & "1" & x"9A" & "1" & x"E0" & "10",
x"72" & "1" & x"9C" & "1" & x"30" & "10",
x"72" & "1" & x"9D" & "1" & x"61" & "10",
x"72" & "1" & x"A2" & "1" & x"A4" & "10",
x"72" & "1" & x"A3" & "1" & x"A4" & "10",
x"72" & "1" & x"E0" & "1" & x"D0" & "10",
x"72" & "1" & x"F9" & "1" & x"00" & "10",
-- Set up the video input mode
x"72" & "1" & x"14" & "1" & x"02" & "10",
x"72" & "1" & x"15" & "1" & x"3" & "000" & cfg_ycbcr_mode & "10",
x"72" & "1" & x"16" & "1" & cfg_ycbcr_mode & "011" & x"9" & "10",
x"72" & "1" & x"48" & "1" & x"0" & conv_std_logic_vector(1-ADV7513, 1) & "000" & "10",
x"72" & "1" & x"BA" & "1" & x"A0" & "10",
x"72" & "1" & x"D0" & "1" & x"3C" & "10",
-- Set up the video output mode
x"72" & "1" & x"AF" & "1" & x"06" & "10",
x"72" & "1" & x"55" & "1" & "00" & cfg_ycbcr_mode & "0" & x"0" & "10",
x"72" & "1" & x"56" & "1" & x"08" & "10",
x"72" & "1" & x"DE" & "1" & x"18" & "10",
-- Audio setup
x"72" & "1" & x"02" & "1" & x"10" & "10",
x"72" & "1" & x"40" & "1" & x"80" & "10",
x"72" & "1" & x"73" & "1" & x"01" & "10",
-- Audio mode
x"72" & "1" & x"0C" & "1" & x"84" & "10",
x"72" & "1" & x"0D" & "1" & x"10" & "10",
-- Monitor sense input
x"72" & "1" & x"96" & "1" & x"20" & "10");