Не удается разрешить несколько постоянных драйверов для сети - PullRequest
0 голосов
/ 04 ноября 2018

Я написал этот код. Я хочу сосчитать числа, которые я нажал, они key_0, и если я нажму 2 раза, включится красный светодиод, как только я получу эту ошибку:

Не удается разрешить несколько постоянных драйверов для сети.

Дело в том, что я пытаюсь разорвать на 2 процесса одновременно, как бы этот процесс буксировки не имел одинаковую переменную: duty_cycle_counter.

В чем проблема?

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_UNSIGNED.all;

entity Pwm_control is

  generic(display_resolution : INTEGER := 8);

  port(
    key_0     : in  BIT;
    green_led : out BIT;
    red_led   : out BIT
  );
end Pwm_control;

architecture Behavioral of Pwm_control is

  signal counter         : std_logic_vector(display_resolution downto 0);
  signal general_counter : std_logic_vector(23 downto 0); -- general_counter is for the clock divider , can get till 23 

  signal step_10_dc         : STD_LOGIC_VECTOR(8 downto 0); --10 step PWM 
  signal step_5_dc          : STD_LOGIC_VECTOR(8 downto 0); --5 step PWM 
  signal starting_value_0   : STD_LOGIC_VECTOR(8 downto 0); --0 step PWM 
  signal duty_cycle_counter : STD_LOGIC_VECTOR(8 downto 0);

begin
  starting_value_0   <= "000000000";
  step_5_dc          <= "000011010";
  step_10_dc         <= "000110011";
  duty_cycle_counter <= "000000000";

  key_testing : process(key_0)        -- 
  begin
    if (key_0 = '0') then
      green_led          <= '1';
      duty_cycle_counter <= (duty_cycle_counter + step_5_dc);
    else
      green_led <= '0';
    end if;

  end process key_testing;

  key_test_red_led : process(duty_cycle_counter)
  begin
    if (step_10_dc <= duty_cycle_counter) then
      red_led <= '1';
    end if;
  end process key_test_red_led;

end Behavioral;

1 Ответ

0 голосов
/ 04 ноября 2018

Вы ведете duty_cycle_counter непрерывно с 0 и , пытаясь обновить его в процессе key_testing. Похоже, вы хотели получить начальное значение (возможно в большинстве FPGA на основе ОЗУ) или сброс, хотя в реальной жизни он будет иметь значение некоторое , поэтому вы можете просто пропустить инициализацию.

...