我正在尝试创建一个实体来填充信号中的数组,但是我收到以下错误:接近文本“=”期待“(”或“'”或“。”
这是我的vhdl代码
library ieee;
use ieee.std_logic_1164.all;
library work;
use work.all;
entity decryptionarray is
port(
clk: in std_logic;
key_in: in std_logic_vector(7 downto 0);
encrypted_data : in std_logic_vector(127 downto 0);
encrypted_data_in : in std_logic_vector(127 downto 0);
decryption_key: out std_logic_vector(7 downto 0)
);
end entity decryptionarray;
architecture bhv of decryptionarray is
type deckeyarray is array (0 to 10) of std_logic_vector(127 downto 0);
signal dkey, keyin : std_logic_vector(7 downto 0);
signal edatain, edata : std_logic_vector(127 downto 0);
begin
P0:process(clk) is
begin
if(deckeyarray(10)/=null) then
for j in 0 to 10 loop
deckeyarray(j)=null;
end loop;
else
keyin <= key_in;
edata <= encrypted_data;
edatain <= encrypted_data_in ;
dkey <= decryption_key ;
end if;
end process P0;
end architecture bhv;
答案 0 :(得分:2)
VHDL没有与null
中的deckeyarray(10)/=null
进行比较,而deckeyarray
是一种类型,而不是信号。
要检查所有0,你可以这样做:
use ieee.numeric_std.all;
...
type deckeyarray_t is array (0 to 10) of std_logic_vector(127 downto 0);
signal deckeyarray : deckeyarray_t;
...
if unsigned(deckeyarray(10)) = 0 then
也可以不使用unsigned
和numeric_std
进行比较,而是使用deckeyarray(10) = (deckeyarray(10)'range => '0')
代替。
要填写所有0,您可以这样做:
deckeyarray(j) <= (others => '0');
请注意decryption_key
输出端口在dkey <= decryption_key;
中读取,这是没有意义的。