如果满足以下条件,控制逻辑会由于 Quartus® II 软件版本 4.1 和 4.1 SP1 的一个问题而错误生成:
- 您在合成过程中用 HDL 代码推断出lpm_counter兆功能或lpm_counter兆功能
- 设计中的计数器使用异步预设和同步清除信号
- 您编译了针对Stratix®、StratixGX、Cyclone®、MAX® II 或 HardcopyStratix设备的设计
错误行为是由于 lpm_counter宏功能的开箱式实施出现问题导致的。为了避免问题,如果您的设计中有一个计数器,该计数器使用异步预设和同步清除信号,请将 lpm_counter.tdf 文件从Quartus II 安装目录>\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 '1');
elsif rising_edge(clk) then
if (clr = '1') then
counter '0');
else
counter