2 / 63 · Concepto
Sistemas numéricos y representación de ancho fijo
Además de convertir bases, calcule rangos, anchos necesarios y errores de truncamiento.
Las lecciones se pueden leer gratis. Inscríbete para guardar el progreso.
Punto de partida del curso
Se recomienda álgebra de secundaria y programación básica. Repasaremos los números binarios y el álgebra de BooleÁlgebra de Boole Álgebra de 0, 1 y las operaciones AND, OR y NOT. El signo de suma suele representar OR, por lo que sus reglas difieren de la suma de enteros. Más información y avanzaremos con rapidez al nivel inicial universitario de diseño lógico digital. Concéntrese en definir condiciones de entrada, anchos e instantes de observación y verificarlos con ejemplos, más que en memorizar fórmulas.
Una secuencia de bits y su valor son cosas distintas
Un circuito almacena una secuencia finita de bits. El contrato del diseño decide si se interpreta como entero, valor con signo o punto fijoPunto fijo Representación que fija de antemano la posición del separador fraccionario y aplica una escala constante a una secuencia de bits entera. Deben definirse el ancho, el signo y el número de bits fraccionarios. Más información. Suponiendo conocidas las operaciones enteras y las potencias, pasemos al cálculo de rangos necesario en RTL.
Un valor 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. de bits se interpreta así:
10110110 vale . Agrupándolo de cuatro en cuatro se obtiene B6: 8'hB6 y 8'b10110110 son los mismos bits. Cada dígito hexadecimal representa siempre cuatro bits, lo que agiliza la lectura de direcciones, máscaras y formas de onda.
Los mismos bits, otra interpretación
Cambie b7 en el control siguiente. En unsigned añade un peso de 128; en complemento a dosComplemento a dos Representación de enteros con signo mediante secuencias de bits de ancho fijo. El rango de n bits va de −2^(n−1) a 2^(n−1)−1. Más información, el bit más significativo pesa −128. Forme primero 0x7F y 0x80 y compare el límite entre ambas interpretaciones.
10110110 → unsigned 182 · signed -74 · hex 0xB6
Modificar los bits e interpretarlos como signed son operaciones distintas. Aunque el circuito conserve sus 8 bits de ancho, la información de signo que recibe el operador puede cambiar el resultado de una comparación.
Primero el rango, después el ancho
El mínimo de bits para distinguir estados es:
Contar de 0 a 999 exige representar 1000 valores: hacen falta 10 bits. De 0 a 1024 son 1025 valores: hacen falta 11. Confundir el máximo con el número de estados deja un bit de menos justo en el límite. Si el RTL admite el parámetro , limite el ancho a un mínimo de 1 para evitar vectores de cero bits.
Qué ocurre al almacenar en una señal más estrecha
Descartar los bits superiores y conservar bits unsigned es una operación modular:
Por ejemplo, almacenar en 8 bits el resultado de 9 bits 300 deja 44. No es redondeo ni saturación. Para saturar, debe diseñarse por separado un circuito que detecte el exceso de rango y seleccione el máximo.
logic [7:0] a, b, low;
logic [8:0] full_sum;
assign full_sum = {1'b0, a} + {1'b0, b};
assign low = full_sum[7:0];Al ampliar primero ambos operandos se expresa claramente la intención de conservar el acarreo. La base de un literal no determina por sí sola su signo ni el ancho del resultado. Para interpretar una forma de onda hacen falta ancho, signo y base.
Inténtalo tú
¿Cuántos bits necesitan los valores de 0 a 4095 y de 0 a 4096? ¿Qué queda al almacenar 511 en un unsigned de 8 bits?
Leer la explicación
El primer intervalo contiene valores y requiere 12 bits; el segundo contiene 4097 y requiere 13. Como , se almacena 8'hFF. Esto no permite concluir que no hubo desbordamiento.