Iniciantes Guia de recuperação de dados de relógio

se você é novo no mundo do design e verificação, você provavelmente tem um monte de perguntas! Um deles pode pertencer a um elemento importante-a recuperação de dados do relógio. Neste blog, tentamos desvirtuar este processo.

o propósito de projetar vários protocolos é transferir um conjunto de informações (dados) de um lugar para outro. Muitas vezes, a comunicação de dados em série é usada para transmitir os dados em alta velocidade. No final do receptor, os dados transmitidos têm de ser recuperados sem perder a sua integridade com a informação de tempo acompanhada. Este processo é chamado relógio e recuperação de dados.

neste artigo, vamos elaborar sobre os requisitos do CDR e como ele funciona, como lidar com questões como jitter e PPM na modelagem do CDR.

BTW, se você está gastando muito tempo olhando para formas de onda, tentando fazer sentido, nossa ferramenta de depuração de Protocolo (PDA) pode ser interessante para você. Por favor, dê uma olhada em um pequeno demo de 3 minutos aqui (sem fones de ouvido? Não te preocupes! Tem legendas!).

diferentes técnicas de comunicação de dados:

Antes de começar em CDR, vamos ter uma olhada em diferentes técnicas de comunicação de dados, que são:

1. Comunicação de dados em série

em bits de dados de comunicação em série são transmitidos sequencialmente um por um.

serial-data-communication

2. Comunicação paralela de dados

em comunicações paralelas os bits de dados são conduzidos em múltiplos fios simultaneamente.

parallel-transmission

olhando para as figuras acima, pode-se facilmente julgar que a comunicação paralela será muito mais rápida do que a comunicação em série.

mas então surge a questão, por que a comunicação em série é preferida à comunicação paralela???

isto é porque, na prática, a comunicação paralela não é mais rápida do que a comunicação em série. Isto é devido às seguintes razões-

a) Skew

o comprimento do caminho de viagem para cada bit vai ser diferente.Devido a isso, alguns bits podem chegar mais cedo ou antes do que outros que podem corromper a informação.

parallel-transmission-skew

para resolver isso você pode encher os pedaços. Mas isso seria sobre o custo da velocidade, uma vez que irá reduzir a velocidade de cada ligação para o mais lento de todos.

B) interferência entre símbolos e conversas cruzadas

devido a várias ligações paralelas ISI e cross talk é introduzido no sistema que se torna mais grave à medida que o comprimento da ligação é aumentado. Então isso limita o comprimento de uma conexão.

c) a limitação da contagem de pinos i/o

A comunicação de dados em paralelo requer muito mais Pinos I / O do que o necessário para a comunicação de dados em série.

o que é a recuperação de dados do relógio?

uma vez que a maioria das interfaces seriais de alta velocidade não têm nenhum relógio de acompanhamento, o receptor precisa recuperar o relógio, a fim de amostrar os dados em linhas seriais.

para recuperar o relógio de amostragem, o receptor necessita de uma referência de um relógio de aproximadamente a mesma frequência. Para gerar o relógio recuperado, o receptor precisa alinhar o relógio de Referência às transições no fluxo de dados recebido. Isto é chamado de recuperação de relógio.

Sampling of that incoming data signal with recovered clock to generate a bit stream is called as Data recovery. Juntos, isto é chamado de Clock data Recovery, ou CDR.

CDR é necessário recuperar os dados do fluxo de dados recebido na ausência de qualquer sinal de clock acompanhante, sem quaisquer erros de bits devido a excesso/sob amostragem.

Como Funciona A Recuperação De Dados Do Relógio?

as duas principais funções para realizar o CDR são – detecção de frequência e alinhamento de fase.

I) Detecção De Frequência

é um processo de bloqueio de uma frequência que é recuperada a partir do fluxo de dados de entrada. Isto é feito detectando a diferença de tempo entre duas arestas consecutivas no fluxo de dados.

esta frequência bloqueada é utilizada para regenerar o fluxo de dados transmitidos.

para torná-lo mais familiarizado com a detecção de frequência, deixe-me dar-lhe uma analogia de pontuação em uma frase. Você pode ter observado que sempre que uma estrada passa por trabalhos de reparação, a empresa de construção coloca uma mensagem de exibição em uma placa para desacelerar os veículos que passam. Essa mensagem é algo assim-

lento, os homens no trabalho

agora se a mesma mensagem é escrita sem pontuação adequada, então pode implicar algo totalmente diferente! –

os homens lentos no trabalho

as pontuações são como a frequência detectada. Se travado em uma freqüência errada que levará a amostragem de dados incorreta!

frequency-detection

então a questão aqui é como provar um fluxo de dados de entrada corretamente?

uma solução que vem à mente instantaneamente é provar o fluxo de bits na mesma frequência em que foi transmitido.

para fazer isso é preciso gerar o relógio no receptor com a mesma frequência na qual os dados foram transmitidos. Mas não é possível gerar dois relógios com a mesma frequência usando dois geradores de relógio diferentes, mesmo que tenham as mesmas especificações.

também não é possível gerar um relógio com uma frequência precisa.

ao mesmo tempo, uma diferença de minutos na frequência de amostragem pode levar a um erro de bits, conforme descrito no diagrama seguinte:

frequency-detection-minor-difference

como mostrado na figura acima, um único bit está sendo amostrado duas vezes devido a uma diferença de minutos na frequência TX e RX.

de que outra forma um relógio com a mesma frequência de ‘relógio TX’ seria gerado?

isto pode ser feito através da verificação das bordas no fluxo de dados de entrada.No entanto, neste processo, os bits iniciais que são usados para detectar a frequência se perdem. Para resolver isso, um conjunto particular de sequências de bits são transmitidos antes de transmitir os dados válidos. Estas sequências são chamadas de sequências de treino. Sequências de treinamento possuem uma densidade de borda muito alta, de modo que o receptor pode facilmente bloquear uma frequência, verificando as arestas consecutivas no fio antes do início dos dados válidos. Abaixo a figura mostra uma sequência com alta densidade de borda.

frequency-sequence-high-density

a frequência do fluxo de dados de entrada foi recuperada. O relógio RX pode agora ser gerado com base na frequência recuperada.

a frequência recuperada acima é boa para um caso ideal quando não há nenhum ruído introduzido na transmissão, ou seja, a frequência de clock para Clock TX é a mesma durante todo o tempo. Também os dados são um múltiplo integral do período de Clock TX. No entanto, isso não é verdade praticamente, pois há uma série de atributos que afetam a transmissão de dados e distorcem a uniformidade do relógio.

abaixo da figura mostra um relógio em tempo real que tem variações no seu período.

variable-period-clock

existem principalmente dois atributos que afectam a maioria das comunicações de dados em série de alta velocidade-

a) Jitter:

Jitter é um deslocamento nas bordas de um sinal periódico. Isto quebra a periodicidade do sinal.

periodic-signal-jitter

o Jitter é um efeito a curto prazo. Segue a distribuição gaussiana, é por isso que a média de jitter é zero, ou seja, o efeito cumulativo de jitter é nulo.

freqüência-Jitter-distribuição

uma vez que há um deslocamento nas bordas do sinal de relógio devido ao jitter, a questão é Qual é a posição ideal para amostrar um pouco?

um bit deve ser amostrado no centro. É a posição ideal onde o deslocamento máximo nas bordas de ambos os lados (da esquerda para a direita ou da direita para a esquerda) pode ser encontrado. No entanto, se a mudança em uma aresta se torna maior que a metade do período de bits, então haverá um pequeno erro.

frequency-jitter-distribution

B) PPM (partes por milhão):

PPM é uma imprecisão de certos componentes (cristal de quartzo no caso do gerador de clock) em um circuito que leva à geração de um sinal com período impreciso. PPM não quebra a periodicidade de um sinal. Como seu nome indica, PPM é um efeito de longo prazo que denota a imprecisão no período de bits ao longo de um milhão de ciclos de clock. O PPM é aditivo ou subtrativo por natureza.

jitter-free-range-frequency

Onlyif cumulative effect of jitter or PPM in TX CLK becomes more than half of RX CLK then there would be errors due to over / under sampling.

um exemplo abaixo mostra como variações contínuas no fluxo de dados recebidos podem afetar a amostragem de dados. Este mesmo exemplo será considerado para resolver as questões à medida que avançamos mais.

clock-frequency-ppm-effect

RX CLK (FD) é a frequência bloqueada durante a detecção de frequência. Como o fluxo de dados recebido está sendo amostrado em FD, como representado na caixa vermelha, um único bit está sendo amostrado duas vezes. Isto ocorre por causa das variações no fluxo de dados de entrada.

para encontrar estas variações na frequência de TX CLK, a segunda função do CDR, o alinhamento de fase vem em imagem. Isto reajusta as bordas de RX CLK.

II) alinhamento de fase

alinhamento de fase é um processo de combinar a fase de um sinal com outro sinal. Aqui ele está combinando a fase de clock recuperado na detecção de frequência com o fluxo de dados de entrada bit.

deixe-me dar-lhe uma analogia para o alinhamento de fase.Pode ter visto um rádio analógico. Há duas maçanetas, ou seja, afinação grosseira e afinação fina no rádio analógico. Quando se quer ouvir qualquer sinal audível, o botão de afinação grosseira é usado para bloquear uma frequência onde os sinais são audíveis, mas com alguns distúrbios. Aqui a melodia grosseira é tão boa quanto a detecção de frequência e as perturbações são jitter e PPM. Para remover estes distúrbios e fazer a voz audível, o botão de afinação fina é usado que ajusta a frequência pré-bloqueada um pouco aqui e ali para obter um sinal audível perfeito. Aqui afinação fina é semelhante ao alinhamento de fase.

phase-alignment-radio

as seguintes regras devem ser seguidas para o alinhamento de fases:

  1. If a transition is detected on wire then make level of RX CLK (FD+PD) = 1.
  2. If RX CLK (FD) period is completed after a posedge on RX CLK(FD+PD) and no any transition is detected on wire then assert posedge of RX CLK(Fd+PD).

aqui Rx CLK (FD) é a frequência de clock bloqueada durante o processo de detecção de frequência e RX CLK(FD+PD) é a frequência de clock durante o processo de alinhamento de fase.

é hora de olhar para o trabalho de alinhamento de fase. Tomemos o mesmo exemplo considerado anteriormente para o PPM jitter.

ppm-jitter-phase-alignment

aqui o período de relógio RX CLK ( FD) = 10

relógios que não foram atribuídos com um período na figura têm por período Padrão de 10.

na figura acima vimos anteriormente que o último bit estava sendo amostrado duas vezes como resultado de variação constante contínua (de 10 a 12) em TX CLK (pode ser por causa de PPM).No entanto, agora, como representado na caixa vermelha, o bit é amostrado corretamente.

no primeiro ciclo de clock TX, o período é de 10 unidades de tempo que são bloqueadas após detecção de frequência e também refletidas em RX CLK (FD+PD). De acordo com a regra 1, a aresta nos dados fará o nível de RX CLK(FD+PD) para 1(denotado pela primeira seta pontilhada). Em seguida, negedge será afirmado em RX CLK(FD+PD) após metade do período RX CLK(FD). Em seguida, posedge será afirmado em RX CLK(FD+PD), dependendo de metade do período RX CLK (FD) ou transição de dados, consoante o que vier primeiro (regra número 2).

no sexto e sétimo ciclo de clock TX os bits de dados são 0 e 0, sem transição em linha. Assim, RX CLK(FD+PD) seguirá a regra número 2 para ter um período de clock de RX CLK(FD), representado no primeiro ciclo de RX CLK (FD+PD) em caixa vermelha. Uma vez que o período para o sétimo ciclo de clock é de 12 unidades de tempo, a transição de dados ocorrerá após 2 unidades de tempo do que o esperado. Agora RX CLK(FD+PD) já afirmou o posedge e começa a esperar a conclusão de metade do período RX CLK(FD) para afirmar negedge em RX CLK (FD+PD). No entanto, após a conclusão de 2 unidades de tempo, uma transição é detectada, o que faz com que reinicie o tempo de espera de metade de RX CLK(FD). Isso leva a negedge de RX CLK(FD+PD) após 7 Unidade de tempo em vez de 5 (ou seja, metade do período RX CLK(FD))). Em seguida posedge após 5 unidade de tempo (segundo ciclo de RX CLK (FD+PD) em caixa vermelha). Da mesma forma, o alinhamento de fase ajusta o período de clock com base em constantes variações no fluxo de dados de entrada.

abaixo da figura apresenta um caso negativo de nervosismo…

negative-jitter-case

o terceiro período de clock TX foi variado de 10 unidades de tempo para 7 unidades de tempo devido a jitter negativo. Esta variação foi encontrada corretamente pelo alinhamento de fase, como mostrado na caixa vermelha.

the posedge on RX CLK (FD+PD) occurs as transition detected on DATA. Negedge on RX CLK(FD+PD) occurs after completion of half of RX CLK (FD) period. Agora uma transição é vista em dados antes da conclusão de metade do período RX CLK (FD) que causa uma transição de nível de 0 para 1 em RX CLK(FD+PD) (mostrado pela 3ª seta curva pontilhada).

abaixo da figura apresenta um caso positivo de jitter…

positive-jitter-case

o quinto período de clock TX tem sido variado de 10 unidades de tempo a 13 unidades de tempo devido ao jitter positivo. Esta variação foi encontrada corretamente pelo alinhamento de fase, como mostrado na caixa vermelha.

RX CLK(FD+PD) seguirá a regra número 2 para ter um período de clock de RX CLK(FD), representado no primeiro ciclo de RX CLK(FD+PD) em caixa vermelha. Uma vez que o período para o quinto ciclo de clock é 13, a transição de dados ocorrerá após 3 unidades de tempo do que o esperado. Agora, RX CLK(FD+PD) já afirma o posedge e começa a esperar a conclusão de metade do período RX CLK(FD) para afirmar negedge em RX CLK (FD+PD). No entanto, após a conclusão de 3 unidades de tempo, uma transição é detectada, o que faz com que reinicie o tempo de espera de metade de RX CLK(FD). Isso leva a negedge de RX CLK(FD+PD) após 8 unidades de tempo em vez de 5 (ou seja, metade do período RX CLK(FD))). Em seguida posedge após 5 unidade de tempo (segundo ciclo de RX CLK (FD+PD) em caixa vermelha).

isso foi tudo sobre o processo de trabalho de alinhamento de fase.

uma advertência…!

há uma questão que não é abrangida pela detecção de frequências e alinhamento de fases! Alinhamento de fase funciona na transição em fluxo de dados de entrada. No entanto, é possível ter um longo fluxo de bits idêntico que não tem qualquer transição nele. Neste caso, se o deslocamento cumulativo em uma aresta se torna mais de metade do período de clock recuperado (RX CLK(FD)), então ele vai levar a erros de bits e amostra os dados incorretamente.

para resolver este problema, sequências de bits são processadas com vários tipos de codificação antes de transmiti-lo em fio. Isto limita o número de bits idênticos consecutivos a um determinado nível. Isto reduz a probabilidade de se aproximar do deslocamento cumulativo para mais da metade de RX CLK(FD).

por exemplo, no USB 3.0 os bits de dados são processados com codificação 8B10B antes de transmiti-lo em um fio.

abaixo Figura descreve o diagrama de blocos comportamentais do CDR

behavioural-block-diagram-cdr

o fluxo de dados recebido passou como entrada para FD(detector de frequência), ED(detector de aresta) e um flip D flop. O detector de frequência gera uma frequência baseada em sequências de treino. O detector de areias dá saída sempre que detecta uma transição nos dados recebidos. As saídas do detector de frequência e do detector de aresta passaram como entrada para o bloco gerador de clock que gera um clock para amostrar os dados. Este relógio gerado e os dados recebidos passaram para D flip flop para regenerar o fluxo de bits.

abaixo da figura mostra o fluxograma para a geração de relógios após alinhamento de fase

clock-generation-post-phase-alignment

RX CLK (FD+PD) será inicializado para 1 ou 0. Após a inicialização dois processos paralelos vão começar, tempo de espera para metade do tempo RX CLK(FD) e detecção de borda em dados recebidos. O que for concluído primeiro dos dois processos paralelos irá desativar o outro processo. Se o temporizador estiver cronometrado antes de qualquer aresta ser detectada, então ele irá verificar o nível atual de RX CLK (FD+PD). If level of RX CLK(FD+PD) is 1 then go to “RX CLK(FD+PD)=0” activity and reset RX CLK(FD+PD) to 0 else go to “RX CLK (FD+PD)=1” activity. Reinicie ambos os processos paralelos novamente e aguarde a conclusão de qualquer um deles. Se for detectada uma aresta antes da completação, o temporizador de espera passa para “RX CLK(FD+PD)=0” actividade e define o nível de RX CLK(FD+PD) para 1.Reinicie ambos os processos paralelos novamente e aguarde a conclusão de qualquer um deles.

espero que este artigo irá ajudar os engenheiros a modelar o relógio e recuperação de dados.Autor: Deepak Nagaria com Aditya Mittal

Deixe uma resposta

O seu endereço de email não será publicado.