Como mencionamos, os bits representados pelos circuitos digitais variam bastante ao longo do tempo. Por exemplo, em um moderno chip de memória, os bits podem variar mais de 100 milhões de vezes a cada segundo, ora representando 0, ora representando 1. Um diagrama de tempo é um gráfico simplificado que mostra os valores dos bits ao longo do tempo, como o vemos na figura 47.Um diagrama de tempo pode representar um ou vários sinais digitais simultaneamente. Neste caso é usado um único eixo Y, representando o tempo, e vários eixos X independentes, cada um deles representando um sinal digital diferente. Cada sinal digital por sua vez assume valores 0 e 1 ao longo do tempo. O diagrama da figura 47 representa dois sinais digitais. Neste diagrama podemos observar, além dos trechos nos quais o circuito gera bits 0 e 1, um pequeno intervalo de tempo em cada transição de 1 para 0 ou de 0 para 1, representados por trechos inclinados do gráfico. Esta transição deveria ser instantânea, do ponto de vista matemático, mas na prática leva um certo tempo, bastante pequeno, Por exemplo, um chip quegera bits diferentes a cada 10 ns (10 bilionésimos de segundo) pode demorar entre 1 e 2 ns para mudar seu estado de 0 para 1 ou de 1 para 0. Observe ainda que um diagrama de tempo não é a mesma coisa que um gráfico de tensão ao longo do tempo. Um gráfico de tensão ao longo do tempo mostra os valores de tensão existentes em um ponto de um circuito, e não os bits que representam. A figura 48 mostra um exemplo de gráfico de tensão ao longo do tempo, com todas as suas imperfeições. Este tipo de gráfico pode ser visualizado através de um aparelho chamado osciloscópio, usado em laboratórios de eletrônica.No gráfico da figura 48, a tensão começa com um valor baixo, representando um bit 0. No instante T1 começa a transição para representar um bit 1. O gráfico assume um trecho crescente e rápido, mas não se estabiliza imediatamente no seu valor máximo. A tensão atinge momentaneamente um valor máximo, em T2. A seguir reduz oscilando até se estabilizar em um valor definitivo, ou então limitada em uma faixa pequena. Este fenômeno é chamado de overshoot. No instante T3 o overshoot terminou ou foi reduzido a um valor que não afeta os circuitos e a tensão é considerada estabilizada. No instante T4 começa a transição de 1 para 0, que termina em T5. Segue-se um trecho em que a tensão já tem o valor 0, mas ainda não estabilizou no seu valor definitivo. Este trecho é o undershoot, e dura até o instante T6. Existem outras imperfeições mesmo nos trechos em que a tensão está estabilizada há “bastante tempo” em valores Low e High (0 e 1). Essas imperfeições são chamadas de ripple (em português, ruído). São uma espécie de interferência vinda da fonte de alimentação e de circuitos adjacentes. Quando dois circuitos estão próximos, transições binárias em um deles podeirradiar ondas eletromagnéticas que produzem interferências captados pelo outro. Essas interferências também pode chegar da própria fonte de alimentação. Quando um chip faz transições rápidas entre bits 0 e 1, seu consumo de corrente pode variar na mesma velocidade, e a fonte de alimentação, ao tentar suprir esta variação de corrente, pode sofrer uma pequena variação nas suas saídas. É o ripple da fonte de alimentação, que é propagado para todos os demais circuitos. O ripple não pode ser muito acentuado, caso contrário irá comprometer os valores dos bits. Em um circuito digital bem projetado, o overshoot e o undershoot devem assumir proporções não muito exageradas para que não impeçam o correto funcionamento dos chips. Isto é conseguido com o uso de uma fonte de alimentação bem projetada, com capacitores de desacoplamento ao lado de cada chip e utilizando técnicas apropriadas para o traçado das trilhas do circuito impresso da placa. Respeitadas essas condições, o projetista não precisa se precisa se preocupar com o overshoot, com o undershoot nem com o ripple da fonte de alimentação, mas precisa se preocupar com o tempo gasto nas transições binárias, ou seja, nas mudanças de 0 para 1 e de 1 para 0. Por isso são usados os diagramas de tempo, onde são indicados os trechos inclinados que representam as transições, mas não são mostrados os detalhes como overshoot, undershoot e ripple. Durante o projeto de um circuito digital, o projetista deve inicialmente desenvolver uma fase na qual é levada em conta a qualidade das tensões dos circuitos. O ripple deve ser baixo, assim como o overshoot e o undershoot. Deve ser levado em conta o valor, o tipo e a qualidade dos capacitores de desacoplamento ligados em cada chip. Deve ser levada em conta a qualidade da fonte de alimentação e o traçado das trilhas de circuito da placa. O leitor pode não ser um projetista de placas, mas aqui pode entender como a baixa qualidade da fonte e dos capacitores, aliado a um traçado mal
feito, contribuem para a ocorrência de erros que se manifestam no mau funcionamento do computador.A figura 49 mostra uma outra imperfeição nas tensões de um circuito digital. É o que chamamos de glitch. Trata-se de uma interferência na qual o valor de tensão especificado é momentaneamente alterado no sentido do bit oposto, produzindo uma variação binária indesejável. O glitch pode ocorrer quando o overshoot ou o undershoot são muito exagerados, ou quando um capacitor de desacoplamento está mal dimensionado ou defeituoso, ou mesmo quando existe um erro de projeto. Um circuito digital que recebe na sua entrada uma tensão com glitch vai entendê-lo como uma transição binária que na verdade não existe. O resultado é o mau funcionamento do circuito. Você certamente já viu a palavra glitch no cinema mas talvez não se lembre. No filme Robocop 1 (versão legendada), aquele imenso robô aponta a metralhadora para um funcionário da OCP e diz “Polícia de Detroit, largue a arma, você tem 30 segundos...”. A seguir, mesmo depois que o sujeito joga a arma no chão, o robô avisa: “Você tem 20 segundos.. você tem 10 segundos”, então metralha o infeliz (aliás, que filme ruim...). O responsável pelo robô explica-se ao presidente da empresa: “foi apenas um glitch...”. Depois de garantir que o circuito tem tensões estáveis, com imperfeições mínimas e sem glitch, o projetista passa a uma fase em que leva em conta apenas os valores binários e os períodos de transição. Essas são portanto as informações apresentadas nos diagramas de tempo.A figura 50 mostra alguns símbolos de eventos encontrados em diagramas de tempo:
a) Trigger positivo Este símbolo indica que no instante em que um sinal digital sofre uma transição de 0 para 1, um evento ou mudança em outro sinal digital será ativado.
b) Trigger negativo Similar ao positivo, exceto que o evento é disparado na transição binária de 1 para 0.
c) Retardo entre dois sinais Mostra a dependência temporal entre dois sinais relacionados. É usado quando é informação relevante saber que um determinado sinal será ativado depois de um determinado tempo a partir do qual o primeiro é ativado.
d) Indicação de barramento Para evitar que um diagrama fique muito extenso, podemos agrupar vários sinais relacionados em um único eixo. Usamos para representar, por exemplo, o barramento de dados do processador ou memória, o barramento de endereços, o conjunto de dados que estão trafegando através de uma interface. Não existe interesse em especificar o valor individual de cada um dos sinais digitais. Eles formam um grupo, e alguns deles podem ser 1 e outros serem 0, e o circuito funcionará independentemente dos valores.
e) Mudança de estado em ponto indeterminado Todos os circuitos digitais apresentam pequenas variações, mas os fabricantes sempre especificam valores máximos e mínimos. Por exemplo, um determinado circuito pode apresentar um tempo médio de resposta de 15 ns, mas alguns componentes podem chegar a 10 ns, outros a 20 ns. Em certos casos o projetista precisa compatibilizar seu circuito com componentes maislentos e mais rápidos. Neste caso precisa levar em conta o primeiro instante e o último instante em que um sinal digital pode ser ativado.
f) Don’t care Significa “não importa”. O sinal digital poderá ter neste período, qualquer valor (obviamente, 0 ou 1), sem afetar o funcionamento do circuito. Por exemplo, se fizermos o diagrama da transmissão de dados por uma interface paralela, este diagrama deve começar indicando o dado que estava presente nas saídas da interface antes de começar a nova transmissão. Neste caso, não importa o dado que existia antes. Fazemos então a sua indicação como “don’t care”.
g) Tristate Este símbolo é usado para representar períodos de tempo nos quais um sinal digital encontra-se em tristate (terceiro estado, ou alta impedância). Como exercício você poderá agora fazer o download de manuais de chips, memórias e processadores, encontrados nos sites dos seus fabricantes, e observar os diagramas de tempo mostrados. Poderá então entender melhor o funcionamento de vários desses chips. Ao longo deste livro usamos vários diagramas de tempo para explicar o funcionamento dos circuitos de um PC.
OBS: Quando um sinal tem valor 1 quando está em repouso e valor 0 quando está ativo, dizemos que é um sinal de lógica negativa. Sinais com esta característica são indicados com um traço horizontal sobre o seu nome, ou então com um símbolo “#” à sua direita, ou um “n” à sua esquerda. Por exemplo, se um sinal RESET é ativo em 0, indicamos como RESET# ou nRESET.