Hallo,
ich beschäftige mich erst seit 2 Tagen mit VHDL und einem Digilent
Basys2 Board
Ich benötige für ein Projekt einen 1kHZ Ton, den ich über einen Pin
ausgeben möchte, um damit einen kleinen Lautsprecher zu treiben, so dass
er leise piept.
Der Frequenzteiler funktioniert auch, wenn ich einen Bitvector
hochzählen lasse und dann ein einzelnes Bit abgreife, das halt immer hin
und her toggelt.
Damit erreiche ich aber leider eben keine genauen 1 kHZ.
Nun versuche ich den Frequenteiler auf andere Art zu realisieren aber
das funktioniert einfach nicht. Der Lautsprecher bleibt stumm obwohl die
Pins korrekt zugewiesen sind (eben genauso wie in der Version oben).
Kann mir jemand einen Tipp geben wo mein Denkfehler liegt?
Bin sehr dankbar für jede Hilfe.
1 | entity main is
|
2 | port (
|
3 | CLK: in std_logic;
|
4 | TON: out std_logic;
|
5 | RESET: in std_logic
|
6 | );
|
7 | end main;
|
8 |
|
9 | architecture Behavioral of main is
|
10 | signal COUNTER: std_logic_vector(15 downto 0);
|
11 | signal KHZ: std_logic;
|
12 | begin
|
13 |
|
14 | CounterProcess: process(RESET, CLK)
|
15 | begin
|
16 | if (RESET='1') then
|
17 | COUNTER <= (others =>'0');
|
18 | KHZ <= '0';
|
19 | elsif rising_edge(CLK) then
|
20 | if COUNTER = "1100001101010000" then -- Zähler bis 50000
|
21 | KHZ <= '1';
|
22 | COUNTER <= (others => '0');
|
23 | else
|
24 | COUNTER <= COUNTER + 1;
|
25 | KHZ <= '0';
|
26 | end if;
|
27 | end if;
|
28 |
|
29 | end process;
|
30 |
|
31 | TON <= KHZ;
|
32 |
|
33 | end Behavioral;
|