Z
ZeleC
Guest
im tentando fazer um gerador de pulsos a ser implementado em um CPLD
a idéia é fazer com que um pulso de saída de 280 nos derivados de um relógio de 25kHz
o pulso começa na borda de subida de trig
Eu escrevi este e funcionou como expecteted quando eu simulada em ModelSim
timer280us entidade é
Port (Clk25k: in std_logic;
Trig: in std_logic;
Saída: out std_logic);
timer280us final;
Behavioral arquitetura de timer280us é
contador de sinal: std_logic_vector (2 downto 0): = "000";
Timer_on sinal: std_logic: = '0 ';
output_temp sinal: std_logic: = '1 ';
começo
count: processo (Clk25k, Trig)
começo
Se trig = '1 'then
- Se Timer_On = '1 'then
counter <= "000";
Timer_on <= '1 ';
- End if;
elsif Clk25k'event e (Clk25k = '1 ') then
Se Timer_On = '1 'then
counter <= counter 1;
Output_temp <= '0 ';
Se contador = "110", então
Timer_On <= '0 ';
Output_temp <= '1 ';
END IF;
END IF;
END IF;
end process;
- Reset: processo (trig)
- begin
- Se rising_edge trig () então
- Contador <= "000";
- Timer_On <= '1 ';
- End if;
- O processo final;
output <= output_temp;end Behavioral;
mas o problema foi que, quando um pulso de disparo ocorreu e enquanto o trig = '1 'o contador não começar, o que eu quero fazer é começar imediatamente na borda de subida de trig
Então, como posso reescrever o meu código para fazer isso.
a idéia é fazer com que um pulso de saída de 280 nos derivados de um relógio de 25kHz
o pulso começa na borda de subida de trig
Eu escrevi este e funcionou como expecteted quando eu simulada em ModelSim
timer280us entidade é
Port (Clk25k: in std_logic;
Trig: in std_logic;
Saída: out std_logic);
timer280us final;
Behavioral arquitetura de timer280us é
contador de sinal: std_logic_vector (2 downto 0): = "000";
Timer_on sinal: std_logic: = '0 ';
output_temp sinal: std_logic: = '1 ';
começo
count: processo (Clk25k, Trig)
começo
Se trig = '1 'then
- Se Timer_On = '1 'then
counter <= "000";
Timer_on <= '1 ';
- End if;
elsif Clk25k'event e (Clk25k = '1 ') then
Se Timer_On = '1 'then
counter <= counter 1;
Output_temp <= '0 ';
Se contador = "110", então
Timer_On <= '0 ';
Output_temp <= '1 ';
END IF;
END IF;
END IF;
end process;
- Reset: processo (trig)
- begin
- Se rising_edge trig () então
- Contador <= "000";
- Timer_On <= '1 ';
- End if;
- O processo final;
output <= output_temp;end Behavioral;
mas o problema foi que, quando um pulso de disparo ocorreu e enquanto o trig = '1 'o contador não começar, o que eu quero fazer é começar imediatamente na borda de subida de trig
Então, como posso reescrever o meu código para fazer isso.