Níveis de abstração de projeto
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 5 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 Abstraction. É isso que a torna poderosa!
Estes são os níveis:
Nível 1: Behavioral
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 projeto4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicPratique por conta própria: Compilador de Verilog online