2016-04-25 9 views
-1
library ieee; 
use ieee.std_logic_1164.all; 
entity data_choose is 
port(
A :in std_logic_vector(3 downto 0); 
B: out std_logic_vector(3 downto 0); 
clk : in std_logic); 
end entity data_choose; 

architecture select_data of data_choose is 


variable count : integer range 0 to 7; 


count :=0; 

begin 


if (rising_edge(clk)) then 
count := count + 1 ; 
if((count > 1)) then 
    if((count rem 2)=0) then 
     B <= A; 
    end if; 
end if; 
end if; 
end architecture select_data ; 

Kann mir bitte jemand sagen, was mit diesem Code falsch ist. In der Nähe der Zählungsinitialisierungsanweisung liegt ein Kompilierungsfehler vor.VHDL Fehler "erwartet beginne"

Vielen Dank.

Antwort

1

Es gibt ein paar Dinge, die mit diesem Code nicht stimmen.

variable count : integer range 0 to 7; 

Ich schlage vor, Sie machen dies zu einem signal, kein variable. Ich würde auch vorschlagen, Variablen zu vermeiden, bis Sie ein solides Verständnis davon haben, wie sie sich von Signalen unterscheiden. Normalerweise deklarieren Sie eine Variable innerhalb eines Prozesses, die ausschließlich von diesem Prozess verwendet wird. Auf etwas, auf das mehr als ein Prozess zugreifen muss, wird normalerweise ein Signal verwendet, das in der Architektur deklariert ist (wo Sie derzeit Ihre Variablendeklaration haben).

count :=0; 

Sie haben diese Aufgabe im deklarativen Bereich Architektur, zwischen den architecture ... is und begin. Wenn Sie den Zähler initialisieren, dann können Sie verwenden:

signal count : integer range 0 to 7 := 0; 

Auf der nächsten Ausgabe Ihrer Linie if (rising_edge(clk)) then versucht synchrone Logik zu beschreiben. Dies sollte innerhalb eines Prozesses nehmen, so müssten Sie:

process (clk) 
begin 
    if (rising_edge(clk)) then 
    ... 
    end if; 
end process; 

Der letzte Fehler ist dann, dass da Ihr count jetzt ein Signal ist, können Sie es mit <= zuweisen soll, nicht :=, geben count <= count + 1 ;

Mit diesen Änderungen wird Ihr Code kompiliert.

+0

Was ist mit der Zählung inkrementiert über 7 hinaus, die einen gebundenen Constraint-Fehler erzeugen würde? – user1155120

+0

@ user1155120 Wenn der Fragesteller mit diesem Problem zurückkam, würde ich vorschlagen, dass sie eine neue Frage erstellen. –