2009-03-11 5 views
0

Nach dem Debuggen meines Codes bin ich an den Punkt gelangt, an dem der Compiler das akzeptiert, aber es löst eine Simulatorausnahme aus.Wie kann ich diese STD_LOGIC_VECTORs für meine Hausaufgaben hinzufügen?

Die Hauptprobleme, die ich hatte, sind mit der Initialisierung der Temp-Arrays und das Hinzufügen der Vektoren am Ende.

Die verwendete Methode für das Hinzufügen eines I in einem Referenz gefunden, da Sie nicht Buzkie

library ieee; 
use ieee.std_logic_1164.all; 
use ieee.std_logic_arith.all; 
use ieee.numeric_std.all; 

entity signedmult is 
port (cand, lier: in std_logic_vector (4 downto 0); 
    pro: out std_logic_vector (9 downto 0)); 

end signedmult;  


architecture synth of signedmult is 
     --temp arrays 
     signal a,b,c,d,e: std_logic_vector(9 downto 0); 

begin 
process (a,b,c,d,e) 
     variable j:integer; 
begin 

for j in 0 to 9 loop 
a(j) <= '0'; 
b(j) <= '0'; 
c(j) <= '0'; 
d(j) <= '0'; 
e(j) <= '0'; 

end loop; 

end process; 

process (cand, lier,a,b,c,d,e)  
     variable i:integer;  
begin 
    for i in 0 to 4 loop 
    a(i) <= cand(0) and lier(i); 
    b(i+1) <= cand(1) and lier(i); 
     c(i+2) <= cand(2) and lier(i); 
     d(i+3) <= cand(3) and lier(i); 
     e(i+4) <= cand(4) and lier(i); 
    end loop; 

end process; 

    a(5) <= a(4); a(6) <= a(4); a(7) <= a(4); a(8) <= a(4); 

    b(6) <= b(5); b(7) <= b(5); b(8) <= b(5); 

    c(7) <= c(6); c(8) <= c(6); 

    d(8) <= d(7); 

    pro <= std_logic_vector(unsigned(a) + unsigned(b)); -- + c + d + e; 


end synth; 

Antwort

4

Erste STD_LOGIC_VECTORs

Danke, hinzufügen können, sollten Sie std_logic_arith entfernen Konflikt mit numeric_std zu vermeiden.

Sobald das getan ist, kann ich nicht sehen, warum Ihre Zugabe nicht funktionieren sollte.

Welchen Fehler bekommen Sie beim Laufen?

Auch fahren Sie Ihre Signale von mehreren Prozessen, wahrscheinlich bekommen Müll in a und b. Ist das der Grund für den Fehler? Versuchen Sie, alle Zuordnungen zu Ihren Temp-Arrays in einen Prozess zu übernehmen.

+0

Entfernen std_logic_arith das Problem gelöst – Buzkie

0

Schnelle, einfache Art und Weise:

a(9 downto 0) <= (others=>'0'); 
b(9 downto 0) <= (others=>'0'); 
Verwandte Themen