Pergunta do relógio teórico

8

Apenas uma questão teórica mais do que qualquer coisa. O sinal do relógio precisa ter a mesma largura entre as espias e os vales?

Um sinal de relógio normal com dados (abaixo):

Relógio normal

Um sinal de relógio aleatório com dados (os dados ainda estão sincronizados com o relógio) (abaixo):

Random Clock

O chip (qualquer chip em geral, mas como um exemplo, um serial no registrador de deslocamento paralelo) ainda se comportaria normalmente com um relógio mais aleatório? Se não, por que não?

Novamente, não que eu esteja planejando fazer isso, mas teoricamente existe alguma razão para eu não poder usar um pino de saída padrão no Raspberry Pi / Arduino como relógio e outro pino como dados?

Exemplo de pseudo-código:

fakeClockPin = 1;
dataPin = 2;

setPin(dataPin, HIGH);
setPin(fakeClockPin, HIGH);
sleep(1); //1ms
setPin(fakeClockPin, LOW);
sleep(1); //1ms

setPin(dataPin, LOW);
setPin(fakeClockPin, HIGH);
sleep(1); //1ms
setPin(fakeClockPin, LOW);
sleep(1); //1ms

setPin(dataPin, HIGH);
setPin(fakeClockPin, HIGH);
sleep(1); //1ms
setPin(fakeClockPin, LOW);
sleep(1); //1ms

setPin(dataPin, LOW);
setPin(fakeClockPin, HIGH);
sleep(1); //1ms
setPin(fakeClockPin, LOW);
sleep(1); //1ms
vimista
fonte
Nem todos os relógios são simétricos. Certos microprocessadores antigos precisavam de um relógio de ciclo de trabalho de 66% (se bem me lembro).
HL-SDK
1
A técnica descrita por seu pseudocódigo é chamada de bit bang , e é uma coisa perfeitamente legítima a se fazer.
Phil Frost

Respostas:

12

Seu sinal de relógio é acionador de borda, em seus exemplos na borda positiva. Você pode dizer que os dados precisam estar estáveis ​​um pouco antes do limite do relógio ( tempo de configuração ) e, se o relógio travar na borda decrescente, coincidirá com a alteração dos dados.

Exceto pelo tempo de configuração, existem poucas restrições: o relógio pode permanecer alto pelo tempo que desejar. No entanto, você precisará ter um tempo mínimo baixo antes da próxima borda ascendente.

Radagast
fonte
7

Um chip se comportará normalmente desde que você o opere dentro dos 'parâmetros normais de operação', conforme especificado na folha de dados. A maioria dos chips possui apenas requisitos sobre o tempo mínimo entre as bordas do relógio e o tempo de configuração (dados estáveis ​​até a borda do relógio ativa). Nem são violados esticando o relógio.

Na prática, um sinal de relógio gerado por software sempre terá grandes variações no tempo. O ponto importante é que você não faz as coisas muito rápido para o chip externo. Mas o tempo de um registro de turno típico é expresso em 10s de ns, que é algumas ordens mais rápido que os 1 ms que você observa.

Wouter van Ooijen
fonte
1

Um chip simples com um "alfinete de relógio" não se importa quando a borda do relógio chega, mas sim. Mesmo pulsos isócronos são mais para o benefício de software ou hardware mais complexo, por exemplo, dispositivos baseados em PLL.

Ignacio Vazquez-Abrams
fonte