Da hätte ich auch mal eine Frage. Welche Technik würde man in der
Praxis zum Entprellen eines Tasters verwernden.
a) Die oben beschriebene inkl. eines Clockdividers o.ä.
oder
b) Die Beschreibung mit einem runterzählenden Counter, der sich bei
einer Störung zurücksetzt. Diesen kann man ja am normalen Clock
betreiben, wenn man nur den Counter groß genug wählt. (50MHz bei meinem
S3 Board)
bspw.
1 | signal key_old, key_tmp: std_logic;
|
2 | signal cnt: std_logic_vector(19 downto 0);
|
3 |
|
4 | -- begin
|
5 |
|
6 | deb:process(CLK_50)
|
7 | begin
|
8 | if rising_edge(CLK_50) then
|
9 | key_tmp <= KEY_IN;
|
10 | if key_tmp /= key_old then
|
11 | cnt <= cnt-1;
|
12 | else
|
13 | cnt <= (others => '1');
|
14 | end if;
|
15 | if cnt=0 then
|
16 | key_old <= key_tmp;
|
17 | end if;
|
18 | end if;
|
19 | end process deb;
|
20 | KEY_OUT <= key_old;
|
Gibt es einen Grund, einer dieser Techniken den Vorzug zu geben, oder
macht man das in der Praxis nochmal ganz anders?