25.01.2014 Aufrufe

Übung 3 - Institut für Kommunikationsnetze und Rechnersysteme ...

Übung 3 - Institut für Kommunikationsnetze und Rechnersysteme ...

Übung 3 - Institut für Kommunikationsnetze und Rechnersysteme ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Aufgabe 1<br />

Erste Schritte<br />

Im Folgenden soll zunächst die vorgegebene Fassung der Testbench mit dem korrekt funktionierenden<br />

Speicher simuliert werden. In den folgenden Aufgabenteilen werden Sie die Testbench<br />

dann schrittweise erweitern.<br />

Öffnen Sie das ModelSim-Projekt ex3.mpf <strong>und</strong> compilieren Sie dieses anschließend:<br />

• Entpacken Sie das Archiv eds-ex3-files.zip<br />

• Starten Sie ModelSim<br />

• File >> Open >> Files of Type: Project Files (*.mpf) >> ex3.mpf auswählen >> Open<br />

• Compile >> Compile Order >> Auto Generate<br />

Simulieren Sie die nun die Architecture struct von memory_tb. Vergewissern Sie sich, dass<br />

sich Tester <strong>und</strong> Speicher wie zuvor beschrieben verhalten.<br />

Wählen Sie dazu im Workspace-Fenster den Tab Library aus <strong>und</strong> klicken Sie mit der rechten<br />

Maustaste auf den Eintrag work >> memory_tb >> struct. Wählen Sie im erscheinenden Kontext-Menü<br />

den Punkt Simulate aus. Fügen Sie die Testbench-Signale einem Wave-Window<br />

hinzu <strong>und</strong> simulieren Sie eine Zeitspanne von 10µs.<br />

Im Folgenden soll der Tester erweitert werden.<br />

Frage 1<br />

Frage 2<br />

Frage 3<br />

Ändern Sie den Prozess tester_p in memory_tester(behav) so ab, dass er zunächst<br />

alle Speicherzellen nacheinander einmal mit beliebigen Werten beschreibt<br />

<strong>und</strong> die Speicherzellen dann nacheinander wieder ausliest.<br />

Überprüfen Sie die korrekte Funktion im Wave-Window.<br />

Hinweis: Benutzen Sie Funktionen aus dem Package ieee.numeric_std.<br />

Erweitern Sie den Tester so, dass er im Fehlerfall eine Meldung ausgibt<br />

(Adresse, gelesener Wert, erwarteter Wert). Benutzen Sie dazu eine assertoder<br />

report-Anweisung.<br />

Hinweis:<br />

Auf Gr<strong>und</strong> der Simulationsmethodik von VHDL ändert sich der Ausgang<br />

rdata des Speichers erst nach einem (infinitesimal) kleinen Zeitraum nachdem<br />

seine Eingangssignale gesetzt wurden. In der Testbench müssen Sie daher<br />

ein wait-statement zwischen dem Setzen von wena/address/wdata <strong>und</strong><br />

dem Lesen von rdata einfügen. Beispielsweise könnten Sie bis zur nächsten<br />

negativen Taktflanke warten.<br />

Simulieren Sie nun memory_tb(struct_faulty).<br />

An welchen Adressen meldet Ihr Tester Fehler? Stellen Sie eine Vermutung<br />

an, wie ein solches Fehlermuster zustande kommen kann.<br />

Entwurf digitaler Systeme <strong>Übung</strong> 3: Testbench-Modellierung <strong>und</strong> Fehleranalyse - Bl. 3

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!