MIPS Datenpfad: Wieso werden die Steuersignale nicht verarbeitet?

OP #6749563
Lesenswert?
• ▲
▼
Hey!

Ich muss für eine Übung die Testbench für den Datenpfad eines MIPS 
Prozessors schreiben.

Die VHDL Datei ist vorgegeben, es muss also nur noch die Testbench 
geschrieben werden.

Ich habe zuerst versucht über die Steuersignale die dezimal Zahl 7 
abzuspeichern. Die Inputs werden auch laut GTKWave übernommen, aber 
nicht weiterverarbeitet. In der Wave sind die In-/Outputs mit uuuuuuu 
dargestellt.

Mein Clock Zyklus läuft eigentlich, so dass die Bausteine bei 
aufsteigenden Flanken reagieren müssten, das tun sie aber nicht. Kann 
mich jemand in die richtige Richtung leiten, wo mein Fehler ist?

Der Code ist als ZIP angehangen. Dort ist auch ein Screenshot der Wave 
zu finden.

(Ich habe erst im Rahmen der Übung VHDL gelernt und bin daher ein 
blutiger Anfänger)
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #6749651
Lesenswert?
• ▲
▼
Dominik B. schrieb:
> Der Code ist als ZIP angehangen.
Die VHDL-Dateien hättest du einfacher mal als *.vhdl Dateien angehängt, 
dann müsste man nicht den Umweg über einen Entpacker machen.

> In der Wave sind die In-/Outputs mit uuuuuuu dargestellt.
U bedeutet "uninitialized" (nicht wie gern angenommen "undefined"), also 
dass seit Start der Simulation noch keiner einen anderen Wert auf das 
Signal getrieben hat.

> Kann mich jemand in die richtige Richtung leiten, wo mein Fehler ist?
Auf jeden Fall würde ich dafür sorgen, dass vor dem Wegnehmen des 
Resets alle Eingangssignale auf einem gültigen Pegel sitzen!
Bei dir passiert das erst einen Takt später...

Und dann würde ich noch klären, ob der Reset tatsächlich high-aktiv ist.


BTW: ich würde das hier
1
    PROCESS BEGIN
2
        for i in 0 to 60 loop
3
        clk <= not clk after ClockPeriod / 2; --- das hier sieht übrigens
4
        wait for 10 ns;                       --- überaus eigenartig aus...
5
        end loop;
6
        
7
        wait;
8
    END PROCESS;
so abkürzen:
1
        clk <= not clk after ClockPeriod/2;


Und auch die Definition der ClockPeriod sieht arg holprig aus:
1
        constant ClockFrequency : integer := 100e6; -- 100 MHz
2
        constant ClockPeriod    : time    := 2000 ms / ClockFrequency;

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.