接近文本“=”期待“(”或“'”或“。”

时间:2016-05-10 09:24:12

标签: vhdl

我正在尝试创建一个实体来填充信号中的数组,但是我收到以下错误:接近文本“=”期待“(”或“'”或“。”

这是我的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;   

1 个答案:

答案 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

也可以不使用unsignednumeric_std进行比较,而是使用deckeyarray(10) = (deckeyarray(10)'range => '0')代替。

要填写所有0,您可以这样做:

deckeyarray(j) <= (others => '0');

请注意decryption_key输出端口在dkey <= decryption_key;中读取,这是没有意义的。