Geração Condicional
Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 14 de 38.
Um generate-if seleciona uma estrutura de hardware usando um parameter constante. Apenas um ramo é elaborado para uma determinada instância. Um if procedural ou uma expressão condicional com um sinal seleciona o comportamento em tempo de execução; ele não substitui a configuração de generate.
Trecho relevante; as declarações e conexões ao redor são fornecidas no desafio.
generate
if(INVERT) begin: inverted
assign y = ~a;
end else begin: direct
assign y = a;
end
endgenerateO parameter escolhe qual driver é construído para esta instância.
Use generate-if para configurações constantes e a seleção RTL comum para controles em tempo de execução.
Desafio
MédioUse generate condicional: MODE=0 passa a inalterado; MODE=1 inverte todos os oito bits de a. A entrada b não é utilizada. MODE é 0 ou 1. O testbench instancia ambas as configurações e imprime y0 depois y1.
Complete o design.v e preserve seus nomes de módulos e portas. O testbench.v bloqueado fornece as mudanças de entrada e imprime as saídas depois que elas se estabilizam. Ele escolhe um cenário usando um argumento do simulador como +CASE=1; nenhuma entrada padrão é necessária. Não adicione impressão, atrasos ou terminação de simulação ao design. A saída esperada é uma linha de valores decimais por observação, separados por um espaço e terminando com uma nova linha.
Experimente você mesmo
module dut #(parameter MODE=0) (input [7:0] a,b, output [7:0] y);
assign y=0;
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Design e Verificação RTL
1RTL Combinacional Confiável
Valores padrão evitam latchesCodificadores de prioridadeValidação One-HotDecodificação segura de caseRecapitulação - Roteador de requisições4RTL Sequencial Controlado
Prioridade de Reset e EnableContadores SaturantesPipeline de Dados e ValidDetecção de Bordas AmostradasRecapitulação - Contador de Eventos7Projeto - Monitor de Amostras
Acumular AmostrasAceitar Amostras Habilitadas2Larguras e Aritmética com Sinal
Preservando Bits de CarryComparações com SinalDeslocamentos Aritméticos à DireitaOverflow e SaturaçãoRecapitulação — Diferença com Sinal3RTL Reutilizável
Funções CombinacionaisParâmetros Seguros quanto à LarguraLaços de GeraçãoGeração CondicionalRecapitulação - Máscara de Bits ReutilizávelPratique por conta própria: Compilador de Verilog online