# Sistemas digitais e transístores

Dos níveis elétricos às portas CMOS e ao computador programável.

Página: https://resumos.rgo.pt/cadeiras/fsc/sistemas-digitais/

## Bits e níveis elétricos

Um bit tem dois valores lógicos, 0 e 1. Num circuito elétrico, cada valor corresponde a um intervalo de tensão: uma tensão dentro do intervalo baixo significa 0, e dentro do intervalo alto significa 1. A zona intermédia não é um terceiro valor lógico válido.

Uma perturbação pequena pode alterar a tensão sem alterar o bit reconhecido, porque existe margem entre os intervalos. Esta margem permite regenerar sinais digitais. Não implica que o circuito aceite qualquer ruído, nem que o sinal físico mude instantaneamente.

Um sistema analógico representa uma grandeza por uma variável contínua, como a tensão proporcional à temperatura; um conversor analógico-digital amostra e quantifica essa grandeza. Com 8 bits há 256 códigos, pelo que valores próximos podem receber o mesmo código, e o erro de quantificação resulta desta discretização.

## NMOS e PMOS

Um transístor FET tem gate, source e drain. A tensão entre gate e source controla a formação de um canal condutor entre source e drain. Escrevemos $V_{GS}=V_G-V_S$ e $V_{SG}=V_S-V_G$. Num NMOS, a condução começa quando $V_{GS}$ excede a tensão de limiar $V_t$. Num PMOS, a polaridade é inversa e a condição usa $V_{SG}>|V_t|$.

Por exemplo, com limiar NMOS de 0,5 V, $V_{GS}=0{,}3$ V não abre o canal, enquanto 1,2 V o abre. A corrente depende também da tensão entre drain e source, por isso o transístor real não é um interruptor de resistência constante; ao trabalhar com portas, abstraímos esses pormenores nos níveis lógicos e nos atrasos.

No modelo de interruptor ideal, um NMOS conduz quando a entrada de controlo é 1, e um PMOS quando essa entrada é 0. Chamamos _pull-up_ à rede que liga a saída à alimentação e _pull-down_ à rede que a liga à massa.

Num inversor CMOS, um PMOS fica entre alimentação e saída, e um NMOS entre saída e massa, ambos com a mesma entrada $A$:

| $A$ | PMOS | NMOS | Saída $Y$ |
| --- | --- | --- | --- |
| 0 | Conduz | Não conduz | 1 |
| 1 | Não conduz | Conduz | 0 |

Logo $Y=\overline A$. Em estado estável ideal não há caminho condutor direto entre alimentação e massa; durante uma transição há consumo e atraso, por isso o modelo de interruptor serve para obter a função lógica, não para calcular esse consumo.

## Construir NAND e NOR

Para uma NAND de duas entradas, colocamos dois NMOS **em série**. A saída só chega à massa quando $A=B=1$. Os PMOS ficam **em paralelo**: qualquer entrada 0 liga a saída à alimentação. O resultado é $Y=\overline{AB}$.

Para uma NOR, os NMOS ficam em paralelo: qualquer entrada 1 puxa a saída para 0. Os PMOS ficam em série, por isso só $A=B=0$ permite uma ligação à alimentação, e assim $Y=\overline{A+B}$.

Por exemplo, na NAND com $A=1,B=0$, o NMOS de $B$ interrompe o caminho série para a massa e o PMOS de $B$ conduz, por isso a saída é 1; o NMOS de A conduz, mas não basta fechar apenas uma parte da série. A tabela segue os dois caminhos:

| $A,B$ | NMOS em série | PMOS em paralelo | $Y$ |
| --- | --- | --- | --- |
| 00 | A e B interrompem | A e B conduzem | 1 |
| 01 | A interrompe | A conduz | 1 |
| 10 | B interrompe | B conduz | 1 |
| 11 | A e B conduzem | nenhum conduz | 0 |

Só com $A=B=1$ há caminho até à massa e nenhum até à alimentação. Verifica cada linha pelos transístores que conduzem antes de decorares a tabela.

## Composição e abstração

Podemos esconder os transístores atrás de uma porta lógica, as portas atrás de um somador e os somadores atrás de uma ALU, a unidade que faz operações aritméticas e lógicas. Cada nível expõe entradas, saídas e regras suficientes para o nível seguinte.

Um computador tem CPU, memória e dispositivos de entrada e saída; a memória guarda dados e instruções. O CPU lê uma instrução, identifica a operação e altera registos ou memória, e o programa muda a sequência destas operações sem exigir alteração das ligações físicas.

Considera um sistema que recebe $a$ e $b$, calcula $a+b$ e depois mostra o resultado. O somador é combinatório, o registo de resultado é sequencial e um controlador determina quando capturar e quando enviar para a saída; se trocarmos o programa para calcular $a-b$, o mesmo circuito aritmético pode ser reutilizado.

Num circuito combinatório, a saída depende das entradas atuais, enquanto num circuito com memória pode continuar igual depois de as entradas mudarem, porque o estado e o instante de atualização também contam.

## Exercícios

Reconstruir uma NAND

Desenha as redes NMOS e PMOS de uma NAND de duas entradas. Para $A=0,B=1$, indica que caminho conduz e a saída.

Pista

Começa pela condição que liga a saída à massa, ou seja, pelos NMOS em série.

Solução

Os NMOS ficam em série e os PMOS em paralelo. Com A=0, o NMOS de A está desligado, interrompendo o caminho para a massa. O PMOS de A conduz e liga a saída à alimentação. Portanto Y=1. O PMOS de B está desligado, mas o ramo paralelo de A é suficiente.

Confere a tua resposta:

*   NMOS em série e PMOS em paralelo.
*   Com A=0,B=1, saída 1 pelo PMOS de A.

Erros frequentes

Não copies a ligação em série da rede NMOS para a PMOS. As redes devem produzir condições complementares.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/fsc/sistemas-digitais/#construir-nand-e-nor)

Quantificar uma medição

Um conversor divide $[0,4[$ V em intervalos iguais, um por código de 6 bits. O intervalo k inclui o seu limite inferior e exclui o superior. A reconstrução usa o ponto médio do intervalo. Determina o passo, os códigos de 1,01 V, 1,04 V e 1,0625 V e os valores reconstruídos. Explica o que se perde.

Pista

Divide a amplitude pelo número de códigos e procura o intervalo de cada tensão.

Mais uma pista

O índice do intervalo é a parte inteira de tensão/passo. A reconstrução acrescenta meio passo ao limite inferior.

Solução

Há $2^6=64$ códigos, por isso o passo é $4/64=0{,}0625$ V. O intervalo 16 vai de $16\times0{,}0625=1$ V até 1,0625 V, excluindo esse extremo. As duas primeiras tensões recebem o código 16, `010000`, e são reconstruídas como $1+0{,}0625/2=1{,}03125$ V. Os erros reconstruído menos original são +0,02125 V e -0,00875 V. O código já não permite distinguir estas duas medições.

1,0625 V está exatamente no limite inferior do intervalo 17: recebe `010001` e é reconstruído como $1{,}0625+0{,}03125=1{,}09375$ V. A escolha de incluir o limite inferior decide este caso de fronteira.

Confere a tua resposta:

*   64 intervalos de 0,0625 V.
*   1,01 V e 1,04 V recebem o código 16; 1,0625 V recebe 17.
*   Valores reconstruídos 1,03125 V e 1,09375 V.

Erros frequentes

O número de códigos só permite calcular o passo quando também conheces o intervalo e a regra. Aqui 4 V é excluído, por isso o maior intervalo continua a ter código 63.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/fsc/sistemas-digitais/#bits-e-n%C3%ADveis-el%C3%A9tricos)

Qual bloco guarda o passado?

Um somador recebe entradas que mudam entre dois flancos, mas o valor apresentado só muda no flanco seguinte. Identifica o papel do somador e do registo de saída.

Pista

Distingue calcular um resultado de o capturar.

Solução

O somador é combinatório e recalcula a partir das entradas atuais, após o seu atraso. O registo é sequencial: conserva o resultado anterior entre flancos e captura a entrada no flanco ativo, desde que setup e hold se cumpram. A saída apresentada tem memória por causa do registo.

Confere a tua resposta:

*   Somador calcula a partir das entradas atuais.
*   Registo conserva entre flancos e captura no flanco ativo.

[Voltar à explicação](https://resumos.rgo.pt/cadeiras/fsc/sistemas-digitais/#composi%C3%A7%C3%A3o-e-abstra%C3%A7%C3%A3o)
