lunes, 11 de mayo de 2020

Método de Quine-McCluskey



Desarrollado por Willard Van Orman Quine y Edward J. McCluskeyes, para la simplificación de funciones booleanas respaldado por un procedimiento  algorítmico dando así un resultado mas normalizado y minimizado, es similar al mapa de Karnaugh, pero su forma tabular lo hace más eficiente para su implementación en lenguajes computacionales.
El método de Quine – McCluskey es útil para minimizar expresiones algebraicas que describen circuitos lógicos electrónicos.
La cualidad de este método es que es un método tabular y gráfico, ideal para programarlo y obtener así un algoritmo que permita la obtención de expresiones algebraicas minimizadas del circuito en cuestión. 
Pasos para resolver el método

Sea K un álgebra de Boole y f una función booleana de orden n sobre K. Denotamos por B = {0, 1}. Para obtener una expresión simplificada de f realizamos los siguientes pasos: 
Paso 1 
Para saber si podemos aplicar el método de Quine McCluskey es necesario (lo pondré en negritas y en mayúsculas) TENER LA FUNCIÓN EXPRESADA EN FORMA CANÓNICA, ya sea expresada con una suma de minitérminos o un producto de maxitérminos. En este ejemplo vamos a usar minitérminos.
5Quine
Paso 2 
Aquí vamos a determinar en una tabla (ya empezamos a hacer tablas) el número de “1” que tiene cada término involucrado en la función.
6quine
Paso 3 
Aquí vamos a hacer una tabla más (y las que faltan), en ésta vamos a agregar una columna donde vamos a marcar qué términos se combinan y cuáles no. Los vamos a agrupar por el número de unos que contienen. 
7quine
Paso 4 
Con la tabla pasada que creamos, vamos a crear ¡Más tablas! Vamos a formar nuevas tablas combinando lo términos entre grupos de unos. Para que dos términos de puedan combinar, vamos a observar sus combinaciones binarias (los unos y los ceros) y si entre ellas existe SÓLO LA DIFERENCIA DE UN DÍGITO, entonces estos términos se combinan y se marcan con una palomita.
8Quine
¿Te das cuenta de cómo se hacen las combinaciones? Es muy fácil. Por ejemplo, en la combinación del 1 y 3, si notas en la tabla del paso 3, te darás cuenta que comparten un “1” en el bit D y la diferencia de un dígito de encuentra en el bit C del término 3. Eso mismo vamos a hacer con las demás combinaciones.
9Quine
Paso 5 
En este paso vamos a etiquetar a los implicantes primos que encontramos en las tablas, o sea, los asteriscos que tienen las tablas. Y después, procederemos a marcar con una palomita, cada uno de los términos que se combinaron en cada implicante primo.
10quine
Paso 6 – 
Vamos a hacer un análisis por columna y aquella que sólo tenga una palomita, la vamos a encerrar en un círculo.
12quine
Paso 7
Aquí realizaremos un recorrido por cada uno de los renglones donde aparezca al menos una marca y se marcará en el último renglón todas aquellas columnas que tienen marcas
13quine
Paso 8 
Si todas las columnas en el último renglón tienen marcas, se llegó al final de la segunda etapa. Amiga, amigo, terminaste de simplificar por el método de Quine McCluskey.
La función reducida estará formada por todos aquellos implicantes primos que al menos una de sus marcas se encuentra encerrada (echa ojo a las tablas del paso 4):
14Quine

Minimización por el método de QUINE-McCLUSKEY

Se tienen dos formas de desarrollar el método de Quine-McCluskey: con una combinación binaria y una combinación decimal

Combinación Binaria

Sea la función: F(A, B, C, D) = Sm (1, 3, 4, 5, 7, 9, 10, 11, 15) La TABLA 1 presenta la lista de los minitérminos, expresados en forma binaria e indica el número de UNOS que estos contienen:
Tb1.JPG










En la TABLA 2, se agrupan los minitérminos con el mismo número de UNOS.
Tb2.JPG








De la TABLA 2, se combinan los términos que tienen un solo UNO con los que tienen dos UNOS, los que tienen dos UNOS con los que tienen tres UNOS y así sucesivamente. Dos términos se podrán combinar siempre y cuando exista un solo cambio entre ellos, es decir, cuando el lugar en que estén colocados los UNOS coincidan. Por ejemplo, los términos 1 y 3 se combinan debido a lo siguiente:
ABCD + ABCD = ABD(C+ C) = ABXD 0001 0011 00X1
O sea que entre los términos 1 y 3 se eliminó la variable C. Haciendo lo mismo con los demás términos, se obtiene la TABLA 3.
Tb3.JPG









Los términos que en su fila tienen Ö, son los que se combinaron. Los términos con *, son los que no pudieron combinarse, es decir, aquellos que en su fila no tienen Ö. A estos términos se les denomina IMPLICANTES PRIMOS. Para la TABLA 4, se combinan los niveles de agrupación 1-2 con 2-3 y 2-3 con 3-4, tomando en cuenta que coincidan tanto las x como los UNOS.

Tb4.JPG







Como ya se indicó, los implicantes primos son términos que no se combinan con ningún otro, por tanto pueden formar parte de la función reducida. Para determinar cuáles de los implicantes primos forman parte de la función reducida, se hace la siguiente tabla, llamada de implicantes primos.

Este  método lo vamos a dividir en dos etapas:

  1. Primera etapa: a través de las tablas de verdad buscaremos aquellos términos que pueden pertenecer a la función simplificada ( tal y como lo hacíamos en los mapas de karnaugh).
  2. Segunda etapa: Escoger entre los números o términos a los que den una expresión simplificada o minimizada.
Ventajas del método: 

• Es directo
• Seguro
• Se puede utilizar en muchas variables, no hay limitaciones de números.
• Utiliza álgebra de boole para dar respuesta a la ecuación.
• Es ordenado
• Se reduce la variable automáticamente, sin proceso alguno

Desventajas del método: 

• Es muy largo según las variables ingresadas.
• Requiere mucha paciencia.
• Tiende a haber equivocaciones.
• Es extenso así tenga pocas variables.

sábado, 18 de abril de 2020

Códigos de Computadores en Sistemas digitales


1. BCD




Código BCD (Binary-Coded Decimal (BCD) o Decimal codificado). Binario es un estándar para representar números decimales en el sistema binario, en donde cada dígito decimal es codificado con una secuencia de 4 bits.
Con esta codificación especial de los dígitos decimales en el sistema binario, se pueden realizar operaciones aritméticas como suma, resta, multiplicación y división de números en representación decimal, sin perder en los cálculos la precisión ni tener las inexactitudes en que normalmente se incurren con las conversiones de decimal a binario puro y de binario puro a decimal.
La conversión de los números decimales a BCD y viceversa es muy sencilla, pero los cálculos en BCD se llevan más tiempo y son algo más complicados que con números binarios puros.


-Ejemplo:
La codificación en BCD del número decimal 59237 es:
Decimal:            5          9          2         3           7
 BCD:              0101    1001    0010    0011    0111

La representación anterior (en BCD) es diferente de la representación del mismo número decimal en binario puro:

   11100111 01100101

2. ASCII






ASCII 1

El ASCII en informática se conoce como código fuente al texto desarrollado en un lenguaje de programación que debe ser compilado o desarrollado para poder ejecutar en un ordenador, que es una presentación de los caracteres alfanuméricos que es cuando está formado por letras y números y se hace fácil para la comunicación entre los diferentes dispositivos digitales.

El código ASCII representa un conjunto de números desde el 0 al 127, en escala decimal, para el procesador que se trata de una cadena binaria que está compuesto por dos elementos o unidades de 7 dígitos, donde 127 se expresa como 1111111 y resulta especialmente útil para la realización de los sitios web.

También existen muchos formularios que pueden llenar los usuarios y sobre todo si la página tiene diferentes versiones en varios idiomas que son importantes y puede ser muy meticuloso en el procesamiento del texto ingresado para asegurar que se almacene en la base de datos y de esa forma pueda revisar la información y no existan errores a la hora de imprimir los caracteres especiales, porque la combinación de caracteres se emplea para crear y entender mensajes secretos.


3. CÓDIGO GRAY


Consiste en una ordenación de <math>2^n</math> números binarios de tal forma que cada número sólo tenga un dígito binario distinto a su predecesor. Esta técnica de codificación se originó cuando los circuitos lógicos digitales se realizaban con válvulas de vacío y dispositivos electromecánicos. Los contadores necesitaban potencias muy elevadas a la entrada y generaban picos de ruido cuando varios bits cambiaban simultáneamente.  
El uso de código Gray garantizó que en cualquier transición variaría tan sólo un bit. En la actualidad, el código Gray se sigue empleando para el diseño de cualquier circuito electrónico combinacional mediante el uso de un Mapa de Karnaugh, ya que el principio de diseño de buscar transiciones más simples y rápidas entre estados sigue vigente, a pesar de que los problemas de ruido y potencia se hayan reducido. 
Hay varios algoritmos para generar una secuencia de código Gray (y varios códigos posibles resultantes, en función del orden que se desee seguir), pero el más usado consiste en cambiar el bit menos significativo que genera un nuevo código. Este es un código gray de cuatro bits generado con dicho algoritmo:


Códigos
Para convertir un número binario (en Base 2) a código Gray, simplemente se le aplica una operación XOR con el mismo número desplazado un bit a la derecha, sin tener en cuenta el acarreo.
Ejemplo:
1010 (Base 2) a gray
1010

101

----

1111


4. Código FIELDATA



Es el juego de caracteres original utilizado internamente en UNIVAC ordenadores de la serie 1100 , que representa la sexta parte de la palabra de 36 bits de ese equipo. El sucesor directo del UNIVAC 1100 es las Unisys serie 2.200 computadoras, que utilizan Fieldata hasta nuestros días (aunque ASCII ahora también es común con cada carácter codificado en 1/4 de una palabra, o 9 bits). Debido a que algunos de los personajes Fieldata no están representados en ASCII, el Unisys 2200 utiliza "^" '"' y los caracteres '_' para los códigos 04, 076 y 077 (octal), respectivamente.

El proyecto Fieldata corrió desde 1956 hasta que fue detenido durante una reorganización en 1962.

Caracteres Fieldata:


Bit (1)Indicator Bits (2)Detail Bits (4)Binary Bits (7)DecimalOctalGlyphName
0000000000000000@MasterSpace
0000001000000111[
0000010000001022]
0000011000001133#
0000100000010044ΔDelta
0000101000010155Blank
0000110000011066A
0000111000011177B
00010000001000810C
00010010001001911D
000101000010101012E
000101100010111113F
000110000011001214G
000110100011011315H
000111000011101416I
000111100011111517J
001000000100001620K
001000100100011721L
001001000100101822M
001001100100111923N
001010000101002024O
001010100101012125P
001011000101102226Q
001011100101112327R
001100000110002430S
001100100110012531T
001101000110102632U
001101100110112733V
001110000111002834W
001110100111012935X
001111000111103036Y
001111100111113137Z
010000001000003240)
010000101000013341-
010001001000103442+
010001101000113543<
010010001001003644=
010010101001013745>
010011001001103846&
010011101001113947$
010100001010004050*
010100101010014151(
010101001010104252 %
010101101010114353 :
010110001011004454 ?
010110101011014555 !
010111001011104656,
010111101011114757\
0110000011000048600
0110001011000149611
0110010011001050622
0110011011001151633
0110100011010052644
0110101011010153655
0110110011011054666
0110111011011155677
0111000011100056708
0111001011100157719
011101001110105872'
011101101110115973 ;
011110001111006074/
011110101111016175.
011111001111106276¤Lozenge
011111101111116377Not Equal
1000000100000064100Blank/Idle
1000001100000165101Control Upper Case
1000010100001066102Control Lower Case
1000011100001167103Control Tab
1000100100010068104Control Carriage Return
1000101100010169105Control Space
1000110100011070106a
1000111100011171107b
1001000100100072110c
1001001100100173111d
1001010100101074112e
1001011100101175113f
1001100100110076114g
1001101100110177115h
1001110100111078116i
1001111100111179117j
1010000101000080120k
1010001101000181121l
1010010101001082122m
1010011101001183123n
1010100101010084124o
1010101101010185125p
1010110101011086126q
1010111101011187127r
1011000101100088130s
1011001101100189131t
1011010101101090132u
1011011101101191133v
1011100101110092134w
1011101101110193135x
1011110101111094136y
1011111101111195137z
1100000110000096140Dial 0
1100001110000197141Dial 1
1100010110001098142Dial 2
1100011110001199143Dial 3
11001001100100100144Dial 4
11001011100101101145Dial 5
11001101100110102146Dial 6
11001111100111103147Dial 7
11010001101000104150Dial 8
11010011101001105151Dial 9
11010101101010106152Start of Control Block
11010111101011107153Start of Block
11011001101100108154Spare
11011011101101109155Spare
11011101101110110156Spare
11011111101111111157Spare
11100001110000112160Ready to Transmit
11100011110001113161Ready to Receive
11100101110010114162Not Ready to Receive
11100111110011115163End of Blockette
11101001110100116164End of Block
11101011110101117165End of File
11101101110110118166End of Control Block
11101111110111119167Acknowledge Receipt
11110001111000120170Repeat Block
11110011111001121171Spare
11110101111010122172Interpret Sign
11110111111011123173Non-Interpret Sign
11111001111100124174Control Word Follows
11111011111101125175S.A.C.
11111101111110126176Special Character
11111111111111127177Delete


5. CÓDIGO BINARIO


El código binario es el sistema de representación de textos, o procesadores de instrucciones de ordenador utilizando el sistema binario (sistema numérico de dos dígitos, o bit: el "0" y el "1"). En informática y telecomunicaciones, el código binario se utiliza con variados métodos de codificación de datos, tales como cadenas de caracteres, o cadenas de bits. Estos métodos pueden ser de ancho fijo o ancho variable.

En un código binario de ancho fijo, cada letra, dígito, u otros símbolos, están representados por una cadena de bits de la misma longitud, como un número binario que, por lo general, aparece en las tablas en notación octal, decimal o hexadecimal.

GENERADORES Y DETECTORES DE PARIDAD

Este tipo de circuitos permite calcular el número de bits que valen 1, dentro de un dato o palabra binaria de n bits. Tal y como se mues...