Я работаю с VGA на моей FPSGA Basys3, и сейчас я хочу нарисовать зонную пластинку, для которой уравнение (1 + cos (k * r^2))/2, где r - расстояние от центра пластины, а k = 2 * pi/lambda - волновое число, которое определяет масштаб пластины. Я предполагаю, что лучший способ действий - использовать косинус LUT, но я действительно не знаю, как его создать. Я несколько понимаю идею этого, но я не знаю, как написать одно и какие значения он должен содержать.VHDL: таблица косинусоидального поиска
Это код, который я пытаюсь проверить:
Единственная проблема с этим сейчас, что я не знаю, какие ценности для заполнения memory_type :=()
с, так что он будет равен к * г^2 из формулы.
architecture Behavioral of VGAdraw is
signal i : integer range 0 to 29:=0;
signal r : integer :=2;
type memory_type is array (0 to 29) of integer range -128 to 127;
signal cosine : memory_type :=();
begin
process(CLK)
begin
if (CLK'EVENT and CLK = '1') then
if (cntHor >= 0) AND (cntHor <= cstHorAL - 1) then
RED <= conv_std_logic_vector ((1 - cosine (i))/2, 8) (7 downto 4);
GREEN <= conv_std_logic_vector ((1 - cosine (i))/2, 8) (7 downto 4);
BLUE <= conv_std_logic_vector ((1 - cosine (i))/2, 8) (7 downto 4);
i <= i + 1;
else
RED <= "0000";
GREEN <= "0000";
BLUE <= "0000";
end if;
end if;
end process;
end Behavioral;
cntHor - горизонтальный счетчик
cstHorAL - Н.Р. пикселей на активной линии
Я не могу отправить само изображение из-за отсутствия репутации, но это то, что он должен выглядеть следующим образом: http://handforgedvideo.com/wp-content/uploads/2013/02/1920x1080p24_Luma_Zone_Plate_Main.png
Любая помощь приветствуется. Спасибо!
LUT может быть выполнен как ПЗУ, которое инициализируется значениями функций или просто как функция, которая затем преобразуется в комбинаторную логику с помощью инструмента синтеза.Пожалуйста, добавьте часть кода, которая показывает аргумент и формат результата и точность для более лучшего ответа. –
Дело в том, что я даже не знаю, с чего начать. Код, который я добавил, это то, что я нашел где-то еще, и я пытаюсь проверить его. Но я действительно не знаю, как это работает, каковы эти значения в структуре случая и как подключить это к моим цветовым выходам, чтобы рисовать зонную пластинку, используя приведенное выше уравнение. –