我想在VHDL中做这样的事情。
Yout = Xin(n) + 2Xin(n-1)
,其中n为时间戳记。
在下一次调用该函数/公式时,我将如何存储Xin的值?
此刻我正在学习vhdl。我来自“常规”编程,很难缠住vhdl。我的第一个镜头类似于以下内容,但是当我阅读更多内容时,我认为这并不是路要走,因为所有事物同时发生,并且Xtemp的新值将覆盖我所需的那个。
现在,我对如何进行工作一无所知,因此我们将不胜感激。
architecture Behavioral of randomFilter is
signal Xin : STD_LOGIC_VECTOR (7 downto 0);
signal Yout : STD_LOGIC_VECTOR (7 downto 0);
variable Xtemp : STD_LOGIC_VECTOR (7 downto 0) := "00000000";
begin
process(clk,rstn)
if(rstn = '0') then
Yout <= (others => '0');
elsif(rising_edge(clk)) then
Yout <= Xin + 2 * Xtemp;
Xtemp := Xin;
end if;
end process;
end Behavioral;
编辑:如果正确的话。如果我必须存储一个以上的值,该怎么办?如果公式会更长(让我们过去过去20个步骤),则我不能使用20个变量来存储这些变量。这样做的正确方法是什么?