Ошибка при компиляции: «Недопустимый последовательный оператор» - PullRequest
0 голосов
/ 12 июня 2018

извините, если моя проблема кажется очевидной, я новичок в VHDL. Я попытался написать генератор четности, который считает число 1 в векторе (d) и присваивает true или false переменной odds и even.

мой код:

library ieee;
use ieee.std_logic_1164.all;
--------------------------------------------------
ENTITY testing IS
  GENERIC (N : positive := 4);
  PORT (d   : IN bit_vector(N-1 DOWNTO 0);
        odd : OUT bit;
        even : OUT bit);
END testing;
--------------------------------------------------
architecture verhalten of testing is

begin 
    process(d)


        function anzahl_1(d_s : in std_logic_vector) return natural is
            variable nb : natural;
            begin 
                nb :=0;
                lbl: for i in N-1 DOWNTO 0 generate
---d_S(i) <= d_S(i+1) XOR d(i);
                    if d_s(i) = '1' then 
                        nb := nb +1 ;
                    end if;
                end generate lbl;
            return nb;
        end anzahl_1;
    begin   

        if (anzahl_1(d) REM 2) = 0 then 
            odd <= '0';
            even <='1';
        else 
            odd <= '1';
            even <='0';
        end if;
    end process;

end verhalten;

Я получаю следующие ошибки, но я не знаю, с чего начать, не могли бы вы, ребята, помогите мне?

Ошибки:

GPG.vhd(21): Illegal sequential statement.
GPG.vhd(31): No feasible entries for subprogram "anzahl_1".
Bad expression in left operand of infix expression "=".
GPG.vhd(31): Type error resolving infix expression "=" as type std.STANDARD.BOOLEAN.
...