sec (single error correction) código de hamming arquitetura de computadores

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

Upload: internet

Post on 22-Apr-2015

112 views

Category:

Documents


0 download

TRANSCRIPT

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

SEC (Single Error Correction)Código de Hamming

Arquitetura de Computadores

Page 2: 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

Page 3: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

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

Page 4: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

Código de Hamming

11

1111 00

11

1111 00

11 00

00

11

1100 00

11 00

00ErroErro

Bits de verificaçãoBits de verificação(redundantes)(redundantes)

Bits de Dados

Page 5: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

Código de Hamming

Exemplo: CheckCheck Data bitbit bit1212 1100 M121111 1011 M111010 1010 M10 9 9 1001 M9 88 1000 C8C8 7 7 0111 M7 6 6 0110 M6 5 5 0101 M5 4 4 0100 C4C4 3 3 0011 M3 2 2 0010 C2C2 1 1 0001 C1C1

Exemplo: CheckCheck Data bitbit bit1212 1100 M121111 1011 M111010 1010 M10 9 9 1001 M9 88 1000 C8C8 7 7 0111 M7 6 6 0110 M6 5 5 0101 M5 4 4 0100 C4C4 3 3 0011 M3 2 2 0010 C2C2 1 1 0001 C1C1

M bits de dadosK bits de verificação devem ser capazes de K bits de verificação devem ser capazes de codificar erros em M+K posições, quando houver codificar erros em M+K posições, quando houver erro, mais uma posição que indica que não houve erro, mais uma posição que indica que não houve erro.erro.

=> 2k M + K + 1

M bits de dadosK bits de verificação devem ser capazes de K bits de verificação devem ser capazes de codificar erros em M+K posições, quando houver codificar erros em M+K posições, quando houver erro, mais uma posição que indica que não houve erro, mais uma posição que indica que não houve erro.erro.

=> 2k M + K + 1

C1C1 = M3 + M5 + M7 + M9 + M11C2C2 = M3 + M6 + M7 + M10 + M11C4C4 = M5 + M6 + M7 + M12C8C8 = M9 + M10 + M11 + M12

C1C1 = M3 + M5 + M7 + M9 + M11C2C2 = M3 + M6 + M7 + M10 + M11C4C4 = M5 + M6 + M7 + M12C8C8 = M9 + M10 + M11 + M12

O O O O O O O O O O O O O O

Page 6: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

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

Page 7: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

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)

Page 8: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

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

Page 9: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

Custos (outra vantagem)

Total = 2 hamming (gerador e corretor) + 1 comparador + 1 inversor + codificador + ...

Total = 2 x 12 + 4 + 8 + ... = 36 + ... portasCusto c\ memória: US$ 3,60 = R$

10,80

Fonte Futurlec:http://www.futurlec.com/ICEPROM.shtml http://www.futurlec.com/IC7400Series.shtml

Page 10: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

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

Page 11: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

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 entrada2 – teoricamente susceptível ao erro, dado de saída

Page 12: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

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

Page 13: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

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

Page 14: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

Classe Bits

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(); }...}

Page 15: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

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

Page 16: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

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)

Page 17: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

Ex.: char hamming(int)

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);}

Page 18: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

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))

Page 19: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

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)

Page 20: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

Conclusões

Implementações com memória Programação Conveniente (Resultado) Vantagens:

– Montagem– Tamanho– Custo

Objetivo prático:– Análise – Implementação– Montagem

Page 21: SEC (Single Error Correction) Código de Hamming Arquitetura de Computadores

Mais Informações

www.cin.ufpe.br/~bemaf/arquivos/arq/– SEC.ppt (esta apresentação)– Bits.java– Gerador.java– Arquivo.java