ID do artigo: 000078174 Tipo de conteúdo: Solução de problemas Última revisão: 13/10/2014

Por que conectar clocks periféricos HPS a pinos externos via lógica FPGA causa erros de ajuste do Quartus®?

Descrição

Os seguintes clocks periféricos de HPS podem ser roteado para a 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

Devido a um problema nas versões 13.0 e posteriores do software Quartus® II, o Quartus® Fit pode gerar uma mensagem de erro se esses clocks estiverem conectados diretamente a um pino de FPGA externo. Abaixo está um exemplo do sinal de spim1_sclk_out conectado a um pino externo:

Erro (14566): não foi possível colocar 1 componente(s) de periferia devido a conflitos com as restrições existentes (1 driver(s) de clock promovido automaticamente

Erro (175020): Restrição ilegal de driver de clock promovido automaticamente que faz parte do Hard Processor System Arria V/Cyclone V ghrd_hps_0 para a região (92, 67) para (183, 137): não há locais válidos na região

Informações (14596): Informações sobre o componente faltoso:

Informações (175028): o nome do driver de clock promovido automaticamente: ghrd:soc_inst|ghrd_hps_0:hps_0|ghrd_hps_0_fpga_interfaces:fpga_interfaces|spim1_sclk_out[0]~CLKENA

Mais informações sobre esses clocks podem ser encontradas na seção "Clocks FPGA periféricos" do manual do dispositivo Cyclone® V ou Arria® V, Volume 3: Manual de referência técnica do sistema de processador rígido (http://www.altera.com/literature/hb/cyclone-v/cv_5v4.pdf, página 27-12).

Resolução

Para evitar essas mensagens de erro, o sinal do clock deve primeiro ser roteado por meio de uma LUT. Isto pode ser alcançado instanciando uma lcell_comb primitiva apropriada para a sua família de dispositivos. O seguinte mostra um exemplo de instanciação do lcell_comb Verilog para o clock spim1_sclk_out do SoC Arria® V:

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

No exemplo acima, o sinal spim1_sclk_from_hps está conectado à porta de saída spim1_sclk_out da instância do HPS. O spim1_sclk_to_pin de sinal pode ser conectado à porta de saída de nível superior e atribuído a um pino de FPGA.

O uso de uma primitiva lcell_comb minimizará os recursos. O uso de uma pequena função combinacional booleana inferida também evitará este erro. O uso da função Booleano evitará a instanciação de uma primitiva, mas pode resultar em um uso de recursos ligeiramente maior.

Abaixo está um exemplo de código Verilog mostrando um Booleano inferido que também evita um erro de ANDing do clock com um sinal de reset baixo ativo (causando uma instância LUT inferida):

atribuir spim1_sclk_to_pin = spim1_sclk_from_hps e redefinir;

Este problema foi corrigido a partir da versão 15.1 do software Quartus® II.

Produtos relacionados

Este artigo aplica-se a 5 produtos

Mostrar tudo

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês prevalecerá e será a determinante. Exibir a versão em inglês desta página.