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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren