Altifigence Academy

7 / 37 · Conceito

Larguras de fatias, concatenação e repetição de bits

Calcule largura total e preservação do valor ao construir caminhos de dados.

Concatenar não é somar

{a,b} coloca os bits de b depois dos de a. Com larguras M e N, o resultado mede M+N. Para sequências unsignedunsigned Interpretação de uma sequência de bits como inteiro não negativo. Com n bits, o intervalo é de 0 a 2^n−1; pode diferir da interpretação signed dos mesmos bits. Saiba mais:

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

Se a=2'b10 e b=3'b101, resulta 5'b10101, 21. É diferente da soma aritmética 7.

Os bits de a sobem tantas posições quanto a largura de b. A concatenaçãoConcatenação Operação que une sequências de bits lado a lado. A largura resultante é a soma de suas larguras; não é uma soma numérica. é interpretada como a×2³+b, não a+b.

Unir bits e somar são operações diferentes
  1. a = 10: Largura de dois bits, inteiro 2
  2. b = 101: Largura de três bits, inteiro 5
  3. {a,b} = 10101: Largura de cinco bits, 2×8+5=21

Anote as larguras junto a cada expressão

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};

Com entrada 8'hA3, swapped vale 8'h3A. Errar uma extremidade da fatiaFatia de bits Operação que seleciona um intervalo contíguo de um vetor. O intervalo determina a largura e a ordem dos bits do resultado. muda largura ou valor. Uma seleção parcial pode ser tratada como unsigned mesmo que o vetor original seja signed; confira seu significado antes de operar com sinal.

Extensão de sinal por repetição

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

Concatenam-se quatro cópias do sinal e os quatro bits originais: oito bits no total. Estender sinal não é somar 1 porque o MSBMSB Bit de maior peso. Seu índice depende do sentido de declaração do vetor; não se deve supor que sempre tenha o maior número. Saiba mais vale 1; amplia-se a representação para preservar o valor interpretado.

O intervalo q[N-2:0] de um deslocador genérico não é válido para N=1. Restrinja o mínimo suportado ou trate N=1 num ramo generate. Parametrizar exige mais do que substituir números por variáveis.

Experimente

a tem três bits 101 e b dois bits 11. Qual é a largura e o valor de {a,b}? O que resta ao armazená-lo em quatro bits?

Ler a explicação

São cinco bits, 10111, com valor 5⋅4+3=235\cdot4+3=23. Em quatro bits, o superior é descartado: resta 0111, ou seja, 7.

Sua escolha vale neste navegador. Altere-a a qualquer momento no rodapé.