Ficha 02 · Combinacional e sequencial
- Projetar combinacional
- Compreender flip-flops
- Contadores
- Máquinas de estados
Parte I · Combinacional
Exercício 1 · Half adder (15 pts)
a) Escreve a tabela de verdade do half adder (entradas A, B; saídas S e Cout). (8 pts)
b) Indica as equações de S e Cout. (7 pts)
a)
| A | B | S | Cout |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
b) S = A ⊕ B ; Cout = A · B.
Exercício 2 · Full adder (10 pts)
a) O que o full adder tem a mais que o half adder? (4 pts)
b) Para que serve encadear vários full adders? (6 pts)
a) Tem uma terceira entrada, o carry de entrada (Cin) — soma A + B + Cin, dando S e Cout.
b) Encadeando n full adders (o Cout de um liga ao Cin do seguinte) constrói-se um somador de n bits — o bloco central da ALU de um processador.
Exercício 3 · MUX (15 pts)
a) O que faz um multiplexer (MUX)? (5 pts)
b) Quantas linhas de seleção tem um MUX de 8 entradas? Porquê? (5 pts)
c) Dá um exemplo de uso de um MUX. (5 pts)
a) Seleciona uma de várias entradas de dados e encaminha-a para a saída, conforme o valor das linhas de seleção.
b) 3 linhas de seleção — 2³ = 8 combinações para escolher entre 8 entradas (n linhas → 2ⁿ entradas).
c) Selecionar a fonte de dados num barramento; routear sinais; implementar funções lógicas; num CPU, escolher qual registo/operando entra na ALU.
Parte II · Sequencial
Exercício 4 · Combinacional vs sequencial (10 pts)
Explica a diferença essencial entre um circuito combinacional e um sequencial, com um exemplo de cada.
- Combinacional: a saída depende apenas das entradas atuais (sem memória). Ex.: somador, MUX, descodificador.
- Sequencial: a saída depende das entradas e do estado anterior (tem memória), tipicamente sincronizado por clock. Ex.: flip-flop, registo, contador, máquina de estados.
Exercício 5 · Flip-flop D (15 pts)
a) O que faz um flip-flop D na borda do clock? (5 pts)
b) Diferença entre latch (sensível ao nível) e flip-flop (sensível à borda)? (5 pts)
c) Para que se usam vários flip-flops D juntos? (5 pts)
a) Na borda (transição) do clock, copia o valor da entrada D para a saída Q e mantém-no até à próxima borda — memória de 1 bit.
b) O latch reage enquanto o sinal de controlo está num nível (transparente nesse período). O flip-flop só atua no instante da transição (borda) do clock — comportamento previsível e síncrono, evita propagação descontrolada.
c) Um conjunto de flip-flops D forma um registo que guarda uma palavra de n bits (ex.: registos do CPU, buffers).
Exercício 6 · Contador (15 pts)
Um contador binário de 3 bits conta a cada pulso de clock.
a) Quantos estados distintos tem e qual a sequência? (8 pts)
b) Dá duas aplicações de contadores. (7 pts)
a) 3 bits → 2³ = 8 estados: 000, 001, 010, 011, 100, 101, 110, 111 e volta a 000 (módulo 8).
b) Aplicações: divisor de frequência (o bit mais significativo muda a 1/8 da frequência do clock), temporizador, contagem de eventos/pulsos, geração de endereços de memória, relógio digital (contadores em cascata).
Parte III · FSM
Exercício 7 · Máquina de estados (20 pts)
Projeta (descrição + diagrama de estados) uma FSM simples: um semáforo com 3 estados (Verde → Amarelo → Vermelho → Verde), que avança a cada pulso de um temporizador.
a) Lista os estados e as transições. (8 pts)
b) Esboça o diagrama de estados. (6 pts)
c) Como se implementa em hardware (que blocos)? (6 pts)
a) Estados e transições (entrada = pulso do temporizador T):
| Estado atual | Próximo estado |
|---|---|
| Verde | Amarelo |
| Amarelo | Vermelho |
| Vermelho | Verde |
Saída = a luz acesa (Moore: a saída depende só do estado).
b) Diagrama de estados:
┌──────────────────────────┐
▼ │
[Verde] ──T──► [Amarelo] ──T──► [Vermelho] ──T──┘
(3 estados em ciclo; cada transição ocorre num pulso T.)
c) Implementação: - 3 estados → 2 flip-flops (2 bits codificam até 4 estados; usar 3, tratar o 4.º como não usado → forçar para um estado seguro). - Lógica combinacional calcula o próximo estado a partir do estado atual. - O clock/temporizador sincroniza as transições. - Descodificador converte o estado nas saídas (acender Verde/Amarelo/Vermelho).
(Pode ser feito em Logisim ou descrito em VHDL/Verilog para FPGA.)