modelim говорит: рядом ")": (vcom-1576) ожидает ИДЕНТИФИКАТОР. но исправление дает больше ошибок

при использовании этого кода:

      library IEEE;
use IEEE.Std_logic_1164.all;
use IEEE.Numeric_STD.all;

entity CLOCKDIVIDER_TB is
end entity CLOCKDIVIDER_TB;

architecture BENCH of CLOCKDIVIDER_TB is

--declare component
component ClockDivider
    Port(
        CLK            : IN STD_LOGIC;   
        RST            : IN STD_LOGIC;
        CLK_OUT_DIV_01 : OUT STD_LOGIC;
        CLK_OUT_DIV_02 : OUT STD_LOGIC;
        CLK_OUT_DIV_03 : OUT STD_LOGIC;
        CLK_OUT_DIV_04 : OUT STD_LOGIC;
    );
end component;

--inputs
signal CLK            : IN STD_LOGIC := '0';   
signal RST            : IN STD_LOGIC := '0';

--outputs   
signal CLK_OUT_DIV_01 : OUT STD_LOGIC;
signal CLK_OUT_DIV_02 : OUT STD_LOGIC;
signal CLK_OUT_DIV_03 : OUT STD_LOGIC;
signal CLK_OUT_DIV_04 : OUT STD_LOGIC;

--clock period
constant clk_t : time := 20 ns;

BEGIN

--uut instance
uut: ClockDivider PORT MAP (
    CLK  => CLK,
    RST  => RST,
    CLK_OUT_DIV_01 => CLK_OUT_DIV_01,
    CLK_OUT_DIV_02 => CLK_OUT_DIV_02,
    CLK_OUT_DIV_03 => CLK_OUT_DIV_03,
    CLK_OUT_DIV_04 => CLK_OUT_DIV_04
);

  -- Clock definition.
clk_process: process
begin
    CLK <= '0';
    wait for clk_t / 2;
    CLK <= '1';
    wait for clk_t / 2;
end process;

-- Processing.
stim_proc: process
begin
    wait for 100 ns;
    reset <= '1'; -- Up
    wait for 100 ns;
    reset <= '0'; -- Down
        wait;
end process;


end architecture BENCH;

Я получаю сообщение об ошибке:

      ** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(27): near ")": (vcom-1576) expecting IDENTIFIER.

Однако при исправлении этой ошибки путем удаления точки с запятой в объявлении компонента:

      --declare component
component ClockDivider
    Port(
        CLK            : IN STD_LOGIC;   
        RST            : IN STD_LOGIC;
        CLK_OUT_DIV_01 : OUT STD_LOGIC;
        CLK_OUT_DIV_02 : OUT STD_LOGIC;
        CLK_OUT_DIV_03 : OUT STD_LOGIC;
        CLK_OUT_DIV_04 : OUT STD_LOGIC
    );

программа выдает следующие ошибки:

      ** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(31): near "IN": (vcom-1576) expecting STRING or IDENTIFIER or << or '('.
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(32): near "IN": (vcom-1576) expecting STRING or IDENTIFIER or << or '('.
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(35): near "OUT": (vcom-1576) expecting STRING or IDENTIFIER or << or '('.
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(36): near "OUT": (vcom-1576) expecting STRING or IDENTIFIER or << or '('.
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(37): near "OUT": (vcom-1576) expecting STRING or IDENTIFIER or << or '('.
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(38): near "OUT": (vcom-1576) expecting STRING or IDENTIFIER or << or '('.
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(47): (vcom-1136) Unknown identifier "CLK".
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(48): (vcom-1136) Unknown identifier "RST".
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(49): (vcom-1136) Unknown identifier "CLK_OUT_DIV_01".
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(50): (vcom-1136) Unknown identifier "CLK_OUT_DIV_02".
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(51): (vcom-1136) Unknown identifier "CLK_OUT_DIV_03".
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(52): (vcom-1136) Unknown identifier "CLK_OUT_DIV_04".
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(58): Illegal target for signal assignment.
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(58): (vcom-1136) Unknown identifier "CLK".
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(60): Illegal target for signal assignment.
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(60): (vcom-1136) Unknown identifier "CLK".
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(68): Illegal target for signal assignment.
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(68): (vcom-1136) Unknown identifier "reset".
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(70): Illegal target for signal assignment.
** Error: D:\modelsim\week 2\ClockDivider_tb.vhd(70): (vcom-1136) Unknown identifier "reset". 

Я не слишком уверен, почему программа ломается, когда я исправляю синтаксическую ошибку.

Я также довольно новичок в программе, и я не могу понять, что не так, используя другие примеры.

Кто-нибудь знает, как это исправить?

0 ответов

Другие вопросы по тегам