Lógica Programável e
Introdução ao Verilog

Instituto Federal de Educação, Ciência e Tecnologia

IFSP

Prof. Fabriciu Alarcão Veiga Benini

Professor de Ensino Básico Técnico e Tecnológico do IFSP

Engenheiro Eletricista · Mestre em Sistemas Dinâmicos · Doutor em Telecomunicações

INSTITUTO FEDERAL DE SÃO PAULO

Campus São Paulo/São Carlos

Material de referência:

Real Digital / Digilent, Introduction to Logic Circuits & Logic Design with Verilog, CC BY-SA 4.0. Acessar material

Haupt & Dachi, Eletrônica Digital. Pearson.

Tocci, Sistemas Digitais, 11ª ed.

1 / 40
Introdução

O Problema do Hardware Fixo

✗ Hardware Fixo

  • Circuitos integrados (CI) dedicados possuem função fixa no momento da fabricação
  • Exemplo: 74LS00 (NAND quad), somador completo 74LS283 — não podem ser alterados
  • Para mudar a função, é necessário fabricar um novo chip

✓ Hardware Programável

  • Pergunta: seria possível programar o hardware depois de fabricado?
  • Redução de tempo de projeto e custo de inventário
  • Protótipos rápidos, iterações em campo
2 / 40
Conceito

A Ideia da Lógica Reprogramável

3 / 40
Classificação

Classificação dos Dispositivos Lógicos Programáveis

4 / 40
PROM

PROM: Matriz Fixa AND, Programável OR

5 / 40
PAL

PAL: Programável AND, Fixa OR

6 / 40
PLA

PLA: Programável AND + Programável OR

7 / 40
Comparação

Comparação PAL × PLA × PROM

8 / 40
CPLD

De PLD Simples a CPLD

9 / 40
CPLD Detalhado

CPLD: Arquitetura Detalhada

10 / 40
FPGA

FPGA: Visão Geral

11 / 40
FPGA — CLBs

FPGA: Blocos Lógicos (CLBs/Logic Cells)

12 / 40
FPGA — LUT

FPGA: LUT (Look-Up Table)

13 / 40
FPGA — IOBs

FPGA: Blocos de E/S (IOBs)

14 / 40
FPGA — Interconexão

FPGA: Interconexão Programável

15 / 40
Comparação

CPLD vs. FPGA: Comparação

16 / 40
Fluxo de Projeto

Fluxo de Projeto com HDL

17 / 40
Síntese

Síntese Lógica: Do Verilog às Portas

18 / 40
Verilog

O que é Verilog?

19 / 40
Verilog — Módulo

Estrutura de um Módulo Verilog

module nome_modulo (
    input wire A, B,
    output wire Y
);
    assign Y = A & B;
endmodule
  • module / endmodule: define o módulo
  • input / output: portas de entrada e saída
  • wire: sinal combinacional (sem armazenamento)
  • assign: atribuição contínua
20 / 40
Verilog — assign

Atribuição Contínua: assign

21 / 40
Verilog — Hierarquia

Instanciação Estrutural de Módulos

module top (
    input A, B, C,
    output Y
);
    wire W1;
    and_gate u1 (.A(A), .B(B), .Y(W1));
    assign Y = W1 | C;
endmodule
  • Módulos podem ser instanciados dentro de outros módulos (hierarquia)
  • Cada instância tem um nome único (u1, u2, etc.)
  • Conexões por mapeamento de portas: .porta(signal)
22 / 40
Hierarquia

Design Hierárquico

23 / 40
Combinacional

Blocos Combinacionais Essenciais

Multiplexador (Mux)

Seleciona 1 de N entradas de dados

Decodificador

Converte código binário em saída única (one-hot)

Codificador (Prioridade)

Gera código binário a partir de entrada ativa

Deslocador (Shifter)

Move bits de posição (shift/rotate)

Todos são blocos de construção em projetos maiores

24 / 40
Exemplo Prático

Exemplo: Mux e Demux

Sistema Mux-Demux
25 / 40
Display 7 Seg

Decodificador de Display de Sete Segmentos

Decodificador 7 Segmentos
26 / 40
Máquina de Estados

Máquinas de Estados: Conceito

Modelo FSM Contador de Anel
27 / 40
Exemplo FSM

Diagrama de Estado: Exemplo do Cronômetro

28 / 40
FSM — Verilog

Verilog Comportamental para Máquinas de Estados

always @(posedge clk) begin
    case (state)
        PARADO:  if (start) state <= CONTANDO;
        CONTANDO: if (stop) state <= PARADO;
        ...
    endcase
end
  • Bloco always @(posedge clk): sincronizado com o clock
  • case: descreve as transições de estado de forma legível
  • Dois always blocks: um para o registrador de estado, outro para a lógica combinacional
  • Lembre: cobrir TODOS os casos (evitar latch indesejado)
29 / 40
Projeto FSM

De Diagrama de Estado ao Hardware

  • 1. Especificar estados e transições (diagrama de estado)
  • 2. Atribuir códigos binários aos estados (codificação)
  • 3. Criar tabelas-verdade para lógica do próximo estado e saídas
  • 4. Sintetizar com K-maps ou ferramenta de síntese
  • 5. Implementar em Verilog (comportamental ou estrutural)

Método Preferido

O Verilog comportamental (case) é o método preferido — o sintetizador faz o trabalho pesado.

30 / 40
Contador BCD

Contador Decimal (BCD)

Sistemas BCD vs Binário Contador Decimal 4 dígitos
31 / 40
Simulação

Simulação: O Banco de Testes (Testbench)

32 / 40
Exemplo Prático

Exemplo: Contador no Vivado

module counter (
    input clk,
    output [2:0] B
);
    reg [27:0] count;
    always @(posedge clk)
        count <= count + 1;
    assign B = count[27:25];
endmodule
  • Clock de 100 MHz dividido por 226 ≈ 1,5 Hz (visível ao olho humano)
  • Bits superiores do contador geram clocks de frequências reduzidas
  • Bit 25: 1,5 Hz · Bit 26: 0,75 Hz · Bit 27: 0,375 Hz
33 / 40
Projeto Integrado

Projeto Completo: Exemplo do Cronômetro

Cronômetro Diagrama Controlador Display 7 Seg Estrutural
34 / 40
Boas Práticas

Particionamento de Design

Boa Partição

  • Módulos com funções independentes e interfaces mínimas
  • Cada módulo pode ser simulado e verificado sozinho
  • Interfaces claras entre módulos
  • Reutilização em múltiplos projetos

Má Partição

  • Módulos com dependências cruzadas
  • Interfaces expostas demais
  • Difícil de testar e manter
35 / 40
Aviação

FPGA na Aviação: Contexto

36 / 40
TMR

FPGAs em Aviónica: Redundância e Confiabilidade

37 / 40
Certificação

Certificação: DO-254 e o Processo de Design

38 / 40
Resumo

Resumo dos Conceitos-Chave

  • PLD: PROM (AND fixa), PAL (OR fixa), PLA (tudo programável)
  • CPLD: blocos PAL + interconexão programável, não-volátil
  • FPGA: grade de LUTs + FFs + IOBs + interconexão, volátil
  • Verilog: linguagem para descrever hardware (estrutural e comportamental)
  • Máquina de estados: registrador + lógica próximo estado + decodificador saída
  • Fluxo de projeto: especificação → Verilog → síntese → implementação → bitstream

Aviação: FPGAs em sistemas críticos, redundância TMR, certificação DO-254

39 / 40

Encerramento

Instituto Federal de Educação, Ciência e Tecnologia

Campus São Carlos

40 / 40