палитра не считается по формуле.
всего 256 цветов - они хранятся в видеопамяти по 1 байту на 1 точку
этот байт - и есть номер(смещение) массива палитры. (массив хранит R,G,B в 15 битах)
описание массива палитры:
Код
type R_RGB_Type is array(255 downto 0) of std_logic_vector(14 downto 0);
signal R_RGB:R_RGB_Type;
запись в регистры палитры:
Код
*(short*)(BaseAddr+RegOffs)=0x7000|Color;
*(short*)(BaseAddr+RegOffs)=0x8000|(R<<10)|(G<<5)|B;
Код
process(ClkPLL)
begin
if rising_edge(ClkPLL) then
...
when "0111"=>
R_C:=D1(7 downto 0);
when "1000"=>
if D1(15)='1' then
R_RGB(conv_integer(R_C))<=D1(14 downto 0);
end if;
...
При синтезе массив палитры преобразуется в двухпортовую синхронную память, тактируемую ClkPLL (200МГц)
Вывод видеоданных на VGA происходит на другом клоке - Clk=50 МГц
Возможно , нечёткое изображение (когда используется палитра) из-за разных тактовых клоков
Сообщение отредактировал %-) - Dec 17 2009, 02:12