VHDL-Forum

 
Sie sind nicht eingeloggt.
LoginLogin Kostenlos anmeldenKostenlos anmelden
BeiträgeBeiträge MembersMitglieder SucheSuche HilfeHilfe
VotesUmfragen FilesDateien CalendarKalender BookmarksBookmarks
[PROBLEM] Merkwürdige Ausgabe bei der Simulation

Anfang   zurück   weiter   Ende
Autor Beitrag
Gast


New PostErstellt: 28.05.05, 10:22  Betreff: [PROBLEM] Merkwürdige Ausgabe bei der Simulation  drucken  weiterempfehlen Antwort mit Zitat  

Hallo zusammen!

Habe hier ein großes Problem bei einer Simulation. Es soll ein 2x2Bit Multiplizierer simuliert werden. Das klappt bis auf eine Kleinigkeit auch ganz gut. Wie Ihr auf dem folgenden Bild erkennen könnt ist am Anfang wo alle Eingänge (A0,A1,B0,B1) 0 sind kurzzeitig eine 1 auf allen Ausgängen (AUSG0-3). Woran liegt das? Wenn man die Simulation weiterlaufen lässt und dann wieder alle Eingänge 0 werden ist das nicht mehr der Fall

Hier das Signalbild (ENN ist ein Enable- Eingang um die Schaltung an- und abzuschalten):



Nun noch der Quellcode. Falls Ihr da noch (Schönheits-)Fehler findet sagt bescheid. mache das erst seit 3 Monaten neben dem Studium her ;-)
Erstmal die Gattermodelle:

ENTITY nand4 IS
generic (T_High: time := 12ns; T_Low: time := 11ns);
PORT (a, b, c, d : IN bit :='1'; y : OUT bit);
END entity nand4;


ARCHITECTURE verhaltensmodell OF nand4 IS
signal tmp: bit;
begin
tmp <= not(a and b and c and d) after T_High when tmp='0';
tmp <= not(a and b and c and d) after T_Low when tmp='1';
y <= tmp;
END ARCHITECTURE verhaltensmodell;


ENTITY NOT1 IS
generic (T_High: time := 11ns; T_Low: time := 9ns);
PORT (a: IN bit; y: OUT bit);
END ENTITY NOT1;

ARCHITECTURE verhaltensmodell_not1 OF NOT1 IS
signal tmp: bit;
begin
tmp <= not a after T_High when tmp='0';
tmp <= not a after T_Low when tmp='1';
y <= tmp;
END ARCHITECTURE verhaltensmodell_not1;




Nun die SCHALTUNG (MULTI) als Strukturmodell und Verhaltensmodell. Das Verhaltensmodell funktioniert und kann ignoriert werden. Unten folgt dann die TEST Entity:

entity MULTI is
port(E, D, C, B, A: in bit; Y3,Y2,Y1,Y0: out bit);
end entity MULTI;


--STRUKTUR ANFANG

architecture Struktur of MULTI is
component NOT1
port(a: in bit; y: out bit);
end component NOT1;

component nand4
port(a,b,c,d: in bit; y: out bit);
end component nand4;

signal x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, A_nicht, B_nicht, C_nicht, D_nicht, E_nicht: bit;

begin
zu_x3: not1
port map(E,E_nicht);

zu_x1: nand4
port map(E_nicht,D,C,B,x1);
zu_x2: NOT1
port map(x1,x2);
zu_x4: nand4
port map(A,x2,open,open,x4);
zu_Y3: NOT1
port map(x4,Y3);

zu_c_nicht: NOT1
port map(C,C_nicht);
zu_x5: nand4
port map(E_nicht,D,C_nicht,B,x5);
zu_a_nicht: NOT1
port map(A,A_nicht);
zu_x6: nand4
port map(E_nicht,D,B,A_nicht,x6);
zu_y2: nand4
port map(x5,x6,open,open,Y2);

zu_x7: nand4
port map(E_nicht,C,B,A_nicht,x7);
zu_d_nicht: NOT1
port map(D,D_nicht);
zu_x8: nand4
port map(E_nicht,D_nicht,C,B,x8);
zu_x9: nand4
port map(E_nicht,D,C_nicht,A,x9);
zu_b_nicht: NOT1
port map(B,B_nicht);
zu_x10: nand4
port map(E_nicht,D,B_nicht,A,x10);
zu_Y1: nand4
port map(x7,x8,x9,x10,Y1);

zu_x11: nand4
port map(E_nicht,C,A,open,x11);
zu_Y0: NOT1
port map(x11,Y0);

end architecture Struktur;

--STRUKTUR ENDE


--VERHALTENSMODELL ANFANG

architecture Verhaltensmodell of MULTI is

begin

Y3 <= D and C and B and A and not E;

Y2 <= (D and B and not A and not E) or (D and not C and B and not E);

Y1 <= (D and not B and A and not E) or (C and B and not A and not E) or (not D and C and B and not E) or (D and not C and A and not E);

Y0 <= (C and A and not E);

end architecture Verhaltensmodell;

--VERHALTENSMODELL ENDE


--TEST ANFANG

entity TESTEN_MULTI is
end entity TESTEN_MULTI;

architecture ARCH_TESTEN_MULTI of TESTEN_MULTI is
component MULTI
port(E, D, C, B, A: in bit; Y3,Y2,Y1,Y0: out bit);
end component MULTI;

for ALL: MULTI use ENTITY work.MULTI(Struktur);

signal ENN,A1,A0,B1,B0,AUSG3,AUSG2,AUSG1,AUSG0: bit;
begin

DER_TEST: MULTI
port map(ENN,A1,A0,B1,B0,AUSG3,AUSG2,AUSG1,AUSG0);
Testsignal: process IS
begin
ENN<='0'; -- /EN Eingang
A1<='0', '1' after 60ns,'0' after 300ns;
A0<='0', '1' after 120ns, '0' after 360ns;
B1<='0', '1' after 180ns, '0' after 420ns;
B0<='0', '1' after 240ns, '0' after 480ns;
wait for 550ns; --kontinuierliches Signal
end process Testsignal;

end architecture ARCH_TESTEN_MULTI;

--TEST ENDE


configuration CONF_MULTI of MULTI is
for Struktur
end for;
end configuration CONF_MULTI;



ALSO, woran liegt es das am Anfang kurzzeitig eine 1 Ausgegeben wird und wie bekomme ich es hin über den Configuration-Teil die Architecture auszusuchen (Momentan passiert das ja im Test-Entity) ?

nach oben
Sortierung ndern:  
Anfang   zurück   weiter   Ende
Seite 1 von 1
Gehe zu:   
Search

powered by carookee.com - eigenes profi-forum kostenlos

Design © trevorj