Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial Internet of Things >> Integrado

Comparando codificação binária, cinza e One-Hot

Este artigo mostra uma comparação das implementações que resultam do uso de codificações binárias, Gray e one-hot para implementar máquinas de estado em um FPGA. Essas codificações são frequentemente avaliadas e aplicadas pelas ferramentas de síntese e implementação, por isso é importante saber por que o software toma essas decisões.


As máquinas de estado finito (FSMs) são uma parte muito comum de quase todos os sistemas digitais. É por isso que as ferramentas de síntese costumam inspecionar seu código para detectar FSMs e realizar otimizações que podem modificar a codificação dos estados. Não importa se você selecionou e especificou cuidadosamente os valores que implementam seus estados em seu código-fonte, a ferramenta de síntese pode substituir esses valores por outros que podem até ter um comprimento de bits diferente do que sua codificação original.

Se você quiser se atualizar na implementação de máquinas de estado em Verilog, deve ler meu artigo intitulado Criando máquinas de estado finito em Verilog.



Codificação de estados:cinza vs. binário vs. One-Hot


As três codificações mais populares para os estados FSM são binárias, cinza e one-hot.


Codificação binária


A codificação binária é o método direto que você pode usar intuitivamente ao atribuir valores sequencialmente aos seus estados. Dessa forma, você está usando o mínimo de bits possível para codificar seus estados.




Um exemplo de codificação one-hot. Imagem de Steve Arar


Codificação cinza


O código cinza consiste em uma sequência em que apenas um bit muda entre um valor e o próximo. Além de usar também o número mínimo de bits, essa codificação minimiza o consumo de energia dinâmica se a sequência de estados for seguida de maneira ideal.




A roda de código Gray. Imagem de Marie Christiano


Codificação One-Hot


Finalmente, a codificação one-hot consiste em usar um bit que representa cada estado, de forma que em qualquer momento, um estado seja codificado como 1 no bit que representa o estado atual e 0 em todos os outros bits. Isso pode não parecer muito eficiente no início devido ao número de bits usados ​​e ao número excessivo de estados inválidos. No entanto, a codificação one-hot é muito boa para simplificar a lógica de estímulo para os flip-flops porque não há necessidade de decodificar os estados. Os bits são os Estados.




Um exemplo de codificação one-hot. Imagem de Steve Arar



Para obter mais informações sobre codificação de estado, você pode querer verificar o artigo Codificando os estados de uma máquina de estados finitos em VHDL, de Steve Arar.


Qual codificação é a melhor?


Essa é uma pergunta difícil, principalmente porque cada codificação tem suas vantagens e desvantagens, então se resume a um problema de otimização que depende de um grande número de fatores.

Agora, todas essas afirmações são apenas suposições fundamentadas, e encontrar a atribuição de estado ideal é um problema complicado. Por causa disso, meu conselho oficial é deixar o compilador decidir por você. Dito isso, decidi fazer uma comparação dos resultados para essas três codificações em três ferramentas de desenvolvimento diferentes e três máquinas de estado diferentes.

No próximo artigo, discutiremos os resultados de meus experimentos.

Integrado

  1. Comparando o aço das séries 300, 400 e 500
  2. Numeração octal e hexadecimal
  3. Adição binária
  4. Subtração binária
  5. Estruturas e classes em C ++
  6. Comparando Six Sigma e manufatura enxuta
  7. Qual tipo de codificação devo usar? Aplicativos FPGA de exemplo
  8. Código Morse e extorsão dupla:o estado do malware hoje
  9. Proteção contra incêndio de máquinas CNC e EDM:comparando suas opções
  10. Propriedades e graus do ferro cinzento explicados