我在我的Basys3 FPGA上使用VGA,我当前想绘制一个带板,其方程为(1 + cos(k * r^2))/ 2,其中r是距板中心的距离,k = 2 * pi/lambda是波数,它决定了板的比例。我猜测最好的方法是使用余弦LUT,但我真的不知道如何创建一个。我有点理解它背后的想法,但我不知道如何写一个它应该包含什么值。VHDL:余弦查找表
这是我想测试一下代码:
与此唯一的问题是现在,我不知道是什么值来填充memory_type :=()
用,使之等于K * R^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 - NR上活动行
像素的我可以在图像本身不张贴由于缺乏信誉的,但是这是它应该是什么样子:http://handforgedvideo.com/wp-content/uploads/2013/02/1920x1080p24_Luma_Zone_Plate_Main.png
任何帮助表示赞赏。 谢谢!
LUT可以作为一个ROM函数初始化为函数值,或者简单地作为一个函数,然后由综合工具转换为组合逻辑。请包含显示参数和结果格式和精度的代码部分,以获得更好的答案。 –
事情是,我甚至不知道如何开始。我添加的代码是我在其他地方找到的,我试图对其进行测试。但我真的不知道它是如何工作的,这种情况下结构中的这些值是什么,以及如何将它与我的颜色输出连接以使用上述等式绘制波带片。 –