You are on page 1of 9

En el tema de los codificadores vimos en qué consistía un codificador, es decir,

explicábamos cómo pasar una información utilizada usualmente a una forma


codificada que pueda entender nuestro ordenador. Seguidamente, describiremos
el modo de realizar la función opuesta mediante los llamados decodificadores.

Decodificador básico de dos entradas y cuatro salidascontruido a partir de


compuertas NAND

En un sistema digital, como puede ser nuestro PC, se pueden transmitir tanto
instrucciones como números mediante niveles binarios o trenes de impulsos. Si,
por ejemplo, los cuatro bits de un mensaje se disponen para transmitir órdenes, se
pueden lograr 16 instrucciones diferentes, esto es lo que denominábamos,
información codificada en sistema binario. Otras veces nos interesa que un
conmutador de varias posiciones pueda funcionar de acuerdo con este código, es
decir, para cada uno de los dieciséis códigos debe ser excitada una sola línea. A
este proceso de identificación de un código particular se le denomina
decodificación.

Dicho de otra manera, un decodificador realiza la función opuesta a la de codificar,


es decir, convierte un código binario de varias entradas en salidas exclusivas.
Podemos distinguir dos tipos básicos de decodificadores: los excitadores y los no
excitadores. En el primero de los casos tenemos, por ejemplo, aquellos cuya
misión es convertir el código BCD de sus entradas al formato de salida necesario
para excitar un visualizador numérico o alfanumérico.

 
Decodificador de cuatro entradas y siete salidas del tipo no excitado

Para entender el segundo de los tipos veamos algunos ejemplos de ellos.


Tomemos un decodificador de dos entradas. Este hará corresponder, a cada una
de las cuatro palabras posibles de formar con las dos entradas, una de las salidas.
Para la salida Y0, será 1 cuando los bits de entrada A y B son 0. Luego, la
expresión booleana que le corresponde es: Y0 = /A * /B. El mismo razonamiento
se puede repetir para el resto de salidas.

Dentro de este mismo tipo de decodificadores tenemos el BCD


a decimal. Supongamos que deseamos decodificar una
instrucción BCD que represente un número dígito decimal,
como puede ser el 5; esta operación se puede llevar a cabo
con una puerta AND de cuatro entradas excitadas por los
cuatro bits BCD. Por ejemplo, la salida de la puerta AND será 1
si las entradas son 1, 0, 1, 0. Puesto que este código
representa el número decimal 5, la salida se señala como línea
5.

Si completamos un decodificador BCD a decimal, éste tendrá


cuatro entradas, normalmente denominadas A, B, C y D, y diez
líneas de salida. Las entradas complementarias, /A, /B, /C y /D, se pueden obtener
por medio de inversores dentro del propio integrado. Habitualmente, para su
construcción se emplean puertas NAND y, por lo tanto, una salida es 0 si el código
resulta correcto en BCD y será 1 para cualquier otro código no válido. A este
sistema digital también se le denomina decodificador 4 a 10, indicando que una
entrada de cuatro bits selecciona una de las diez líneas de salida.

 
En este decodificador, los estados 1010, 1011, 1100, 1110, 1101 y 1111 no están
incluidos en el código BCD, y se consideran como datos falsos de entrada
produciéndose para todas ellas un 1 en todas las salidas, como se indicó
anteriormente. Luego, estamos ante un decodificador BCD a decimal con rechazo
de datos falsos de entrada.

También se puede construir un decodificador BCD a decimal que no rechace los


datos falsos de entrada. Este decodificador minimiza el número de entradas de las
puertas NAND. Así, por ejemplo, si se presentase en las entradas del
decodificador la combinación 1111, aparecería señal en las salidas 7 y 9. Es decir,
se han tomado los datos de entrada falsos como condiciones opcionales.

En muchas aplicaciones es deseable que la decodificación se realice únicamente


durante intervalos de tiempo específicos, de forma que sean rechazados los datos
de entrada que no parezcan durante esos intervalos. Esto se consigue añadiendo
una entrada denominada "strobe". Cuando esta señal es 1 se ejecuta la
decodificación y cuando es 0 se inhibe la decodificación. Dependiendo de que el
decodificador rechace o no los datos falsos, el modo de utilizar la señal de "strobe"
debe ser distinto.

Este tipo de circuito lo podemos observar en la figura correspondiente, donde la


inhibición para la decodificación se logra mediante una entrada extra en cada
puerta NAND del decodificador. Cuando esta entrada es 0 las salidas son todas 1
y no se permite la decodificación.

Dentro del tipo de decodificadores excitadores podemos poner


como ejemplo uno de los más utilizados en la electrónica
digital: el llamado decodificador excitador BCD - 7 segmentos.

En la actualidad, se utilizan normalmente una serie de


dispositivos de representación visual fabricados a base de
siete segmentos o barras independientes, mediante las cuales
se pueden presentar los dígitos decimales. Estos segmentos
pueden ser cristales líquidos, diodos LED, etc. Para excitar a
estos dispositivos se han desarrollado toda una gama de
decodificadores que reciben la información, procedente de un ordenador o de un
aparato de medida, en código BCD y entregan siete salidas preparadas para
alimentar los siete segmentos que componen cada dígito decimal. Veamos la
estructura de un decodificador excitador BCD-7 segmentos de los más sencillos.

Típica aplicación de un decodificador conectado a un LED

Dado que el código BCD permite hasta 16 combinaciones diferentes y sólo se


utilizan 10 para dígitos decimales y 5 para signos especiales, la combinación que
queda apaga todos los segmentos. Existe una entrada añadida a las de los cuatro
bits del código, que sirve para impedir o permitir la salida del decodificador una
vez representadas las entradas. Por lo tanto, el decodificador será un sistema
combinacional de cinco entradas y siete salidas.

Representamos la tabla de verdad correspondiente solamente a los diez dígitos


decimales, teniendo en cuenta que la entrada de inhibición o "strobe" siempre se
encuentra a 1:

Entradas
abcdefg SIGNO
ABCD
0000 1111110 0
1000 0110000 1
0100 1101101 2
1100 1111001 3
0010 0110011 4
1010 1011011 5
0110 0011111 6
1110 1110000 7
0001 1111111 8
1001 1110011 9

A partir de esta tabla se pueden obtener todas las expresiones booleanas para la
construcción de cada una de las salidas del código de 7 segmentos.

La representación visual de los diez dígitos decimales se suele realizar a


través del denominado código de visualización de siete segmentos

La entrada de inhibición se puede aplicar de diversas formas y en distintas etapas,


según convenga, para la realización física del circuito integrado.

 
Los decodificadores suelen ir conectados a las entradas de etapa de
presentación visual, como en el caso de la conexión de un cristal líquido

Hemos de tener presente que, según el sistema de visualización utilizado en la


información, hará falta un tipo distinto de decodificador: siete segmentos, matrices
de puntos, impresora, etc. Los circuitos combinatorios decodificadores se
diseñarán, dependiendo de su complejidad, a partir de una memoria ROM.
Codificar: Encripta una cadena de texto, no requiere contraseña, retorna una cadena de
caracteres y su uso es

=Objeto.Codificar('Mi Cadena a Encriptar")

retorna "4D6920436164656E61206120456E63726970746172"

Este metodo es desencriptado por "Decodificar"

CodificarSimple: Este metodo integra Codificar, ademas necesita una contraseña para
encriptar la cedena de texto, retorna una cadena de caracteres y su uso es:

=Objeto.CodificarSimple('Mi cadena a encriptar','MiContraseña')

retorna " 9AD263D2CFD8D7CFD485526DCEB1D2E0DDE2D5D4D7"

Este metodo es Desencriptado por " DecodificarSimple"

CodificarBlowfish: Este metodo integra el anterior e implementa el algoritmo de


Blowfish, al igual que el anterior tambien necesita una contraseña, retorna una cadena de
caracteres y su uso es:

=Objeto.CodificarBlowfish('Mi cadena a encriptar','MiContraseña')

retorna "BF5E4F0609B44091C995
4E12C5E917886A07E7AB9C
3F096C6ECE1610BBA71260
6ECE1610BBA712606ECE16
10BBA712606ECE1610BBA7
12606ECE1610BBA712605D
46408A59B1335D"

Este metodo es Desencriptado por "DecodificarBlowfish"

Decodificar: Desencripta una cadena de texto, no requiere contraseña, su uso es

=Objeto.Decodificar('4D6920436164656E61206120456E63726970746172')
DecodificarSimple: Este metodo integra Decodificar, ademas necesita una contraseña
para desencriptar la cedena de texto, su uso es:

=Objeto.DecodificarSimple('9AD263D2CFD8D7CFD485526DCEB1D2E0DDE2D5D4
D7','MiContraseña')

DecodificarBlowfish: Este metodo integra el anterior e implementa el algoritmo de


Blowfish, al igual que el anterior tambien necesita una contraseña, su uso es:

=Objeto.CodificarBlowfish('BF5E4F0609B44091C995
4E12C5E917886A07E7AB9C
3F096C6ECE1610BBA71260
6ECE1610BBA712606ECE16
10BBA712606ECE1610BBA7
12606ECE1610BBA712605D
46408A59B1335D','MiContraseña')

Ejemplo:

*!* Programa: "blowfish ejemplo.prg"

LOCAL lcCadenaA as string, lcCadenaB as String


SET CLASSLIB TO "blowfish.vcx"

*!* EJEMPLO Codificar y Decodificar

o=CREATEOBJECT('blowfish.blowfish')
lcCadenaA=o.Codificar('MiNombre')
? lcCadenaA && Retorna "4D6920436164656E61206120456E63726970746172"
? o.Decodificar(lcCadenaA) && Retorna MiNombre

*!* EJEMPLO CodificarSimple y DecodificarSimple

lcCadenaA=o.CodificarSimple('Mi cadena a encriptar','MiContraseña')


? lcCadenaA && Retorna
"9AD263D2CFD8D7CFD485526DCEB1D2E0DDE2D5D4D7"
? o.DecodificarSimple(lcCadenaA,'MiContraseña') && Retorna MiNombre

*!* EJEMPLO CodificarBlowfish y DecodificarBlowfish

lcCadenaA=o.CodificarBlowfish('Mi cadena a encriptar','MiContraseña')


? lcCadenaA && Retorna
"BF5E4F0609B44091C9954E12C5E917886A07E7AB9C3F096C6ECE1610BBA7126
06ECE1610BBA712606ECE1610BBA712606ECE1610BBA7
12606ECE1610BBA712605D 46408A59B1335D"
?o.DecodificarBlowfish(lcCadenaA,'MiContraseña') && Retorna MiNombre

http://www.tortugaproductiva.galeon.com/docs/blowfish/index.html

You might also like