Ich bin neu in VHDL. Ich habe einen Prozess für mein Projekt (einen Timer) gemacht, der zwei Tasten beinhaltet (M - Inkrementiere Minuten und S - Inkrementiere Sekunden). Ich muss sie enthüllen. Ich kenne Debounce-Prozess, aber ich weiß nicht, wie ich es in meinem Projekt implementieren soll. [EDIT] Meine Frage ist, wie Entpraller in meinem Projekt zu implementieren? Muss ich nur einen neuen Prozess erstellen?VHDL Wie können einige Schaltflächen nach dem Erstellen des Prozesses entprellt werden?
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_unsigned.all;
use IEEE.STD_LOGIC_arith.all;
entity Timer is
port(start_stop,M,S : in std_logic; --Start/Stop , Minutes,Seconds
clk : in std_logic; -- clock 1MHz
s1,s2,m1,m2 : out std_logic_vector(3 downto 0)); --BCD representation for seconds and minutes
end Timer;
--}} End of automatically maintained section
architecture Timer of Timer is
begin
P0 : process(M,S,start_stop)
variable temp1,temp2,temp3,temp4 : std_logic_vector(3 downto 0);
variable carry_s,carry_m : std_logic;
begin
if(M = '1' and S = '1')
then
temp1 := "0000";
temp2 := "0000";
temp3 := "0000";
temp4 := "0000";
s1 <= temp1;
s2 <= temp2;
m1 <= temp3;
m2 <= temp4;
end if;--RESET when you press M and S
if(M = '0' and S = '1')
then
temp1 := temp1 + "0001";
if(temp1 = "1010")
then
temp1 := "0000";
carry_s := '1';
else
carry_s := '0';
end if;
if(carry_s = '1')
then
temp2 := temp2 + "0001";
if(temp2 = "0110")
then
temp2 := "0000";
carry_s := '0';
end if;
end if;
s1 <= temp1;
s2 <= temp2;
end if;-- Increment seconds when you press S
if(M = '1' and S = '0')
then
temp3 := temp3 + "0001";
if(temp3 = "1010")
then
temp3 := "0000";
carry_m := '1';
else
carry_m := '0';
end if;
if(carry_m = '1')
then
temp4 := temp4 + "0001";
if(temp4 = "0110")
then
temp4 := "0000";
carry_m := '0';
end if;
end if;
m1 <= temp3;
m2 <= temp4;
end if;-- Increment seconds when you press S
end process P0;
end Timer;
So verbinden, was ist Ihre eigentliche Frage? Was verstehst du nicht? –