2016-07-20 5 views
0
library IEEE; 
use IEEE.STD_LOGIC_1164.ALL; 
entity test_adder_vhdl is 
end test_adder_vhdl; 

architecture Behavioral of test_adder_vhdl is 
constant clock_period : time := 1000 ns ; 
component adder is 
PORT (A: in STD_LOGIC; 
    B: in STD_LOGIC; 
    SUM: out STD_LOGIC; 
    CARRY: out STD_LOGIC); 
end component adder; 

SIGNAL A: STD_LOGIC : ='0'; 
SIGNAL B: STD_LOGIC : ='0'; 
SIGNAL SUM: STD_LOGIC : ='0'; 
SIGNAL CARRY: STD_LOGIC : ='0'; 
begin 

uut: adder port map(
A=> A; 
B=> B; 
SUM => SUM; 
CARRY => CARRY; 
); 

clk gena: process 
begin 
wait for 100 ns; 
A <= not A; 
end process; 

clk genb: process 
begin 
wait for 50 ns; 
B <= not B; 
end process; 
end Behavioral; 

Der Fehler in dem obigen Code finden istIch kann keinen Fehler in meiner Simulation Datei von VHDL

[HDL 9-806] Syntaxfehler in der Nähe ":". [ "F: /practiceWorkspace/practice1/practice1.srcs/sim_1/new/test_adder_vhdl.vhd": 38]

+0

Sie zeigen keine Zeilennummer Korrespondenz mit Ihrem Design. Es gibt vier Signaldeklarationen (A, B, SUM, CARRY) mit externen Leerzeichen zwischen dem ':' und '=' im Compound-Delimiter ": =", um einen Standardwert von '0' zu erhalten. In der Port-Map sollte ',' als Trennzeichen in der Assoziationsliste anstelle von ';' verwendet werden. Die letzte Verknüpfung erfordert kein nachfolgendes Komma (es wird als Trennzeichen verwendet). In den Labels clk_gena und clk_genb gibt es einen Platz anstelle eines Unterstrichs. Ein Label ist ein einzelner Bezeichner.Nach der Festlegung dieser Code-Analysen. Es besteht keine weitere Garantie. – user1155120

+0

Konstante Taktperiode: Zeit: = 1000 ns; Es ist in dieser Codezeile – Sami

Antwort

2

Sie sind nicht Zeilennummer Korrespondenz mit Ihrem Design zeigt. Der Fehler scheint der Signaldeklaration für A zu entsprechen. Es gibt mehr Syntaxfehler.

Anweisungen werden durch ein Semikolon begrenzt. Schnittstellendeklarationen sind durch Semikolons getrennt. Andere Objektdeklarationen sind durch Semikolons begrenzt. Mehrere Elemente (in der Assoziationsliste hier) sind durch Kommata getrennt.

Es gibt vier Signaldeklarationen (A, B, SUM, CARRY) mit externen Leerzeichen zwischen dem ':' und '=' im Compound-Delimiter ": =", die für den Standardwert '0' verwendet werden.

sollte dies sein:

SIGNAL A: STD_LOGIC := '0'; 
SIGNAL B: STD_LOGIC := '0'; 
SIGNAL SUM: STD_LOGIC := '0'; 
SIGNAL CARRY: STD_LOGIC := '0'; 

:= ist variable Zuordnung, Werte für Konstanten und Standard Ausdrücke (Werte) für Objekte eines verwendet, um anzuzeigen.

In der Port-Map ',' sollte als Trennzeichen in der Assoziationsliste anstelle von ';' verwendet werden.

Die letzte Verknüpfung erfordert kein nachfolgendes Komma (Trennzeichen als Trennzeichen)

In den Labels clk_gena und clk_genb ist ein Leerzeichen anstelle eines Unterstrichs.

clk_gena: process 
begin 
wait for 100 ns; 
A <= not A; 
end process; 

clk_genb: process 
begin 
wait for 50 ns; 
B <= not B; 
end process; 

Ein Label ist ein einziger Identifizierer eines durch eine oder mehr Buchstaben oder Zahlen von null oder einem Unterstrich-Zeichen getrennt, gefolgt Buchstaben besteht. Die Prozesse sind benannt (benannt) clk_gena und clk_genb.

Nach der Festsetzung dieser Ihre Code-Analysen (kompiliert). Ohne das Entity and Architecture-Paar für den Component-Adder kann Ihr Code nicht ausgearbeitet (verlinkt) oder simuliert werden.

Beachten Sie, dass die beiden Prozesse für 50 ns ausgesetzt werden und ein Prozess ohne eine implizite Last wait-Anweisung, die auf Elemente einer Sensitivitätsliste wartet, beginnt fröhlich die erste sequenzielle Anweisung des Prozesses nach Ausführung der letzten auszuführen.

Die Erwartung wäre, dass Sie entweder eine trailing wait-Anweisung oder eine Steuerungssimulation durch eine implementierungsabhängige Methode hinzufügen würden (z. B. für ein Simulationszeitintervall).

Ihre konstante Clock_Periode wird (noch) nicht in Ihrer testbench verwendet.