Hallo Leute,
Ich habe ein Problem.
Ich habe mit vor 1-2 Monaten ein Altera board gekauft (Altera DE2) und
wollte bischen Vhdl Programmieren. in c ist das irgendwie leichter g
Mein erstes Projekt soll eine Ampel sein, das heist ich möchte LED1
ansteuern nach einer sekunde soll zusätzlich die LED2 angehen. nach
einer sekunde soll diese ausgehen und die LED3 angehen. nach 5 sekunden
soll die LED3 ausgehen und es soll die LED 2 wieder angehen und nach
1sekunde die ausgehen und LED1 wieder angehen.
ich habe mal geschaut. die Wait anweisung kann ich soweit ich gelesen
habe nicht anwenden und die while sollte man lieder vermeiden. habe es
dann mit einer for schleife probiert aber da bin ich gescheitert.
habe dann erstmal einen 1mhz frequenztakt block erstellt um die sekunden
besser zählen zu können. dies hab ich mit einer if- schleife gemacht und
habe diesen takt über eine LED ausgegeben um zusehen ob es auch
funktioniert. das tut es sehr gut.
Aber ich bekommen es einfach nicht hin zu sagen wenn LED1 an ist dann
schalte LED2 nach so oder soviel sekunden dazu und dann nach einer
stimmten zeit wieder aus und die LED3 an. Diese zeitspanne/ warte
schleife verstehe ich nicht. hoffe ihr könnt mir da irgendwie weiter
helfen.
vielen dank schonmal =)
Lg Robert
MIBes. schrieb:> Solange es IF-Schleifen gibt, gibt es nur eins: Lernen.
Solche unqualifizierten Kommentare liebe ich. Das macht diese Forum so
"lebendig"...... :-(
wow das ist ja der hammer hier!!! so schnell antworten =D cool ;)
MAD schrieb:> MIBes. schrieb:>> Solange es IF-Schleifen gibt, gibt es nur eins: Lernen.> Solche unqualifizierten Kommentare liebe ich. Das macht diese Forum so> "lebendig"...... :-(
gut das du das auch so siehst g =)
Böser Kommunist schrieb:> oder noch einfacher IF (Counter>0 AND counter<1000000)THEN> LED1<=1> ELSE> LED1<=0> END IF;> IF ((Counter>1000000 AND counter<2000000) OR (Counter>7000000 AND> counter<8000000 ))THEN> LED2<=1> ELSE> LED2<=0> END IF;> IF (Counter>2000000 AND counter<7000000)THEN> LED3<=1> ELSE> LED3<=0> END IF;
ok das hab ich aufjedenfall verstanden =D wieso bin ich nicht auf so
eine idee gekommen ? =) cool danke =D
aber wie mache ich das mit dem counter. wann fange ich da wo an zu
zählen?
da mache ich um deinen quelltext noch eine if schleife in der ich vor
deinem code den counter um 1 hoch setzte. somit zähle ich immer den
counter hoch. liege ich da richtig oder denk ich da falsch?
Lg Robert
Ps: ich muss nochmal sagen das ich es super klasse finde wie einem hier
geholfen wird!!!!! cool danke =D
Na du hast ja 1Mhz Clock, also füge mmein quellcode in
IF(clk'event adn clk='1')--statement
And danach machst du sowas
IF(couner<8000000)Then
counter<=counter+1;
ESLE
couner<=0;
END IF
bko schrieb:>>wollte bischen Vhdl Programmieren. in c ist das irgendwie> leichter>> löse dich von "softwaredenke", VHDL beschreibt Hardware.> Du brauchst für eine Ampel im Wesentlichen zwei Teile:>1......
cool danke. die pft ist ja sehr interessant! =)
Böser Kommunist schrieb:> Na du hast ja 1Mhz Clock, also füge mmein quellcode in> IF(clk'event adn clk='1')--statement>> And danach machst du sowas>> IF(couner<8000000)Then> counter<=counter+1;> ESLE> couner<=0;> END IF
cool danke. genau so hatte ich es mir gedacht =D werde das sofort
ausprobieren =D der tag ist ja noch lang g;)
supi vielen dank erstmal =D werde heute abend oder morgen weiteres
einstellen und berichten wie es geklappt hat =)
Robert schrieb:> Mein erstes Projekt soll eine Ampel sein
Schau mal da:
https://www.mikrocontroller.net/search?query=ampel+vhdl&forums[]=9&max_age=-&sort_by_date=1Robert schrieb:> habe dann erstmal einen 1mhz frequenztakt block erstellt um die sekunden> besser zählen zu können.
Das ist 1. unnötig.
Denn nicht du musst die Sekunden besser zählen, sondern das FPGA. Und
dem ist es schnurzegal ob es Mikrosekunden oder Vierzigstelmikrosekunden
oder Dreiunddreisigstelmikrosekunden zählen muss...
Und 2. sehr wahrscheinlich falsch.
Denn ich vermute stark, dass du dieses 1MHz Signal dann als Takt
verwendet hast. Aber Takte werden in FPGAs anders erzeugt...
Böser Kommunist schrieb:> einen Counter, der bei (LED1='1' AND LED'EVENT)
Können wir das nicht in den antiquitierten Lehrbüchern lassen?!
Wenn man ein Flip-Flop baucht verwendet man
Böser Kommunist schrieb:> Mach mal einfach einen Counter, der bei (LED1='1' AND LED'EVENT)> startet...
... und wenn du dann am Ende dieser speziellen Sackgasse angekommen
bist, dann helfen wir dir auch wieder heraus.
@ Duke:
Willst du da tatsächlich ein Stück mit reinfahren in die Sackgasse? ;-)
Hallo Leute =)
wollte eigentlich schon am wochenende schreiben aber mein laptop meinte
das er mal urlaub machen müsste. aber jetzt wieder alles ok.
so mein jetztiger stand.
ich bin meinem selbsterzeugen eines 1mhz taktes geblieben. haben 2
ampelsteuerungen erstellt die sich gegenseitig ansteuer und schön
nacheinander anlaufen.
dann habe ich als zusatz noch einen nachtmodus gemacht. ich habe mit
einem schalter einen dämmerungsschalter simuliert und wenn ich diesen
betätige dann läuft die angefangene ampelphase durch bis beide rot sind
und dann schalten sie auf ein blinkendes gelb um.
also soweit klappt alles schon mal =D
jetzt kommt aber mein nächstes problem =( hoffe ich könnt mir da auch
helfen.
ich möchte eine Platine bauen wo eine kreuzung drauf ist wo die LED´s
(rot, gelb, grüen,.....) aufgelöttet sind. so das ich nicht die LED´s
auf dem altera board ansteuere sondern die auf der platine. da habe ich
gedacht da kann ich ja an das GPIO1 gehen oder?
hoffe habe es verständlich erklären können mit der Platine!? =) versteht
ich wie ich meine ? =)
das GIPO kann ich ja als ein und ausgänge nutzen. da kann ich ja dran
gehen oder? wieviel spannung kommt an den I/O´s des GIPO´s an?
Lg Robert
ja, du kannst GPIO nehmen.
Aus der GPIO kommt 3.3 V , vllt brauchst du dann noch einen
Vorwiederstand, ich weiß nicht wieviel Strom aus deiner FPGA kommt,
ich denke aber nicht so viel...
grüß dich.
ahhh ok.(keine ahnung wie viel aus der FPGA kommt) da nehme ich lieber
noch einen verwiderstand. sicher ist sicher.
aber mal ne dumme frage. welche pin namen/nummern nehme ich da? bei den
LED´s und bei den schaltern steht es ja drunter/dran aber bei der GIPO
stehen ein paar viele. hast du da eine ahnung?
einen masse punkt hat die GIPO oder?
www.altera.com/education/univ/materials/boards/de2/unv-de2-board.html
Im "Datasheets for DE2 ZIP" findest du die DE2_Schematic.pdf
Seite 16 und 17 => GPIO_0 und GPIO_1
In Pin assignment sollst du die entsprechenden Namen finden.
z.B GPIO_0[0] ist oben links,GPIO_0[1] ist oben rechts etc.
Lothar Miller schrieb:> Böser Kommunist schrieb:>> Mach mal einfach einen Counter, der bei (LED1='1' AND LED'EVENT)>> startet...> ... und wenn du dann am Ende dieser speziellen Sackgasse angekommen> bist, dann helfen wir dir auch wieder heraus.>> @ Duke:> Willst du da tatsächlich ein Stück mit reinfahren in die Sackgasse? ;-)
Oh Mann, so einfach ist es nicht...
Ich habe neulich einen 'eingekauften' Design in den Fingern gehabt.
Urspruenglich von 'nem Uni-Prof gemacht (tja, da war bit und bit_vector
noch state-of-the-art, also auch nix mit 'rising_edge(clk)' und so...
Dann hat den Design ein 'modernerer' Kollege uebernommen. Strotzt nur so
vor 'variable', wahrscheinlich weil das ja schick ist und es sich so
anfuehlt wie 'lokale Variablen in C'...
Mir tut immer noch der Arsch weh von diesem Aufschlag (als ich den Code
gesehen habe). Das gehoert eigentlich komplett weggeschmissen und neu
geschrieben... Achja, der Simulator (Modelsim und GHDL) ist einfach beim
laden abgeschmiert...
Welche Firma zahlt soviel Schmerzensgeld...
Aber wir sind ja Exportnation Nummer 1!
ahh cool danke.
in der PDF ist ja das GIPO bgebildet und da ist einmal ein 5Volt
anschluss dran und ein 3.3Volt anschluss dran. ist das relevant? oder
kommen an allein GIPO I/O´s 3.3Volt raus und die 5 Volt ist dauer
spannung?
Robert schrieb:> oder kommen an allein GIPO I/O´s 3.3Volt raus und die 5 Volt ist dauer> spannung?
Kein FPGA, das in der Zeit nach der Jahrtausendwende gefertigt wurde,
kann mit 5V Hochspannung noch was anfangen. Wenn du da 5V anlegst, geht
es einfach kaputt.
Ob am IO-Pin 3,3V herauskommen, das hängt davon ab, wie die
entsprechende BAnk versorgt ist. Einfach mal die Doku zum FPGA und
EVAL-Board befragen.
Und dann schauen, ob die Pegel der 5V-Logik und der 3V-Logik irgendwie
zusammenpassen...
Falls nicht: siehe Pegelwandler
Hallo Leute,
so endlich ist es soweit. nach dem ich ein paar wochen nichts an dem
programm machen konnte ist jetzt die Platine fertig und das programm
auch. habe das programm auf dem Altera Board ausprobiert und hat super
funktioniert. habe dann die Platine geätzt und zusammen gelötet. habe
immer für 2 LED´s einen I/O von GPIO genommen. habe da programm auf
gespielt, immer stück für stück und es hatte fast funktioniert. jetzt
hab ihc aber ein komisches problem. Ich habe die beiden Fußgängerphasen
vertauscht. das heißt ich habe auf der gerade wo die grüne ampelphase
ist auch die grüne Fußgängerphase gebracht g also alle menschen würden
umgefahren werden. habe es im programm einfach getauscht. aber jetzt
kommt das problem. wen ich es tausche geht bei der einen Ampelphase die
grünen LED´s nicht mehr. leuchtkraft nur noch um die 10% mehr aber auch
nicht. aber warum? und was noch komisch ist das wenn alle ampeln rot
sind oder auch gelb dann sind immer 2 fußgänerampeln gedimmt ( die
beiden sind zusammen auf einem I/0 geklemmt). sobald aber von der ampel
die grünphase kommt werden Sie hell. hmm was könnte das sein?
ich weis nicht ob ich es gut rüberbringen konnte. wenn nicht sagt es mir
da stelle ich ein bild oder vielleicht auch ein video rein =)
danke =)
Lg Robert
Robert schrieb:> a stelle ich ein bild oder vielleicht auch ein video rein
Schaltplan wäre nützlicher.
Warscheinlich hast Du die LEDs direkt an die Ausgänge geklemmt und diese
ziehen zuviel Strom, sobald alle leuchten.
Oder die Versorgung bricht zusammen....
Und bitte, beschreibe nicht die Ampel, sondern die Schaltung (Grüne LED
leuchtet/leuchtet nicht).
Klaus Falser schrieb:> Robert schrieb:>> a stelle ich ein bild oder vielleicht auch ein video rein>> Schaltplan wäre nützlicher.> Warscheinlich hast Du die LEDs direkt an die Ausgänge geklemmt und diese> ziehen zuviel Strom, sobald alle leuchten.> Oder die Versorgung bricht zusammen....> Und bitte, beschreibe nicht die Ampel, sondern die Schaltung (Grüne LED> leuchtet/leuchtet nicht).
Hallo,
ahh ok alles klar =)
stehhe schaltplan so 15/16 uhr rein =) hab es gerade nicht dabei.
ne zuviel Strom können die LED´s nicht ziehen. habe extra welche gekauft
mit nur 2mA stromfluß so das ich an jedem ausgang 4mA strom ziehe. jedes
LED paar habe ich mit einem 330 Ohm vorwiderstand abgesichert um auf
nummer sicher zu gehen. aber bin ja noch dummer Student. ausfehlern
lernt man =) aber vielen danke das ihr so lieb helfen tut =D
also so 15-16 uhr ist das zeug drin. aber ich schaue nochmal schnell
nach ob ich es irgendwie anders in die uni bekomm.
Danke, Lg robert
nur so als Hinweis:
LED-Vorwiderstand dient nicht der Absicherung sondern dazu den Strom
einzustellen (LEDs sind Dioden, die haben einen ziemlich konstanten
Spannungsabfall und benötigen einen eingestellten Strom, sonst brennen
sie recht schnell durch).
muaaaa schrieb:> nur so als Hinweis:>> LED-Vorwiderstand dient nicht der Absicherung sondern dazu den Strom> einzustellen (LEDs sind Dioden, die haben einen ziemlich konstanten> Spannungsabfall und benötigen einen eingestellten Strom, sonst brennen> sie recht schnell durch).
Hi,
huch stimmt. da hab ich mich falsch ausgedrückt. Ich habe elektriker
gelernt und da verwechel ich immer mal was g
ne das ist richtig! du hast da voll kommen recht!!!
hab das eigentlich auch so gemeint. meinte damit das ich die widerstände
als absicherung gegen den Strom habe damit sie nicht durchbrennen. so
aus sicherheitsgründen. hab mich aber ein bischen falsch ausgedrückt g
=)
So habe den schaltplan gefunden. habe es im anhang mit rein getan.
Mein problem ist das wenn ich es am Altera board simuliere dann
funktioniert alles super. tuhe ich es aber auf die platine über das GPIO
( die verbindung zur platine musste ich selber bauen aus den beiden
pfostensteckern und dem flachbandkabel, sollte aber richtig aufgepresst
sein) dann funktioniert alles soweit. bloß wenn die ampel (1.Grün)
angehen sollte geht sie nicht an. tausche ich aber die Fußgängerampeln
(1.) mit den Fußgängerampeln (2.) dann geht es wieder. also wenn ich
die beiden Fußgängerampelphasen tausche. bloß dann würde die
Ampelstuerung kein sinn machen da alle leute überfahren werden würden
g .
was auch noch komisch ist das wenn das programm durch läuft die Rote Led
der Fußgängerampel 1 nicht richtig leuchtet sondern glimmt/dimmt. also
die (1. Rot Fuß X). wenn aber das programm an dem punkt ist wo die
beiden Grünen LED ´s (1.Grün) angeht dann leuchtet die Rote
Fußgängerampel (1. Rot Fuß X) normal Stark auf. aber nur solange die
Grüne an ist. komisch das die mit der ( 1. Rot Fuß X) LED ja auch die
(1. Rot Fuß) gleichzeitig geschaltet ist aber diese ganz normal
leuchtet. komisch.
Habe es bestimmt sehr kompliziert geschrieben. aber vielleicht kann mal
es etwas herraus filtern g wenn nicht dann schreib ich es nochmal
stück für stück auf um schritt für schritt vor zu gehen =)
Robert schrieb:> Ich habe elektriker> gelernt und da verwechel ich immer mal was g
Diese Begründung kappier ich nicht, wenn du doch schon gelernter
Elektriker bist, solltest du doch gerade dann sowas nicht verwechseln...
Naja, zum Thema:
Sind die Kathoden der LEDs direkt auf GND gelegt?
Ich sehe in dem Schaltplan zwar dass alle Kathoden miteinander verbunden
sind und auf Pin 12 der GPIOs geht, aber wie ist dieser Pin auf deinem
Alteraboard angeschlossen?
Hallo,
naja Elektriker. also Strippenzieher! =)da hatten wir mit bauelementen
sogut wie garnichts am hut =)
ja sind alle genau auf das GND des AlteraBoard GPIO geklemmt. im anhang
habe ich aus dem Datenblatt des Alterboards mal die GPIO raus kopiert.
Robert schrieb:> Diese zeitspanne/ warte> schleife verstehe ich nicht. hoffe ihr könnt mir da irgendwie weiter> helfen.
Lesson 96 - Example 64: GCD Algorithm-2 - Datapath Control
http://www.youtube.com/watch?v=IxPWTMEv5dI
Hier ist das mit der while Schleife behandelt.
Gruss Holger.
@ Robert (Gast)
Fuer morgen schreibst du 100 mal "Jede LED bekommt ihren eigenen
Vorwiderstand".
Man kann LEDs nicht direkt parallelschalten. Wie oben schon mal erwaehnt
wurde sind LEDs stromgesteuerte Bauelemente mit einer nichtlinearen
Kennlinie. Wenn du die so wie in deinem Plan direkt parallelschaltest
bekommt die eine mehr und die andere weniger Strom ab. Das Ergebnis
kennst du. Abhilfe gibt es nur wenn jede LED ihren eignen Vorwiderstand
bekommt.