Tengo un registro de alrededor de 120 bits, donde los datos se cambian primero en lsb, en algún momento quiero asignarlos a registros más pequeños, pero en lugar de truncar los bits más significativos, me gustaría truncar los bits menos significativos. En esencia, quiero mantener los n bits más significativos de un registro.
La forma actual en que lo estoy haciendo es para cada registro asignado desde el índice MSB del registro grande para un ancho de ancho de registro como:
rSmall1 <= rBig[BIG_REG_MSB_INDEX -: RSMALL1_WIDTH];
rSmall2 <= rBig[BIG_REG_MSB_INDEX -: RSMALL2_WIDTH];
[...]
rSmalln <= rBig[BIG_REG_MSB_INDEX -: RSMALLn_WIDTH];
Mientras funciona, se desordena bastante rápido, así que, ¿hay una forma más sencilla de realizar esta misma operación para cualquier ancho de rSmalln?