Gast
|
Erstellt: 28.05.05, 10:22 Betreff: [PROBLEM] Merkwürdige Ausgabe bei der Simulation
drucken
weiterempfehlen
|
|
|
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) ?
|
|