ตรรกะการควบคุมเกิดขึ้นอย่างไม่ถูกต้องเนื่องจากปัญหาในซอฟต์แวร์ Quartus II เวอร์ชั่น 4.1 และ 4.1 SP1 หากมีคุณสมบัติตรงตามเงื่อนไขต่อไปนี้:
- คุณสร้างอินสแตนซ์ของlpm_counterเมกะฟังก์ชันหรือlpm_counterอนุมานจากโค้ด HDL ของคุณในระหว่างการสังเคราะห์
- ตัวนับในการออกแบบของคุณใช้ทั้งสัญญาณที่ตั้งไว้ล่วงหน้าและเคลียร์ซิงโครนัสแบบไม่ต่อเนื่อง
- คุณคอมไพล์อุปกรณ์Stratixการกําหนดเป้าหมายการออกแบบ Stratix® Stratix GX, Cyclone®, MAX® II หรือ Hardcopy
พฤติกรรมที่ไม่ถูกต้องเกิดจากปัญหาการใช้งานกล่องที่ชัดเจนของการทํางานที่lpm_counterเมกะฟังก์ชัน เพื่อหลีกเลี่ยงปัญหาหากคุณมีเคาน์เตอร์ในการออกแบบของคุณที่ใช้ทั้งสัญญาณชัดเจนที่ตั้งไว้ล่วงหน้าและซิงโครนัสซิงโครนัส ให้คัดลอกไฟล์ lpm_counter.tdf จากไดเรกทอรีการติดตั้ง >\libraries\megafunctions ไปยังไดเรกทอรีโครงการของคุณ
ปัญหานี้ได้รับการแก้ไขเริ่มต้นด้วยซอฟต์แวร์ Quartus II เวอร์ชั่น 4.2
ต่อไปนี้เป็นตัวอย่างของรหัสที่มีการนําไปใช้อย่างไม่ถูกต้องในซอฟต์แวร์ Quartus II เวอร์ชั่น 4.1 และ 4.1 SP1 ในตัวอย่าง clr
นี้ สัญญาณจะถูกลบออกในการปรับใช้งานขั้นสุดท้าย
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;