Comparador de magnitude

Compara dois barramentos sem sinal A e B e informa o resultado em três saídas separadas: A>B, A=B e A<B. Exatamente uma delas está em HIGH a cada momento, porque dois números são sempre maior, igual ou menor. Responde a pergunta que um subtrator apenas insinua, e a responde sem produzir uma diferença que depois seria preciso interpretar.

Básico

Ler as três bandeiras

Alimente A e B a partir de duas entradas multibit e coloque um LED em cada uma das três saídas. Mude qualquer um dos números e observe o LED aceso se mover entre as três bandeiras. A tabela abaixo usa valores de 2 bits para ser breve; o comportamento é o mesmo em qualquer largura.

ABA>BA=BA<B
00010
10100
23001
33010
Intermediário

Um detector de limiar

Mantenha B fixo com um DIP switch e excite A a partir de um contador. A saída A>B passa a HIGH no momento em que a contagem ultrapassa seu limiar, e permanece em HIGH depois. Combine A>B com A=B através de uma porta OR quando quiser a condição "maior ou igual", que o comparador não entrega como pino próprio.

Avançado

A igualdade é a parte barata

Vale a pena saber o que o comparador custa. A igualdade sozinha é barata: aplique XNOR a cada par de bits e depois AND aos resultados, já que dois números são iguais exatamente quando coincidem em todas as posições. A ordenação é a parte cara, porque precisa ser decidida do bit mais significativo que difere para baixo, e por isso um comparador de magnitude cresce com a largura de um modo que um detector de igualdade não cresce. Se seu projeto só precisa de A=B, construí-lo com XNORs fica menor do que colocar um comparador completo.

Citações

  • Mano, M. M., & Ciletti, M. D. (2018). Digital design: With an introduction to the Verilog HDL, VHDL, and SystemVerilog (6th ed.). Pearson. Referência 1
  • Wakerly, J. F. (2018). Digital design: Principles and practices (5th ed.). Pearson.