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.
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
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 bits é interpretado assim:
10110110 vale . 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.
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 estados é:
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 , 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 bits unsigned é uma operação modular:
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.
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 valores e exige 12 bits; o segundo contém 4097 e exige 13. Como , o valor armazenado é 8'hFF. Isso não permite concluir que não houve overflow.