Roteamento de clock de 30 MHz através de várias placas

9

Estou usando o driver de LED TLC5945 . O microcontrolador (estou usando o LPC1343 ) deve fornecer um relógio para o temporizador / contador PWM interno. A velocidade máxima permitida do relógio é especificada como 30MHz.

Vou ter várias placas com TLC5945 daisychained. As placas serão conectadas através de conectores placa-a-placa ou cabos de fita curtos, a largura de uma placa é de 10 cm. Vou ter no máximo 4 deles conectados em série.

Provavelmente não usarei 30MHz completos, mas, no entanto, quero fazê-lo corretamente - como rotear / condicionar o sinal do relógio mantendo-o intacto?

Se eu adicionar um buffer como 74HC245 na saída de todas as placas, recebo um atraso de 10ns após cada buffer, não quero isso. Devo usar buffers de relógio especializados para "atraso zero"? Que tipo de esquema de rescisão devo empregar?

miceuz
fonte
2
Um único ciclo a 30 MHz é ~ 33ns. A dedução de 1/3 de um único ciclo por placa é tão importante?
Toby Lawrence
11
Que ótima pergunta e respostas. Toda resposta é adicionada à solução, sem repetir nenhuma das anteriores!
Vorac

Respostas:

20

30 MHz é suficiente para que você precise tratar o sinal como um problema na linha de transmissão. Você precisará prestar atenção ao layout da placa em todo o design, incluindo e principalmente nos conectores. Você precisará trazer pinos de aterramento extras junto com o sinal de 30 MHz ou possivelmente usar conectores especiais.

Você precisará de informações sobre o layout da sua placa, número de camadas e coordenar com o fabricante da placa pretendida, para que eles possam direcionar uma impedância característica específica para você ou apenas para obter parâmetros como constantes dielétricas.

Parece que você está ciente de muitos desses problemas, mas achei melhor resolvê-los, porque se você não tomar cuidado, poderá obter um design que seja funcional, mas emita muita RF e nunca passará por um problema. Teste EMI.

Diretrizes para rotear o sinal:

  • Calcule a impedância e a largura do traço.
  • Encaminhe seus relógios primeiro.
  • Se possível, nunca direcione o sinal através de uma via. Se necessário, coloque capacitores de bypass próximos à via.
  • Se possível / aplicável, direcione o sinal através de uma camada interna (para que o solo externo e os planos de energia possam funcionar como uma espécie de gaiola de Faraday). Nesse caso, o sinal deve ser roteado em uma camada, exceto nas vias necessárias para acessar os chips.
  • O sinal nunca vai a lugar algum sem um plano de terra (ou estritamente falando, um plano de referência).
  • O sinal nunca cruza uma fronteira entre os planos de potência.
  • Ao passar por um conector, envolva-o com aterramento.
  • Em uma série, direcione diretamente para as entradas do relógio sem usar stubs, se possível. Diagrama da margarida sem tocos de Altera PDF
  • Cruze outros sinais de forma perpendicular.
  • Se outros sinais precisarem viajar, dê-lhes folga. Quatro vezes a largura do rastreamento.
  • Use a terminação paralela para aterrar com uma resistência igual à impedância característica da microtira / tira de linha ou terminação da fonte se o sinal tiver apenas um destino. Para uma discussão, veja esta questão relacionada .

Obviamente, em um design do mundo real, talvez você precise quebrar algumas dessas diretrizes.

A maioria dessas regras segue a observação de que em altas frequências, a corrente de retorno tentará se aproximar do sinal, portanto, você deve fornecer um caminho para a corrente de retorno. Se a corrente de retorno estiver fisicamente separada, você estará criando uma antena parasita. O plano de terra (ou potência!) Que fornece um caminho para a corrente de retorno é chamado de referência. Não deixe o plano de referência. Se você precisar passar por uma via, o plano de referência muda. O capacitor de desvio é definido entre os planos de referência novos e antigos.

Seus conectores apresentarão um problema, pois provavelmente terão uma impedância diferente da PCB, causando reflexos e degradando o sinal. Uma opção pode ser usar um conector controlado por impedância que corresponda à impedância da placa.

No lado do firmware, pode ser necessário experimentar a força da unidade para controlar a taxa de borda. A força máxima da unidade geralmente é a resposta errada. Seu fornecedor de IC deve poder fornecer um modelo IBIS , com o qual você pode simular o circuito para estimar a integridade do sinal. Estritamente falando, não é a freqüência do relógio que causa problemas de integridade do sinal ou EMC, mas a taxa de borda (o tempo de transição entre alto e baixo), porque as bordas rápidas se manifestam como transientes de banda larga no domínio da frequência. Reduzir a força da unidade e / ou a taxa de giro reduzirá a taxa de borda e reduzirá as emissões harmônicas, enquanto (provavelmente) aumenta o tremor do relógio. Verifique as folhas de dados para ver qual é a taxa de borda aceitável para os receptores do relógio.

Meu senso é que, se você fizer sua lição de casa, provavelmente não precisará de nenhum tipo de repetidor de sinal. Considere o SCSI, por exemplo, que é um enorme barramento paralelo de alta velocidade distribuído por cabos a cerca de 100 MHz. Se possível, considere investir em um programa como o HyperLynx para simular seu layout.

Altera tem um excelente guia para problemas de roteamento de alta velocidade.

jbarlow
fonte
Obrigado por ótimas idéias. Pela sua resposta, entendo que não há como eu conseguir fazer isso com placas gravadas DIY?
Ratus
@ miceuz: Bem, se é um projeto de hobby, então você não está tão preocupado com a EMC, então talvez. O consenso emergente é que isso seria complicado para os engenheiros seniores acertarem, e tentar fazê-lo DIY não facilita nada. Por outro lado, você pode diminuir a frequência do relógio se não funcionar nesse caso. Eu tentaria encontrar um layout alternativo para reduzir o comprimento da corrente da margarida.
jbarlow
Voto isso duas vezes, se eu pudesse.
Renan
10

Não vai machucá-lo a fazer todas as coisas que jbarlow e David sugerem, mas deixe-me tentar facilitar um pouco as coisas para você (ou talvez seja mais difícil, porque eu vou dizer que você provavelmente pode se safar muito) de coisas, mas não vou prometer ).

Uma regra prática clássica é que você pode considerar um circuito agrupado se nenhuma das dimensões for maior que 1/10 do comprimento de onda do sinal de interesse de frequência mais alta. Se for um circuito fixo, você pode considerar suas trilhas apenas como conexões entre elementos discretos. Se não é um circuito concentrado, você precisa se preocupar com os efeitos do circuito distribuído e considerar seus traços como linhas de transmissão.

Você está falando de uma frequência de clock de 30 MHz, correspondente a um comprimento de onda de 10 m. Se propagando através do FR4, esse comprimento de onda será reduzido para cerca de 4,7 m. E um comprimento de circuito de 40 cm. Portanto, para o fundamental do sinal do relógio, você está no limite da antiga regra geral.

Problema: Você não precisa apenas se preocupar com a frequência do relógio, mas com quantos harmônicos dessa frequência precisam ser transmitidos para dar o tempo de subida e descida que você deseja. Se você desacelerar deliberadamente as bordas que transmite, provavelmente poderá se dar bem com o 1º e o 3º harmônicos (David mencionou isso quando ele mencionou não usar necessariamente a força máxima do acionamento).

Isso fornece uma frequência de interesse máxima de 90 MHz e comprimento de onda correspondente (em FR4) de cerca de 1,6 m. Portanto, a distância crítica é de 16 cm. Isso significa que, em geral, você deseja fornecer um caminho de retorno intimamente acoplado, designar suas trilhas como linhas de transmissão e terminar com uma impedância apropriada etc.

Mas você provavelmente não precisa pagar mais pela impedância controlada. Se você projetar com traços acima da largura mínima disponível pelo seu fornecedor (por exemplo, 8 ou 10 mil), as tolerâncias normais provavelmente fornecerão um desempenho adequado.

E se, ao longo do caminho, você tiver que passar por uma via ou percorrer um curto espaço no plano de terra, ou não conseguir colocar um capacitor de desvio próximo a uma peça de carga, não se preocupe demais. Se você deseja executar suas trilhas diretamente de conector para conector, com alguns centímetros de ponta para alcançar os chips de carga em cada placa, tudo ficará bem. Se o comprimento da parte não controlada do caminho (ou a fenda no plano do solo) for inferior a alguns centímetros, isso não vai estragar o seu dia. Mesmo que tenha 10 cm, é provável que você se safe, mas não se esforce.

Por exemplo, isso significa que quando você se conecta entre placas, não há necessidade de um conector controlado por impedância de alto custo. Até alguns centímetros de cabo de fita ficarão bem. Um padrão de aterramento do sinal de aterramento ou de sinal de aterramento do sinal de aterramento na fita é uma boa idéia, mas não se preocupe com cabos ou coaxiais de pares trançados com impedância.

Por outro lado, se você decidir usar um buffer em cada placa, isso permitirá que você praticamente trate o circuito em cada placa (com 10 cm de comprimento) como um circuito agrupado. Você desejará gerenciar a inclinação do buffer, como David descreveu, e terá que limitar os tempos de subida e descida de cada buffer, mas obterá muita flexibilidade no layout de cada placa sem degradar a funcionalidade. Dito isso, quanto mais você faz para manter os caminhos de retorno próximos aos traços de sinal, menor a probabilidade de ter uma surpresa desagradável quando se trata de testes EMC.

O fóton
fonte
6

Eu acho que a resposta de @ jbarlow é bastante clara. Quero acrescentar um pouco, mas não vou me incomodar em repetir o que ele disse.

A única coisa que eu discordaria de @jbarlow é o uso de repetidores ou o buffer de todos os sinais. O que ele diz está correto, "se você fizer sua lição de casa ...". Mas esse é o problema, fazendo sua lição de casa. Você pode fazer isso, mas precisará de cabos e conectores relativamente caros - e então será apenas "realmente difícil".

Não parece que adicionar 10 ns de atraso para armazenar o relógio em cada PCB seja realmente um problema. É difícil para mim dizer com certeza, pois você deixou de fora muitos detalhes sobre outros sinais como BLANK e XLAT. Mas mesmo que seja um problema, você sempre pode armazenar em buffer TODOS os sinais. Todos os portões do 74xx245 tenderão a ter o mesmo atraso (ou pelo menos semelhante) e, portanto, o tempo geral no driver do LED permanecerá bom.

(Nota: verifique as planilhas de dados. Um bom chip listará dois números diferentes de atraso de propagação. Um para um portão individual e outro mostrando a diferença ou desvio no atraso entre os portões do mesmo chip. Não aceite minha palavra. Você ainda será necessário fazer uma análise de tempo adequada.)

Obter a terminação e impedância dos sinais entre as placas de circuito impresso é fundamental para fazer esse projeto funcionar. Controlar a impedância em cabos multicondutores é sempre difícil, e executar um único sinal através de vários PCBs e cabos está apenas causando problemas. Você terá uma alteração na impedância em muitos pontos ao longo do comprimento do sinal, o que criará problemas de integridade do sinal. O buffer de todos os sinais entre PCBs ajudará a gerenciar isso. Pelo menos os comprimentos de rastreamento e as alterações de impedância em cada sinal serão mantidos no mínimo.

O uso de buffers de atraso zero não é necessário e pode realmente piorar as coisas (e mais caro). Os buffers de atraso zero são realmente PLLs (Phase-Locked-Loops) e requerem um design cuidadoso para funcionar perfeitamente. Na maioria dos casos, isso não é grande coisa, mas certamente pode ser um problema se o seu relógio não for perfeito. Seria melhor evitá-los para esta aplicação. Além disso, um buffer de atraso zero não é adequado para armazenar nada além de um relógio em execução contínua - portanto, não ajuda a armazenar em buffer outros sinais.


fonte
Excelentes pontos. Concordo que a abordagem de sinais em buffer é provavelmente muito mais segura e com maior probabilidade de sucesso.
jbarlow
Como faço para amortecer a terminação do sinal? É MCU-> Buffer-> Termo da série-> cabo-> Buffer-> TLC5945-> Buffer-> Termo da série-> cabo ... ou MCU-> Buffer-> Termo da série-> cabo-> TLC5945-> Buffer -> termo da série-> cabo ... ou seja, preciso armazenar em buffer os sinais das duas extremidades do cabo ou posso retransmitir o buffer e a terminação para trabalhar tanto no conector / cabo quanto na placa que vem a seguir?
Ratus
@miceuz Idealmente, você deve armazená-lo duas vezes em cada placa. Uma vez quando o sinal entra na placa em um conector. Outra vez, quando o sinal deixa a placa no outro conector. Praticamente, fazê-lo uma vez é provavelmente suficiente. Então seria MCU-> Cabo-> LED-> termo-> buf-> cabo-> led-> termo-> buf-> cabo-> etc. Observe que a fonte-série-terminação somente funciona se você tiver uma única carga no sinal, o que você não possui. Você tem um chip de driver de LED e um buffer. Você deve observar a terminação CA, que possui um resistor e uma tampa em série para aterrar na extremidade oposta.