Hallo,
ich bin so ein absoluter Anfänger und möchte einfach ein kleines
LED-Blinkytoy aufbauen.
Wie kann ich in VHDL die Sequenz
"001"
"010"
"100"
und wieder von vorne, also ein einfaches Lauflicht mit 3 LED's
ausgeben? Ich habe einen Taktgenerator mit 0,25-20Hz.
Welche verschiedenen Möglichkeiten gibt es das zu schreiben?
Sorry, wenn ich die Experten mit so was langweile, würde mir aber sehr
helfen!
2) Du kannst einen Zähler bauen, der ein RAM indiziert.
type Rom is array (0 to 2) of std_logic_vector(2 downto 0);
constant ledarray : Rom := ("001","010","100");
signal cnt : integer range 0 to 2 := 0;
begin
process
begin
wait until rising_edge(clk);
if (cnt<2) then
cnt <= cnt+1;
else
cnt <= 0;
end if;
leds <= ledarray(cnt);
end process;
aber das funktioniert nicht gut.
Dong Wang schrieb:
> aber das funktioniert nicht gut.
Oh nein, wie in aller Welt konnte mir das nur passieren... :-o
Als Tipp: Lies die Fehlermeldung des Syntax-Checks, mach dann den
kleinen Syntaxfehler (das x) raus, dann gehts.
Falls das nicht klappt, hier die korrigierte Kopiervorlage:
Eine Taste nimmt man für gewöhnlich nicht als Takt.
Da dein Taster mit Sicherheit prellt, und ein FPGA sehr flott ist, wird
er jede Flanke des prellens sehen.
>ich bin so ein absoluter Anfänger und möchte einfach ein kleines>LED-Blinkytoy aufbauen.
mein BuchTip: VHDL Synthese
>Du mussts IN die Entity packen und dort entsprechend als in port>deklarieren
Will doch cnt und Takt garnicht als Ein/Ausgang haben.
Port bedeutet doch Ein/Augang oder????
Kannst du mal posten wie's gemeint ist? Habe Brett vorm Kopf :-)
> u.a. hast jemand Idee, mache loop limit 4 mal.
Zähler sind dafür genau das richtige... ;-)
1
typeRomisarray(0to2)ofstd_logic_vector(2downto0);
2
constantledarray:Rom:=("001","010","100");
3
signalcnt:integerrange0to2:=0;
4
signalcntloop:integerrange0to3:=0;
5
:
6
processbegin
7
waituntilrising_edge(clk);
8
if(cntloop<3)then
9
if(cnt<2)then
10
cnt<=cnt+1;
11
else
12
cnt<=0;
13
cntloop<=cntloop+1;
14
endif;
15
endif;
16
endprocess;
17
18
leds<=ledarray(cnt);
BTW:
Der Hulk (Gast)
Dong Wang (honeyleabe)
Zappelphilipp (Gast)
Seid ihr alle an der selben Schule?
Bei der Prüfung müsst ihr das dann aber selber machen... :-o
Zappelphilipp schrieb:
>>Du mussts IN die Entity packen und dort entsprechend als in port>>deklarieren>> Will doch cnt und Takt garnicht als Ein/Ausgang haben.>> Port bedeutet doch Ein/Augang oder????>> Kannst du mal posten wie's gemeint ist? Habe Brett vorm Kopf :-)
Und woher soll der Takt auf den du sensibel sein willst kommen?
Lothar Miller schrieb:
> Christopher D. schrieb:>> Und woher soll der Takt auf den du sensibel sein willst kommen?> Wohl aus der Kombinatorik:>
1
>Takt<=LFGENorTaste1;
2
>
> Simulieren lässt sich das ohne Weiteres, aber es wird in der Realität> sicher lustige Effekte zeigen...
Das hab ich wohl überlesen.
Das ist ja wirklich gruselig :-o