Deslocamentos Aritméticos à Direita
Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 8 de 38.
Um deslocamento aritmético para a direita usa >>> e replica o bit de sinal quando seu operando esquerdo é signed. Um deslocamento lógico para a direita usa >> e preenche com zeros. Para um valor negativo ímpar, o deslocamento aritmético para a direita não é igual à divisão integer que trunca em direção a zero.
Trecho relevante; as declarações e conexões ao redor são fornecidas no desafio.
reg signed [7:0] value;
value = -3;
$display("%0d", value >>> 1);O resultado é menos dois porque a extensão de sinal preserva a interpretação negativa em complemento de dois.
Use um operando esquerdo signed com >>> quando a extensão de sinal for necessária.
Desafio
MédioDeslocar aritmeticamente para a direita o valor signed de 8 bits pela quantidade (de 0 a 7). Retornar o resultado signed de 8 bits y. Valores negativos são preenchidos com seu bit de sinal. Colunas de saída: y. 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] value, input [2:0] amount, output signed [7:0] y);
// Substitua este placeholder pelo seu design.
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 SinalPratique por conta própria: Compilador de Verilog online