Níveis de Abstração de Projeto
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 3 de 90.
Em design digital, podemos descrever o mesmo circuito em diferentes níveis de detalhes. 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:
Level 1: Behavioral
Este nível descreve o que o circuito faz, não como ele faz. Ele se concentra na função ou comportamento, como "contar" ou "adicionar dois números".
Os details internos de how a contagem ou adição acontece não são mostrados. Este nível é o mais próximo do pensamento humano e é mais fácil de escrever.
Level 2: RTL
Este nível shows how data se move entre registradores e quais operações acontecem com esses data. Você pode ver o caminho de data: data vai de um registrador para um somador, depois de volta 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.
Level 3: Gate Level
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. Ele geralmente é 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 maioria dos trabalhos 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 SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
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ão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo