∞ Electrónica Digital ∞
Sistemas digitais vs. analógicos
O sistema digital é um sistema discreto, utilizando a valores lógicos binários para um posterior processamento.
A informação digital é baseada em dois estados distintos (disjuntos) que podem ser definidos como 1 (positivo) ou 0
(não positivo).
Dependendo do ambiente de desenvolvimento estes valores podem corresponder a: circuito aberto (0) ou circuito fechado (1); 0 a 0.8V (0) ou 2.4 a 5V;
luz apagada (0) ou luz acesa (1).
Um sistema analógico por seu lado toma valores que podem variar continuamente dentro de uma gama de valores possíveis. Um exemplo é a propagação de um som no ar.
Uma vez que um sistema analógico tem uma grande variedade de valores torna-se por isso difícil de guardar os dados num sistema computacional, sendo por isso preferível o seu armazenamento sobe uma forma discreta.

Representação de um sinal digital
Representação de um sinal analógico
Num sistema analógico pequenos erros numa entrada podem provocar grandes erros nas saídas. Um sistema digital é mais preciso e fiável uma vez que é possível utilizar um campo para o controle de erros e possibilita a sua correcção.
Os computadores usam internamente sistemas digitais no entanto os circuitos de interface, como sensores entre outros, são geralmente analógicos.
Algebra booleana e Operadores lógicos
Uma álgebra de Boole é uma estrutura matemática baseada num conjunto {B, +, •}, satisfazendo o seguinte conjunto de postulados. [Huntington, 1904]
P1: Fecho
Ambas as operações são fechadas em B
P2: Comutatividade
P3: Elementos Neutros / Absorventes
P4: Distributividade
P5: Complementação
P6: Cardinalidade
Em álgebra Booleana, os valores são os símbolos 0 e 1
Se uma expressão lógica é falsa, então toma o valor 0
Se uma expressão lógica é verdadeira, então toma o valor 1
Operação E (AND):
Toma o valor lógico 1 quando todas as condições são verdadeiras.
| X | Y | X AND Y | S = X . Y | X = 1 ou 0 | |
| 0 | 0 | 0 | 0 . X | 0 | |
| 0 | 1 | 0 | 1 . X | X | |
| 1 | 0 | 0 | X . X | X | |
| 1 | 1 | 1 | X' . X | 0 |
Operação OU (OR):
Toma o valor lógico 1 quando pelo menos uma das condições é verdadeira.
| X | Y | X OR Y | S = X + Y | X = 1 ou 0 | |
| 0 | 0 | 0 | 0 + X | X | |
| 0 | 1 | 1 | 1 + X | 1 | |
| 1 | 0 | 1 | X + X | X | |
| 1 | 1 | 1 | X' + X | 1 |
Operação Negação (NOT):
Toma o valor lógico contrário da condição.
| X | NOT X | |
| 0 | 0 | |
| 0 | 1 | |
| 1 | 1 | |
| 1 | 1 |
Teoremas
Os teoremas servem para fazer asserções acerca da validade da equivalência expressões booleanas, são
demonstráveis a partir de postulados e/ou outros teoremas e por indução completa.
Na demonstração por indução completa verifica-se as proposições para todos os caso
possíveis através da elaboração de uma tabela de verdade compatível com a asserção
para todas as combinações possíveis das variáveis independentes.
T1: Unicidade do elemento neutro
Se existe um elemento neutro ele é único.
T2: Idempotência
T3: Elemento absorvente
T4: Absorção
T5: Simplificação
T6: Adjacência
T7: Involução
Demonstração por indução completa.
| X | \X | \(\X) |
| 0 | 1 | 0 |
| 1 | 0 | 1 |
T8: Associatividade
Demonstração por indução completa.
∀x,y,z ∈ B, (xy)z = x(yz)
| X | Y | Z | XY | (XY)Z | YZ | X(YZ) |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 1 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 |
T9: Leis de De Morgan
T10: Consenso
Princípio da dualidade
Este princípio estabelece o seguinte: toda a expressão formada por elementos do conjunto {A,B, C, . . .} mais os elementos 0 e 1 e que envolva as operações de soma lógica, de produto lógico e de complementação possui uma expressão dual que se obtém trocando cada soma por um produto lógico e cada produto por uma soma lógica, e ainda os “0”s por “1”s e os “1”s por “0”s.
Exemplos:

Portas lógicas
Portas lógicas são blocos primitivos muito usados no design de sistemas digitais. Internamente são constituídas por transístores.
Nos circuitos reais existem atrasos de propagação dos sinais, este facto pode levar a ocorrência de falhas.
Variações da saída são atrasadas em relação às entradas o atraso de propagação é sensível ao caminho que os sinais seguem. Num curto intervalo de tempo o valor das saídas comuta de um valor correcto para uma valor errado estabilizando num valor válido novamente, este fenómeno tem o nome de glitch ou hazard.
Para entender melhor como funcionam as portas lógicas e os vários valores resultantes da variação das entradas usa-se normalmente tabelas de verdade, são tabelas que mostram o valor lógico à saída para todas as combinações possíveis na entrada. Assim uma vez que estamos num sistema binário o número total de possibilidade é igual a 2N entradas.
Porta NOT
Uma porta NOT consiste num circuito que nega o valor presente na entrada, isto é, se à entrada estiver 1, a saída estará 0 e vice-versa.
| Tabela de verdade | |
| A | \A (not A) |
| 0 | 1 |
| 1 | 0 |
Símbolo

Implementação electrónica
com tecnologia CMOS

Buffer
Um é semelhante a uma porta NOT, no entanto não inverte a saída, apenas serve para manter na saída o mesmo valor que se encontra à entrada. Isto pode servir para amplificar um sinal ou para manter um determinado valor durante mais tempo (necessitando de algo para saber quando deve mudar de valor, tipicamente um sinal de clock).
| Tabela de verdade | |
| A | A' |
| 0 | 0 |
| 1 | 1 |
Símbolo

Porta AND
Uma porta AND apenas produz o valor lógico 1 se ambas as entradas forem 1, caso contrario é zero.
| Tabela de verdade | ||
| A | B | A ∧ B |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Símbolo

Implementação electrónica
com tecnologia CMOS

Porta NAND
Uma porta NAND consiste na ligação de uma porta NOT à saída da porta AND, assim esta porta produz um valor lógico 1 sempre que as duas entradas são 1.
| Tabela de verdade | |||
| A | B | A ∧ B | \(A∧B) |
| 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
Símbolo

Implementação electrónica
com tecnologia CMOS

Porta OR
Uma porta OR produz um valor lógico 1 se pelo menos uma das entradas for 1, é zero caso as duas entradas o sejam.
| Tabela de verdade | ||
| A | B | A ∨ B |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Símbolo

Implementação electrónica
com tecnologia CMOS

Porta NOR
Uma porta NOR consiste na ligação de uma porta NOT à saída da porta OR, assim esta porta produz um valor lógico 0 sempre que as duas entradas são 1.
| Tabela de verdade | |||
| A | B | A ∨ B | \(A∨B) |
| 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
Símbolo

Implementação electrónica
com tecnologia CMOS

Porta XOR
Uma porta XOR produz um valor lógico 1 sempre que os valores das entradas são distintas, é zero sempre que sejam iguais.
| Tabela de verdade | ||
| A | B | A ⊕ B |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Símbolo

Porta XNOR
Uma porta XNOR produz um valor lógico 1 sempre que os valores das entradas são iguais (zero ou um), é zero sempre que sejam
distintos.
Consiste na ligação de uma porta NOT na saída de uma porta XOR.
| Tabela de verdade | |||
| A | B | A ⊕ B | \(A⊕B) |
| 0 | 0 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
Símbolo

Realidade física
Os componentes electrónicos físicos geram sinais eléctricos contínuos, não discretos. Ainda assim são a base constituinte de qualquer sistema de digital!
Nos sistemas digitais reais as transições de estado lógico não são instantâneas, embora num intervalo de tempo muito curto é possível observar os valores intermédios durante as transições.

A álgebra Booleana é assim particularmente útil para descrever o comportamento em regime estacionário dos sistemas digitais.
Não pode, contudo, esquecer-se o aspecto dinâmico dos mesmos, correspondente ao seu comportamento variante no tempo.
Implementação da negação lógica
1 na entrada resulta num 0 à saída
0 na entrada resulta num 1 à saída
Comportamento de um inversor em função da entrada: a entrada varia de 0V a 5V, a saída mantém-se a 5V para uma cerca gama de valores da entrada, e depois varia rapidamente mas não instantaneamente.

Circuitos de memórias
Os elementos primitivos de memória são formados de portas lógicas associadas em cascata.
A associação série de portas lógicas forma a estrutura base das memórias RAM comerciais. A porta lógica mais simples é o inversor, a sua ligação em cascata cria uma célula de memória estática (soluções com portas NOR e NAND cruzadas é também possível).

A quebra selectiva da realimentação serve para carregar um novo valor na célula ou para manter o valor existente (caso não se interrompa a realimentação).

Pela imagem anterior observa-se que se obtém o valor armazenado na célula lendo a partir do ponto Z, e carrega-se um novo valor na célula a partir de A, no entanto para isso será necessário activar a porta de transmissão à entrada (desactivando assim a porta superior).
Latch R-S
Tal como nos inversores em cascata, também as portas NOR cruzadas tem a capacidade de forçar a saida a 0 (reset) ou a 1 (set). Por esse motivo tem o nome de latch R-S
| Tabela de verdade | ||
| S | R | Q |
| 0 | 0 | hold |
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | unstable |

Muito difícil observar a Latch R-S no estado 1-1 uma vez que tem um retorno ambíguo ao estado 0-1 ou 1-0. Esta situação é conhecida com "condição de corrida", uma vez que as saida estão constantemente a mudar de valor.
Latch sensível ao nível
As latchs sensíveis ao nível consiste na inclusão de lógica adicional as latchs R-S para que exista um sinal que controla a alteração dos valores existentes, podendo assim manter-se uma determinado valor à saida da latch mesmo que já não existam as entradas.

O sinal enable (enb) serve para "abrir" e "fechar" o acesso aos sinais de set e reset.
Sinal de enable activo a zero (lógica negativa) assim como os sinais R e S.
Os flip-flops são semelhantes às latchs sensíveis ao nível, no entanto os flip-flops são sensiveis à transição (e não ao nível).
Nota: Para evitar problemas eléctricos, numa lógica positiva utilizam-se portas NAND, numa lógica negativa portas NOR.
Flip-Flop R-S
A entrada de sincronização CP (clock pulse) do circuito, controla a mudança de estado do flip-flop.
Equação característica: Qseguinte = S + R.Q
| Tabela de verdade | ||
| \S | \R | Q |
| 1 | 1 | hold |
| 1 | 0 | 0 |
| 0 | 1 | 1 |
| 0 | 0 | unstable |
Símbolo

Circuito

Analisando o circuito acima, podemos ver que as saídas das portas NOR do nível A, são forçadas ao estado lógico 0 na altura em que CP é 0 (\CP = '1'), isto acontece seja qual for o estado lógico da entrada S e R. O valor destas entradas só tem influência na saída quando o impulso de relógio muda para 1.
Se atribuir-mos à entrada \S o valor lógico 1 e à entrada \R o valor lógico 0, na altura em que a linha \CP mudar para 0, a saída da porta 1 muda para 0 e a saída da porta 2 muda para 1, ficando estas condições nas entradas das portas 3 e 4.
O 0 presente na entrada da porta 3 força a saída \Q a mudar para o estado lógico 1, enquanto ambas as entradas da porta 4 ficam com o valor lógico 1 e esta condição força a saída Q a mudar para o estado lógico 0.
Se após esta transição o relógio \CP mudar para 0 as saídas \Q e Q ficam com o estado actual memorizado, a sua transição para outra situação só se dará quando aparecer um outro 1 na linha de \CP.
Pelo facto de ser a linha \S que força a saída Q a mudar para 1 e de ser a linha \R que força a saída Q a mudar para 0, estas linhas são normalmente chamadas de SET e RESET respectivamente.
A situação lógica em que ambas as entradas \S e \R têm o valor 1, não permite que o circuito mude de estado, isto é, o circuito mantém o estado anterior, é o equivalente quando o \CP muda para o valor lógico 0.
A situação lógica em que ambas as entradas \S e \R têm o valor 0, não é permitida, visto esta condição levar o circuito para um estado indeterminado.
Isto pode ser observado pela análise do gráfico temporal a baixo.

Flip-Flop D
Equação característica: Qseguinte = D
| Tabela de verdade | ||
| \D | Q | |
| 0 | 0 | |
| 1 | 1 | |
Símbolo

Circuito

Como se pode verificar neste circuito os estados lógicos 00 e 11 nunca se verificam nas entradas \S e \R devido ao facto de o estado lógico que é fornecido à entrada \S ser invertido na entrada \R. Note que o flip-flop agora só tem uma entrada, D, quando se refer as entrada \S e \R fala-se das entradas das portas NOR 1 e 2.
Se colocarmos um 0 na entrada \S, a entrada \R fica com um 1, na transição do impulso de relógio de 1 para 0, a saída Q vai para 1. Se, pelo contrário, colocarmos um 1 na entrada \S a entrada \R fica com um 0, na transição do impulso de relógio de 1 para 0, a saída Q vai para 0.
Pelo exposto, podemos dizer que o flip-flop do tipo D, guarda na saída o valor lógico, bit, que lhe for colocado na entrada. É por este motivo que se pode dizer que um flip-flop do tipo D é uma célula de memória.
Flip-Flop JK
O flip-flop JK é igual ao o flip-flop RS, a diferença reside no facto deste permitir estados lógicos 1 1, J=1 e K=1. Nesta situação o flip-flop inverte o estado em que se encontra quando surge o impulso de relógio.
Equação característica: Qseguinte = J.\Q + \K.J
| Tabela de verdade | ||
| J | K | Q |
| 0 | 0 | hold |
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | invert |

Flip-Flop T
O flip-flop T muda o estado da saída sempre que a entrada de clock sofrer uma modificação. Se a entrada T for 0 e o estado actual ( Q ) for 1, o flip-flop altera o valor da saída, se pelo contrário o estado actual for 0 mantém-se o valor anterior na saída.
Equação característica: Qseguinte = T.\Q + \T.Q = T ⊕ Q
| Tabela de verdade | ||
| T | Q | Q seguinte |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |

Escolha dos Flip-Flops
Como foi possivél observar cada flip-flop embora semelhante têm caracteristicas diferentes, asim cada um deles está mais indicada para uma determinada função.
• R-S Clocked Latch:
É usado como elemento de memória em sistemas de clock estreito
Uso não recomendado em outros sistemas!
É, contudo, o bloco construtivo fundamental dos outros flipflops
• J-K Flipflop:
É um bloco construtivo versátil, pode ser usado para implementar flip-flops D e T
Requer, normalmente menos lógica complementar ƒ(In,Q,Q+), contém duas entradas, logo tem um aumento da complexidade das
ligações
• D Flipflop:
Minimiza as ligações, normalmente usado em VLSI
É uma técnica de design mais simples
É a melhor escolha para registos de armazenamento
• T Flipflops:
Normalmente construidos a partir de FFs J-K
Normalmente a melhor solução para implementar contadores
As entradas de Set e Reset são normalmente desejáveis.
Contadores
Nesta figura, temos três flip-flops J-K com as entradas J e K ligadas a uma linha eléctrica com o valor de + 5 Volts, isto é, forçadas ao estado lógico 1.
O primeiro flip-flop recebe o sinal de relógio do exterior, os dois flip-flops seguintes têm como relógio a saída do flip-flop anterior.
Este tipo de circuitos muda do estado actual para o estado seguinte, quando o relógio transita de 1 para 0. Partindo da situação em que todos os flip-flops se encontram com a saída Q no estado lógico 0.
Durante a de transições do 1º primeiro Impulso de relógio de 1 para 0, o fllp-flop que recebe este impulso de relógio muda para 1, Q1 fica com o valor lógico 1. Os outros dois flip-flops continuam em 0.
Na transição do segundo impulso de relógio de 1 para 0, o flip-flop que recebe este impulso de relógio muda para 0. Como Q1 transita de 1 para 0 e esta saída é o impulso de relógio do flip-flop seguinte, então o segundo fllp-flop transita de 0 para 1, fica Q2 com o valor lógico 1, Q1 e Q3 nesta altura tem o valor lógico 1.
Na transição do terceiro impulso de relógio de 1 para 0, o fllp-flop que recebe este impulso de relógio muda para 1, Como não há transições de 1 para 0 no relógio dos flip-flops seguintes, estes mantêm o valor anterior. Na saída do circuito, fica Q1 com o valor lógico 1, Q2 com o valor lógico 1 e Q3 com o valor lógico 0.
Na transição do quarto impulso de relógio de 1 para 0, o flip-flop que recebe este impulso de relógio muda novamente para 0, esta transição de 1 para 0 força a saída Q2 a voltar a 0, levando Q3 a 1. Na saída do circuito fica então Q1 com o valor lógico 0, Q2 com o valor lógico 0 e Q3 com o valor lógico 1.
No próximo impulso de relógio, Q1 volta a 1, ficando Q2 e Q3 no estado em que se encontravam anteriormente. Na saída do circuito fica Q1 com o valor lógico 1, Q2 com o valor lógico 0 e Q3 com o valor lógico 1.
Com o oitavo impulso de relógio, todos os flip-flops ficam com valores lógicos 0, assim o processo volta ao início.
Nestes circuitos cada flip-flop corresponde a um bit, e como neste caso temos três flip-flops, o módulo de contagem é 23, ou seja, módulo oito. Um contador de módulo 16 é feito com quatro flip-flops, de módulo 32 com cinco, etc.
Registos
Um outro tipo de circuitos que faz parte da estrutura interna dos microprocessadores são os registos de deslocamento, shift registers, e são formados por flip-flops do tipo D. A saída de cada flip-flop vai ligar à entrada do elemento seguinte e repare que, neste caso, o relógio é o mesmo para todos os flip-flops.
Isto acontece Porque estes circuitos são síncronos e a mudança de estado de todas as células de memoria deverá ser feita na mesma altura.
Colocamos na entrada do registo, entrada D1, um bit com o estado lógico 1. Nestas condições, as entradas de cada flip-flop ou célula de memória são: D1=1 D2=0 e D3=0. Quando fornecemos um impulso de relógio à linha CP, todas as células de memória mudam de estado, transitando para o valor presente na entrada.
Após o impulso de relógio, as saídas ficam Q1=1, Q2=0 e Q3=0.
Continuamos, mudando o bit da entrada D1 para 0. As entradas de cada célula de memória ficam agora com os valores D1=0, D2=1, D3=0.
Com o segundo impulso de relógio as saídas transitam para: Q1=0, Q2=1 e Q3=0. Mantendo na entrada do registo o valor 0, as entradas de cada célula de memória são: D1=0, D2=O e D3=1. No terceiro impulso de relógio as saídas de cada célula transitam para: Q1=O, Q2=O e Q3=1.
Neste diagrama temporal podemos ver que o bit 1 que foi colocado na entrada do registo, após 3 impulsos de relógio aparece na saída. É por este motivo que estes registos são conhecidos por registos de deslocamento.
Neste diagrama o bit de entrada não aparece sincronizado com o impulso de relógio nem com as saídas, isto deve-se à necessidade de as entradas estarem estáveis antes do aparecimento do impulso de relógio.
A mudança de estado dos flip-flops, tanto se pode dar no flanco ascendente como no flanco descendente, dependendo da arquitectura do mesmo.

