文章 ID: 000078174 内容类型: 故障排除 上次审核日期: 2014 年 10 月 13 日

为什么通过FPGA逻辑将 HPS 外设时钟连接到外部引脚会导致 Quartus® fitter 错误?

环境

  • Quartus® II Subscription Edition
  • Clock
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    说明

    以下 HPS 外设时钟可路由至FPGA逻辑:

    • emac0_md_clk
    • emac0_gtx_clk
    • emac1_md_clk
    • emac1_gtx_clk
    • qspi_sclk_out
    • spim0_sclk_out
    • spim1_sclk_out
    • i2c0_clk
    • i2c1_clk
    • i2c2_clk
    • i2c3_clk

    由于 Quartus II 软件版本 13.0 及更高版本存在问题,如果这些时钟直接连接到外部FPGA引脚,Quartus® fit 可能会生成错误消息。以下是连接到外部引脚的spim1_sclk_out信号的示例:

    错误 (14566):由于与现有约束冲突,无法放置 1 个外设组件(1 个自动升级的时钟驱动程序)

    错误 (175020):非法约束作为Arria V/Cyclone V 硬处理器系统一部分的自动升级时钟驱动程序 ghrd_hps_0到区域 (92, 67) 至 (183, 137):区域中没有有效位置

    信息 (14596):有关故障组件的信息:

    信息 (175028):自动升级的时钟驱动程序名称:ghrd:soc_inst|ghrd_hps_0:hps_0|ghrd_hps_0_fpga_interfaces:fpga_interfaces|spim1_sclk_out[0]~CLKENA

    有关这些时钟的更多信息,请参见《Cyclone® V 或 Arria® V 器件手册第 3 卷:硬处理器系统技术参考手册》(http://www.altera.com/literature/hb/cyclone-v/cv_5v4.pdf,第 27-12 页)的“外设 FPGA 时钟”部分。

    解决方法

    为了避免这些错误消息,时钟信号必须首先通过LUT路由。这可以通过实例化适合您的设备家族的lcell_comb基元来实现。下面举例说明了Arria® V SoC spim1_sclk_out时钟lcell_comb Verilog 实例化:

    arriav_lcell_comb wirelut( .dataa(spim1_sclk_from_hps), .combout(spim1_sclk_to_pin) );
    defparam wirelut.lut_mask = 64\'hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    defparam wirelut.dont_touch = “on”;

    在上面的示例中,spim1_sclk_from_hps信号连接到 HPS 实例的 spim1_sclk_out 输出端口。spim1_sclk_to_pin信号可以连接到顶层输出端口,并分配给FPGA引脚。

    使用 lcell_comb 基元将最大限度减少资源。使用一个小的推断布尔组合函数也可以避免此错误。使用布尔函数可以避免实例化基元,但可能会导致资源使用率略高。

    以下是一个示例 Verilog 代码,显示了推断的布尔值,该值还可以通过使用有效低电平复位信号对时钟进行 AND来避免错误(导致推理 LUT 实例):

    分配 spim1_sclk_to_pin = spim1_sclk_from_hps & 重置;

    从 Quartus® II 软件 15.1 版开始修复该问题。

    相关产品

    本文适用于 5 产品

    Arria® V ST SoC FPGA
    Arria® V SX SoC FPGA
    Cyclone® V SE SoC FPGA
    Cyclone® V ST SoC FPGA
    Cyclone® V SX SoC FPGA

    本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。