Kai S. schrieb:
> Leider bekommen ich beim kompilieren folgenden Hinweis:
> WARNING:Xst:647 - Input <CLK> is never used.
Sieh dir mal den RTL-Schaltplan (zu finden bei der Synthese) an. Du
wirst sehen, dass der LED-ausgang einfach hart auf '1' verdrahtet wird
(Screenshot). Warum?
Du gibst der LED keinen Defaultwert, und bei jedem Takt wird die LED auf
'1' gesetzt. Deshalb gehen die Tools davon aus, dass dir auch der
Defaultwert '1' angenehm sein könnte.
Die Vorgabe eines Defaultwerts wäre eine Abhilfe:
1 | library IEEE;
|
2 | use IEEE.STD_LOGIC_1164.ALL;
|
3 |
|
4 | entity Taster is
|
5 | port ( CLK : in bit;
|
6 | LED : out bit := '0');
|
7 | end Taster;
|
8 |
|
9 | architecture Behavioral of Taster is
|
10 | begin
|
11 | process(CLK) begin
|
12 | if (CLK = '1' and CLK'event) then
|
13 | LED <= x;
|
14 | end if;
|
15 | end process;
|
16 | end Behavioral;
|
Besser wäre aber gleich, ein lokales signal zu verwenden, das zu
bearbeiten, und dann auf den Ausgang zuzuweisen:
1 | library IEEE;
|
2 | use IEEE.STD_LOGIC_1164.ALL;
|
3 |
|
4 | entity Taster is
|
5 | port ( CLK : in bit;
|
6 | LED : out bit);
|
7 | end Taster;
|
8 |
|
9 | architecture Behavioral of Taster is
|
10 | signal x : std_logic := '0';
|
11 | begin
|
12 | process(CLK) begin
|
13 | if (CLK = '1' and CLK'event) then
|
14 | x <= '1';
|
15 | end if;
|
16 | end process;
|
17 | LED <= x;
|
18 | end Behavioral;
|
Das Ergebnis ist dann genau gleich wie vorher, aber du kannst das Signal
problemlos lesen (z.B. zum toggeln).
Kai S. schrieb:
> Meine Idee war, den Taster quasi als Taktgeber zu nutzen
Das ist generell eine schlechte Idee, denn inzwischen weiß man vom
"Tasterprellen": 1 Tatendruck = viele Taktimpulse.
BTW:
>> use IEEE.STD_LOGIC_1164.ALL;
Wenn du schon die std_logic einbindest, dann verwende sie auch. Und
nicht das leidige Bit:
>> entity Taster is
>> port ( CLK : in bit;
>> LED : out bit);