Detecção de Bordas Amostradas
Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 19 de 38.
Um nível pode permanecer alto por muitos ciclos, enquanto um pulso de evento deve durar um ciclo. Armazene o nível amostrado anterior e compare-o com o atual. Este detector de borda pressupõe uma entrada já síncrona com este clock; ele não é um sincronizador de travessia de domínio de clock.
Trecho relevante; as declarações e conexões ao redor são fornecidas no desafio.
previous <= sig;
rising <= sig & ~previous;O nível armazenado anteriormente gera um único pulso na transição amostrada.
Compare os níveis amostrados atual e anterior; use este detector somente com uma entrada síncrona.
Desafio
MédioPara um sinal sig já síncrono a clk, produza um pulso registrado de um ciclo a cada transição amostrada de 0 para 1. O rst síncrono limpa o nível anterior armazenado e o pulso. Portanto, um sig em nível alto na primeira borda que não seja de reset produz um pulso. Colunas de saída: pulse. Todos os controles e dados permanecem estáveis antes de cada borda ascendente do clock; os resultados são observados depois dela.
Complete design.v e preserve os nomes e as portas dos módulos. O testbench.v bloqueado fornece as alterações 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; não é necessária entrada padrão. Não adicione impressão, atrasos ou encerramento da 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 quebra de linha.
Experimente você mesmo
module dut (input clk, input rst, input sig, output reg pulse);
// Substitua este placeholder pelo seu design.
initial pulse = 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 SinalPratique por conta própria: Compilador de Verilog online