1 / 21

SEC (Single Error Correction) Código de Hamming

SEC (Single Error Correction) Código de Hamming. Arquitetura de Computadores. SEC (Single Error Correction). Código de Hamming Problema Solução Custos Geração de Dados Conclusões. Código de Hamming. Simples Correção de Erro (SEC) Expansível : Dupla Detecção de Erro (SEC-DED)

aelwen
Download Presentation

SEC (Single Error Correction) Código de Hamming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SEC (Single Error Correction)Código de Hamming Arquitetura de Computadores

  2. SEC (Single Error Correction) • Código de Hamming • Problema • Solução • Custos • Geração de Dados • Conclusões

  3. Código de Hamming • Simples Correção de Erro (SEC) • Expansível : Dupla Detecção de Erro (SEC-DED) • Garantia maior de consistência dos dados • Verificações redundantes • Identificação única

  4. 1 1 0 1 Código de Hamming Bits de Dados 1 1 0 1 0 1 Bits de verificação (redundantes) 0 1 1 0 1 0 0 0 Erro

  5. O O O O O O O O O O O O O O C1 = M3+M5+M7+M9+M11 C2 = M3+M6+M7+M10+M11 C4 = M5+M6+M7+M12 C8 = M9+M10+M11+M12 Código de Hamming Exemplo: CheckData bitbit 12 1100 M12 11 1011 M11 10 1010 M10 9 1001 M9 81000 C8 7 0111 M7 6 0110 M6 5 0101 M5 4 0100 C4 3 0011 M3 2 0010 C2 1 0001 C1 M bits de dados K bits de verificação devem ser capazes de codificar erros em M+K posições, quando houver erro, mais uma posição que indica que não houve erro. => 2k³ M + K + 1

  6. Problema • Implementar o código de Hamming para uma palavra de 8 bits • Utilizar CI’s em proto-board com algum visualizador • A princípio, portas XOR seriam utilizadas • Utilização da lógica XOR em paridade

  7. Solução • Utilização de XOR: • Dificuldades: Montagem e Tamanho do Circuito • Facilidades: Implementação pronta • Utilização de Memória: • Dificuldades: Programação • Facilidades: Montagem e Tamanho do Circuito • Programação: • Utilização de um gerador (programa que gera a programação da memória)

  8. Custos (outra vantagem) • Xor = US$ 0,50 • Mem (27C512) = US$ 1,80 • Utilização: • 2 mem = US$ 3,60 = 7,2 xor = 7 xor = 28 portas • Hamming = 12 portas • Comparador = 4 portas • Inversor xor = 8 portas

  9. Custos (outra vantagem) Total = 2 hamming (gerador e corretor) + 1 comparador + 1 inversor + codificador + ... Total = 2 x 12 + 4 + 8 + ... = 36 + ... portas • Custo c\ memória: US$ 3,60 = R$ 10,80 Fonte Futurlec: http://www.futurlec.com/ICEPROM.shtml http://www.futurlec.com/IC7400Series.shtml

  10. Geração de Dados (Programação) • Identificar: • Etapas do processo • Estruturas de dados • Atividades comuns • Formas de representação • Gerar: • Arquivos de Gravação • Classes • Métodos • Atributos e saídas

  11. Etapas do Processo • Gerar Código • A partir do dado correto¹ gerar o seu código de Hamming • Identificar Erro • A partir do dado alterado² e o código de Hamming identificar o bit onde houve alteração • Corrigir • A partir do dado alterado² e o código de Hamming realizar a correção se existir um único erro (SEC) 1 – teoricamente imune ao erro, dado de entrada 2 – teoricamente susceptível ao erro, dado de saída

  12. Arquivos de Gravação • Composição em 2 arquivos • Geração • Identificação e Correção (mesmas entradas) • Geração • ham1.txt • Identificação e Correção • ham2.txt • Etapas multiplexadas internamente

  13. Estruturas de Dados - Classes • Estrutura que comporte a relação entre os bits de um vetor de bits e um número inteiro • Classe Bits • Atributos: • boolean[] bits – vetor de bits • int valor – valor correspondente inteiro • Métodos de Conversão • Classe Gerador (programa gerador) • Métodos de Geração Estáticos¹ • Classe Arquivo (auxilia gravação em arquivo) 1 – independe de um objeto, sobre uma classe

  14. import java.util.Vector; import java.lang.Boolean; public class Bits{ public int valor; public boolean[] bits; public Bits(int v){ this.valor = v; this.resolveBits(); } public Bits(boolean[] b){ this.bits = b; this.resolveValor(); } ... } Classe Bits

  15. Atividades Comuns – Métodos (Bits) • Gets (obter bit do vetor): • boolean getBooleanIn(int), int getIntIn(int) • Mod2 (quociente e resto da divisão por 2): • int[] mod2(int) • Conversão (utilizado no construtor) • resolveBits(), resolveValor() • Xor

  16. Classe Gerador • Métodos e Atributos Estáticos • Identificar erro • char correctionOut(int, int), int correction(int, int) • Correção do erro • char corrected(int, int) • Código Hamming • char hamming(int) • Auxiliares • int adjustOut(int), int decide(int), char int2Char(int), boolean xor (boolean, boolean)

  17. public static char hamming(int v){ Bits bt = new Bits(v); boolean[] ret = new boolean[4]; ret[0] = Gerador.xor(bt.getBooleanIn(0), Gerador.xor(bt.getBooleanIn(1), Gerador.xor(bt.getBooleanIn(3), Gerador.xor(bt.getBooleanIn(4), bt.getBooleanIn(6))))); //C1 = M1 + M2 + M4 + M5 + M7 ret[1] = Gerador.xor(bt.getBooleanIn(0), Gerador.xor(bt.getBooleanIn(2), Gerador.xor(bt.getBooleanIn(3), Gerador.xor(bt.getBooleanIn(5), bt.getBooleanIn(6))))); //C2 = M1 + M3 + M4 + M6 + M7 ret[2] = Gerador.xor(bt.getBooleanIn(1), Gerador.xor(bt.getBooleanIn(2), Gerador.xor(bt.getBooleanIn(3), bt.getBooleanIn(7)))); //C4 = M2 + M3 + M4 + M8 ret[3] = Gerador.xor(bt.getBooleanIn(4), Gerador.xor(bt.getBooleanIn(5), Gerador.xor(bt.getBooleanIn(6), bt.getBooleanIn(7)))); //C8 = M5 + M6 + M7 + M8 bt = new Bits(ret); return Gerador.int2Char(bt.valor); } Ex.: char hamming(int)

  18. Classe Arquivo • Classe desenvolvida pelos monitores da disciplina de Algoritmos e Estruturas de Dados, para auxiliar leitura e escrita de arquivos (entradas e saídas) • Leitura: Tipo readTipo() • (e.g. int readInt()) • Escrita: print(Tipo), println(Tipo) • (e.g. println(String), print(int))

  19. Formas de Representação • Entradas (para a geração) Inteiros • Saídas (para o arquivo) Caracteres • Conversão Direta (Cast): char c; int i; c = (char) 21; i = (int) ‘b’ • Problema • caracteres não representados: 81, 8D, 8F, 90, 9D (hex)

  20. Conclusões • Implementações com memória • Programação Conveniente (Resultado) • Vantagens: • Montagem • Tamanho • Custo • Objetivo prático: • Análise • Implementação • Montagem

  21. Mais Informações • www.cin.ufpe.br/~bemaf/arquivos/arq/ • SEC.ppt (esta apresentação) • Bits.java • Gerador.java • Arquivo.java

More Related