Logika sterowania została nieprawidłowo wygenerowana z powodu problemu w oprogramowaniu Quartus® II wersji 4.1 i 4.1 SP1, jeśli spełnione są następujące warunki:
- Podczas syntezy tworzysz megafunction lpm_counter lub megafunction lpm_counter jest wywnioskowany z kodu HDL podczas syntezy.
- Licznik w Twoim projekcie wykorzystuje zarówno asynchronicznego wstępnie ustawionego, jak i synchronicznego sygnału wyraźnego.
- Kompilujesz projekty ukierunkowane na urządzenia Stratix®, Stratix GX, Cyclone®, MAX® II lub Hardcopy Stratix.
Nieprawidłowe zachowanie jest spowodowane problemem z implementacją clear box megafunction lpm_counter. Aby uniknąć tego problemu, jeśli w Projekcie znajduje się licznik, który wykorzystuje zarówno asynchronicznego wstępnie ustawionego, jak i synchronicznego sygnału wyczyszczania, skopiuj plik lpm_counter.tdf z katalogu instalacyjnego >\libraries\megafunctlumina do katalogu projektu.
Ten problem został naprawiony począwszy od oprogramowania Quartus® II w wersji 4.2.
Poniżej podano przykład kodu, który został nieprawidłowo zaimplementowany w oprogramowaniu Quartus® II w wersjach 4.1 i 4.1 SP1. W tym przykładzie clr
sygnał zostanie usunięty w końcowej implementacji.
process (clk, clr, preset) is
begin
if (preset = '0') then
counter <= (others => '1');
elsif rising_edge(clk) then
if (clr = '1') then
counter <= (others => '0');
else
counter <= counter 1;
end if;
end if;
end process;