Я написал код для моего проекта в VHDL, но я получаю сообщение об ошибке при использовании сигнала - PullRequest
0 голосов
/ 05 марта 2019
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity keygeneration is
    Port ( key : in  STD_LOGIC_VECTOR (127 downto 0);
           rc : in  STD_LOGIC_VECTOR (3 downto 0);
           keyout : out  STD_LOGIC_VECTOR (127 downto 0));
end keygeneration;

architecture Behavioral of keygeneration is

component sbox is
     port(a: in std_logic_vector(7 downto 0);
          y: out std_logic_vector(7 downto 0));
end component;
component RCON is
 Port ( rc : in  STD_LOGIC_VECTOR (3 downto 0);
            rout : out  STD_LOGIC_VECTOR (31 downto 0));
end component;
signal w0,w1,w2,w3,tem: STD_LOGIC_VECTOR (31 downto 0);
signal rout1: STD_LOGIC_VECTOR (31 downto 0);

begin
-- 52nd line below
w0<=key[127 downto 96];
w1<=key[95 downto 64];
w2<=key[63 downto 32];
w3<=key[31 downto 0];

t1: sbox port map(w3[23 downto 16],tem[31 downto 0]);
t2: sbox port map(w3[15 downto 8],tem[23 downto 16]);
t3: sbox port map(w3[7 downto 0],tem[15 downto 8]);
t4: sbox port map(w3[31 downto 24],tem[7 downto 0]);

r1: RCON port map(rc[3 downto 0],rout1[31 downto 0]);

keyout[127 downto 96]<=w0^tem^rout1;
keyout[95 downto 64]<=w0^tem^rout1^w1;
keyout[63 downto 32]<=w0^tem^rout1^w1^w2;
keyout[31 downto 0]<=w0^tem^rout1^w1^w2^w3;

end Behavioral;

Обнаружена ошибка

ОШИБКА: HDLParsers: 164 - строка "D: /Files/newpro/keygeneration.vhd" 52. ошибка синтаксического анализа, неожиданный INTEGER_LITERAL, ожидающий RETURN или ИДЕНТИФИКАТОР или RSQBRACK.

Я показал 52-ю строку в коде. Я получил ту же ошибку для всех операторов присваивания из строки 52. Пожалуйста, помогите. Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 05 марта 2019

2 ошибки:

VHDL не использует [] для индексации массивов (хотя они используются для подписей ). Вместо этого используйте () для индексации массивов.

В VHDL нет оператора ^. Вместо этого используйте xor.

0 голосов
/ 05 марта 2019

Вы не это имеете в виду:

w0<=key[127 downto 96];

Вы имеете в виду это:

w0<=key(127 downto 96);
...