Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Praktikum 2ter Teil
Hey ich wollt mal fragen ob ich mit meiner DMF für qo’ und q1´ richtig liege…
also für q1’ hab ich q1BTN0(nicht) + qoq1
für q0` hab ich was ziemlich langes also 3 terme mit oder dazwischen sieht vll zu kompkiziert aus in bezug auf die schaltung
in der angabe steht dass wenn man BTN1 drückt soll man in Setalarm gelangen. für mich heißt das dass ich entweder von time oder von settime direkt nach setalarm kommen kann sehe ich das richtig?
Da ich die Aufgabe ja “liebe” und nach zwei Tagen stundenlanger Arbeit mittlerweile gefressen habe (im negativen Sinne):
Nehmen wir mal an, das würde gelten und wir hätten eine Möglichkeit, von z.B. Zustand 01 in Zustand 10 zu gelangen;
Dann hättest du zwei Zustände, in die du gelangen könntest (00 und 10) und damit ungewollt nichtdeterministisches Verhalten, was du sicherlich_nicht hier willst.
Denn angenommen, beide Funktionen BTN0’ und BTN1’ wären 0: Dann könntest du den Zustand wechseln oder eben auch nicht. Denn der Zustandswechsel ist hierbei von den Knöpfen BTN0 und BTN1 primär abhängig und der Fall, das du den Zustand überhaupt wechseln KANNST ist dadurch festgelegt, wenn BTN1’ UND BTN0’ gleich 0 sind.
Oder anders ausgedrückt: ENTWEDER du drückst BTN0 ODER BTN1, was einem XOR entspricht, aber nur unter der VORAUSSETZUNG, das die Ergänzungsfunktionen 0 sind.
Und das macht dieses ganze DMF-Diagramm völlig nutzlos.
Das gilt übrigens auch für den Fall, wenn du nur einen Button genommen hättest und z.B. nur von Zustand 10 in 00 und umgekehrt kommen könntest, es aber keine direkte Verbindung zwischen 10 und 01 gäbe. Auch hier ist der Zustandswechsel primär von den Knöpfen abhängig (Zustandswechsel ist ja auch hier bei BTN1, BTN2 = 0 oder BTN1, BTN2 = 1 nicht möglich) , somit ist diese Aufgabe so gesehen mit dieser Auftragung von Eingangszuständen und der nicht direkt logisch verbundenen Ergänzungsfunktionen BTN0’ und BTN1’ NICHT lösbar meiner Ansicht nach.
Ich denke, da muss nen Fehler in der Aufgabe sein. Oder ich habe etwas komplett falsch verstanden…
Ja.
Hä??? Die Angabe ist dazu doch ziemlich präzise: „Lässt man einen der Taster BTN 0 oder BTN 1 los, soll der jeweilige Zustand gehalten werden.“
Das ist in der Tat richtig, das würde abdecken, wenn BTN0’ bzw BTN1’ gleich 1 sind.
Soweit habe ich das auch berücksichtigt.
Aber das Problem ist einfach, das aus BTN0’ = 0 und BTN1’ = 0 eben NICHT automatisch folgert, das sich dann der Zustand ändern würde.
Denn das setzt voraus, das überhaupt einer der Knöpfe gedrückt werden müsste - etwas, was in den Symmetriediagrammen gar nicht vorkommt. Das Problem ist aber, das genau davon abhängig ist, ob sich der Zustand überhaupt ändert.
Ich sah hier auch ein Problem, und habe lange darüber nachgedacht, was hier zu tun sei.
Nachdem in der Angabe für den ersten Praktikumstermin schon Fehler vorhanden waren (Ports der Volladdierer waren inkorrekt, wenn ich mich richtig erinnere), und auch die VHDL-Dateien teils Fehler beinhalten - u. a. fehlt die schließende Klammer in der int2ascii.vhd in der Portmap des Entities - nehme ich an, dass schlicht das Symmetriediagramm falsch beschriftet sein wird.
Ich denke, bei den BTNs sollte kein Apostroph stehen, und so komme ich auch auf eine sinnvolle und logische Lösung, sodass der fertige Automat nach aufstellen der DMF bei mir funktioniert, zumindest in Hades. ^^
Doch ob das natürlich genau die Lösung ist, die sich der Lehrstuhl vorgestellt hat, weiß ich nicht.
Das habe ich eben auch gedacht.
Denn so kann das nix werden glaub ich^^
Es bleibt bei hä Wieso sollte sich denn der Zustand ändern wenn BTN0’ = 0 und BTN1’ = 0 gilt? Sollte, wenn man kurz nachdenkt, doch relativ klar sein, dass dann der aktuelle Zustand gehalten wird…?!
Ebenfalls hä. Wieso sollte da kein Apostroph stehen? Steht da kein Apostroph, habe ich ja genau das in der Angabe angesprochene unerwünschte Verhalten…?!
Wieso argumentiert ihr überhaupt auf Ebene des Symmetriediagramms, wenn euch anscheinden nicht ganz klar ist, wie der Automat funktionieren soll und daher dann wohl Automatengraph + -Tafel ebenfalls nicht eindeutigt sein sollte?
Nich immer alles auf fehlerhafte Angaben schieben (auch wenn das natürlich vorkommen kann), sondern lieber genau die Aufgabenstellung lesen und nachdenken
Aufgabe 2e bzw. f
Ne andere Frage:
Ich sitz gerade an Aufgabe 2e und f…
Mir ist bei e klar, dass ich den Pseudocode umsetzen muss, allerdings check ich überhaupt nicht welche Variable im Pseudocode der passenden in vhdl entspricht…
Bzw genauer: was entspricht NumberOfBCDValues? meine Vermutung ist einfach 2. Aber was ist NumberOfInputBits? Und warum ist o_ascii jeweils 8bit lang? Dass v_bcd jeweils 4bit lang ist, ist mir klar.
auch bei Aufgabe 2f ist mir noch nicht wirklich klar was was ist
Nur BTN0 und BTN1 lösen Zustandsübergänge aus und zwar in Abhängigkeit von q0 bzw. q1. Folglich wäre eine Zustandsüberführungsfunktion in unserem Szenario keine Zustandsüberführungsfunktion, wenn diese nur von den Variablen q0/q1, BTN0’ und BTN1’ abhängig wäre.
Vielmehr ist der Folgezustand abhängig von BTN0 und BTN1 (man beachte die fehlenden Apostrophe), weshalb ich - und wahrscheinlich auch mein Vorredner - hier einen Fehler in der Angabe vermuten.
Wieso argumentiert ihr überhaupt auf Ebene des Symmetriediagramms, wenn euch anscheinden nicht ganz klar ist, wie der Automat funktionieren soll und daher dann wohl Automatengraph + -Tafel ebenfalls nicht eindeutigt sein sollte?
Wie kommst du zu dieser Meinung? Automatengraph- und Tafel sind eindeutig bestimmt.
Meiner Meinung nach sollen BTN0’ und BTN1’ lediglich BTN0 und BTN1 mit positiver Flankensteuerung sein. Dadurch umgeht man alle in der Aufgabe angesprochenen Probleme bzgl halten der Taste etc.
Die Angabe ist aber wirklich äußerst unklar ausgedrückt!!!
Meine DMF ist mit dieser Annahme folgende:
q0’= (q0BTN0’nicht) + (q0BTN1’) + (q0nichtq1nichtBTN1’nichtBTN0’)
q1’= (q1 BTN1’nicht) + (q1BTN0’) + (q0nichtq1nicht*BTN1’*BTN0’nicht)
Habt ihr beachtet, dass man von SET_ALARM auch zu SET_TIME und umgekehrt kommt?
Meiner Meinung nach sollen BTN0’ und BTN1’ lediglich BTN0 und BTN1 mit positiver Flankensteuerung sein. Dadurch umgeht man alle in der Aufgabe angesprochenen Probleme bzgl halten der Taste etc.
Diese Interpretation finde ich nun auch durchaus sinnvoll, sodass ich nun in meiner Aufgabenbearbeitung nur noch die Zustände BTN0 und BTN1 zu BTN0’ und BTN1’ umbenennen musste.
Unter dieser Annahme, dass BTN0’ und BTN1’ nun auch Zustandsübergänge auslösen, und zwar genau die gewünschten, passt nun mMn auch die Legende der Symmetriediagramme einwandfrei.
Doch auf die gleiche DMF wie du komme ich - und auch ein Kollege von mir - leider nicht. Ich werde im Laufe des Tages nochmal die Aufgabe durchgehen, eventuell hat sich ja bei mir ein Fehler eingeschlichen.
Hier jedenfalls meine DMF zum Vergleich (* durch && ersetzt, + durch || - zur besseren Lesbarkeit):
q0' = BTN0' && not BTN1' && not q0 || BTN0' && BTN1' && q0 || not BTN0' && not BTN1' && q0
q1' = not BTN0' && BTN1' && not q1 || not BTN0' && not BTN1' && q1 || BTN0' && BTN1' && q1
Dabei ist noch wichtig, dass bei mir diese beiden Funktionen auch die möglichen Zustandsübergänge SetTime --BTN1'--> QSetAlarm
und QSetAlarm --BTN0'-->QSetTime
beschreiben. Solltest du dies anders haben, wären abweichende Funktionen mMn hier folgerichtig.
Das resultierende Schaltwerk mit zwei D-FlipFlops habe ich, wie gesagt, in Hades nachgebaut und es erfüllt genau die Spezifikation in der Angabe.
Doch das heißt noch lange nicht, dass das richtig sein wird, weshalb ich über Hinweise und Tipps selbstverständlich dankbar bin. ^^
[quote=jaypi]
q0' = BTN0' && not BTN1' && not q0 || BTN0' && BTN1' && q0 || not BTN0' && not BTN1' && q0
q1' = not BTN0' && BTN1' && not q1 || not BTN0' && not BTN1' && q1 || BTN0' && BTN1' && q1
[/quote]
Habe ich jetzt auch so.
Habs gestern nacht nochmal überlegt:
Eigentlich wäre auch, wenn man die Funktionen gerne implementiert hätte, inklusive der Zeitverzögerung, das Symmetriediagramm mit BTN0 und BTN1 so nicht richtig, weil die Zustandsänderung ja von beiden abhängig ist. BTN0 und BTN1 bestimmen ja, ob der Zustand sich ändert und BTN0’ und BTN1’ ob sich der Zustand ändern darf.
Somit müsste man dann, um jegliches ungewünschte Verhalten auszuschließen, zwei Symmetriediagramme bilden für q0’ und q1’ in denen q0,q1,BTN1, BTN0, BTN1’ und BTN0’ gegeneinander aufgetragen sind. Das wären dann 2^6 = 64 Möglichkeiten, die man abdecken müsste pro Diagramm. Sicherlich wären da viele Trivialfälle drunter mit Don’t Cares etc., aber das dürfte wohl doch schon genügend aussagen, das die Neuauflage der Aufgabe etwas undurchdacht wirkt.
Über die daraus resultierende Schaltung will ich erst mal gar nicht nachdenken…
[…] weil die Zustandsänderung ja von beiden abhängig ist. BTN0 und BTN1 bestimmen ja, ob der Zustand sich ändert und BTN0’ und BTN1’ ob sich der Zustand ändern darf.
Nein, allein BTN0’ und BTN1’ sind die Eingabevariablen des Automaten. Du brauchst weder BTN0 noch BTN1.
Der Automat führt bei jeder positiven Flanke einen Zustandsübergang aus (das schließt auch ein, dass der Zustand beibehalten wird).
Vergleiche auch die Angabe:
[quote]Hinweis: Beachten Sie, dass der Zustand bei anhaltendem Drücken von Taster ???0 oder ???1
nicht wieder in den Ausgangszustand wechseln soll. Führen Sie die Signale ???0 ′ und ???1 ′
ein, die den Druckimpuls des jeweiligen Tasters registrieren. Das heißt, sie sind für genau einen
Takt 1, nachdem der jeweilige Taster gedrückt wurde[/quote]
… eventuell hat sich ja bei mir ein Fehler eingeschlichen.
Der Fehler lag wohl auf meiner Seite! Habe nicht bedacht dass man von SetAlarm auch nach SetTime kommt und anders herum.
Und wohl noch einen Zahlendreher gehabt
Jo, hat sich heute geklärt.
Hab nur den Text falsch verstanden (iwie kam der mir sehr komisch vor^^), hat aber trotzdem alles ohne Probleme geklappt. Dafür hats die Übung echt gebracht mit der Aufgabe