Błąd (10028): Nie można rozwiązać wielu stałych sterowników dla net… VHDL ERROR
Próbuję napisać kod, który wykryje rosnące zbocze sygnału din i podniesie dout na 5 cykli zegara po tym zdarzeniu. Podczas kompilacji ciągle otrzymuję różne błędy i nie jestem pewien, co one oznaczają. Myślę, że brakuje mi podstawowej wiedzy na temat niektórych pojęć w VHDL, ale niestety patrzę online i niewiele mi pomogło. Nadal nie czuję, jakie działania są akceptowane przez oprogramowanie.
W moim kodzie mam obecnie detektor zbocza narastającego w pierwszym procesie, który podnosi dout do logicznego poziomu. Drugi proces sprawdza, czy dout jest wysoki i podczas gdy tak odlicza od 5 do 0, a 0 ustawia dout na logiczny niski.
Nie kompiluje się i zwraca następujące błędy:
Błąd (10028): nie można rozwiązać wielu stałych sterowników dla liczby „liczba” [2] ”w rise_ext.vhd (31)
Błąd (10029): stały sterownik w rise_ext.vhd (17)
Błąd (10028): nie można rozwiązać wielu stałych sterowników dla sieci ”count [1]” at rise_ext.vhd (31)
Błąd (10028): nie można rozwiązać wielu stałych sterowników dla liczby „liczba” [0] ”w rise_ext.vhd (31)
Błąd (10028): Nie można rozwiązać wielu stałych sterowników dla net „dout” at rise_ext.vhd (31)
Błąd (10029): stały sterownik w rise_ext.vhd (19)
Błąd (12153): nie można opracować hierarchii użytkowników najwyższego poziomu
Błąd: 32-bitowa analiza i synteza Quartus II zakończyła się niepowodzeniem. 7 błędów, 2 ostrzeżenia Błąd: Szczytowa pamięć wirtualna: 326 megabajtów Błąd: Przetwarzanie zakończone: Sob 11 stycznia 13:13:38 2014 Błąd: Upływający czas: 00:00:04 Błąd: Całkowity czas procesora (na wszystkich procesorach): 00: 00:02
Błąd (293001): Pełna kompilacja Quartus II nie powiodła się. 9 błędów, 2 ostrzeżenia
entity rise_ext is
port ( clk: in bit ;
resetN: in bit ;
din: in bit ;
count: buffer integer range 0 to 6 ;
dout: buffer bit ) ;
end rise_ext ;
architecture arc_rise_ext of rise_ext is
signal s1 , s2 : bit ;
begin
process ( resetN, clk )
begin
if resetN = '0' then
dout <= '0' ;
count <= 5 ;
elsif clk'event and clk = '1' then
s1 <= din ;
s2 <= s1 ;
dout <= not s1 and s2 ;
end if ;
end process ;
process ( clk, dout )
begin
if clk'event and clk = '1' then
if dout = '1' then
if count > 0 then
count <= count - 1 ;
else
dout <= '0' ;
count <= 5 ;
end if;
end if ;
end if ;
end process ;
end arc_rise_ext ;
Każda pomoc zostanie doceniona!
Zmieniłem wszystkie typy danych na std_logic i skończyłem kod, wciąż otrzymuję te błędy ...
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity rise_ext is
port ( clk: in std_logic ;
resetN: in std_logic ;
din: in std_logic ;
count: buffer integer range 0 to 6 ;
dout: buffer std_logic ) ;
end rise_ext ;
architecture arc_rise_ext of rise_ext is
signal s1 , s2 : std_logic ;
begin
process ( resetN, clk )
begin
if resetN = '0' then
dout <= '0' ;
count <= 6 ;
elsif rising_edge(clk) then
s1 <= din ;
s2 <= s1 ;
dout <= not s1 and s2 ;
end if ;
end process ;
process ( clk )
begin
if rising_edge(clk) then
if dout = '1' then
count <= 5 ;
end if ;
end if ;
end process ;
process ( clk )
begin
if rising_edge(clk) then
if count = 0 then
count <= 6 ;
dout <= '0' ;
else
count <= count - 1 ;
end if ;
end if ;
end process ;
end arc_rise_ext ;