Menu
Coddy logo textTech

Contadores Saturantes

Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 17 de 38.

Fundamentals usou um contador com retorno ao início. Um contador saturante, em vez disso, para em um limite, o que é útil para contagens limitadas. Adicione uma proteção explícita à atualização aritmética e mantenha os comportamentos de habilitação e redefinição independentes do limite.

Trecho relevante; as declarações e conexões ao redor são fornecidas no desafio.

always @(posedge clk) begin
    if(rst) count <= 0;
    else if(en && count != 15) count <= count + 1;
end

O valor máximo é mantido em vez de voltar a zero.

Atualize explicitamente os limites de guarda quando um contador precisar saturar em vez de dar a volta.

challenge icon

Desafio

Médio

Crie um contador saturante de 4 bits q. O rst síncrono o zera. Bordas habilitadas incrementam até 15, então mantêm em 15; bordas desabilitadas também mantêm. O reset tem prioridade. Colunas de saída: q. Todos os controles e dados estão estáveis antes de cada borda de subida do clock; os resultados são observados depois.

Complete o design.v e preserve seus nomes de módulos e portas. O testbench.v bloqueado fornece mudanças de entrada e imprime as saídas após elas se estabilizarem. 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 (input clk, input rst, input en, output reg [3:0] q);
    // Substitua este placeholder pelo seu design.
    initial q = 0;
endmodule
quiz iconTeste seus conhecimentos

Esta 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

Pratique por conta própria: Compilador de Verilog online