Я застрял в этой программе, чтобы создать собственный импульс из внешнего триггера и внутреннего триггера.
Вот моя программа для внешнего триггера.Для генерации собственного импульса потребуется сигнал запуска от входного порта «trig_in»:
if state_trig = extrig then
if (trig_in = '1') then
counter1 <= "000000";
if(counter >= 1 and counter <= 2) then
pwm_out1 <= '1';
pwm_out2 <= '0';
end if;
if(counter > 2 and counter <= 600) then
pwm_out1 <= '0';
pwm_out2 <= '0';
end if;
if(counter > 600 and counter <= 3000) then
pwm_out1 <= '1';
pwm_out2 <= '1';
end if;
counter <= counter + 1;
else if (trig_in = '0') then
counter <= "000000";
counter1 <= counter1 + 1;
if (counter1 >= 2100) then
pwm_out1 <= '0';
pwm_out2 <= '0';
end if;
end if;
end if;
end if;
А вот и программа для внутреннего запуска.Он будет генерировать импульс повторения 1 кГц для запуска на выходном порте «trig_out»:
if state_trig = intrig then
--1kHz
if(i >= 1 and i <= 2) then
pwm_out1 <= '1';
pwm_out2 <= '0';
end if;
if(i > 2 and i <= 600) then
pwm_out1 <= '0';
pwm_out2 <= '0';
end if;
if(i > 600 and i <= 3000) then
pwm_out1 <= '1';
pwm_out2 <= '1';
end if;
if(i > 3000) then
pwm_out1 <= '0';
pwm_out2 <= '0';
end if;
if(i = 300000) then i := 0; end if;
i := i + 1;
end if;
end if;
Я использую состояние fsm для определения состояний «extrig» и «intrig».
type fsm_trig is (none, intrig, extrig);
signal state_trig : fsm_trig := none;
Две программы работают отдельно идеально.Но когда я помещаю их обоих в один процесс (часы).Импульс, который генерируется в каждой триггерной программе, конфликтует друг с другом.Я использую UART, чтобы определить состояние триггера.Два сигнала "pwm_out1" и "pwm_out2" назначены выходным портам для генерации импульса:
out_clk1 <= pwm_out1;
out_clk2 <= pwm_out2;
Вот порты для двух программ:
sys_clk : in STD_LOGIC; --system clock
rx : in STD_LOGIC; --receive for UART
trig_in : in STD_LOGIC; --External trigger
trig_out : out STD_LOGIC; --Internal trigger
out_clk1 : out STD_LOGIC; --Pulse out1
out_clk2 : out STD_LOGIC; --Pulse out2
Пожалуйста, дайте мне любую идею, чтобыизбежать конфликтов между двумя программами.Заранее спасибо.