Altifigence Academy

2 / 63 · Conceito

Sistemas numéricos e representação de largura fixa

Além de converter bases, calcule intervalos, larguras necessárias e erros de truncamento.

Ponto de partida do curso

Recomendam-se álgebra do ensino médio e programação básica. O curso aborda números binários e álgebra booleanaÁlgebra booleana Álgebra de 0, 1 e das operações AND, OR e NOT. O sinal de soma costuma representar OR, portanto suas regras diferem das da soma de inteiros. Saiba mais e avança rapidamente ao nível universitário introdutório de projeto lógico digital. Concentre-se em definir condições de entrada, larguras e instantes de observação e verificá-los com exemplos, mais do que em decorar fórmulas.

A sequência de bits e seu valor são coisas diferentes

Um circuito armazena uma sequência finita de bits. O contrato do projeto define se ela representa um inteiro, um valor com sinal ou ponto fixoPonto fixo Representação que fixa previamente a posição do separador fracionário e aplica uma escala constante a uma sequência de bits inteira. É preciso definir largura, sinal e número de bits fracionários. Saiba mais. Para calcular os intervalos necessários em RTL, partimos de operações inteiras e pressupomos familiaridade com potências.

Um valor 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. de NN bits é interpretado assim:

u=∑i=0N−1bi2i,0≤u≤2N−1u=\sum_{i=0}^{N-1}b_i2^i,\qquad 0\le u\le 2^N-1

10110110 vale 128+32+16+4+2=182128+32+16+4+2=182. Agrupando os bits de quatro em quatro, obtemos B6: 8'hB6 e 8'b10110110 são os mesmos bits. Cada dígito hexadecimal representa sempre quatro bits, agilizando a leitura de endereços, máscaras e formas de onda.

Os mesmos bits, outra interpretação

Alterne b7 no controle abaixo. Em unsigned, ele acrescenta peso 128; em complemento de doisComplemento de dois Representação de inteiros com sinal por sequências de bits de largura fixa. O intervalo de n bits vai de −2^(n−1) a 2^(n−1)−1. Saiba mais, o bit mais significativo pesa −128. Monte primeiro 0x7F e 0x80 e compare a fronteira entre as interpretações.

Bits e representações numéricas

10110110 → unsigned 182 · signed -74 · hex 0xB6

Alterar os bits e interpretá-los como signed são operações diferentes. Mesmo que o circuito mantenha 8 bits de largura, a informação de sinal recebida pelo operador pode mudar o resultado de uma comparação.

Primeiro o intervalo, depois a largura

O número mínimo de bits para distinguir MM estados é:

N=⌈log⁡2M⌉N=\left\lceil\log_2 M\right\rceil

Contar de 0 a 999 exige representar 1000 valores: são necessários 10 bits. De 0 a 1024 são 1025 valores: são necessários 11. Confundir o máximo com a quantidade de estados deixa um bit a menos exatamente na fronteira. Se o RTL aceitar o parâmetro M=1M=1, limite a largura ao mínimo de 1 para evitar vetores de zero bits.

O que acontece ao armazenar em um sinal mais estreito

Descartar os bits superiores e manter NN bits unsigned é uma operação modular:

xstored=x mod 2Nx_{stored}=x\bmod 2^N

Por exemplo, armazenar o resultado 300, de 9 bits, em 8 bits deixa 44. Isso não é arredondamento nem saturação. Para saturar, projete separadamente um circuito que detecte o excesso de intervalo e selecione o máximo.

SystemVerilog
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];

Estender primeiro ambos os operandos deixa clara a intenção de preservar o carry. A base de um literal, sozinha, não determina seu sinal nem a largura do resultado. Para interpretar uma forma de onda, são necessários largura, sinal e base.

Experimente

Quantos bits são necessários para valores de 0 a 4095 e de 0 a 4096? O que resta ao armazenar 511 em um unsigned de 8 bits?

Ler a explicação

O primeiro intervalo contém 4096=2124096=2^{12} valores e exige 12 bits; o segundo contém 4097 e exige 13. Como 511 mod 256=255511\bmod256=255, o valor armazenado é 8'hFF. Isso não permite concluir que não houve overflow.

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