Hallo,
ich bin leider noch ein ziemlicher Anfänger im VHDL-Bereich. Ich hab ein
paar Fragen und hoffe, dass ihr mir vielleicht helfen könntet.
Nun zu meinen Fragen:
Könnte mir jemand die Aufgabe in simplen Worten erklären und eventuell
auch noch sagen, ob ich paar Punkte von der Aufgabenstellung mit meinem
Code schon gelöst habe. Außerdem wäre ich noch dankbar, wenn ich eine
Erklärung kriegen könnte, wie ich bei dem Code vorankommen kann.
Sie können die Aufgabenstellung und meinen derzeitigen VHDL-Code vom
Anhang entnehmen. Die Aufgabe muss ich bis zum 27.04. abgeben, d.h.,
dass ich noch eine knappe Woche dafür Zeit habe.
Ich bedanke mich schon im Voraus bei jeglicher Art von Hilfe.
MfG
Rückfrage:
Was geht im Code, wenn dieser im Simulator läuft?
a) kann per Tastendruck, eine LED aktiviert werden?
b) wie a) und wird ein Timer auf einen Wert gesetzt?
c) wie b) und dieser "immer" beim Sekundentakt dekrementiert, sofern >0?
d) ... bei erreichen von 0 wird der LED Ausgang inaktiv gesetzt
Re triggern ... ist einfach den Tiger vor Ablauf bewahren und erneut ab
Startseite sekündlich dekrementieren.
https://www.tu-chemnitz.de/etit/sse/Sonstiges/vhdl_buch.htmlhttps://www.vhdl-online.de/vhdl_workshop/lab_8
Ümeyir G. schrieb:> Sie können die Aufgabenstellung und meinen derzeitigen VHDL-Code vom> Anhang entnehmen.
Code kannst und solltest du direkt als .vhd Datei anhängen.
Zur Aufgabe:
Aufgaben in diesem Stil, vermutlich von der gleichen Vorlesung, kamen in
den letzten Wochen öfter.
Die Aufgabe ist wie die anderen Aufgaben die hier gestellt wurden recht
einfach.
Du brauchst quasi eine Uhr, also etwas das eine Zeitdauer lang zählt.
Und dann soll das Licht an sein, solange der Zähler kleiner als sein
Maximalwert (das ist der Wert der Schalter) ist.
Durch Tastendruck kann der Zähler wieder auf Null zurückgesetzt werden.
Was ist der Defaultzustand und auch der Zustand der durch Reset
ausgelöst werden soll?
Licht ist aus, der Zähler steht auf seinem Maximalstand.
Aber:
Du kannst auch einen Zähler nehmen der runterzählt. Der Defaultzustand
ist dann Zählerstand Null und licht aus.
Bei Tastendruck wird der Zähler auf den Wert gesetzt der über die
Schalter eingestellt wird.
Zu deinem Code:
- Was sollen Q und D? Die werden nicht benötigt.
- Sonst macht der Code noch nichts von dem was in der Aufgabe gefordert
wird.
- ieee.std_logic_arith.all und use ieee.std_logic_unsigned.all sind
obsolet. Verwende die ieee.numeric_std.all .
- Du kannst dir einige Klammern sparen.
- Verwende einen ordentlichen Editor der dir auch die Syntak schön
hervorhebt wie https://notepad-plus-plus.org/ und lass deine Datei mit
der Endung .vhd, es gibt keinen Grund da .txt ranzuhängen.
Im Anhang habe ich dir eine Testbench geschrieben die die Schalter auf
den Wert 13 setzt. Dann wird der Button gedrückt und so lange gewartet
bis das Licht wieder ausgeht. Das sind 13 Takte also bei den
eingestellten 100 MHz 130 ns. Die Testbench wartet 200 ns. Danach wird
der Button erneut gedrückt, allerdings nicht lange genug gewartet
sondern erneut gedrückt.
Danach wird erneut lange genug gewartet, dass das Licht wieder aus geht.
Button wird erneut gedrückt und dann kommt schon recht früh der Reset.
Die Testbench reicht um das alles zu testen, die brauchst du also gar
nicht anfassen oder umzuschreiben.
Ausserdem im Anhang ein Konstrukt für deine Komponente mit Kommentaren.
Die hat alle benötigten Eingänge.
Was du machen sollst ist unterhalb der Zeile
architecture Behavior of lightLED is
die Funktionalität zu beschreiben.
Edit:
Und schon einen Fehler gemacht, der Button ist active low, also der ist
gedrückt wenn der eine logische '0' liefert. Ist aber erstmal egal für
dich. Ich habe das jetzt jedenfalls mit active low Button in der
Testbench beschrieben (und meine erste Antwort gelöscht).
Lexa81 schrieb:> Was geht im Code, wenn dieser im Simulator läuft?
Exakt, simuliere deine Beschreibung. Dadurch lernst du am meisten. Lies
die Fehlermeldungen und versuche sie zu verstehen. Gerade Modelsim hat
recht aussagekräftige Fehlermeldungen die sich auch gut googeln lassen.
Edit2: Der Reset ist ebenfalls active low, also jetzt mit korrekter
Testbench. Was unklar ist aus der Zeichnung:
Da geht das Licht sofort an wenn der Button gedrückt wird. Das sieht
nach Kombinatorik aus, aber ist nicht genauer spezifiziert. Ich würde
sagen eine getaktete Beschreibung ist ebenfalls korrekt.
Ümeyir G. schrieb:> Die Aufgabe muss ich bis zum 27.04. abgeben, d.h.,> dass ich noch eine knappe Woche dafür Zeit habe.
Der Toni im Beitrag "VHDL Code Aufgabe, HILFE! :/" hat sich da
schon früher Gedanken zum Thema gemacht...
> Außerdem wäre ich noch dankbar, wenn ich eine> Erklärung kriegen könnte, wie ich bei dem Code vorankommen kann.
Du musst dir eine Hardware z.B. in Form eines rücksetzbaren Zählers mit
nachgeschaltetem Vergleicher auf ein Blatt Papier malen. Und dann
beschreibst du diese Hardware mit der HardwareBESCHREIBUNGsspracheVHDL. Mach am Anfang ein einfaches Blinklicht:
http://www.lothar-miller.de/s9y/archives/80-Hello-World!.html
Wenn du das kannst, musst du noch einen Taster und die Schalter für die
Leuchtdauer einlesen und hast dann alle Komponenten, die man für die
Lösung der Hausaufgabe braucht.
Auch hier gilt: das ist eine hübsche kleine Fingerübung. Ein Zähler, der
hoch zählt und per Tastendruck zurückgesetzt wird. Der Dozent gefällt
mir, wenigstens nicht gleich einen Arbiter für einen Speichercontroller
eines Quadcores zu Beginn. Kurz: wenn der fertige VHDL-Code mehr als 1
Bildschirmseite braucht, dann ist er zu umständlich.
Lothar M. schrieb:> Wenn du das kannst, musst du noch einen Taster und die Schalter für die> Leuchtdauer einlesen und hast dann alle Komponenten, die man für die> Lösung der Hausaufgabe braucht.
Wollen wir mal hoffen, dass dem Herrn nun "ein Licht aufgegangen ist"
:-)
Lothar M. schrieb:> Der Dozent gefällt> mir, wenigstens nicht gleich einen Arbiter für einen Speichercontroller> eines Quadcores zu Beginn.
Und wenn die Dozenten den Studenten auch noch beibringen würden, ERST
die Schaltung hinzumalen und DANN die Beschreibung der Funktion der
Bausteine zu formulieren, wäre es ganz perfekt. Die VHDL ergibt sich
dann eigentlich von Alleine.
So ist leider davon auszugehen, dass sich der Student bei der nächsten
Aufgabe wieder irgendwo registriert und eine one-time-posting absetzt.