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在這個過程的最後。 –