Ошибка выхода из компилятора VHDL - PullRequest
0 голосов
/ 27 марта 2012

Я создаю тестовый стенд для BCD_counter.

Когда я пытаюсь скомпилировать тестовый стенд, я постоянно получаю сообщение об ошибке:

"Ошибка: ... /.../../Test_UpDownCounter.vhdl(38): Выход из компилятора VHDL. "

Это единственная ошибка, которую я получаю, а строка 38 - последняя строка моего кода.Мне интересно, в чем может быть проблема?

Вот мой код, любая помощь будет высоко ценится.

entity test_BCD is
  end entity test_BCD;

  architecture test of test_BCD is 
     signal t_clk, t_direction, t_init, t_enable: bit;
     signal t_q : integer;

     component UpDownCounter is 
          port(clk, direction, init, enable: in bit;
              q_out: out integer);
     end component;

     begin
       my_design: UpDownCounter port map (t_enable, t_q, t_clk, t_direction, t_init, t_enable);


       clk_gen: process
          constant High_time : Time :=5 ns;
          constant Low_time : Time := 5 ns;
       begin
          wait for High_time;
          t_clk <= '1';
          wait for Low_time;
          t_clk <= '0';
       end process clk_gen; 


       -- Initialization process (code that executes only once).
       init: process
       begin 
          -- enable signal
          t_enable <= '1', '0' after 100 ns, '1' after 200 ns;
          t_direction <= '1', '0' after 50 ns, '1' after 100 ns, '0' after 150 ns;
          t_init <= '0', '1' after 20 ns, '0' after 30 nz, '1' after 150 ns;
          wait;
       end process init;
end architecture test;

1 Ответ

2 голосов
/ 27 марта 2012

Эта строка:

t_init <= '0', '1' after 20 ns, '0' after 30 nz, '1' after 150 ns;

имеет nz вместо (я полагаю) ns в качестве единиц времени. Что мой компилятор говорит мне сразу:

** Error: test1.vhd(34): (vcom-1136) Unknown identifier "nz".

Я бы сгенерировал отчет об ошибке любым компилятором, чтобы он генерировал лучшие сообщения об ошибках!


Пока я здесь:

Ваше создание UpDownCounter выглядит неправильно - ваши сигналы выглядят не в том порядке, в котором вы использовали объявление компонента.


А вот в этом:

 clk_gen: process
      constant High_time : Time :=5 ns;
      constant Low_time : Time := 5 ns;
   begin
      wait for High_time;
      t_clk <= '1';
      wait for Low_time;
      t_clk <= '0';
   end process clk_gen; 

Ваши ярлыки High_time и Low_time возвращены вперед - попробуйте изменить один из них и посмотрите, изменится ли высокий или низкий момент, как вы ожидаете.

...