INTRODUCCIÓN III. Figura 1. Señal con codificación digital NRZI.



Documentos relacionados
QUIERES COMPROBAR CÓMO LAS REDES DETECTAN Y CORRIGEN ERRORES?

Comparadores UNIDAD V

Unidad Didáctica. Códigos Binarios

Existen una serie de criterios a tomar en cuenta sobre la información que genera el usuario:

Introducción a la Firma Electrónica en MIDAS

Trabajo 3. PROTOCOLOS DE COMUNICACIÓN SERIAL INDUSTRIALES Edwin Gilberto Carreño Lozano, Código:

podemos enfocar al funcionamiento del robot, es decir la parte de electrónica. Para que el

Control Teaching de un Brazo Robot de Cinco Grados de Libertad

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ

TEMA I: INTRODUCCIÓN A LA ELECTRÓNICA DIGITAL

CAPÍTULO 3. Las principales funciones del microcontrolador son: adquirir por medio del A/D y también, mostrar mensajes de pesos y voltaje en el LCD.

x

DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia.

COMUNICACION DE PLC S MEDIANTE EL PUERTO RS- 485 Y MONITOREADO POR PANTALLA.

COMUNICACIÓN HYPERTERMINAL CON DELTA PLC.

GedicoPDA: software de preventa

Transformación de binario a decimal. Transformación de decimal a binario. ELECTRÓNICA DIGITAL

UNIVERSIDAD DE SALAMANCA

Figura 1: Símbolo lógico de un flip-flop SR

by Tim Tran:

Configuración básica de una EGX300 mediante Internet Explorer

Tema 7. SISTEMAS SECUENCIALES SISTEMAS SECUENCIALES SÍNCRONOS

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Teoria de las Telecomunicaciones. TEMA 2 Tècnicas de modulacion. Luis Lujan

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC

INTERRUPCIONES. La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos, se puede establecer de dos maneras fundamentales:

Codificación Manchester y Manchester Diferencial. Leonardo Steller Johnny Jirón A87753

Naturaleza binaria. Conversión decimal a binario

Adelacu Ltda. Fono Graballo+ Agosto de Graballo+ - Descripción funcional - 1 -

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente:

Programación de Microcontroladores

Capítulo 9. Archivos de sintaxis

Actividad 4: Comunicación entre PLC s vía Ethernet

Anexo B. Comunicaciones entre mc y PC

Notas para la instalación de un lector de tarjetas inteligentes.

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

CODIFICACION DIGITAL A DIGITAL

1. Representación de la información en los sistemas digitales

TEMA 2: Representación de la Información en las computadoras

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

GENERACIÓN DE ANTICIPOS DE CRÉDITO

MINISTERIO DE EDUCACION NACIONAL

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

Capítulo 5. Análisis del software del simulador del sistema de seguridad

Tema 2 : Códigos Binarios

GENERACIÓN DE TRANSFERENCIAS

Manual de Introducción a SIMULINK

2 Sea una unidad de disco duro de brazo móvil con las siguientes características:

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Puesto que la trama consta de 32 intervalos de tiempo iguales, la duración de cada intervalo o canal será de:

UNIDADES DE ALMACENAMIENTO DE DATOS

NOTA DE APLICACIÓN AN-P002. Programando Wiring con NXProg

ELECTRÓNICA DIGITAL. Sistemas analógicos y digitales.

En el presente capítulo se describe la programación del instrumento virtual y cómo

Dirección Alumnos. Av. Benjamín Aráoz C.P Tucumán - Argentina Tels.: 0054 (0381) Fax: Internet:

Introducción a Códigos

Universidad de Puerto Rico Recinto Universitario de Mayagüez Departamento de Ingeniería Eléctrica y Computadoras

CODIGOS DE LINEA. Compresión de códigos de línea, codificadores y decodificadores RZ, NRZ-L, NRZ-M, NRZ-S, Biphase Mark y Biphase Manchester etc.

La Computadora. Operaciones de entrada al ser receptora de información. Operaciones de cálculo, lógica y almacenamiento.

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Tema I. Sistemas Numéricos y Códigos Binarios

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007

INFORMÁTICA IE. Términos a conocer y conceptos básicos. World Wide Web (WWW):

Tema IV. Unidad aritmético lógica

Combinar correspondencia (I)

Circuitos Electrónicos. Septiembre 2005/2006. Problema 1º parcial

INDICE. 1. Introducción El panel Entities view El panel grafico Barra de botones Botones de Behavior...

El control de la tesorería consiste en gestionar desde la aplicación los cobros y pagos generados a partir de las facturas de venta y de compra.

Tema 2. Espacios Vectoriales Introducción

Utilización de los puertos serial y paralelo de una PC usando LabView

* En una computadora el microprocesador se comunica con uno de los siguientes dispositivos:

Los servicios que presta Internet. RETO: Conocer y utilizar los servicios que nos ofrece Internet.

Árboles AVL. Laboratorio de Programación II

Internet Information Server

DOMINIO Y RANGO página 89. Cuando se grafica una función existen las siguientes posibilidades:

CAPÍTULO VI PREPARACIÓN DEL MODELO EN ALGOR. En este capítulo, se hablará acerca de los pasos a seguir para poder realizar el análisis de

Introducción a los Sistemas Digitales

BASES Y DIMENSIÓN. Propiedades de las bases. Ejemplos de bases.

ANEXO 2: REPRESENTACION DE LA INFORMACION EN LOS COMPUTADORES

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Introducción a la Programación 11 O. Humberto Cervantes Maceda

1.1. Introducción y conceptos básicos

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)

La presente tesis pretende que los estudiantes observen la teoría de las acciones de control

Manual de usuario: General

Funciones, x, y, gráficos

Usando los Codificadores Cuadráticos

T6. CIRCUITOS ARITMÉTICOS

Subespacios vectoriales en R n

TELEOPERACIÓN DE UN ROBOT MOVIL CON MANEJO DIFERENCIAL A BAJO COSTO

18. Camino de datos y unidad de control

(decimal) (hexadecimal) 80.0A.02.1E (binario)

Materia: Informática. Nota de Clases Sistemas de Numeración

Cómo?: Resolviendo el sistema lineal homógeneo que satisfacen las componentes de cualquier vector de S. x4 = x 1 x 3 = x 2 x 1

DESCRIPCION DEL SITEMA MASTER.

Transcripción:

1 Codificación Digital Luís Miguel Capacho V. capacho4@hotmail.com, Nelson Antonio Becerra C. nelsonabc25@hotmail.com, Jaime Alberto López R. jaimealopezr@yahoo.com, Diego Felipe García. felipeg_84@hotmail.com. Programa de Ingeniería Electrónica, Universidad del Quindío Resumen En este documento se pretende profundizar en el análisis de los métodos de codificación de señales digitales, es decir, en la codificación de línea y de bloques; para ello se implementó un software en Builder C++, que permite generar un dato aleatorio de 8 bits, el cual es transmitido serialmente a un microcontrolador para su correspondiente codificación de línea o de bloque. El código de línea implementado fue el NRZI (no retorno a cero invertido) y el código de bloque implementado fue el de Hamming. U III. INTRODUCCIÓN na señal digital es una secuencia de pulsos de tensión discretos y discontinuos. Cada pulso es un elemento de la señal. Los datos binarios se transmiten codificando cada bit en los elementos de señal. En el caso más sencillo, habrá una correspondencia uno a uno entre los bits y dichos elementos. Un factor importante que se utiliza para mejorar las prestaciones de un sistema es el esquema de codificación, el cual es simplemente la correspondencia que se establece entre los bits de los datos con los elementos de la señal. Se han intentado una gran variedad de aproximaciones para la codificación de señales digitales, estas aproximaciones se agrupan en códigos de línea y códigos de bloque. Los códigos de líneas más utilizados son: Los no retorno a cero, entre los cuales tenemos NRZ, NRZ-L, NRZI, Los binario multinivel, entre los cuales tenemos el bipolar-ami y el Pseudoternario y los Bifase: Manchester y Manchester diferencial. Los códigos de bloque más utilizados son: El Hamming, los códigos cíclicos, el código Reed- Solomon, los códigos convolucionales entre otros. Codificación NRZI El NRZI mantiene constante el nivel de tensión la duración del bit. Los datos se codifican mediante la presencia o ausencia de transmisión de la señal. Un 1 se codifica mediante la transición (bajo a alto o alto a bajo) al principio del intervalo de señalización, mientras que un cero se representa por la ausencia de transmisión. NRZI es un ejemplo de codificación diferencial. La codificación diferencial, en lugar de determinar el valor absoluto, la señal se codifica en función de los cambios entre los elementos de señal adyacentes. En términos generales, la codificación de cada bit se hace de la siguiente manera: si se trata del valor binario 0, se codifica con la misma señal que el bit anterior; si se trata de un valor binario 1, entonces se codifica con una señal diferente que la utilizada para el bit precedente. En la Figura 1 se muestra el formato de codificación para el NRZI. Figura 1. Señal con codificación digital NRZI. Codificación de Hamming Este código fue propuesto por R. W. Hamming en 1950 y permite a través de un subconjunto de códigos de control de paridad localizar la presencia de errores dentro del mensaje. Estos códigos tienen como muy poco distancia mínima 3. El código Hamming es clasificado como un código de bloque por que tiene como entrada un grupo (bloque) de m bits de datos a los cuales se le agregan un grupo de r bits de parida de acuerdo a reglas preestablecidas, dando como salida un grupo de n bits comúnmente llamado palabracódigo. Así mismo se dice que es lineal porque satisface la condición de que cualquier par de

2 palabras-código al ser sumadas en modulo 2 producen otra palabra existente dentro del conjunto empleado para codificar los posibles mensajes. Un código de Hamming se puede denotar mediante un par (n,m). Sin embargo los valores de n y m deberán verificar una serie de condiciones: - n es la longitud de la palabra de código - m es el número de bits de datos de la palabra original sin codificar - el número de bits de paridad será r=n-m, pero deberá cumplirse la siguiente relación entre la longitud de la palabra de código y el número de bits de paridad: n=2r-1 con r>=3 - según esto también se cumplirá la siguiente relación entre el número de bits de datos y el número de bits de paridad: m=2r-r-1 Por lo tanto, a cada palabra original se le añade unos bits de paridad para obtener la palabra de código, de forma que estos bits de paridad sirvan posteriormente para encontrar y corregir errores que se produzcan en la transmisión. Para obtener la codificación de cada dato se tiene que cumplir que A.T = 0, donde A corresponde a la matriz del código de dimensiones rxn y T a un vector columna del dato codificado de longitud n. Las columnas de la matriz A deben ser todas distintas y no contener el vector 0. Tomando como un ejemplo un dato de 4 bits (m=4), 3 bits de error (r=3) se tienen la siguiente matriz A: A partir de esta última se construye el sistema lineal de ecuaciones para cada una de las filas de acuerdo a aquellos coeficientes que son 1: c 2 m 2 m 3 m 4 =0 c 1 m 1 m 3 m 4 =0 c 0 m 1 m 2 m 4 =0 Como los valores de m corresponden al mensaje, se despeja cada uno de los bits de comprobación de error. Esto da como resultado el siguiente conjunto de ecuaciones: c 2 =m 2 m 3 m 4 c 1 =m 1 m 3 m 4 c 0 =m 1 m 2 m 4 Aplicando estas ecuaciones a cada uno de los 16 datos de 4 bits se obtiene la siguiente tabla, la cual es utilizada en el Microcontrolador para generar los datos codificados: Número Bits de Error (c 2,c 1,c 0 ) Dato Codificado en binario (c 2,c 1,c 0, m 4,m 3,m 2,m 1 ) 0 000 0000000 1 011 0110001 2 101 1010010 3 110 1100011 4 110 1100100 5 101 1010101 6 011 0110110 7 000 0000111 8 111 1111000 9 100 1001001 A 010 0101010 B 001 0011011 C 001 0111100 D 010 0101101 E 100 1001110 F 111 0111111 IV. SISTEMA PROPUESTO Nótese que los valores de cada columna se construyen asignando los números en binario desde el 1 hasta el 7. El siguiente paso consiste en nombrar cada una de estas columnas, asignado c 0, c 1 y c 2 para aquellas que sólo tienen un 1 y m 1, m 2, m 3 y m 4 para las demás, como se muestra a continuación: Con el fin de realizar la codificación de un dato aleatorio, por medio del código de línea NRZI y el código de bloque Hamming, proponemos el sistema en diagramas de bloques mostrado en la Figura 2. Figura 2. Diagrama de bloques codificación digital. Por medio de un PC vamos a generar el dato aleatorio de 8 bits que deseamos codificar, el

3 lenguaje de programación y la plataforma que se utilizó es Builder C++ 6.0. Este dato es transmitido serialmente a un microcontrolador que realizará la codificación requerida, ya sea de línea o de bloque, y este entregará simultáneamente el dato y el código por uno de sus puertos para de esta forma lograr visualizar la codificación en un osciloscopio. La Figura 3 muestra el diagrama electrónico del sistema propuesto, el cual fue diseñado con un microcontrolador Motorota MC68HC908GP32 para la codificación de las señales binarias que se originan desde el computador. Esta señal binaria debe someterse a una conversión de niveles de voltaje, ya que los niveles con los que transmite el computador no pueden ser asimilados correctamente por el microcontrolador, es decir, estos niveles de voltaje lógicos son diferentes. Por tal motivo es preciso contar con un protocolo que defina los niveles de transmisión de datos, este protocolo es el RS232. El dispositivo que cuenta con este protocolo es el MAX232 como se muestra en la Figura 3. bit; en cambio el código de bloque da Hamming se efectúa sobre el nible menos significativo del byte recibido, debido a que en este tipo de codificación por cada cuatro bits se adicionan tres bits para corrección y detección de errores en el proceso de transmisión. La ventana principal del software que nos permite generar el dato aleatorio se muestra en la Figura 4. Figura 4. Ventana principal. Este software además de generar aleatoriamente el dato que se desea codificar, lo envía por el puerto serial al microcontrolador para su codificación. En la Figura 4 se observan las opciones y posibilidades que ofrece dicho software, entre las cuales se encuentran abrir o cerrar el puerto serial, elegir entre el puerto 0, 1 y 2, enviar el dato, detener la transmisión y observar el carácter enviado. La función que permite generar un dato aleatorio se muestra a continuación: Figura 3. Sistema propuesto para el codificar de línea y bloque. El microcontrolador es el encargado de codificar la señal proveniente del computador; además este cuenta con un interruptor para seleccionar el tipo de código a realizar. Por otra parte se pueden observar simultáneamente en el osciloscopio la señal aleatoria procedente del computador y la señal codificada por línea o bloque dependiendo de la opción escogida en el interruptor. Como se mencionó anteriormente este dispositivo puede realizar dos tipos de codificación: NRZI y Hamming. En cuanto a la codificación de línea NRZI se realiza sobre todo el byte transmitido por el computador, ya que esta se hace bit por void fastcall TForm1::Timer1Timer(TObject *Sender) La función enviar_dato envía un dato de 8 bits por el puerto serial a una velocidad de 4800 baudios sin bit de paridad. El código completo que genera y transmite los datos por el puerto serial es el siguiente: #include <vcl.h> #pragma hdrstop #include "main.h" #include "serialw32.h"

4 #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; SerialCommDriver Serial; int Puerto=0; bool prueba=false; fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) Serial.Close(); void fastcall TForm1::AbrirClick(TObject *Sender) if(serial.open(puerto,4800,8,noparity,0,0)) Label2->Caption="El puerto esta abierto"; Port=true; else Application->MessageBox("No se puede abrir el Puerto!!","Error", void fastcall TForm1::CerrarClick(TObject *Sender) if(serial.close()) void TForm1::enviar_dato(char dato) Serial.WriteChar(dato); void fastcall TForm1::RadioButton1Click(TObject *Sender) Puerto=0; Application->MessageBox("Abra el puerto!!","información", void fastcall TForm1::RadioButton2Click(TObject *Sender) Puerto=1; Application->MessageBox("Abra el puerto!!","información", void fastcall TForm1::RadioButton3Click(TObject *Sender) Puerto=2; Application->MessageBox("Abra el puerto!!","información", void fastcall TForm1::AceptarClick(TObject *Sender) if(port) Timer1->Enabled=true; Timer2->Enabled=true; Button1->Enabled=true; Label3->Enabled=true; Barra->Enabled=true; else Application->MessageBox("No hay puerto abierto!!","error", void fastcall TForm1::Timer1Timer(TObject *Sender) void fastcall TForm1::Button1Click(TObject *Sender) Timer1->Enabled=false; Timer2->Enabled=false; Button1->Enabled=false; Label3->Enabled=false; prueba=false; Barra->Enabled=false; Barra->Position=Barra->Min; void fastcall TForm1::Timer2Timer(TObject *Sender) Barra->Position++; if(barra->position==barra->max) Barra->Position=Barra->Min; if(prueba) dato=recibir_dato(); Label4->Caption=dato;

5 char TForm1::recibir_dato(void) dato=serial.readchar(); return dato; void fastcall TForm1::Button2Click(TObject *Sender) if(port) Timer1->Enabled=true; Timer2->Enabled=true; Button1->Enabled=true; Label3->Enabled=true; Barra->Enabled=true; prueba=true; else Application->MessageBox("No hay puerto abierto!!","error", Implementación en lenguaje Ensamblador El microcontrolador Motorota MC68HC908GP32 tenía la tarea de recibir los datos generados aleatoriamente por el computador a través del puerto serial utilizando la interfaz RS232 y ponerlos de manera secuencial en dos de sus pines de salida dispuestos para ello. El primero de estos sería la salida no codificada mientras que el segundo mostraría el código de línea o de bloques del anterior. Esto nos permitiría comparar en el osciloscopio ambas señales. INICIO Configuración del Dispositivo Nuevo dato? Si Codificación y transmisión del dato No Figura 5. Diagrama de flujo del programa en ensamblador. La Figura 5 muestra el diagrama de flujo del programa principal. Inicialmente se configura el microcontrolador, esto incluye seleccionar los pines que van a ser utilizados de entrada y salida y la velocidad del puerto serial. El lazo principal espera la transmisión de un dato para codificarlo y transmitirlo. Para determinar si se debe aplicar el código de línea o el código de bloques, se usa un interruptor en el pin 7 del puerto A. El valor de este se verifica en el lazo principal para aplicar la codificación respectiva. Para cada uno de los métodos de codificación se pone de manera serial el dato transmitido por el PC y el dato codificado. Esto se logra mediante la rotación de bits. La codificación NRZI se obtiene al negar el estado anterior del bit 0 del puerto B cada vez que se encuentra un 1 lógico en el dato recibido, mientras que los datos con la codificación de Hamming están guardados en una tabla pre-calculada a la cual se accede según el dato que se vaya a codificar. Cada uno de los bits de la señal de salida tiene una duración de 200ms. El código implementado en lenguaje ensamblador se muestra a continuación: $include 'gpgtregs.inc' FLASH EQU $8000 RAM EQU $0040 RESET EQU $FFFE DATO_RX EQU $FFE4 *************** * Directivas de pre-procesamiento * *************** OUT_N EQU 0 OUT_C EQU 1 PORT_LED EQU PORTB LED EQU 7 IN_SEL EQU 7 ** * Variables utilizadas en el programa * ** ORG RAM ByteDato rmb 1 HayByte rmb 1 ByteRx rmb 1 Hamming rmb 1 ********** * Memoria Flash del programa * ********** ORG FLASH INICIO: bset 0,CONFIG1 ldhx #$240 txs a h ; Limpieza de variables

6 x ByteDato HayByte ByteRx Hamming BFinal: lsr ByteDato jsr Retardo_200 dbnzx HCiclo bset LED,DDRB ; Pines de salida bset LED,PORT_LED bset OUT_N,DDRB bset OUT_C,DDRB ; Configuración del SCI mov #$02,CONFIG2 mov #%00000101,SCBR ; Vel = 4800 bps mov #%01000000,SCC1 ; mov #%00100100,SCC2 ; Activa Rx SCS1 SCDR cli eor sta #!2 PORTB * Rutina principal * jmp Cero: Final Principal: b OUT_N,PORTB Final: wait br 0,HayByte,Cod_Bloque lsr jsr ByteDato Retardo_200 b 0,HayByte ; Se borra la bandera que dbnzx Ciclo ; indica los datos listos ; Selecciona el código brset IN_SEL,PORTA,Cod_Linea **** * Rutina principal del código de bloque * **** Cod_Bloque: mov ByteRx,ByteDato ByteDato and #$F ; Borra la parte alta del dato sta ByteDato ldhx #Tabla ; Calcula el valor de la tabla txa ; A = X add ByteDato ; A = X + Muestra tax ; X = ACCA pshh pula ; A = H adc #!0 ; A = H + Aux psha pulh ; H = A mov x+,hamming ; Guarda el valor de la tabla jmp Principal *** * Rutina principal del código de Línea * *** Cod_Linea: mov ByteRx,ByteDato ldx #!8 ; Saca en el puerto los bits normal y codificado Ciclo: br 0,ByteDato,Cero bset OUT_N,PORTB jmp PORTB Principal * Retardo de 200ms * Retardo_200: pshh pshx ldhx #!56 De_nuevo_200: aix #-1 cphx #0 bne De_nuevo_200 pulx pulh rts * Rutina de servicio de interrupción * * por byte recibido por la SCI * ISR_RX: pshh SCS1 SCDR ldx #!7 ; Saca en el puerto el bit codificado HCiclo: br 0,Hamming,HCero bset OUT_C,PORTB jmp HFinal HCero: b OUT_C,PORTB HFinal: lsr Hamming ; Saca en el puerto el bit normal BCiclo: br 0,ByteDato,BCero bset OUT_N,PORTB jmp BFinal BCero: b OUT_N,PORTB sta ByteRx ; Guarda el byte recibido bset 0,HayByte ; Indica que hay un nuevo byte pulh rti * Tabla de datos del código Hamming * Tabla: db $0,$31,$52,$63,$64,$55,$36,$07,$78,$49, $2A,$1B,$1C,$2D,$4E,$7F, * Tabla de vectores de interrupción * org DATO_RX dw ISR_RX

7 org RESET dw INICIO IV. CONCLUSIONES La selección de un código de línea reside en las diferencias de las características de cada una de las señales, estas son las que hacen que sean ideales para algunas aplicaciones y de poco interés para otras. El código de línea NRZI presenta una componente de DC considerable, lo cual hace que el sistema que diseñamos no sea acoplable en AC. Esto es de vital importancia si requerimos de acoplamientos o en sistemas de grabación magnética donde la información de muy baja frecuencia puede llegar a perderse. Los códigos de bloque incorporan cierta redundancia a las palabras del mensaje. Esa redundancia es un grupo de bits que no portaban información esencial y que su único objetivo es el de detectar y corregir errores que se pudieran producir durante la transmisión. La codificación de Hamming 7-4 permite detectar dos errores y corregir como máximo uno. La efectividad de los códigos de bloque depende de la diferencia entre una palabra de código válida y otra. Cuanto mayor sea esta diferencia, menor es la posibilidad de que un código válido se transforme en otro código válido por una serie de errores.