29.03.2015 Aufrufe

Technische Grundlagen der Informatik I 3. Poolraumübung

Technische Grundlagen der Informatik I 3. Poolraumübung

Technische Grundlagen der Informatik I 3. Poolraumübung

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Prof. Dr.-Ing. Sorin A. Huss<br />

<strong>Technische</strong> <strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> I<br />

<strong>3.</strong> Poolraumübung<br />

Wintersemester 2010/11<br />

Aufgabe 1 Multiplexer in VHDL<br />

Diese Aufgabe soll den Unterschied zwischen verhaltensorientierter und funktionaler Beschreibung von Schaltungen in<br />

VHDL anhand eines einfachen Beispiels aufzeigen.<br />

Aufgabe 1.1 M UX 6 mittels verhaltensorientierter Beschreibung<br />

VHDL bietet eine Reihe an Statements, die genutzt werden können, um einen Multiplexer mit nur einem dieser Statements<br />

zu beschreiben. Nennen Sie zwei dieser Statements und erklären Sie, welches Statement Sie zur Beschreibung<br />

eines Multiplexers nutzen würden.<br />

Beschreiben Sie nun einen Multiplexer M UX 6 in VHDL, welcher sechs Eingänge (a bis f), in Abhängigkeit von einem<br />

Selektierungssignal sel einzeln auf einen Ausgang q legt. Nutzen Sie hierzu das Statement, welches Ihrer Meinung nach<br />

am besten geeignet ist.<br />

Welche Breite muss das Selektierungssignal mindestens aufweisen, um alle Eingänge schalten zu können?<br />

Aufgabe 1.2 M UX 6 mittels funktionaler Beschreibung<br />

Ein M UX 2 dessen Eingänge (a,b) mittels eines Selektierungssignals (sel) jeweils einzeln auf den Ausgang q geschaltet<br />

werden können, kann wie folgt funktional Beschrieben werden.<br />

q := (a ∧ ¬sel) ∨ (b ∧ sel) (1)<br />

Entwickeln Sie nun die funktionale Beschreibung eines M UX 6 Multiplexers. Die Eingänge tragen die Bezeichnungen a<br />

bis f, das Selektierungssignal die Bezeichnung sel und das Ausgangssignal die Bezeichnung q.<br />

Implementieren Sie anschließend die funktionale Beschreibung als zweite Architecture für die in Aufgabe 1.1 vorgegebene<br />

Entity.<br />

Aufgabe 1.3 3-Bit-M UX 6<br />

Kombinieren Sie nun mehrere Ihrer M UX 6 Multiplexer zu einem 3-Bit-M UX 6 Multiplexer und zeigen Sie das korrekte<br />

Verhalten anhand einer Simulation auf.<br />

Aufgabe 2 Tasten entprellen in VHDL<br />

Prellen beschreibt das kurzzeitige unkontrollierte Verhalten eines mechanischen Schalters, wenn er betätigt wird. Wird<br />

ein Taster gedrückt, um eine elektrische Verbindung herzustellen, so öffnet und schließt <strong>der</strong> Taster kurzeitig mehrfach<br />

die Verbindung, bis diese konstant besteht. Das gleiche Verhalten wird analog beim Loslassen des Tasters hervorgerufen.<br />

Abbildung 1 illustriert das Schaltverhalten eines mechanischen Tasters.<br />

High<br />

Low<br />

Taster gedrückt<br />

Taster losgelassen<br />

t<br />

Abbildung 1: Schaltverhalten eines mechanischen Schalters<br />

Dieses Problem lässt sich direkt auf die mechanische Realisierung des Schalters zurückzuführen und existiert daher bei<br />

elektrischen Bauelementen, welche zum Schalten genutzt werden, wie ein Transistor, nicht.<br />

Alexan<strong>der</strong> Bie<strong>der</strong>mann bie<strong>der</strong>mann@iss.tu-darmstadt.de (0 61 51) 16-6710 – Marc Stöttinger stoettinger@iss.tu-darmstadt.de (0 61 51) 16-704701


Eine Möglichkeit, um einen Schalter zu entprellen, ist in Abbildung 2 skizziert. Mittels eines Taktes wird das zu<br />

entprellende Schaltsignal abgetastet und einem n-Bit-Schieberegister zugeführt. Das Schieberegister wird in diesem Fall<br />

als n-Bit-Seriell-Parallel-Wandler genutzt und ermöglicht es somit, jeweils n Bit parallel abzugreifen und einem n-Bit-<br />

UND-Gatter zu übergeben. Wurde <strong>der</strong> Taster gedrückt, um eine elektrische Verbindung zu schließen, so bestätigt diese<br />

Schaltung die geschlossene Verbindung erst, wenn die Verbindung konstant besteht.<br />

clock<br />

n bit shift register<br />

0 0 1 1 0 ...<br />

t<br />

...<br />

0<br />

1<br />

1<br />

0<br />

0<br />

&<br />

Taster gedrückt?<br />

Abbildung 2: Möglichkeit zum entprellen eines Schalters<br />

Aufgabe 2.1 Implementierung in VHDL<br />

Implementieren Sie die in Abbildung 2 skizzierte Schaltung in VHDL. Ihre Schaltung soll in <strong>der</strong> Lage sein, den in <strong>der</strong><br />

beigefügten Testbench simulierten geprellten Taster zu entprellen. Hierbei wurde <strong>der</strong> geprellte Taster jeweils einmal vor<br />

600 ns und jeweils einmal danach betätigt. Damit Ihre Entity kompatibel zu <strong>der</strong> Testbench ist, wird Ihnen die folgende<br />

Entity vorgegeben.<br />

e n t i t y contact_bounce i s<br />

Port ( c l k : in STD_LOGIC ;<br />

r s t : in STD_LOGIC ;<br />

rawdata : in STD_LOGIC ;<br />

ispushed : out STD_LOGIC ) ;<br />

end contact_bounce ;<br />

Die Testbench legt an dem Eingang rawdata das unentprellte Schaltverhalten des Tasters an und Ihre Implementierung<br />

setzt den Ausgang ispushed auf logisch High gdw. ein gedrückter Taster erkannt wurde.<br />

Aufgabe 2.2 Auswertung <strong>der</strong> Implementierung<br />

Aufgabe 2.2.1 Welche Breite muss das eingesetzte Schieberegister haben, um den Taster korrekt zu entprellen?<br />

Aufgabe 2.2.2 Was passiert, wenn das Schieberegister diese Breite unterschreitet?<br />

Aufgabe 2.2.3 Was passiert, wenn das Schieberegister diese Breite überschreitet?<br />

2Alexan<strong>der</strong> Bie<strong>der</strong>mann bie<strong>der</strong>mann@iss.tu-darmstadt.de (0 61 51) 16-6710 – Marc Stöttinger stoettinger@iss.tu-darmstadt.de (0 61 51) 16-70470

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!