ID del artículo: 000078174 Tipo de contenido: Resolución de problemas Última revisión: 22/08/2023

¿Por qué la conexión de relojes periféricos HPS a pines externos a través de lógica de FPGA causa errores en el ajuste de Quartus®?

Entorno

  • Edición de suscripción de Intel® Quartus® II
  • Reloj
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Descripción

    Los siguientes relojes periféricos HPS se pueden enrutar a la lógica 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

    Debido a un problema en las versiones 13.0 y posteriores del software Quartus®, Quartus® fit puede generar un mensaje de error si estos relojes están conectados directamente a un pin de FPGA externo. El siguiente es un ejemplo de la señal de spim1_sclk_out conectada a un pin externo:

    Error (14566): No se pudo colocar 1 componente(s) periférico(s) debido a conflictos con restricciones existentes (1 controlador(es) de reloj autopromocionado(s))

    Error (175020): Restricción ilegal del controlador de reloj promocionado automáticamente que forma parte del sistema de procesador duro Arria V/Cyclone V ghrd_hps_0 a la región (92, 67) a (183, 137): no hay ubicaciones válidas en la región

    Información (14596): Información sobre el componente que falla:

    Información (175028): El nombre del controlador de reloj promocionado automáticamente: ghrd:soc_inst|ghrd_hps_0:hps_0|ghrd_hps_0_fpga_interfaces:fpga_interfaces|spim1_sclk_out[0]~CLKENA

    Puede encontrar más información sobre estos relojes en la sección "Relojes de FPGA periféricos" del Manual del dispositivo Cyclone® V o Arria® V, Volumen 3: Manual de referencia técnica del sistema de procesador duro (http://www.altera.com/literature/hb/cyclone-v/cv_5v4.pdf, páginas 27-12).

    Resolución

    Para evitar estos mensajes de error, la señal de reloj primero debe enrutarse a través de una LUT. Esto se puede lograr mediante la creación de instancias de una primitiva lcell_comb apropiada para la familia de dispositivos. A continuación se muestra un ejemplo de lcell_comb instanciación de Verilog para el reloj de spim1_sclk_out del SoC de Arria® V:

    arriav_lcell_comb wirelut( .dataa(spim1_sclk_from_hps), .combout(spim1_sclk_to_pin) );
    defparam wirelut.lut_mask = 64\'hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    defparam wirelut.dont_touch = "on";

    En el ejemplo anterior, la señal de spim1_sclk_from_hps se conecta al puerto de salida spim1_sclk_out desde la instancia HPS. La señal spim1_sclk_to_pin puede conectarse al puerto de salida de nivel superior y asignarse a un pin de FPGA.

    El uso de una primitiva lcell_comb minimizará los recursos. El uso de una pequeña función combinatoria booleana inferida también evitará este error. El uso de la función booleana evitará tener que instanciar una primitiva, pero puede resultar en un uso de recursos ligeramente mayor.

    El siguiente es un ejemplo de código Verilog que muestra un booleano inferido que también evita un error al marcar el reloj con una señal de restablecimiento bajo activa (lo que provoca una instancia de LUT inferida):

    asignar spim1_sclk_to_pin = spim1_sclk_from_hps & reiniciar;

    Este problema se solucionó a partir de la versión 15.1 del software Quartus® II.

    Productos relacionados

    Este artículo se aplica a 5 productos

    FPGA SoC Arria® V ST
    FPGA SoC Arria® V SX
    FPGA de sistema integrado en chip Cyclone® V SE
    FPGA de sistema integrado en chip Cyclone® V ST
    FPGA de sistema integrado en chip Cyclone® V SX

    El contenido de esta página es una combinación de la traducción humana y automática del contenido original en inglés. Este contenido se ofrece únicamente para su comodidad como información general y no debe considerarse completa o precisa. Si hay alguna contradicción entre la versión en inglés de esta página y la traducción, prevalecerá la versión en inglés. Consulte la versión en inglés de esta página.