Synteza VHDL - FF / Latch Constant Value

Próbuję zsyntetyzować napisany przeze mnie moduł vhdl.

Kod jest poniżej:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
use IEEE.NUMERIC_STD.ALL;

entity ClockCounter is
    port(
        clk         : in std_logic;
        input       : in std_logic;
        enable      : in std_logic;
        output      : out std_logic := '0';
        bitReady    : out std_logic := '0';
        countError  : out std_logic := '0'
    );
end ClockCounter;

architecture Behavioral of ClockCounter is

signal totalBitWidth     : integer := 4;
signal majorityValue     : integer := 3;

begin

totalBitWidth <= 4;
majorityValue <= 3;

-- Process for recognizing a single input value from a  clock cycle
-- wide input signal
majority_proc: process(clk, input, enable)

    variable clkCount : integer := 0;
    variable Sum      : integer := 0;

    begin

    if rising_edge(clk) And enable = '1' then
        -- Reset bitReady after one clock cycle
        bitReady <= '0';

        -- Check the input value and add it to the Sum variable
        if input = '1' then
            Sum := Sum + 1;
        else
            Sum := Sum + 0;
        end if;

        -- Increment the clock counter variable
        clkCount := clkCount + 1;

        -- Check if the clock count has reached the specified number of cycles
        if clkCount >= totalBitWidth then
            -- Determine if the Sum variable has met the threshold for
            -- value of 1, set the output accordingly
            if Sum >= majorityValue then
                output <= '1';
            else
                output <= '0';
            end if;

            -- This checks if the value for all clock cycles was the same and
            -- sets an error flag if not
            if Sum = totalBitWidth Or Sum = 0 then
                countError <= '0';
            else
                countError <= '1';
            end if;

            -- Reset the clock counter and sum value
            clkCount := 0;
            Sum := 0;
            -- Set the bit counter high to alert other midules that a new bit
            -- has been received
            bitReady <= '1';
        end if;
        elsif enable = '0' then
        clkCount := 0;
        Sum := 0;
    end if;

    end process;

    end Behavioral;

Problem, który napotykam, polega na próbie syntezy:

OSTRZEŻENIE: Xst: 1293 - FF / Latch ma stałą wartość 0 w bloku. Ta FF / Latch zostanie przycięta podczas procesu optymalizacji. OSTRZEŻENIE: Xst: 1896 - Ze względu na inne przycinanie FF / Latch, FF / Latch ma stałą wartość 0 w bloku. Ta FF / Latch zostanie przycięta podczas procesu optymalizacji. OSTRZEŻENIE: Xst: 1896 - Ze względu na inne przycinanie FF / Latch, FF / Latch ma stałą wartość 0 w bloku. Ta FF / Latch zostanie przycięta podczas procesu optymalizacji.

Przycinanie sięga aż do.

Nie rozumiem jednak, że zmienna clkCount jest liczbą całkowitą, która zwiększa się maksymalnie do 6, a następnie jest ustawiana na 0.

Czy te ostrzeżenia są czymś, co mogę zignorować?

Ten moduł jest poza większym systemem, nad którym pracuję, a kiedy syntezuję większy system, otrzymuję dużo

Znaleziono 1-bitowy zatrzask sygnału

Tak więc staram się wyeliminować jak najwięcej ostrzeżeń w modułach niższego poziomu przed naprawieniem modułu wyższego poziomu.

Każda pomoc byłaby świetna. Dzięki

PS - Używam zestawu ewaluacyjnego Xilinx spartan 6 sp605 i Nawigatora projektu.

questionAnswers(2)

yourAnswerToTheQuestion