ID do artigo: 000073672 Tipo de conteúdo: Solução de problemas Última revisão: 11/09/2012

As PLLs para TX e RX podem ser compartilhadas usando o núcleo SPI 4.2 em Stratix dispositivos IV GX ES?

Ambiente

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descrição

Sim, as PLLs podem ser compartilhadas usando a função Altera® SPI 4.2 MegaCore® em Stratix® dispositivos IV GX. O compartilhamento de PLL com o núcleo SPI 4.2 entre transmissão (TX) e recepção (RX) é mais complicado para Stratix IV GX ES do que outros dispositivos FPGA.

A megafunção ALTLVDS DO NÚCLEO SPI 4.2 para Stratix IV GX ES não suporta o compartilhamento interno de PLL para Tx e Rx. O desalinhamento DPA leva significativamente mais tempo do que o esperado para selecionar a fase ideal. Isso causará uma fase não ideal e resultará em erros de bits de dados mesmo após o sinal de bloqueio DPA ter sido afirmado. A redefinição do circuito DPA também desencadeia este problema.

Para habilitar o compartilhamento de PLL, siga as configurações passo a passo abaixo:

1. Verifique "Usar PLL externo" na guia Configurações de parâmetros da Megafunção ALTLVDS

2. Desmarque "Use PLL(s) compartilhado para receptores e transmissores" na guia De configurações de frequência/PLL da Megafunção ALTLVDS

3. Verifique "Habilitar a calibração pll" na 3ª guia de configurações DPA da Megafunção ALTLVDS

4. Execute o gerenciador de plug in megawizard e crie uma Megafunção ALTPLL. Aplique o grau de velocidade do dispositivo adequado e a frequência de entrada do clock de acordo com a configuração do sistema. Escolha Left_Right PLL

4-1. Na guia Reconfiguração PLL, em configuração de fase dinâmica, selecione "Criar entradas opcionais para reconfiguração dinâmica de fase"

4-2. Na guia Clocks de saída - clk c0, insira a frequência do clock de saída (o clock rápido executando a taxa de dados LVDS). Este relógio alimentará rx_inclock e tx_inclock. Ajuste a mudança de fase = -180 graus em relação ao clock vcO. Defina o ciclo de trabalho para 50%. Selecione "use essas configurações de clock para o clock DPA"

4-3. Na guia Clocks de saída - clk c1, insira a frequência do clock de transferência (clock rápido / fator de deserialização). Alimente esta saída de clock para tx_enable e rx_enable. Defina a mudança de fase para [(fator de deserialização - 2) / fator de deserialização] * 360 graus. Defina o ciclo de trabalho para (100 / fator de deserialização)

4-4. Na guia Clocks de saída - clk c2, insira a frequência do clock de saída (clock rápido / fator de deserialização). Alimente esta saída de clock para rx_syncclock. Defina a mudança de fase para (-180 degress/ fator de deserialização). Ajuste o ciclo de trabalho para 50%

Figure 1 

Esquema de clocking da Figura 1 PLL para LVDS

5. Faça alterações nos módulos do núcleo SPI4.2 Rx

5-1. No nome de variação _rx_core.v, substitua a instalação do nome de variação _rx_data_phy_altlvds com a instalação abaixo:

< nome de variação do SPI4>_rx_data_phy_altlvds rx_data_phy_altlvds (

.pll_areset(pll_areset),
.pll_phasedone(phasedone),
.rx_cda_reset({lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset}),
.rx_channel_data_align(bitslip),
.rx_enable(rx_enable),
.rx_fifo_reset({lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset}),
.rx_in(rx_in),
.rx_inclock(rx_inclock),
.rx_reset({lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset, lvds_reset}), // entrada [16:0],
.rx_syncclock(rx_syncclock),
.dpa_pll_cal_busy(dpa_pll_cal_busy),
.pll_phasecounterselect(phasecounterselect),
.pll_phasestep(phasestep),
.pll_phaseupdown(phaseupdown),
.pll_scanclk(scanclk),
.rx_dpa_locked(stat_rd_dpa_lvds_locked),
.rx_out(rx_out_serdes) );

5-2. No nome de variação .v (invólucro do núcleo SPI4.2 Rx), inclua a seguinte instação:

< nome de variação do SPI4>_pl4_rx_core _pl4_rx_core_inst (

...

.rx_inclock(rx_inclock),
.rx_enable(rx_enable),
.rx_syncclock(rx_syncclock),
.dpa_pll_cal_busy(dpa_pll_cal_busy),
.phasecounterselect (phasecounterselect),
.phasestep (phasestep),
.phaseupdown (phaseupdown),
.scanclk(scanclk),
.phasedone (phasedone),

...);

6. Faça alterações no módulo do núcleo SPI4.2 Tx:

6-1. No nome de variação _tx_core.v, substitua a instalação do nome de variação _tx_data_phy_altlvds com a instalação abaixo:

_tx_data_phy_altlvds tx_data_phy_altlvds (

.tx_enable(tx_enable), //input
.tx_in(tx_in_i), //input
.tx_inclock(tx_inclock)/entrada
.tx_coreclk(tx_coreclk),
.tx_out(tx_out), //saída
.tx_outclock(tx_outclock) //saída);

6-2. No nome de variação .v (invólucro do núcleo SPI4.2 Tx), inclua a seguinte instação:

_pl4_tx_core _pl4_tx_core_inst (

...

.trefclk(trefclk),
.tx_enable(tx_enable),
.tx_coreclk(tx_coreclk),

... );

7. A saída do barramento ALTLVDS rx_out receptor SPI4.2 será registrada com rx_outclock.

8. O barramento do transmissor SPI4.2 ALTLVDS tx_in pré-registrado com tx_coreclock.

9. Inverta a saída de bloqueio PLL compartilhada e a alimente para pll_areset porta da Megafunção ALTLVDS.

Produtos relacionados

Este artigo aplica-se a 1 produtos

FPGA Stratix® IV GX

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.