Altifigence Academy

7 / 37 · Concepto

Anchos de selección, concatenación y repetición de bits

Calcule ancho total y conservación de valor al construir caminos de datos.

Concatenar no es sumar

{a,b} coloca los bits de b después de los de a. Con anchos M y N, el resultado mide M+N. Para secuencias unsignedunsigned Interpretación de una secuencia de bits como entero no negativo. Con n bits, el rango es de 0 a 2^n−1; puede diferir de la interpretación signed de los mismos bits. Más información:

{a,b}=a⋅2N+b\{a,b\}=a\cdot2^N+b

Si a=2'b10 y b=3'b101, resulta 5'b10101, 21. Es distinto de la suma aritmética 7.

Los bits de a suben tantas posiciones como mide b. La concatenaciónConcatenación Operación que une secuencias de bits una junto a otra. El ancho resultante es la suma de sus anchos; no es una suma numérica. se interpreta como a×2³+b, no a+b.

Unir bits y sumar son operaciones distintas
  1. a = 10: Ancho de dos bits, entero 2
  2. b = 101: Ancho de tres bits, entero 5
  3. {a,b} = 10101: Ancho de cinco bits, 2×8+5=21

Anote los anchos junto a cada expresión

SystemVerilog
logic [7:0] word;
logic [3:0] upper, lower;
logic [7:0] swapped;
assign upper = word[7:4];
assign lower = word[3:0];
assign swapped = {lower, upper};

Con entrada 8'hA3, swapped vale 8'h3A. Equivocarse en un extremo de la selecciónSelección de bits Operación que extrae un intervalo contiguo de un vector. El intervalo determina el ancho y el orden de los bits del resultado. cambia ancho o valor. Una selección parcial puede tratarse como unsigned aunque el vector original sea signed; revise su significado antes de operar con signo.

Extensión de signo mediante repetición

SystemVerilog
logic signed [3:0] small;
logic signed [7:0] extended;
assign extended = {{4{small[3]}}, small};

Se concatenan cuatro copias del signo y los cuatro bits originales: ocho bits en total. Extender signo no consiste en sumar 1 porque el MSBMSB Bit de mayor peso. Su índice depende del sentido de declaración del vector; no debe suponerse que siempre tiene el número más alto. Más información valga 1; se amplía la representación para conservar su valor interpretado.

El intervalo q[N-2:0] de un desplazador genérico no es válido para N=1. Restrinja el mínimo admitido o trate N=1 en una rama generate. Parametrizar exige más que sustituir números por variables.

Inténtalo tú

a tiene tres bits 101 y b dos bits 11. ¿Qué ancho y valor tiene {a,b}? ¿Qué queda al almacenarlo en cuatro bits?

Leer la explicación

Son cinco bits, 10111, con valor 5⋅4+3=235\cdot4+3=23. En cuatro bits se descarta el superior: queda 0111, es decir, 7.

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