Overflow e Saturação
Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 9 de 38.
Overflow com sinal significa que o resultado matemático não pode ser representado na largura signed escolhida. Ele difere do carry sem sinal. Na adição signed, entradas com sinais iguais sofrem overflow quando o sinal do resultado muda. A saturação limita o resultado a um extremo representável em vez de fazer a volta.
Trecho relevante; as declarações e conexões ao redor são fornecidas no desafio.
assign overflow = (a[7] == b[7]) && (sum[7] != a[7]);Entradas com sinais diferentes não podem causar overflow em uma adição signed; entradas com o mesmo sinal exigem uma verificação do sinal do resultado.
Verifique o overflow de signed independentemente do carry; amplie antes de implementar a saturação.
Desafio
MédioSome signed de 8 bits a e b. Retorne o resultado signed com wrap y e overflow=1 somente quando a soma matemática exata estiver fora do intervalo de -128 a 127. Colunas de saída: y, overflow. Todos os valores de estímulo são valores binários conhecidos.
Complete design.v e preserve os nomes e as portas do módulo. O testbench.v bloqueado fornece alterações nas entradas 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 signed [7:0] a, input signed [7:0] b, output signed [7:0] y, output overflow);
// Substitua este placeholder pelo seu design.
assign y = 0;
assign overflow = 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