无法解析网络的多个常量驱动程序

时间:2018-11-04 10:44:04

标签: vhdl

我写了这段代码。我想计算按它们的数字key_0的数字,如果按2次,则红色指示灯会亮起,我怎么会收到此错误:

  

无法解析net的多个常量驱动程序。

问题是,我试图同时撕裂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 :(得分:1)

您以0 连续驱动duty_cycle_counter尝试在key_testing进程中对其进行更新。看起来您想要一个起始值(在大多数基于RAM的FPGA中可能是)或重置,尽管在现实生活中它将具有 some 值,因此您可以省去初始化。