PRÁCTICA 2020 DEPTO. DE ELECTRÓNICA Y COMPUTACIÓN ÁREA DIGITALES - PLAN 2003 TyDD I EJERCICIO PROPUESTO V- CÓDIGOS EJERCICIO PROPUESTO - CÓDIGOS Un estudiante de ingeniería está diseñando, para entretenerse durante la cuarentena obligatoria, un auto a control remoto. Para diseñar la interfaz de comunicación se quiere asegurar de implementar un sistema confiable. Las órdenes que enviará desde el control pueden ser: arriba, abajo, izquierda y derecha. Como puede verse, las órdenes son muy simples, por lo tanto es inconcebible que se presenten errores. Para asegurarse de ello decide utilizar códigos detectores de errores. Como todavía está en fase de diseño, decide probar entre dos alternativas: un código Hamming (bien conocido) y un código propio (realizado por él). El código diseñado por él, debe poseer alguna ventaja con respecto al anterior. Explique e implemente ambas alternativas, marcando ventajas de uno respecto de otro. Arme el esquema entre transmisor y receptor. Especifique las palabras de código creado. Busque un ejemplo y evalúe cómo responde cada implementación. Por ejemplo: asuma que se envía la orden “derecha” y que por error el receptor, recibe la transmisión con errores. Pregúntese ¿Qué pasaría si recibe otra palabra del código? Especifique cómo actuará el receptor en cada caso. SOLUCIÓN Antes de comenzar a ver de qué forma se van a enviar los datos al medio, se debe evaluar qué es lo que se quiere enviar. Las directivas que se quieren dar al robot son cuatro: ARRIBA, ABAJO, DERECHA E IZQUIERDA. ¿Cuántos bits necesito para poder enviar 4 posibilidades distintas? 2 El mensaje original que se desea trasmitir posee 2 bits. Directiva/ comando ARRIBA ABAJO DERECHA IZQUIERDA Dato D1 D0 0 0 0 1 1 0 1 1 Ahora…. ¿Qué codificación utilizo sobre estos datos para corregir y/o detectar errores? HAMMING Si se utiliza una forma de codificación Hamming se podrían realizar dos acciones, mutuamente excluyentes, sobre los datos: Corregir (lo que implica que lo tuvo que detectar). Detectar 2 errores. El código se arma de igual forma en ambos casos, la diferencia radica en lo que debe interpretar el receptor. ¿Cómo se arma el código? Recordemos que cualquier sistema de codificación para la detección y corrección de errores se basa en agregar bits al mensaje original, de forma tal de aumentar la distancia mínima entre las palabras transmitidas. - ¿Cuántos bits se agregan? Se debe cumplir: , siendo “p” la cantidad de bit a agregar y “n” la cantidad de bit de los datos que se quieren transmitir. Para este caso n=2 (D1 y D=0) p=3 para que se cumpla la relación. El total de bits a transmitir por el medio serán 5 bits. 1 Ing. Cebedio, María Celeste Año: 2020 PRÁCTICA 2020 DEPTO. DE ELECTRÓNICA Y COMPUTACIÓN ÁREA DIGITALES - PLAN 2003 TyDD I EJERCICIO PROPUESTO V- CÓDIGOS ¿En dónde se ubican los p bits que se deben agregar? Hamming establece que los bits se deben agregar en las posiciones que representen posibles potencias de 2. Es decir, la posición 1,2,4,8,16… B5 B4 B3 B2 B1 ↑ D1 P2 D0 P1 P0 ↑ ↑ ¿Cómo se arma cada bit de paridad p? Una forma sencilla de pensarlo es observando que es lo que se quiere corregir en el receptor Ꚛ C2 0 0 0 0 1 1 Ꚛ Ꚛ Ꚛ C1 0 0 1 1 0 0 C0 0 1 0 1 0 1 ¿Error? Sin error B1 B2 B3 B4 B5 En el receptor se desea obtener ecuaciones que informen si hubo error y en qué posición las hubo. Se arman las ecuaciones de corrección en función de ello. Ahora bien, si se reemplaza en las ecuaciones de corrección los bits por el correspondiente dato y bit de paridad queda: Ꚛ Ꚛ Ꚛ Ꚛ Como condición para que no haya error C0, C1 y C2 deben ser cero (lo que equivale a decir que P0 chequea D0 y D1; P1 chequea D0 y P2 chequea D1). Es decir, se puede obtener la forma de armar los bits de paridad “p”. Lo que se está diciendo es que para que no haya error, cada bit de paridad debe chequear la paridad de los bits de datos de la siguiente forma: Ꚛ ¿Cómo quedaría el código final? Las palabras permitidas luego de la codificación serían: Directiva/ comando ARRIBA ABAJO DERECHA IZQUIERDA Palabra D1 P2 P1 D0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 P0 0 1 1 0 Cualquier palabra que se reciba en el receptor fuera de estas cuatro permitidas será errónea. ¿Cómo responde el receptor? Depende de la configuración que se setee. Se puede setear en su forma corrección o detección. Configuración en modo corrección sólo puede corregir adecuadamente palabras que tengan un bit erróneo. - Detecta y corrige automáticamente. Lo hace siempre. - Si llegan palabras con más de un error, la corregirá mal. De esta manera agrega más error al código. No sólo no indica el error, sino que lo corrige y coloca la palabra como buena. - El bit erróneo puede ser tanto uno correspondiente a un dato como uno de los de paridad. 2 Ing. Cebedio, María Celeste Año: 2020 PRÁCTICA 2020 DEPTO. DE ELECTRÓNICA Y COMPUTACIÓN ÁREA DIGITALES - PLAN 2003 TyDD I EJERCICIO PROPUESTO V- CÓDIGOS Configuración en modo detector Sólo puede detectar adecuadamente palabras que tengan hasta dos bits erróneos. - Si la palabra no pertenece al código, me indica error. - No se sabe en qué bit ocurrió el error. - Si hay errores en más de dos bit y la nueva palabra (errónea) pertenece al código, pasa inadvertida. No es capaz de detectar ese error. - Hace uso de las ecuaciones de corrección de Hamming sólo para determinar si hubo error. No puede tomar los bist indicados por esas ecuaciones, como la posición del error. No corrige. - Si se usase este tipo de detector en canales/medios que tuviesen probabilísticamente más de dos errores por palabra sería un desastre. Habría palabras que detectaría y palabras que dejaría pasar como buenas. Se desea armar un código que posea alguna ventaja con respecto a Hamming. Una posible ventaja sería que en vez de corregir un error corrija dos. Para que el código me permita corregir 2 errores, debe tener una distancia mínima de 5. Recordar: con t=2 dmin=5 Palabras del código D1 D0 # Distancia #1 0 0 0 0 0 0 0 0 #2 1 1 1 0 0 1 1 1 #3 0 0 0 1 1 1 1 1 #4 1 1 1 1 1 0 0 0 D1-2=6 D1-3=5 D1-4=5 D2-3=5 D2-4=5 DMIN=5 D3-4=6 Las palabras que se presentan en el cuadro serán las únicas palabras válidas. La información real que se quiere transmitir se encuentra dentro de estas palabras. 3 Ing. Cebedio, María Celeste Año: 2020 PRÁCTICA 2020 DEPTO. DE ELECTRÓNICA Y COMPUTACIÓN ÁREA DIGITALES - PLAN 2003 TyDD I EJERCICIO PROPUESTO V- CÓDIGOS ¿Cómo responde el receptor? Una opción es utilizar este código para corregir dos errores. La forma más sencilla de pensar en su implementación es que cuando el receptor recibe el código: 1) Se Compare la palabra recibida con cada una de las cuatro palabras pertenecientes al código. 2) 3) #1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 #2 0 1 0 1 1 1 1 0 0 0 0 1 0 1 0 1 #3 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 #4 0 1 0 1 1 1 1 1 0 1 0 0 0 0 0 0 Si alguna de ellas coincide No hay error. (o mejor dicho si hay errores son los suficientes como para convertirse en otra palabra de código) Si la palabra recibida no coincide con ninguna hay error y se debe descubrir cuál era la palabra original. Ejemplo. Supongamos que se recibe la palabra: 00110000 Corrección de la palabra recibida. Una forma podría ser comparar bit a bit la palabra recibida con cada bit de las palabras del código. Luego observar la cantidad cambios producidos con respecto a cada palabra. Con aquella palabra que se produzcan menor cantidad de cambios, será la palabra más cercana. Es decir la más probable de ser la original. Ejemplo. Dada la palabra errónea detectada anteriormente: 00110000 Hacemos la comparación bit a bit como se muestra debajo. Supongamos que se asigna 1 si los bit son iguales y 0 si son distintos. La cantidad de 0, indica la cantidad de bit que cambiaron con respecto a una palabra de código correcta. Es decir, es una medida de la distancia de la palabra errónea a la una palabra del código correcta. #1 = 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 2 cambios D=2 0 0 1 #3 = 0 0 1 0 0 1 1 1 0 0 0 0 1 1 1 1 0 1 0 0 0 5 cambiosD=5 0 1 0 #2 = #4 0 1 0 0 1 0 1 1 0 0 0 1 0 0 1 1 1 0 1 0 0 6 cambiosD=6 0 1 0 0 1 0 0 1 0 1 1 0 0 0 1 1 1 0 0 1 1 0 1 1 3 cambiosD=3 0 0 1 Dado que la palabra más cercana a la recibida es la palabra: 00000000. El receptor asume que es la palabra correcta y la envía a otra etapa posterior para la extracción del dato original. Extracción del dato original. El receptor sabe los lugares en los que se encuentra camuflado el dato Las formas de implementación de los códigos es todo un tema de estudio. Para poder aumentar la capacidad del código se original, tanto,más simplemente se fija en las posiciones. debe agregar máspor bit. lo Agregar bits disminuye la velocidad de transmisión. En este caso la comparación en sencilla porque sólo había cuatro palabras de código de dos bit cada una, pero se podrían hacer una idea de lo que sucedería en transmisiones reales. Hay formas mucho más eficientes de realizar las correcciones, aquí se presenta una posibilidad para entender la idea general. Observen que utilizando el código de Hamming , se puede obtener mediante ecuaciones las posiciones de los bits erróneos. Implementar estas ecuaciones es mucho menos costoso que implementar la forma del segundo código. 4 Ing. Cebedio, María Celeste Año: 2020