Ошибка разбора в VHDL
У меня возникла эта проблема при кодировании 3-битного счетчика с помощью JK-триггеров, и я случайно обнаружил ошибку в 34 строке, которая записывается автоматически XILINX VHDL, поэтому я запутался в том, что на самом деле неправильно.
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
USE ieee.numeric_std.ALL;
ENTITY 3bitBrojacTest_vhd IS
END 3bitBrojacTest_vhd;
ARCHITECTURE behavior OF 3bitBrojacTest_vhd IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT Asinhroni3BitBrojacModule
PORT(
Clk : IN std_logic;
High : IN std_logic;
Q0 : INOUT std_logic;
Q1 : INOUT std_logic;
Q2 : INOUT std_logic;
Q2neg : INOUT std_logic
);
END COMPONENT;
--Inputs
SIGNAL Clk : std_logic := '0';
SIGNAL High : std_logic := '0';
--BiDirs
SIGNAL Q0 : std_logic;
SIGNAL Q1 : std_logic;
SIGNAL Q2 : std_logic;
SIGNAL Q2neg : std_logic;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: Asinhroni3BitBrojacModule PORT MAP(
Clk => Clk,
High => High,
Q0 => Q0,
Q1 => Q1,
Q2 => Q2,
Q2neg => Q2neg
);
clk_proc: process
begin
Clk <= '1';
wait for 10ns;
Clk <= '0';
wait for 10ns;
end process;
tb : PROCESS
BEGIN
-- Wait 100 ns for global reset to finish
wait for 100ns;
High <= '1';
wait for 160ns;
High <= '0';
wait; -- will wait forever
END PROCESS;
END;
Итак, ошибка говорит:
ОШИБКА:HDLParsers:164 - строка 34. ошибка синтаксического анализа, неожиданный INTEGER_LITERAL, ожидающий анализ IDENTIFIER "3bitBrojacTest_vhd_stx.prj": 1.27
Если кто-нибудь знает, как это исправить, я был бы очень рад получить такой ответ. Спасибо, парни!
1 ответ
Несколько потенциальных проблем:
Я вполне уверен, что имя вашей сущности не может начинаться с цифры.
Вам нужно пространство между вашим временем и суффиксом. (Например
wait for 10 ns;
)Вы не должны включать и numeric_std, и std_logic_unsigned в один и тот же файл. Просто используйте numeric_std, поскольку это пакет, поддерживаемый IEEE.