Я программирую на VHDL 1993 под QUARTUS II, и я только что создал два компонента, чтобы попытаться решить проблему, которую я собираюсь представить, поскольку они не были решением. Перед этим файлы компонентов включены в проект и работают по одному за раз.
Таким образом, в моем основном приложении я пытаюсь выполнить две работы, одна из которых - мигать светодиодом и включить другой светодиод, управляемый переключателем, когда я объявляю оба компонента только одним, управляющим светодиодом с переключателем, затем когда я объявил компонент светодиодного переключателя и его сигналы в элементе верхнего уровня, мигалка работает, я думаю, что это проблема с объявлениями сигналов на объекте верхнего уровня "test2", но я не понимаю, почему он работает только когда я использую одну вещь за раз, то, что я закодировал в сущности верхнего уровня:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity test2 is
port( clk_cpu, K2: in std_logic;
led1, led2: out std_logic);
end test2;
architecture struct of test2 is
component tmp_toogler
port( clk: in std_logic;
led: out std_logic);
end component;
component yes_driver
port( input: in std_logic;
output: out std_logic);
end component;
begin
instanciaD: yes_driver PORT MAP(
K2, led2
);
instancia1: tmp_toogler PORT MAP(
clk_cpu, led1
);
end struct;
Компонент мигалки:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity tmp_toogler is
port( clk: in std_logic;
led: out std_logic);
end tmp_toogler;
architecture struct of tmp_toogler is
signal counter: integer range 0 to 50000000;
signal state : std_logic := '1';
begin
process(clk)
begin
if(rising_edge(clk)) then
counter <= counter + 1;
end if;
if(counter = 50000000) then
counter <= 0;
if(state = '0') then
led <= '1';
state <= '1';
else
led <= '0';
state <= '0';
end if;
end if;
end process;
end struct;
Светодиодный выключатель:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity yes_driver is
port( input: in std_logic;
output: out std_logic);
end yes_driver;
architecture struct of yes_driver is
begin
process(input)
begin
output <= input;
end process;
end struct;
Я чувствую, что это очень простой вопрос о выполнении нескольких задач, поэтому я прошу помощи, заранее спасибо.