Todo o loop de bloqueio de fase digital

9

Estou procurando implementar um bloqueio de fase em um FPGA sem usar nenhum componente externo (que não seja o ADC). Para simplificar, o bloqueio a um simples pulso binário é adequado. A frequência dos sinais é de ~ 0,1-1% do relógio. Não posso usar os PLLs de relógio a bordo porque eles são tipicamente:

  1. Não configurável (definido durante a síntese).
  2. Ansioso.
  3. Não suporte a frequência que eu preciso.

Eu estive examinando a literatura e encontrei alguns loops de fase binária bloqueados. O mais notável é o design de "roubo de pulso", no qual posso postar um link, se desejado. Eu implementei e sintetizei com algum sucesso, mas seu alcance de jitter e bloqueio não era tão bom quanto o anunciado. Eu também tive sucesso usando um DVCO externo, mas eu preferiria se eu pudesse implementar tudo no chip.

Um projeto de circuito digital ou até mesmo uma dica na direção certa seria útil (já estou batendo nisso há algum tempo), uma implementação comprovada de FPGA seria maravilhosa, mas não esperada.

ADICIONADO 10-27-2010

O design atual da DPLL que eu usei tem um "Random Walk Filter" como o filtro de loop (não o "roubo de pulso" descrito anteriormente, passando por minhas anotações que não funcionaram muito bem), que direciona os pulsos do relógio para o DCO . O intervalo de bloqueio é definido via divisor no DCO. A sensibilidade do loop é estabelecida variando o comprimento da caminhada aleatória.

O artigo em que isso é encontrado é citado no final deste post. Depois de implementar partes dele, descobri que ele já estava implementado no OpenCores; no entanto, nos últimos meses, o projeto foi excluído, mas eu tenho os arquivos Verilog salvos, se alguém quiser.

Yamamoto, H .; Mori, S .; , "Desempenho do loop binário bloqueado de fase digital quantizado binário com uma nova classe de filtro sequencial", Communications, IEEE Transactions on, vol.26, no.1, pp. 35-45, janeiro de 1978

doi: 10.1109 / TCOM.1978.1093972

URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1093972&isnumber=23895

crasic
fonte
11
Por favor, faça o link para o design de "roubo de pulso" - não há razão para não fazê-lo.
Kevin Vermeer

Respostas:

6

Você pode postar mais detalhes sobre a frequência de destino, largura de banda de jitter e loop (tempo de acomodação necessário)? Além disso, que tipo de oscilador você deseja usar (externo com um DAC, com / sem pontilhamento ?, um contador / acumulador digital no chip)?

Se você está satisfeito com um "oscilador" digital (ou seja, um acumulador transbordante) e seu tremor, o resto do circuito pode ser bastante simples:

  • um contador (PFD) contando o número de ciclos entre a referência e a saída PLL (opcionalmente dividida),
  • um filtro digital - tudo fará, desde que faça a integração (um acumulador) e tenha zero (menos (ou mais?) uma saída PFD em escala) para estabilizar o loop, opcionalmente um ou mais pólos acima da largura de banda do loop para reduzir o valor de controle "ondulação" na frequência de referência (importa apenas se
  • os bits mais significativos da saída do filtro digital (valor de controle DVCO) são dados como entrada para o acumulador transbordante (DVCO).

Quanto à largura de banda do loop, se não for aplicada pelo tempo de acomodação, decida-a com base nas contribuições de ruído de todos os componentes.

  • Se o jitter vier principalmente da referência ou do PFD - use uma largura de banda menor,
  • Se o ruído vier do oscilador - aumente.

Caso o sinal de referência seja modulado por fase ou frequência - use uma largura de banda de loop menor que a menor frequência do sinal que modula a referência.

Técnicas mais complicadas são usadas se a frequência de saída for próxima ou igual à freqüência do relógio e / ou se for necessária a baixa instabilidade ou uma faixa de travamento muito rápida. Talvez no seu caso eles não sejam necessários, além de não serem adequados para uma implementação de FPGA.

Andrzej
fonte
Se, por exemplo, se deseja multiplicar a frequência de um sinal de entrada estável por 16 e se o relógio é relativamente rápido, qual a vantagem de usar um filtro digital em vez de medir o número de relógios entre cada borda e a anterior um, e descobrir qual a frequência que deve ser emitida para que o pulso de saída que deve coincidir com a próxima borda do relógio de entrada o faça? Se o jitter do relógio de entrada não for mais do que um ciclo do relógio, o jitter da saída deve ser tão bom. Esse esquema poderia começar a produzir uma saída limpa assim que recebesse o segundo pulso de entrada.
supercat
1

Se você pode tolerar um pouco de instabilidade, mas na maioria das vezes só precisa de um relógio preciso em um relógio para recuperação de dados, convém implementar algo como o CAN Standard PLL (começa na página 67 desse PDF). Isso funciona com base em um contador de estouro que deve ser ajustado nominalmente corretamente, mas sincroniza até as bordas no fluxo de pulso de entrada.

AM Shea
fonte