Altifigence Academy

2 / 24 · Concepto

Anchuras, extensión de signo y desbordamiento

Usa ejemplos numéricos para distinguir la interpretación, la extensión y la reducción de anchura.

Separa un patrón de bits de su significado

El patrón de ocho bits 1111_1101 representa 253 sin signo o -3 con signo en complemento a dos. Los bits almacenados son idénticos, pero las comparaciones y las extensiones difieren. Un valor de ocho bits con signo va de -128 a 127; un valor sin signo va de 0 a 255. La anchura determina el número de patrones representables, mientras que la interpretación con o sin signo determina su significado numérico.

Extiende con ceros el valor sin signo 253 al pasarlo a dieciséis bits. Extiende el signo de -3 repitiendo su bit más significativo original, lo que produce 1111_1111_1111_1101. La extensión con ceros convertiría -3 en 253. En SystemVerilog, establece explícitamente los tipos y las anchuras de los operandos antes de calcular; no supongas que una concatenación o selección parcial conserva la interpretación con signo que pretendías.

SystemVerilog
logic [7:0] ua, ub;
logic [8:0] usum;
logic signed [7:0] sa, sb;
logic signed [8:0] sax, sbx, ssum;
assign usum = {1'b0, ua} + {1'b0, ub};
assign sax = {sa[7], sa};
assign sbx = {sb[7], sb};
assign ssum = sax + sbx;

Aquí ambas entradas pasan a tener nueve bits antes de la suma. La operación sin signo 255+1 da 256, y después cero en los ocho bits menos significativos. La operación con signo 127+1 también da el valor matemático 128, pero reducirlo a ocho bits con signo produce -128. El acarreo indica un límite sin signo; el desbordamiento con signo indica un límite con signo. Sumar operandos del mismo signo y obtener un resultado cuyo signo cambia indica desbordamiento con signo. Sumar -1 y 1 puede producir acarreo sin desbordamiento con signo.

Planifica también las anchuras intermedias. El mayor producto de ocho bits sin signo es 65025 y necesita dieciséis bits. Cuatro valores de ocho bits sin signo pueden sumar 1020, lo que requiere diez bits. Truncar cada suma parcial a ocho bits pierde información que un registro final más ancho no puede recuperar.

OperaciónResultado anchoInterpretación reducida
sin signo 255+12560 con acarreo
con signo 127+1128-128 con desbordamiento
con signo -3+2-1-1 sin desbordamiento

Usa las advertencias WIDTH de Verilator para investigar cambios de tamaño no intencionados. Las comprobaciones de Node de este curso ejecutan modelos numéricos, no estos fragmentos HDL. Prueba el cero, los extremos y los signos mezclados antes de considerar los ejemplos positivos habituales una prueba de corrección.

Inténtalo tú

Calcula el resultado de extender el signo de -3 y 2 de ocho a nueve bits y sumarlos. Calcula también la anchura mínima para la suma exacta de cuatro valores sin signo de 255.

Leer la explicación

Los operandos de nueve bits son 111111101 y 000000010. Su suma es 111111111, es decir, -1. Cuatro valores de 255 suman 1020; nueve bits sin signo llegan hasta 511, por lo que se necesitan diez bits.

Tu elección se aplica a este navegador. Puedes cambiarla en el pie de página.