2016-05-10 14 views
0

信号から配列を埋めるためにエンティティを作成しようとしていますが、次のエラーが発生します。 "(" または "' "や"。"near text "=" expecting "("または "'"または "。"

これは

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

'タイプ'を作成しましたが、このタイプの信号/変数を作成する必要があります。 "信号example_signal:deckeyarray;"これで、for-loopでこのシグナルを使用できます。型はstd_ulogicなどと同じです。型に基づいてシグナル/変数を作成する必要があります。 –

+0

(1)型を宣言した場合、その型の信号を宣言し、その型自体ではなくその信号で動作させたいかもしれません! (2)代入文で使用される等価演算子(報告されたエラー)(3) "null"は予約語であり、有効なstd_logic_vector値を宣言しません。 –

答えて

2

私のVHDLコードでVHDLはdeckeyarray(10)/=nullのよう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')を使用して比較することもできます。意味をなさないdecryption_key出力ポートがdkey <= decryption_key;に読まれることを

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

注意:すべて0あなたが行うことができますでいっぱいに

+1

'decryption_key'は出力ポートです –

+0

ありがとう、答えで修正しました。 –

関連する問題