1
我是VHDL的新手,我搜索了所有的互联网,我没有找到任何可以帮助我的东西!我试图添加一个数组的元素(32个元素!),所以我不能只写 例如s < = s(0)+ s(1)+ s(3)... s( 5)+ .... s(32)数组元素的总和VHDL
我怎么能概括这样一个计算? 或我做错了什么?
我的代码(在模拟没有工作)是... (只是5个elemets ....)
library IEEE;
library work;
library std;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
use ieee.std_logic_arith.all;
entity main is Port (
EIN : in std_logic;
AUS_1 : out std_logic_vector(3 downto 0));
end main;
architecture Behaviour of main is
type Cosinus is array (0 to 4) of std_logic_vector(3 downto 0);
type Sinus is array (0 to 4) of std_logic_vector(3 downto 0);
Signal SumSin :std_logic_vector(3 downto 0);
begin
main : process(Ein)
variable Cos : Cosinus;
variable Sin : Sinus;
begin
if(Ein='1') then
sin(0) := "0011";
sin(1) := "0001";
sin(2) := "1010";
sin(3) := "1111";
sin(4) := "1110";
for n in 0 to 4 loop
SumSin <= SumSin + Sin(n);
end loop;
else
sin(0) := "1011";
sin(1) := "0101";
sin(2) := "1000";
sin(3) := "1001";
sin(4) := "1100";
for n in 0 to 4 loop
SumSin <= SumSin + Sin(n);
end loop;
end if;
end process;
Aus_1 <= SumSin;
end Behaviour;
我会thanksfull
这个程序有很多问题,但我认为最大的问题是对信号分配的误解。有关信号分配如何工作的说明,请参阅此帖子。 http://stackoverflow.com/questions/13954193/is-process-in-vhdl-reentrant至于如何处理它:一种解决方案是将SumSin变量,并将其复制(通过一个单一的信号分配) Aus在这个过程的最后。 –