Quais problemas podem ocorrer ao encadear 40 registros de turno?

16

Estou pensando em encadear 40 x 74HC595 registros de turno. Toda a cadeia de 74HC595s irá ser controlado por um microcontrolador 5 V, o que vai gerar as SDI, CLOCKe LATCHsinais.

Cada registrador de turnos e o microcontrolador terão seu próprio PCB, conforme ilustrado no diagrama abaixo:

diagrama

Devido a restrições mecânicas, a distância entre cada registro de mudança será de cerca de 30 cm (12 pol.), De modo que os sinais de controle percorrerão uma distância de aprox. 12 m (40 pés). Além disso, todo o sistema será montado em um ambiente muito barulhento (perto de lâmpadas fluorescentes, cabos de alimentação etc.)

Minha preocupação é que os sinais de controle sejam muito barulhentos e os registros de deslocamento possam emitir as coisas erradas. Eu estava pensando em:

  • Usando um buffer IC em cada placa, para armazenar em buffer os sinais de controle. Qual desses você recomendaria?
  • Usando cabos blindados entre as placas para os sinais
  • Baixar a CLOCKfrequência o máximo possível. Eu só preciso atualizar o conteúdo dos registros algumas vezes por dia.

As soluções acima são uma boa coisa a fazer? O que mais posso fazer para reduzir ao mínimo o ruído (potencial) dos fios de sinal?

m.Alin
fonte
3
Isso soa como um candidato fantástico para um CPLD no lugar dos 40 registros de turno.
Joel B
2
@JoelB Pode parecer uma boa opção para um CPLD, mas isso significa ter 320 (= 40 * 8) sinais indo da placa principal (CPLD) para todo o lugar. Seria muito difícil instalar, no meu caso, nesse ambiente; e será muito difícil de manter. Além disso, os sinais, embora mais curtos, ainda estarão sujeitos a ruído.
m.Alin
11
@Joel - O Digikey lista apenas alguns CPLDs com 320 E / Ss, e todos são BGAs. Eles também são mais caros do que os 40 '595s e, como o m.Alin, diz que você não tem a vantagem dos sinais distribuídos. Do ponto de vista lógico, este é um trabalho perfeito para um CPLD, do ponto de vista prático.
Stevenvh
2
@ m.Alin - Você está totalmente certo. Acabei de ler 40 registros de turno e digitar o CPLD. Depois de ler a pergunta completamente, como você está fazendo isso faz sentido.
Joel B

Respostas:

14

Use buffers Schmitt-trigger nas entradas de cada placa. Eles limparão os sinais para que qualquer ruído não dê pulsos falsos no relógio, por exemplo. O 74LVC3G17 é um buffer triplo não inversor.

Além disso, passe os sinais em buffer para a próxima placa. Caso contrário, todas as entradas seriam paralelas e você poderá exceder o fan-out do microcontrolador de acionamento (estou pensando especialmente na carga capacitiva total). A série de sinais de relógio e trava fornecerá um atraso de ondulação em toda a cadeia, mas os dados também o farão, e você planeja reduzir a velocidade de qualquer maneira.

stevenvh
fonte
11
@ m.Alin - Sim, um estágio push-pull seria bom. Mas eu recomendaria fortemente os buffers, não apenas pela capacidade do inversor, mas principalmente pela histerese do gatilho Schmitt , que evitará pulsos falsos de clock causados ​​por ruído em torno do limiar.
stevenvh
2
@Saad - Você quer dizer que o buffer direciona o sinal para o cabo? O bom é que ele fornecerá uma baixa impedância que reduz o ruído. Mas se não iria ser ruído no lado do receptor que não pode fazer nada sobre isso no lado de envio. Portanto, é o receptor que precisa de uma boa imunidade a ruídos, que o gatilho Schmitt fornece.
stevenvh
11
@ Saad - Sim, mas neste caso parece um exagero: os fios têm apenas 30 cm de comprimento e você já tem um repetidor / buffer em cada placa.
stevenvh
11
@stevenvh Sim, eu estava falando em geral. Suas postagens têm muitas informações e eu quase sempre aprendo algo novo! Nesse caso, tenho buffers em uma placa controladora que se conecta a um cabo que se conecta a uma 'placa filha'. Não espero muito barulho, então posso ficar com meu arranjo. Eu só tenho buffers lá para que minha fonte não acabe dirigindo 8 dispositivos (com capacitância de entrada de 8pF + capacitância de rastreamento e cabo).
Saad
11
@ Saad - Obrigado pelas flores! :-) Fique de olho na capacitância do cabo, especialmente se tiver mais de um metro ou mais. Regra geral: 100 pF / m, muito mais do que a capacitância de entrada.
stevenvh
9

O problema que pode ocorrer é que alguns relógios SR antes do próximo relógio SR, para que o próximo SR registre os dados incorretos. Uma solução (padrão?) Para isso é ligar o relógio começando no último SR.

Eu consideraria adicionar um buffer (schmit-trigger?) Em cada placa para todas as 3 linhas de sinal.

(editar) Reduzir a frequência do relógio não ajudará (a menos que tenha sido muito alto para começar). Os problemas que você pode ter ocorrem nas bordas do relógio, que você terá de qualquer maneira, não importa quão baixa você escolha sua frequência de relógio.

Wouter van Ooijen
fonte
8

O maior problema ao encadear registros de turno é garantir que a relação de tempo entre o relógio usado por cada placa use para receber dados e a alteração nos dados da placa anterior seja previsível. O fato de a saída do 74HC595 mudar na mesma extremidade do relógio é um pouco irritante a esse respeito. Sugiro que o sinal do relógio seja armazenado em buffer à medida que passa por cada placa e que o sinal de dados que sai do 74HC595 de uma placa seja colocado em um buffer que o atrasará por um tempo um pouco mais longo que o buffer do relógio.

Como alternativa, você pode usar um registro de turno como o 74HC4094 que tem sua saída de dados alterada na borda do relógio em queda, ou você pode adicionar um flip-flop entre a saída dos últimos 74HC595 na placa e na próxima placa e ter esse flip-flop trave sua saída na extremidade descendente do relógio que aciona os 74HC595 (talvez passe o relógio por dois inversores para amortecê-lo e alimentar o sinal do relógio invertido no flip-flop).

Se o número de saídas 74HC595 que você estiver usando for um (ou mais) menor que o número fornecido por seus chips (por exemplo, em uma placa com dois 74HC595, você só precisa de 15 saídas), você poderá alimentar os últimos 74HC595 em uma placa com um relógio invertido dos outros, mas isso custaria o uso de uma saída 74HC595 para cada vez que o sinal passar entre um relógio não invertido 74HC595 e um relógio invertido 74HC595.

supercat
fonte