Mudanças entre as edições de "Código Gray"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada)
Linha 147: Linha 147:
 
:<math>  g_{1} = b_{1} \oplus b_{2} </math>
 
:<math>  g_{1} = b_{1} \oplus b_{2} </math>
 
:<math>  g_{0} = b_{0} \oplus b_{1} </math>
 
:<math>  g_{0} = b_{0} \oplus b_{1} </math>
 +
 +
:g(3..0) <= b(3..0) xor '0' & b(3..1)
  
 
==Conversão de Gray para Binário==
 
==Conversão de Gray para Binário==
Linha 167: Linha 169:
 
:<math>  b_{1} = g_{1} \oplus g_{2} \oplus g_{3} </math>
 
:<math>  b_{1} = g_{1} \oplus g_{2} \oplus g_{3} </math>
 
:<math>  b_{0} = g_{0} \oplus g_{1} \oplus g_{2} \oplus g_{3} </math>
 
:<math>  b_{0} = g_{0} \oplus g_{1} \oplus g_{2} \oplus g_{3} </math>
 +
 +
:b(3..0) <= g(3..0) xor  '0' b(3..1)
  
 
==Curiosidade==
 
==Curiosidade==
 
*[https://patentimages.storage.googleapis.com/a3/d7/f2/0343f5f2c0cf50/US2632058.pdf PULSE CODE COMMUNICATION Patente US2632058] Depositante: Bell Labs,  Inventor: Frank Gray.  Essa patente descreve o código Gray.
 
*[https://patentimages.storage.googleapis.com/a3/d7/f2/0343f5f2c0cf50/US2632058.pdf PULSE CODE COMMUNICATION Patente US2632058] Depositante: Bell Labs,  Inventor: Frank Gray.  Essa patente descreve o código Gray.
 
*[https://en.wikipedia.org/wiki/Gray_code História e usos do código Gray] [https://en-m-wikipedia-org.translate.goog/wiki/Gray_code?_x_tr_sl=auto&_x_tr_tl=pt&_x_tr_hl=pt-BR&_x_tr_pto=wapp]
 
*[https://en.wikipedia.org/wiki/Gray_code História e usos do código Gray] [https://en-m-wikipedia-org.translate.goog/wiki/Gray_code?_x_tr_sl=auto&_x_tr_tl=pt&_x_tr_hl=pt-BR&_x_tr_pto=wapp]

Edição atual tal como às 22h06min de 29 de abril de 2024

O código Gray é uma codificação na qual números adjacentes diferem de apenas um único bit. Desta forma ao fazer uma contagem em Gray, a cada incremento apenas um bit é modificado. Isso difere do que ocorre na contagem em binário, onde vários bits podem alterar com o incremento de um.

Por exemplo:

  • Em código binário sequencial o número adjacente a 0111 (7) é o 1000 (8), mudança em 4 bits.
  • Em código Gray seria: o número adjacente a 0100 (7) é o 1100 (8), mudança de apenas 1 bit.

Entre as aplicações do código Gray temos:

  • sistemas de controle de posição de eixos rotativos em máquinas
  • minimização de circuitos (Mapas de Karnaugh)
  • minimização e até correção de erros na transmissão digital (ex: QAM)


Tabela de códigos de 0 a 15

Octal Hexadecimal Decimal Binário Gray One Hot
00 0 0 0000 0000 0000.0000.0000.0001
01 1 1 0001 0001 0000.0000.0000.0010
02 2 2 0010 0011 0000.0000.0000.0100
03 3 3 0011 0010 0000.0000.0000.1000
04 4 4 0100 0110 0000.0000.0001.0000
05 5 5 0101 0111 0000.0000.0010.0000
06 6 6 0110 0101 0000.0000.0100.0000
07 7 7 0111 0100 0000.0000.1000.0000
10 8 8 1000 1100 0000.0001.0000.0000
11 9 9 1001 1101 0000.0010.0000.0000
12 A 10 1010 1111 0000.0100.0000.0000
13 B 11 1011 1110 0000.1000.0000.0000
14 C 12 1100 1010 0001.0000.0000.0000
15 D 13 1101 1011 0010.0000.0000.0000
16 E 14 1110 1001 0100.0000.0000.0000
17 F 15 1111 1000 1000.0000.0000.0000

Conversão de Binário para Gray

Conversão de um número binário de bits em um número Gray pode ser feita considerando o um número binário inicial , o número Gray correspondente pode ser obtido através de:

para

para

Por exemplo para N = 4:

g(3..0) <= b(3..0) xor '0' & b(3..1)

Conversão de Gray para Binário

Conversão de um número Gray de bits em um número binário pode ser feita considerando o um número Gray inicial , o número binário correspondente pode ser obtido através de:

para

para

Por exemplo para N = 4:

Ou expandindo:

b(3..0) <= g(3..0) xor '0' b(3..1)

Curiosidade