Steuerungslogik wird fälschlicherweise aufgrund eines Problems in den Quartus II Softwareversionen 4.1 und 4.1 SP1 generiert, wenn die folgenden Bedingungen erfüllt sind:
- Sie instanziieren eine lpm_counter-Megafunktion, oder die lpm_counter Megafunktion wird während der Synthese aus Ihrem HDL-Code abgeleitet
- Der Zähler in Ihrem Design verwendet sowohl vordefinierte als auch synchrone Clear-Signale
- Sie kompilieren das Design für Geräte Stratix, Stratix GX, Cyclone®, MAX® II oder Hardcopy Stratix®
Das falsche Verhalten ist auf ein Problem mit der Implementierung der Lpm_counter-Megafunktion zurückzuführen. Um das Problem zu vermeiden, wenn Sie einen Zähler in Ihrem Design haben, der sowohl die vorkonfigurierten als auch synchronen Clear-Signale verwendet, kopieren Sie die Datei lpm_counter.tdf aus dem Installationsverzeichnis >\libraries\megafunctions in Ihr Projektverzeichnis.
Dieses Problem wurde ab Version 4.2 der Quartus II Software behoben.
Das Folgende ist ein Beispiel für Code, der in den Quartus II Softwareversionen 4.1 und 4.1 SP1 falsch implementiert ist. In diesem Beispiel wird das clr
Signal in der endgültigen Implementierung entfernt.
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;