Níveis de abstração de projeto
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 5 de 90.
Em projetos digitais, podemos descrever o mesmo circuito em diferentes níveis de detalhamento. Verilog é uma linguagem que pode descrever circuitos em qualquer um desses níveis de abstração. É isso que a torna poderosa!
Estes são os níveis:
Nível 1: Comportamental
Este nível descreve o que o circuito faz, não como ele faz isso. Ele se concentra na função ou no comportamento, como "contar para cima" ou "adicionar dois números."
Os detalhes internos de como a contagem ou a adição acontece não são mostrados. Esse nível é o mais próximo do pensamento humano e é mais fácil de escrever.
Nível 2: RTL
Este nível mostra como os dados se movem entre registradores e quais operações acontecem nesses dados. Você pode ver o caminho dos dados: os dados vão de um registrador para um somador e, em seguida, voltam para o registrador.
Este é o nível em que a maioria dos projetistas digitais trabalha, pois oferece um bom equilíbrio entre ser compreensível e ser detalhado o suficiente para criar hardware.
Nível 3: Nível de portas
Este nível descreve o circuito usando portas lógicas básicas, como AND, OR e XOR. Cada conexão é mostrada explicitamente.
Este nível é muito detalhado e difícil de escrever à mão. Geralmente, ele é gerado por ferramentas a partir de descrições de nível mais alto, e não escrito manualmente.
Por que isso importa
- **Nível mais alto** = Mais fácil de escrever, menos controle
- **Nível mais baixo** = Mais difícil de escrever, mais controle
- **RTL** é o ponto ideal para a maior parte do trabalho de design
Desafio
O que fazer:
- Execute este código e veja como a mesma operação é descrita em três níveis diferentes:
Experimente você mesmo
module abstraction_demo;
initial begin
$display("=== Design Abstraction Levels ===");
$display("");
$display("Level 1 (Behavioral):");
$display(" 'Add a and b' - no details how");
$display("");
$display("Level 2 (RTL):");
$display(" 'On clock edge, result <= a + b' - shows data flow");
$display("");
$display("Level 3 (Gate Level):");
$display(" 'XOR gates for sum, AND gates for carry' - actual gates");
$display("");
$finish;
end
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs. SoftwareSeu primeiro móduloComentáriosNíveis de abstração de projeto4Operadores Parte 1
Operadores aritméticosOperador móduloOperadores de comparaçãoRecapitulação - Matemática simplesOperadores bit a bit7Atribuições e Portas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisões
Declaração IfIf - ElseRevisão - Comparador SimplesDeclaração CaseCasex e CasezRevisão - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteiro e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores - Parte 2
Operadores lógicosOperadores de reduçãoOperadores de deslocamentoOperador de concatenaçãoOperador condicionalRevisão - Desafio de operadores3Sistema Numérico
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRevisão - Formatos Numéricos6Módulos
Estrutura de MódulosPortas de Entrada e SaídaPortas InoutInstanciação de MódulosMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação — Construindo um MóduloPratique por conta própria: Compilador de Verilog online