Desplazamientos aritméticos a la derecha
Parte de la sección Diseño y verificación RTL del Journey de Verilog de Coddy. Lección 8 de 38.
Un desplazamiento aritmético a la derecha utiliza >>> y replica el bit de signo cuando su operando izquierdo es signed. Un desplazamiento lógico a la derecha utiliza >> y rellena con ceros. Para un valor negativo impar, desplazar aritméticamente a la derecha no es lo mismo que la división de integer que trunca hacia cero.
Extracto relevante; las declaraciones y conexiones circundantes se suministran en el desafío.
reg signed [7:0] value;
value = -3;
$display("%0d", value >>> 1);El resultado es menos dos porque la extensión de signo retiene la interpretación negativa en complemento a dos.
Usa un operando izquierdo signed con >>> cuando se requiera la extensión de signo.
Desafío
IntermedioDesplaza aritméticamente a la derecha un valor signed de 8 bits según la cantidad (de 0 a 7). Devuelve el resultado signed de 8 bits y. Los valores negativos se rellenan con su bit de signo. Columnas de salida: y. Todos los valores de estímulo son valores binarios conocidos.
Completa design.v y conserva los nombres de sus módulos y puertos. El testbench.v bloqueado proporciona cambios en las entradas e imprime las salidas una vez que se estabilizan. Elige un escenario mediante un argumento del simulador como +CASE=1; no se requiere entrada estándar. No añadas impresiones, retardos ni terminación de la simulación al diseño. La salida esperada es una fila de valores decimales por observación, separados por un espacio y terminada con un salto de línea.
Pruébalo tú mismo
module dut (input signed [7:0] value, input [2:0] amount, output signed [7:0] y);
// Reemplaza este marcador de posición con tu diseño.
assign y = 0;
endmoduleEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Diseño y verificación RTL
1RTL combinacional confiable
Los valores predeterminados evitan los latchesCodificadores de prioridadValidación one-hotDecodificación segura de caseRepaso: enrutador de solicitudes4RTL secuencial controlado
Prioridad de reinicio y habilitaciónContadores con saturaciónPipeline de datos y validaciónDetección de flancos muestreadosRepaso: contador de eventos7Proyecto - Monitor de muestras
Acumular muestrasAceptar muestras habilitadas2Anchos y aritmética con signo
Conservar los bits de acarreoComparaciones con signoDesplazamientos aritméticos a la derechaDesbordamiento y saturaciónRepaso: diferencia con signoPractica por tu cuenta: Compilador de Verilog online