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 ;

questionAnswers(2)

yourAnswerToTheQuestion