Está en la página 1de 102

APÉNDICE G

CODIFICACIÓN DE LA INFORMACIÓN

La evolución de la Informática ha sido consecuencia directa del modo de


codificar la información. Algo tan etéreo como son los datos impone dificultades en su
tratamiento si no es posible establecer una magnitud que ayude a cuantificar los
valores. Ahora bien, ¿cuál debe ser la medida? La información no se mide en longitud,
peso o volumen. Las premisas sentadas por George Boole fueron las apropiadas para
que casi 100 años después, Claude Shanon, matemático e ingeniero estadounidense,
descubriese la relación que se podía establecer entre información, Álgebra de Boole y
Electrónica. Una vez llegados a este punto, la solución era relativamente sencilla...

La Historia informática (tal y como se detalla en el primer capítulo), está llena


de diseños e ingenios que intentaban –y conseguían en ocasiones– manejar la
información. La dificultad de codificación de la información se suplía con esfuerzo del
usuario, que era quien debía introducir los parámetros de forma manual para conseguir
los resultados... Artificios mecánicos, en su gran mayoría, hacían el resto.

La facilidad de interpretación de la información a través del Álgebra de Boole


supone un avance importante del que ni tan siquiera el propio Boole fue consciente. El
hecho de reducir el universo informacional a sólo dos dígitos, sin perder por ello
precisión o detalle en los datos, simplifica colosalmente el problema de la gestión.

Existen otras opciones de codificación de la información, como puede ser el


caso de la Lógica Difusa de la compañía Omrom que, además de establecer dos
niveles lógicos opuestos entre sí, contempla una infinidad de valores entre ambos,
pero lo cierto es que, a día de hoy, seguimos trabajando según las directrices que hace
más de un siglo (1847) marcó un inglés en El análisis matemático del pensamiento.
Ésta es la importancia de la codificación y el porqué de este capítulo.
2 HARDWARE MICROINFORMÁTICO © RA-MA

G.1. CUANTIFICACIÓN DE LA INFORMACIÓN


Antes de poder abordar el modo de establecer una mesura en la información, es
necesario definir qué se entiende por información. Lo cierto es que existen numerosas
definiciones según el autor que se desee consultar. Los hay que definen el concepto
como una unidad básica resultado de la inversa del logaritmo neperiano de la
probabilidad de que ocurra un proceso, hasta los que lo interpretan como un ente
abstracto con capacidad de representación. Quizás, entre todas ellas, la más clara sea
la que entiende la información como el cambio producido desde un espacio del
universo con respecto a otro mediante un mensaje.

Yo, particularmente, me inclino por el ejemplo propuesto en uno de sus libros


por D. José Luis Lorente Guash, profesor de Física de la UNED. Así, supóngase una
moneda que se lanza al aire. Esta simple acción denota, además de una incertidumbre
sobre el resultado (cara o cruz), una falta de información que es, precisamente, el lado
por el que caerá la moneda. Admitida, por tanto, la idea de que la moneda aportará
información en función de su posición de caída, se puede establecer un símil válido
con un bit ya que la citada posición podrá variar entre dos posibilidades: cara o cruz.
De este modo, se dispone de un elemento que, susceptible de adoptar uno de dos
estados opuestos entre sí, aporta una información concreta. Ésa es la idea de un bit.

G.2. SISTEMAS DE NUMERACIÓN


Habitualmente trabajamos en sistema decimal, es decir, contamos desde 0 hasta
9 y, a partir de ahí, añadimos un nuevo dígito y comenzamos de nuevo la numeración.
Cada vez que lleguemos a 9, incrementaremos el número añadido hasta que éste
también llegue a 9, momento en el que se repetirá el proceso descrito. Este sistema de
numeración, heredado de los árabes, permite un fácil manejo a la vez que una
importante comodidad aritmética. Matemáticamente, su definición corresponde a la
suma de N paquetes donde cada uno está formado por el producto del dígito original
por la base de numeración elevada a un peso determinado. Dicho peso se obtiene de la
posición del dígito original, comenzando a contar de derecha a izquierda menos uno,
es decir:
Número = Nn·BPn-1+ Nn-1·BPn-2+ ...
donde

Nx corresponde al dígito de posición x en el número N


B corresponde a la base de numeración que, en este caso, es 10.
Pn-1 corresponde al peso del dígito de posición n-1

Por ejemplo, el número 128 formaría tres paquetes (1, 2 y 8), donde cada uno
multiplicaría el dígito en cuestión (nuevamente 1, 2 y 8) por la base, que en nuestro
caso es 10, elevada al peso del dígito menos uno. Así, según el orden, se obtendrían
pesos de 1 para el 8, 2 para el 2 y 3 para el 1 (contando de derecha a izquierda). Si a
© RA-MA APÉNDICE G: CODIFICACIÓN DE LA INFORMACIÓN 3

éstos se les resta la unidad, se obtendría los pesos (de derecha a izquierda) de 0, 1 y 2.
El resultado es, por tanto:

128 = 1·102+2·101+8·100 = 1·100+2·10+8·1 = 100+20+8 = 128

Según su base de numeración, existen distintos sistemas. Otro ejemplo habitual


es el horario. Se sugiere al lector que determine la forma de numeración en la
formación de minutos, segundos, días, meses... No obstante, el sistema decimal no es
el único usado. Dependiendo de la finalidad, se pueden usar otras bases de numeración.
Este capítulo describirá las más comunes.

G.3. ANALÓGICO VERSUS DIGITAL


Existe la falsa creencia de que un sistema digital es más exacto que uno
analógico. Nada más lejos de la realidad: un sistema digital dispone de un número
finito de valores para representar cantidades y, por tanto, es preciso realizar una
aproximación. Un sistema analógico dispone de infinitas posibilidades de
representación. Ahora bien, en un sistema analógico es la persona quien debe
interpretar qué valor se está representando, mientras que en un sistema digital se limita
a leerlo. Por ejemplo, el velocímetro digital de un coche indicará la velocidad del
mismo con la exactitud con la que ha sido definido el marcador (número de dígitos).
De este modo, si el velocímetro dispone de tres dígitos para números enteros y uno
para decimales, si circula a 80,876 Km/h será preciso aproximar a 80,9 Km/h. El
mismo caso en un velocímetro analógico (de “aguja”), representaría exactamente el
valor de la velocidad pero sería el usuario quien, probablemente, no fuese capaz de
interpretarlo con tanta exactitud.

G.4. COMPLEMENTO Y BASE DE NUMERACIÓN


Por complemento de un número se entenderá aquel que, sumado al número
original, obtenga la base de numeración menos la unidad. Supóngase la necesidad de
encontrar en el sistema decimal el número complementario al 3. El planteamiento y
desarrollo responde a:

Complemento (N) = Base Numeración - N –1; Complemento (3) = 10 - 3 - 1 = 6

Base de un sistema responderá al número de símbolos diferentes definidos


dentro del lenguaje. Así, se definirían:

Base binaria (2) Binario = {0, 1}


Base octal (8) Octal = {0, 1, 2, 3, 4, 5, 6, 7}
Base decimal (10) Decimal = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Base hexadecimal (16) Hexadecimal = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}
4 HARDWARE MICROINFORMÁTICO © RA-MA

G.5. PONDERACIÓN EN LOS CÓDIGOS


Dentro de los diferentes códigos que existen se puede establecer una división
para catalogarlos: los códigos ponderados y los no ponderados. Los códigos
ponderados son aquellos que, como su nombre indica, tienen un valor concreto. Dicho
valor lo recibe el dígito según la posición que ocupa dentro del número (se dice que
tienen “peso”).

De esta forma, dentro de los códigos ponderados están el binario natural, el


BCD o el AIKEN y dentro de los no ponderados aparecen el exceso a 3 y el código
gray (o reflejado).

G.6. SISTEMA BINARIO


Está basado en el uso exclusivo de dos números: 0 y 1. Esto facilita su posterior
identificación electrónica, ya que el modo de funcionamiento de los semiconductores
se realizará en corte o saturación, siendo sencillo el asociar un estado de tensión para
cada número.

El sistema de formación es el mismo que el decimal pero sustituyendo la base


10 por base 2. Para convertir cualquier número decimal a binario, se realizan sucesivas
divisiones por dos hasta llegar a un resto de 0 ó 1. Finalmente se “recogen” los
módulos y el último cociente formando así el número binario. Así, la conversión del
número 27 a binario, correspondería a:

27 2
1 13 2
1 6
0
2
3
1
2
1
} 11011

Tabla G–1 Conversión de decimal a binario

Luego 27 en binario es el número 11011. Para realizar la conversión de un


número binario a decimal, el proceso consiste en multiplicar cada dígito del número
binario obtenido por 2 elevado a la posición que ocupa el dígito comenzando por 0.
Dicha posición se cuenta comenzando por la derecha. Al final, se suman los resultados
obtenidos y se obtiene el número decimal. Realicemos la conversión del número
11011, obtenido como resultado en el último ejercicio:

11011=1·24 + 1·23 + 0·22 + 1·21 + 1·20=16 + 8 + 2 + 1=27


© RA-MA APÉNDICE G: CODIFICACIÓN DE LA INFORMACIÓN 5

G.7. SISTEMA OCTAL


Otro sistema de numeración usado es el denominado octal. Recibe su nombre
del número de elementos que lo conforman. La numeración evoluciona de forma
idéntica a la decimal desde 0 hasta 7. Una vez superado este valor, se añade un dígito
más comenzando la sucesión. La equivalencia con binario y decimal sería la siguiente:

DECIMAL BINARIO OCTAL DECIMAL BINARIO OCTAL


0 000 0 4 100 4
1 001 1 5 101 5
2 010 2 6 110 6
3 011 3 7 111 7
Tabla G–2 Equivalencias base 10, 2, 8

Para pasar un número en octal a binario, basta con tomar independientemente


cada uno de sus dígitos y transformarlos por su equivalente binario en tres bits. Así, el
número 436 en base octal correspondería al 100011110 en binario, tal y como se
demuestra:

4 3 6
= 100011110
100 011 110

Para realizar la conversión de binario a octal, el proceso es el inverso: se


agruparán elementos de tres en tres y se sustituirán por su equivalente en octal. Así, el
ejercicio anterior tendría la conversión de:

100 011 110


= 436
4 3 6

Si se desea pasar del octal al decimal, la conversión se realiza igual que si se


tratase de un número binario, a diferencia de que la base de numeración será 8.
Haciendo la inversa del ejercicio anterior obtendríamos:

436(8 = 4·82 + 3·81 + 6·80 = 4·64 + 3·8 + 6·1 = 256 + 24 + 6 = 286(10

La última de las conversiones pasaría por transformar el sistema decimal en


octal, para lo que será necesario realizar divisiones sucesivas por 8 (base de la
numeración) y reservar los restos y el último cociente. Éstos se tomarán de derecha a
izquierda.

286 8
6 35
3
8
4 } 436

Tabla G–3 Conversión de decimal a octal


6 HARDWARE MICROINFORMÁTICO © RA-MA

G.8. SISTEMA HEXADECIMAL


Este sistema aparece como una forma condensada del sistema binario. La base
de trabajo es 16 y se usa habitualmente en calculadoras o máquinas pequeñas. Es más
“compacto” que el binario, ya que aúna grupos de cuatro dígitos, opción que es
aprovechada por pequeñas máquinas de 4, 8, 16, 32... bits que lo usan como sistema
de numeración. Básicamente responde a una tabla en la que se realizan los oportunos
cambios:

DECIMAL BINARIO HEXADECIMAL DECIMAL BINARIO HEXADECIMAL


0 0000 0 8 1000 8
1 0001 1 9 1001 9
2 0010 2 10 1010 A
3 0011 3 11 1011 B
4 0100 4 12 1100 C
5 0101 5 13 1101 D
6 0110 6 14 1110 E
7 0111 7 15 1111 F
Tabla G–4 Equivalencias base 10, 2, 16

Así, si se desea pasar un número de binario a hexadecimal, bastará con aunarlo


en grupos de cuatro dígitos y transcribir directamente su equivalente en hexadecimal.
Supóngase el número 1101010011110110:

1101 0100 1111 0110


= D4F6
D 4 F 6

Si la operación fuese al contrario (pasar de hexadecimal a binario), el proceso


sería el inverso: se deben observar cada uno de los dígitos y transcribirlos por su
equivalente en binario de cuatro bits. Supóngase el caso justo inverso al ya hallado: el
número D4F6:

D 4 F 6
= 1101010011110110
1101 0100 1111 0110

comprobándose así la correcta traslación de un valor entre distintos sistemas de


numeración. El ejemplo puede hacerse extensivo al sistema decimal.

G.9. CÓDIGO ASCII


Se trata del código por excelencia de representación de caracteres en el PC. A
estas alturas es harto sabido por parte del lector que el PC trabaja con un sistema
difícilmente comprensible (o, cuando menos, incómodo) para el usuario: el código
binario. Realmente y según las necesidades se usa binario o hexadecimal. Por otro
© RA-MA APÉNDICE G: CODIFICACIÓN DE LA INFORMACIÓN 7

lado, el usuario utiliza el denominado “lenguaje natural” que implica las mismas
dificultades de comprensión para la máquina que el binario para las personas.

Así, surge el código ASCII. Este código, formado por ocho bits, lo que origina
un total de 256 caracteres numerados del 0 al 255 (28=256), recoge todas las
posibilidades (o casi todas) de representación de un idioma. Así, se recogerán aquí
todas las letras, caracteres identificativos y específicos de un idioma (como puede ser
la letra eñe) e, incluso, pulsaciones de teclado como son Enter, borrado, símbolo nulo...
Asimismo, los 32 primeros caracteres (del 0 al 31) tendrán la consideración de
caracteres especiales o lo que es lo mismo, con alguna función asociada. A partir del
código ASCII número 32 comienza la relación de símbolos normales (caracteres
semigráficos, números, letras...). En este mismo capítulo se adjunta una relación del
código ASCII para mayor abundancia de datos. A este respecto resulta interesante
conocer que existió una primera versión del código ASCII formada por 7 bits que
limitaba el conjunto a 128 caracteres (27=128).

Así, la máquina realizará sus cálculos en binario y, cuando deba presentarlos al


usuario, hará una conversión a través del código ASCII. En caso contrario el proceso
se invierte: el usuario introducirá datos en un formato ASCII y se hará una traslación a
binario. Cada país tiene su propia página de códigos que recoge el código ASCII
específico de un idioma. En el caso de España, la página de códigos es la 034 aunque
también resulta válida la multilingüe, recogida con el número 850.

G.10. CÓDIGO UNICODE


El conjunto de caracteres Unicode pretende ser la respuesta a las limitaciones
que el código ASCII impone al variar la página de códigos según los países. Dado que
los países cada vez comparten más (política, moneda, empresas...), empieza a
precisarse un código que recoja estas necesidades. Por poner un ejemplo significativo,
el símbolo del euro (€) tiene ya sentido en varios países.

Así surge el Unicode. Se trata de un conjunto de caracteres mucho más amplio


que el ASCII convencional donde el rango posible de caracteres se establece entre 0 y
65.536, como consecuencia de su formación por ocho 16 bits (216=65.536). Como el
lector recordará, el ASCII está formado por ocho bits, lo que le limita a 256 caracteres
(28=256). Hay una correspondencia directa entre los 127 primeros caracteres del
código ASCII y el Unicode.

Es habitual referenciar a los caracteres del código Unicode en hexadecimal (del


0000 al FFFF) dada su compresión, usando 4 dígitos y ya hay muchos lenguajes de
programación que empiezan a priorizarlo sobre el ASCII, como puede ser el caso de
Java. El Unicode incluye caracteres, entre otros, del latín, griego, arábico, cirílico,
hebreo, katakana y hangul. En definitiva, representa los caracteres de la mayoría de los
idiomas que tienen representación escrita en el ámbito mundial.
8 HARDWARE MICROINFORMÁTICO © RA-MA

G.11. EQUIVALENCIA ENTRE CÓDIGOS


Sirva a modo de resumen las siguientes conversiones entre códigos con los
procesos implicados. Se han usado los códigos más comunes, invitando al lector a que
reproduzca otros ejemplos con los códigos que crea convenientes:

Decimal → Binario

427(10 = 110101011(2

427 2
1 213 2
1 106 2
0 53 2
1 26 2
0 13 2
1 6 2
0 3 2
1 1
Binario → Decimal

110101011(2 = 1·28 + 1·27 +1·25 +1·23 +1·21 +1·20 = 256 + 128 + 32 + 8 + 2 + 1 = 427(10

Binario → Octal Octal → Binario

110101011(2 = 110 101 011 = 653(8 653(8 = 6 5 3 = 110101011(2


6 5 3 110 101 011

Octal → Decimal

653(8 = 6·82 + 5·81 + 3·80 = 6·64 + 5·8 + 3·1 =384+40+3 = 427(10

Decimal → Octal Decimal → Hexadecimal

427(10 8 427(10 16
3 53 8 11 26 16
5 6 10 1

Binario → Hexadecimal Hexadecimal → Binario

110101011(2 = 1 1010 1011 = 1ABh 1ABh= 1 A B = 110101011(2


1 A B 1 1010 1011

Hexadecimal → Decimal

1ABh = 1·162 +A·161 +B·160 = 256 + 160 + 11 = 427(10


© RA-MA APÉNDICE G: CODIFICACIÓN DE LA INFORMACIÓN 9

Se anexa a continuación una tabla resumen de equivalencias con los códigos


más usados (Decimal – Binario – Octal – Hexadecimal - ASCII):

DE BINARIO OC HE A DE BINARIO OC HE A DE BINARIO OC HE A DE BINARIO OC HE A


0 00000000 000 00 64 01000000 100 40 @ 128 10000000 200 80 192 11000000 300 C0 À
1 00000001 001 01 65 01000001 101 41 A 129 10000001 201 81 193 11000001 301 C1 Á
2 00000010 002 02 66 01000010 102 42 B 130 10000010 202 82 ‚ 194 11000010 302 C2 Â
3 00000011 003 03 67 01000011 103 43 C 131 10000011 203 83 ƒ 195 11000011 303 C3 Ã
4 00000100 004 04 68 01000100 104 44 D 132 10000100 204 84 „ 196 11000100 304 C4 Ä
5 00000101 005 05 69 01000101 105 45 E 133 10000101 205 85 … 197 11000101 305 C5 Å
6 00000110 006 06 70 01000110 106 46 F 134 10000110 206 86 † 198 11000110 306 C6 Æ
7 00000111 007 07 71 01000111 107 47 G 135 10000111 207 87 ‡ 199 11000111 307 C7 Ç
8 00001000 010 08 72 01001000 110 48 H 136 10001000 210 88 ˆ 200 11001000 310 C8 È
9 00001001 011 09 73 01001001 111 49 I 137 10001001 211 89 ‰ 201 11001001 311 C9 É
10 00001010 012 0A 74 01001010 112 4A J 138 10001010 212 8A Š 202 11001010 312 CA Ê
11 00001011 013 0B 75 01001011 113 4B K 139 10001011 213 8B ‹ 203 11001011 313 CB Ë
12 00001100 014 0C 76 01001100 114 4C L 140 10001100 214 8C Œ 204 11001100 314 CC Ì
13 00001101 015 0D 77 01001101 115 4D M 141 10001101 215 8D 205 11001101 315 CD Í
14 00001110 016 0E 78 01001110 116 4E N 142 10001110 216 8E 206 11001110 316 CE Î
15 00001111 017 0F 79 01001111 117 4F O 143 10001111 217 8F 207 11001111 317 CF Ï
16 00010000 020 10 80 01010000 120 50 P 144 10010000 220 90 208 11010000 320 D0 Ð
17 00010001 021 11 81 01010001 121 51 Q 145 10010001 221 91 ‘ 209 11010001 321 D1 Ñ
18 00010010 022 12 82 01010010 122 52 R 146 10010010 222 92 ’ 210 11010010 322 D2 Ò
19 00010011 023 13 83 01010011 123 53 S 147 10010011 223 93 “ 211 11010011 323 D3 Ó
20 00010100 024 14 84 01010100 124 54 T 148 10010100 224 94 “ 212 11010100 324 D4 Ô
21 00010101 025 15 85 01010101 125 55 U 149 10010101 225 95 • 213 11010101 325 D5 Õ
22 00010110 026 16 86 01010110 126 56 V 150 10010110 226 96 – 214 11010110 326 D6 Ö
23 00010111 027 17 87 01010111 127 57 W 151 10010111 227 97 — 215 11010111 327 D7 ×
24 00011000 030 18 88 01011000 130 58 X 152 10011000 230 98 ˜ 216 11011000 330 D8 Ø
25 00011001 031 19 89 01011001 131 59 Y 153 10011001 231 99 ™ 217 11011001 331 D9 Ù
26 00011010 032 1A 90 01011010 132 5A Z 154 10011010 232 9A š 218 11011010 332 DA Ú
27 00011011 033 1B 91 01011011 133 5B [ 155 10011011 233 9B › 219 11011011 333 DB Û
28 00011100 034 1C 92 01011100 134 5C \ 156 10011100 234 9C œ 220 11011100 334 DC Ü
29 00011101 035 1D 93 01011101 135 5D ] 157 10011101 235 9D 221 11011101 335 DD Ý
30 00011110 036 1E 94 01011110 136 5E ^ 158 10011110 236 9E 222 11011110 336 DE Þ
31 00011111 037 1F 95 01011111 137 5F _ 159 10011111 237 9F Ÿ 223 11011111 337 DF ß
32 00100000 040 20 96 01100000 140 60 ` 160 10100000 240 A0 224 11100000 340 E0 à
33 00100001 041 21 ! 97 01100001 141 61 a 161 10100001 241 A1 ¡ 225 11100001 341 E1 á
34 00100010 042 22 " 98 01100010 142 62 b 162 10100010 242 A2 ¢ 226 11100010 342 E2 â
35 00100011 043 23 # 99 01100011 143 63 c 163 10100011 243 A3 £ 227 11100011 343 E3 ã
36 00100100 044 24 $ 100 01100100 144 64 d 164 10100100 244 A4 ¤ 228 11100100 344 E4 ä
37 00100101 045 25 % 101 01100101 145 65 e 165 10100101 245 A5 ¥ 229 11100101 345 E5 å
38 00100110 046 26 & 102 01100110 146 66 f 166 10100110 246 A6 ¦ 230 11100110 346 E6 æ
39 00100111 047 27 ' 103 01100111 147 67 g 167 10100111 247 A7 § 231 11100111 347 E7 ç
40 00101000 050 28 ( 104 01101000 150 68 h 168 10101000 250 A8 ¨ 232 11101000 350 E8 è
Tabla G–5 Equivalencias entre códigos
10 HARDWARE MICROINFORMÁTICO © RA-MA

DE BINARIO OC HE A DE BINARIO OC HE A DE BINARIO OC HE A DE BINARIO OC HE A


41 00101001 051 29 ) 105 01101001 151 69 i 169 10101001 251 A9 © 233 11101001 351 E9 é
42 00101010 052 2A * 106 01101010 152 6A j 170 10101010 252 AA ª 234 11101010 352 EA ê
43 00101011 053 2B + 107 01101011 153 6B k 171 10101011 253 AB “ 235 11101011 353 EB ë
44 00101100 054 2C , 108 01101100 154 6C l 172 10101100 254 AC ¬ 236 11101100 354 EC ì
45 00101101 055 2D - 109 01101101 155 6D m 173 10101101 255 AD - 237 11101101 355 ED í
46 00101110 056 2E . 110 01101110 156 6E n 174 10101110 256 AE ® 238 11101110 356 EE î
47 00101111 057 2F / 111 01101111 157 6F o 175 10101111 257 AF ¯ 239 11101111 357 EF ï
48 00110000 060 30 0 112 01110000 160 70 p 176 10110000 260 B0 ° 240 11110000 360 F0 ð
49 00110001 061 31 1 113 01110001 161 71 q 177 10110001 261 B1 ± 241 11110001 361 F1 ñ
50 00110010 062 32 2 114 01110010 162 72 r 178 10110010 262 B2 ² 242 11110010 362 F2 ò
51 00110011 063 33 3 115 01110011 163 73 s 179 10110011 263 B3 ³ 243 11110011 363 F3 ó
52 00110100 064 34 4 116 01110100 164 74 t 180 10110100 264 B4 ´ 244 11110100 364 F4 ô
53 00110101 065 35 5 117 01110101 165 75 u 181 10110101 265 B5 µ 245 11110101 365 F5 õ
54 00110110 066 36 6 118 01110110 166 76 v 182 10110110 266 B6 ¶ 246 11110110 366 F6 ö
55 00110111 067 37 7 119 01110111 167 77 w 183 10110111 267 B7 · 247 11110111 367 F7 ÷
56 00111000 070 38 8 120 01111000 170 78 x 184 10111000 270 B8 ¸ 248 11111000 370 F8 ø
57 00111001 071 39 9 121 01111001 171 79 y 185 10111001 271 B9 ¹ 249 11111001 371 F9 ù
58 00111010 072 3A : 122 01111010 172 7A z 186 10111010 272 BA º 250 11111010 372 FA ú
59 00111011 073 3B ; 123 01111011 173 7B { 187 10111011 273 BB “ 251 11111011 373 FB û
60 00111100 074 3C < 124 01111100 174 7C | 188 10111100 274 BC ¼ 252 11111100 374 FC ü
61 00111101 075 3D = 125 01111101 175 7D } 189 10111101 275 BD ½ 253 11111101 375 FD ý
62 00111110 076 3E > 126 01111110 176 7E ~ 190 10111110 276 BE ¾ 254 11111110 376 FE þ
63 00111111 077 3F ? 127 01111111 177 7F 191 10111111 277 BF ¿ 255 11111111 377 FF ÿ
Tabla G–5 Equivalencias entre códigos (continuación)

G.12. SISTEMA BCD


El BCD o Binary Code Decimal es similar al código binario puro. Se forma de
manera constante con cuatro dígitos representando los valores decimales de 0 al 9. El
resto de los dígitos se realizarán como combinación de los anteriores. Es ponderado en
8-4-2-1. Así, la formación de los diez primeros será:

DECIMAL BCD DECIMAL BCD


0 0000 5 0101
1 0001 6 0110
2 0010 7 0111
3 0011 8 1000
4 0100 9 1001
Tabla G–6 Formación del código BCD

A partir del nueve, el resto serán combinaciones como, por ejemplo:


© RA-MA APÉNDICE G: CODIFICACIÓN DE LA INFORMACIÓN 11

87 28 49 75
8 7 2 8 4 9 7 5
1000 0111 0010 1000 0100 1001 0111 0101
10000111 00101000 01001001 01110101

Nota: Obsérvese que no hay diferencia en los diez primeros números entre el código BCD y el código
binario natural, exceptuando la formación de los números con cuatro dígitos.

G.12.1. Suma en BCD


La suma en BCD natural se realiza bit a bit de modo que:

0+0=0; 0+1=1; 1+0=0; 1 + 1 = 0 (más 1 de )1 ;

La única novedad que deberá tenerse en cuenta es que, cuando se realice una
suma y el resultado obtenido sea mayor de 9 (1001), habrá que sumar 6 (0110) a ese
valor. Suponga la suma de los números 8 (1000) y 7 (0111). La suma dará 15 (1111)
que obviamente es mayor que 9:

1000
0111 +
1111 (> 1001)
0110 +
( ) 1 0101

El resultado obtenido sería 1 0101 que, por homogeneidad se representará


complementando con tres ceros a la izquierda como:

0001 0101
1 5

El ejemplo se amplía de tal modo que, para sumar 4.575 y 6.232, se realizaría:

4.575 → 0100 0101 0111 0101


6.232 → + 0110 0010 0011 0010
* *
1010 0111 1010 0111
+ 0110 + 0110
0001 0000 +1 0000
1000
10.807 → 1 0 8 0 7
*
>1001

1
Carry o acarreo, representado en este texto como es un concepto ya explicado en las operaciones
con el sistema binario.
12 HARDWARE MICROINFORMÁTICO © RA-MA

G.12.2. Resta en BCD


Al igual que en el sistema decimal, se entiende la resta en BCD como la suma
con un número negativo, de tal manera que 5 - 3 = 5 + (-3). Es preciso determinar
cómo se representan los números negativos en BCD, o, lo que es lo mismo, los
números complementarios. Así, supóngase la resta de 8.334 menos 3.890.

8.334 → 1000 0011 0011 0100


3.890 → (CA9) 2 6.109→ + 0110 0001 0000 1001
* *
1110 0100 0011 1101
+ 0110 + 0110
1 0100 1 0011
+ 0100 + 1
0100
4.444 → 4 4 4 4
*
>1001

Al igual que en la operación de adición, si el número supera el 9, se le suma 6 y


los carrys se suman de un grupo a otro, con la excepción del grupo de bits más
significativo, que añade su carry (si es que existe) al de menor peso.

G.13. CÓDIGO AIKEN


Es un código ponderado como BCD en 2-4-2-1 y también usa 10 números de
base formados por cuatro dígitos a partir de los cuales forma el resto.

DECIMAL AIKEN DECIMAL AIKEN


0 0000 5 1011
1 0001 6 1100
2 0010 7 1101
3 0011 8 1110
4 0100 9 1111
Tabla G–7 Formación del código AIKEN

A partir del nueve, el resto serán combinaciones como, por ejemplo:

87 28 49 75
8 7 2 8 4 9 7 5
1110 1101 0010 1110 0100 1111 1101 1011
11101101 00101110 01001111 11011011
Nota: Obsérvese que no hay diferencia en los cinco primeros números entre el código BCD y el código
AIKEN.

2
Complemento a 9.
© RA-MA APÉNDICE G: CODIFICACIÓN DE LA INFORMACIÓN 13

G.14. SISTEMA EXCESO A 3


Se trata de un código no ponderado –que no tiene “peso”– y, además,
autocomplementario ya que la suma de aquellos números “contrarios” (donde se han
cambiado los 0 por 1, y viceversa) siempre da como valor el número 1111 ó 9 en
decimal. La formación es la siguiente:

DECIMAL EXCESO A 3 DECIMAL EXCESO A 3


0 0011 5 1000
1 0100 6 1001
2 0101 7 1010
3 0110 8 1011
4 0111 9 1100
Tabla G–8 Formación del código Exceso a 3

La autocomplementación se demuestra así:

0011 (0) 0100 (1) 0101 (2) 0110 (3) 0111 (4)
+1100 (9) +1011 (8) +1010 (7) +1001 (6) +1000 (5)
1111 (9) 1111 (9) 1111 (9) 1111 (9) 1111 (9)

Nota: Obsérvese que la formación del código se realiza a partir de un binario natural comenzando la
secuencia en el número 3 (0011) en lugar de hacerlo en el 0 (0000).

G.15. EJERCICIOS PROPUESTOS


1. Convierta de sistema binario a sistema decimal.

a) 10011001 b) 11100111 c) 10000001 d) 01010101 e) 00000001

2. Convierta de sistema decimal a sistema binario.

a) 153 b) 231 c) 129 d) 85 e) 1

3. Convierta de sistema binario a sistema octal.

a) 10011001 b) 11100111 c) 10000001 d) 01010101 e) 00000001

4. Convierta de sistema octal a sistema binario.

a) 231 b) 347 c) 201 d) 125 e) 1

5. Con ayuda del código ASCII, determine los caracteres correspondientes a la


siguiente secuencia:
14 HARDWARE MICROINFORMÁTICO © RA-MA

BINARIO 0 1 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1
DECIMAL
ASCII

6. Realice el ejercicio inverso con los siguientes caracteres:

ASCII C H I P
DECIMAL
BINARIO

7. Realice la siguiente suma en BCD: 2.325 + 4.127. Compruebe que el resultado


BCD obtenido corresponde con el esperado en binario.
APÉNDICE H

ÁLGEBRA DE BOOLE

Antes de comenzar este capítulo, he de confesar al lector mi pasión por el


Álgebra de Boole. Probablemente no haya sacado mayor provecho de una enseñanza
recibida que la del tema tratado a continuación. Si soy capaz de transmitir mi
entusiasmo por este tema, habré sido capaz de lograr mi objetivo.

Mi predilección no es una pasión injustificada. Realmente el Álgebra de Boole


establece el fundamento del tratamiento de la información. Como se vio en el capítulo
anterior, es importante saber codificar los datos pero, una vez hecho esto, no es menos
importante saber tratarlos. Sin duda, el propio Boole no fue consciente de lo que casi
un siglo más tarde iba a acontecer con sus teorías y tampoco, de la gratitud que los
técnicos debemos tenerle.

La Electrónica Digital no es, ni más ni menos, que una implementación física


real de las teorías de Boole. En este sentido fue Claude Shanon quien llevó todo esto a
la práctica electrónica. Una vez asimilados estos conceptos, el lector descubrirá (en
éste y sucesivos capítulos) que muchos de los diseños electrónicos pseudo inteligentes
no son, ni mucho menos, complicados. Quizás pueden llevar asociados procesos
largos de construcción pero, en ningún caso, complejidad inalcanzable.

El hecho de resumir el universo del discurso numérico a dos estados y el


establecimiento de reglas básicas de manejo, acotan la problemática de modo
importante. De este modo es posible acometer cualquier problema con garantías de
éxito.

En resumen, una vez conocido el uso de los números aplicados a la información,


será preciso determinar cómo debe operarse con ellos. Es precisamente la relación
establecida entre dicho modo de operación y los circuitos electrónicos lo que permite
el desarrollo espectacular de los ordenadores. Todo el planteamiento de base en
operaciones, responde al Álgebra de Boole.
16 HARDWARE MICROINFORMÁTICO © RA-MA

H.1. ÁLGEBRA DE BOOLE


Debe su nombre al filósofo y matemático de mediados del siglo XIX George
Boole (1815-1864). Desarrolló en 1847, cuando contaba con 32 años, una teoría
matemática distinta3 a la que se conocía en ese momento, con la publicación de El
análisis matemático del pensamiento, lo cual le vale una cátedra en el Queen's College
de Dublín. Boole concibe el espacio como algo biestable (dos estados). Estos estados
son opuestos y pueden representar la realidad. Así entiende estados como día-noche,
cierto-falso, 0-1 o, incluso corte-saturación 4 . El libro más importante de Boole se
publicará en 1854: Investigation of the Law of Thought aunque previamente había
sentado sólidas bases del análisis matemático con Mathematical Analyses of Logic, en
1847.

Figura H–1 George Boole

El Álgebra de Boole es un sistema matemático que permite implementar


circuitos lógicos y comprender su funcionamiento. Así se forman y comprenden las
distintas operaciones lógicas que se pueden realizar.

Estas operaciones vendrán representadas por su correspondiente puerta lógica


(símbolo que representa la operación), tabla de verdad (conjunto de todas las
posibilidades de entrada y sus salidas) y el circuito equivalente. Las tablas de verdad
se pueden representar formando un cuadro de 0s y 1s según el número de variables
que se presenten en la entrada. Así, 3 variables provocarán 23 = 8 estados distintos, y 5
variables provocarán 25 estados distintos. La formación de dichas tablas se realiza
poniendo en la columna de la derecha (correspondiente al bit menos significativo) una
secuencia de 0 y 1 alternos hasta completar el conjunto de estados. La segunda
variable repetirá la secuencia pero duplicando, es decir, la secuencia será 0011 y así
sucesivamente, siendo la tercera 00001111. Un ejemplo para 3 variables es el
mostrado en la tabla siguiente. Si se desease hacer el ejemplo extensivo para cuatro
variables, sería necesario añadir una variable más a la izquierda donde los primeros
cuatro elementos fuesen 0s y los cuatro siguientes 1s. El resto de las variables se
repetirían exactamente igual a la tabla ya escrita.

3
Recuérdese que, ya al principio de este libro, se citaba de forma anecdótica que en el 2000 a.C.
apareció en China el “I-Ching” o “Libro de las mutaciones” con bases matemáticas muy parecidas a
las establecidas por Boole.
4
Modos de trabajo extremos en los que se puede hacer trabajar a un transistor.
© RA-MA APÉNDICE H: ÁLGEBRA DE BOOLE 17

A B C
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Tabla H–1 Combinación de 3 variables

H.2. ARITMÉTICA BINARIA


La aritmética binaria define de qué modo se operará con el Álgebra de Boole.
Las cuatro operaciones básicas son las siguientes:

-Suma: -Resta:
0+0=0 0-0=0
0+1=1 0-1=1 PRESTADO = 1
1+0=1 1-0=1
1+1=0 “CARRY” = 1 1-1=0

-Multiplicación: -División:
0·0=0 0:0=0
0·1=0 0:1=0
1·0=0 1 : 0 = INFINITO
1·1=1 1:1=1

Tabla H–2 Operaciones binarias básicas

En el caso de la suma existe lo que se llama acarreo o “carry” ( ) que


consistiría en “llevarse una”. Lo mismo sucede con la resta que, obviamente, es de
valor inverso a la suma y recibe el nombre de borrow. A la hora de implementar
circuitos que realicen este tipo de operaciones, debe contemplarse la generación del
carry o el borrow puesto que son datos indicativos del valor obtenido. Así, estos
dígitos serán capaces de determinar desde el desbordamiento de un resultado
(concepto explicado en este mismo capítulo) hasta el signo de un dato.

Por supuesto este capítulo contempla también tanto la división como la


multiplicación por 2 en función del tipo de dato con el que se trabaje. Se recomienda
al lector que complemente todo lo aquí expuesto con el capítulo dedicado a
Codificación de la información y de los números de este mismo libro.
18 HARDWARE MICROINFORMÁTICO © RA-MA

H.3. TIPOS DE DATOS


Aunque las operaciones, en base, son las mismas, varía su interpretación en
función del tipo de dato manejado. De manera habitual la información binaria se
divide en tres apartados. Estos tres tipos se estudiarán con las operaciones aritméticas
asociadas a continuación. Son los siguientes:

Enteros Son aquellos que se representan a partir del valor 0 (positivos) y sin
sin signo decimales. La capacidad de representación irá en función directa del
número de bits que se use. De tal modo, con n bits se podrán representar
desde 0 hasta 2n-1. Esta diferencia (-1) corresponde a la utilización del 0
como valor. Así, con 3 bits se alcanzará la representación desde 0 a 7 (un
total de 23 = 8 valores distintos).

Asimismo, con 8 bits se representarán un total de 28 = 256 valores


diferentes que se numerarán entre 0 y 255 (28-1).

Enteros Este tipo de dato se caracteriza porque usa uno de sus bits –el más
con signo significativo– como indicador de signo (0 para positivos y 1 para
negativos). Su capacidad de representación, con n bits, va desde -2n-1 hasta
2n-1-1. El razonamiento es el mismo que en el caso anterior pero aquí se
decrementa n en una unidad debido, precisamente, a la utilización de un
bit para el signo. Se suele usar el denominado complemento a 2 (o CA2)
para la representación de números negativos.

El CA2 obtiene un número negativo de forma muy sencilla: basta con


cambiar todos sus dígitos de 0 a 1 y de 1 a 0, obteniendo así el “reflejo”
del número original. Una vez hecho esto, se le suma una unidad al número
resultante. Es importante destacar que es preciso “normalizar” la longitud
de los datos transformándolos en unidades completas –como el byte,
formado por 8 dígitos–.

De este modo con 8 bits se podrán representar los números comprendidos


desde –128 (-2n-1) hasta +127 (2n-1-1). Por ejemplo:

70 = 01000110 (26+22+21 = 64+4+2)


-70 = CA2(70) = 10111001+1 = 10111010

Reales Contempla la representación positiva y negativa (sobre la base de las


pautas anteriormente citadas de números con decimales). Aunque existen
diversos métodos, el más habitual es el denominado de “coma flotante”
(también existe el de “coma fija”), donde el número se forma a partir de
una mantisa que representa el número y un exponente que indica el valor
por el que debe multiplicarse en una base determinada.
© RA-MA APÉNDICE H: ÁLGEBRA DE BOOLE 19

Por ejemplo, supóngase el número 345,67. Su representación se tomará


como 34567 · 10-2. La parte entera responde a la mantisa (34567) y el
exponente será –2. Si se trabaja con 32 bits, se usarán 24 bits para la
mantisa y 8 para el exponente. La mantisa será, por tanto,
1000011100000111 (se podrían añadir ocho 0s por la izquierda para
completar los 24 bits) y el exponente habrá que representarlo en CA2 con
8 bits, es decir: 11111110. El número resultante será:
00000000100001110000011111111110.

Una consideración especial tienen los números representados en hexadecimal


dada su facilidad de manejo y a los que se hace referencia al final de este mismo
capítulo.

H.3.1. Adición
La adición o suma es la operación que define el incremento de un número sobre
otro y responde a las siguientes reglas de adición:

0+0=0 1+0=1
0+1=1 1 + 1 = 0 (carry 1 ó )

Como puede observarse, un caso destaca sobre los demás y es el de la suma de


dos valores lógicos 1, donde se aprecia que el resultado es 0 pero el “carry” es 1. El
concepto de “carry” es el que se define normalmente como “acarreo” –que este libro
destacará como “ ”– o, más popularmente, como “llevarse una”:

01 (1) 00 (0) 01 (1) 01 (1) 11 (3)


+ 10 (2) + 10 (2) + 01 (1) + 11 (3) + 11 (3)
11 (3) 10 (2) 10 (2) 100 (4) 110 (6)

El caso de la adición 11+11 es especialmente destacable ya que, el resultado de


los primeros “1” de la derecha dan como resultado 0 pero generan un carry ( ). Al
pasar al siguiente término se repite la situación de 1+1=0 y carry 1 pero, como
consecuencia del carry anterior, el valor de 0 se transforma en 1 ya que 0+1=1.

Para determinar si se ha producido un desbordamiento (el resultado no puede


representarse con el mismo número de bits que tenía los datos) habrá que distinguir
entre enteros con signo y sin él.

Así, se dará que:

Enteros Se producirá desbordamiento siempre que el último bit tenga un carry de


sin signo 1. Dicho de otro modo, cuando el número obtenido es mayor que 2n-1,
donde n corresponde al número de bits. En los ejemplos anteriores esta
situación se da en los dos últimos casos (1+3 y 3+3).
20 HARDWARE MICROINFORMÁTICO © RA-MA

Enteros El desbordamiento en este caso se produce cuando los dos últimos


con signo acarreos (correspondientes a los bits más significativos) son distintos. No
resultan válidos los ejemplos anteriores ya que habría que considerar todas
las adiciones como números de un solo bit (el otro sería el indicativo de
signo), pero supóngase, trabajando con 8 bits, las siguientes operaciones:

0 11111 0 01111
00111100 (60) (carrys 00111100 (60) (carrys
+ 01000110 (70) distintos) + 00111100 (60) iguales)
10000010 (130) 01111000 (120)

Desbordamiento (130 > 28-1-1) Sin desbordamiento (120 < 28-1-1)

H.3.2. Producto
La multiplicación o producto responde, de forma análoga a la adición, a una
serie de reglas. Es un proceso muy parecido a la multiplicación en decimal,
estableciendo diferentes líneas de productos efectuados desplazados en una unidad que
posteriormente se sumarán. La multiplicación responde a: 0 · 0 = 0, 1 · 0 = 0, 0 · 1 = 0,
1 · 1 = 1.

Algunos ejemplos de lo anteriormente expuesto son:

01 (1) 10 (2) 11 (3) 1101 (13)


x 01 (1) x 10 (2) x 11 (3) x 10 (2)
01 00 11 0000
00 10 11 1101
001 (1) 100 (4) 1001 (9) 11010 (26)

Obsérvese que la multiplicación por 2 (segundo y cuarto ejemplos) se


corresponde con un desplazamiento a la izquierda del número añadiendo un 0 a su
derecha (algo similar a las operaciones con la unidad seguida de ceros en el álgebra
decimal). Esta circunstancia se usa para realizar cálculos mediante sencillos
dispositivos que se estudian en este capítulo.

La multiplicación por 2, tanto en enteros con signo como sin signo, se realiza
del mismo modo ya expuesto: se introduce un 0 por la derecha desplazando el resto de
los dígitos (shift a la izquierda). La regla de desbordamiento varía en función del dato:

Enteros Se produce el desbordamiento cuando el bit desplazado a la izquierda (el


sin signo que se pierde) es un 1. Es obvio ya que ese dato excede del número
máximo representable con el número original de bits.

60x2 = 00111100 0 = 01111000 130x2 = 10000010 0 = 00000100

Sin desbordamiento (120 < 28-1-1) Desbordamiento (260 > 28-1-1)


© RA-MA APÉNDICE H: ÁLGEBRA DE BOOLE 21

Enteros El desbordamiento en este caso se produce observando los dos bits más
con signo significativos: hay desbordamiento si son diferentes. Así se observa que:

60 x 2 = 00111100 0 = 01111000 70 x 2 = 01000110 0 = 10001100

Sin desbordamiento (120 < 28-1-1) Desbordamiento (140 > 28-1-1)

H.3.3. Sustracción
La sustracción o resta se realiza de una forma algo más peculiar que el resto de
las operaciones. Así, una resta no deja de ser una suma donde uno de los sumandos
tiene un valor negativo. Dicho de forma numérica, 89 - 34 es igual a expresar 89 + (-
34). Surge así la necesidad de conocer una notación capaz de representar números de
forma negativa, esto es, la expresión específica de los signos. El método que se usará
en este libro es el CA2, tal y como se ha descrito anteriormente.

No tiene sentido hablar de sustracción en enteros sin signo ya que no tienen


capacidad de representación negativa. No obstante, se suele realizar la operación en
CA2 entendiendo que el desbordamiento se produce si el resultado es negativo cuando
el carry del bit más significativo es 0 (es otra forma de comprobarlo). En el caso de los
enteros con signo el desbordamiento se produce cuando el dato obtenido se escapa del
rango representable por el número de bits del dato. Otro modo de ver si se produce el
citado desbordamiento es observando si los carrys de los dos bits más significativos
son distintos. Sirva para ilustrar lo expuesto en los siguientes ejemplos:

Enteros 70 01000110 (-70) 10111010 70 01000110


sin signo 80 01010000 80 01010000 (-80) 0110000

11110000 0000000
80 01010000 70 1000110
-70 + 10111010 -80 + 0110000
10 00001010 -10 1110110

Sin desbordamiento (carry = 1) Desbordamiento (carry= 0). Se hace


el CA2(1110110) = 0001010 (-10)

Enteros 60 00111100 (-60) 11000100 70 01000110 (-70) 10111010


con signo 11000100 10111010
-60 11000100 -70 10111010
-60 + 11000100 -70 + 10111010
-120 10001000 -140 01110100

Sin desbordamiento (carrys Desbordamiento (carrys diferentes).


iguales). Se hace el Se hace el CA2(01110100)=
CA2(10001000)= 01111000 (-120) 10001100 (-140)
22 HARDWARE MICROINFORMÁTICO © RA-MA

H.3.4. División
La división por 2 guarda cierta similitud con la multiplicación. Así, en este caso
también se produce un “shift” o desplazamiento, fruto de introducir un nuevo dígito
por la izquierda y desplazando el dato hacia la derecha. Por motivos obvios, la
división no produce desbordamiento ya que siempre se genera un número inferior (en
la mitad en este caso) al original.

Sólo será preciso tener en cuenta un dato en función del tipo de número tratado:
si se trabaja con enteros sin signo, se introducirá un 0 por la izquierda en todos los
casos. Si se trabaja con enteros con signo, se deberá introducir por la izquierda un bit
igual al de mayor peso (precisamente para mantener el signo). El bit que se pierde por
la derecha fruto del desplazamiento es el “resto” de la operación.

Enteros 60 / 2 = 0 00111100 = 00011110 71 / 2 = 0 01000111 = 00100011


sin signo
Resultado= 00011110 (30); Resto 0 Resultado= 00100011 (35); Resto 1

Enteros 60 / 2 = 0 00111100 = 00011110 -35 / 2 =1 11011101 = 11101110


con signo
Resultado=00011110 (30); Resto 0 Resultado=11101110 (-18);Resto 1*
*
Obsérvese que el resultado no es correcto. Cuando el resto es positivo (como
ocurre en estos casos), el resultado que se adopta es el menor de los enteros entre
los cuales se encuentra el resultado. De este modo, -35 / 2 = -17,5, es decir, un
valor comprendido entre -17 y -18. Ya que el menor de los números es el –18, se
toma éste como resultado.

La ampliación del número de bits en un número manteniendo su valor, depende


del tipo de dato. Así, si se trabaja con enteros sin signo, bastará con añadir tantos 0s
por la izquierda como se desee. Si se trabaja con enteros con signo, se deberá añadir
por la izquierda tantos bits como se desee pero de igual valor al bit más significativo.

H.4. SISTEMA HEXADECIMAL


En el capítulo anterior se explicaba la conversión manejo de números
representados en hexadecimal. Su facilidad de uso y, sobre todo, su compresión, hace
de este sistema uno de los más utilizados dentro de la Informática. Matemáticamente
este sistema está pensado para enteros sin signo pero se puede trabajar con signo
llegando a un acuerdo: si el bit de mayor peso es menor a 8 (0 7), se entenderá que
el número es positivo. En cualquier otro caso (8 F) se interpretará como negativo.

Su representación en CA2 está definida por un proceso análogo al ya conocido.


La única variación estriba en el intercambio que en binario se realizaba entre los
dígitos 0 y 1. Este intercambio realmente es debido a la obtención del número
© RA-MA APÉNDICE H: ÁLGEBRA DE BOOLE 23

complementario que, trabajando en base 2, hace que las opciones se reduzcan a dos:
precisamente el intercambio que se realizaba. En hexadecimal dado que se usan más
valores, el número complementario se obtiene restando 15 a cada dígito. Por supuesto,
una vez obtenido este nuevo número habrá que incrementarlo en una unidad para
obtener el CA2. Supóngase el número siguiente y su complementario:

6 D 5 A
6-15 D-15 5-15 A-15

9 2 A 5
+1
9 2 A 6

H.4.1. Operaciones en Hexadecimal


Las operaciones guardan mucha similitud con las descritas anteriormente.
Únicamente se observan variaciones en las reglas de determinación de desbordamiento.
Éstas son las operaciones más comunes:

Adición Se realiza mediante la suma independiente de cada uno de los dígitos.


Previamente se sustituirán por números aquellos valores representados
por letras para su facilidad de manejo. Si el resultado obtenido está
comprendido entre 0 y 9, se dejará tal y como se obtuvo. Si está
comprendido entre 10 y 15, se sustituirá por la letra correspondiente y,
en caso de ser superior a 15 se le restará esta misma cifra volviendo a
aplicar las reglas anteriores y generando un carry para el siguiente
dígito de la izquierda.

Sustracción Se repite el proceso anterior de adición ya que la resta se entiende


como la suma de un número negativo. Obviamente habrá que tener la
precaución de obtener previamente el CA2 del sustraendo (es decir, el
número en negativo).

H.4.2. Desbordamiento en Hexadecimal


El desbordamiento se generaliza tanto para la suma como la resta en enteros
con signo: se producirá desbordamiento cuando los dos sumandos tengan el mismo
signo y el resultado varíe (entendiendo que los sumandos pueden ser negativos
contemplando así la resta y evaluando el número tras haber realizado el CA2).

Para los enteros sin signo se producirá desbordamiento en la suma cuando se


produzca un acarreo en la cifra más significativa. En cuanto a la resta se producirá
desbordamiento en el caso contrario: si no se produce un carry en la cifra más
significativa.
24 HARDWARE MICROINFORMÁTICO © RA-MA

H.5. AXIOMAS DE SIMPLIFICACIÓN


A partir del Álgebra de Boole, existen una serie de reglas o axiomas de
simplificación aplicables, a saber:

Conmutativa A+B=B+A AB = BA5


Distributiva A ( B + C) = AB + AC A + BC = (A + B) (A + C)
Asociativa A + (B + C) = (A + B) + C A (BC) = (AB) C
Expansión (AB) + (CD) = (A+B)(C+D)=
(A + C) (A + D) (B + C) (B + D) (AC)+(AD)+(BC)+(BD)
Identidad A+0=A A·0=0
(elemento neutro) A + 1 = 1 A·1=A
Unicidad Una operación realizada con variables de Boole, genera un
resultado único perteneciente a la misma gramática de Boole
Complementación A + A = 1 A · A= 0 0=1 1 =0
Idempotencia A+A=A A·A=A
Involución A= A
Absorción (I) A + AB = A A (A + B) = A
Absorción (II) A B + AB = A (A + B )(A + B) = A
Absorción (III) A + AB = A + B A ( A + B) = AB
Otras... ( A B )+( A B)= A
( A B )+(A B )= B
AB+A B C=AB+AC
ABCD+ABC D +A B CD=AC(B+D)
Tabla H–3 Axiomas de simplificación

Nota: Como ya se explicará en el apartado dedicado a las puertas lógicas (más concretamente en los
inversores), el símbolo de negación ( ) implicará el estado contrario al de la variable o constante
que acompañe. Así, 0 = 1 y 1 = 0 . Aplicando las variables se dirá que A = 0 si A = 1 y
viceversa.

H.6. TEOREMA DE MORGAN


Es un sistema de simplificación de funciones lógicas. Morgan enunció dos
teoremas:

A+ B= A• B “La inversa de la suma lógica de dos o más variables equivale


al producto lógico de los inversos de dichas variables”.
A • B = A + B “La inversa de un producto lógico de varias variables equivale
a la suma lógica de las inversas de dichas variables”.

5
Obsérvese que siempre que se omite el operador, se sobreentiende que se trata de un AND lógico (·).
© RA-MA APÉNDICE H: ÁLGEBRA DE BOOLE 25

H.7. MÉTODO DE KARNAUGH


Los diagramas de Karnaugh son otro tipo de simplificación de una forma más
gráfica. A partir de una tabla formada como si de la tabla de verdad se tratase, se
consiguen reducir términos. La diferencia con una tabla de verdad es que de un estado
a otro no puede variar más de un dígito. Así, la secuencia para dos variables será: 00,
01, 11, 10 en lugar de 00, 01, 10, 11 tal y como se realizaría en una tabla de verdad. El
método de simplificación, una vez relleno el cuadro, se resume en cinco pasos:

1. Cada grupo debe contener el mayor número posible de 1s, siendo dicho
número potencia de 2.
2. Debe intentar conseguirse el menor número de grupos.
3. Los grupos se pueden superponer compartiendo incluso elementos.
4. Las columnas extremas se consideran adyacentes (derecha con izquierda y
arriba con abajo).
5. No se pueden realizar grupos diagonales.

Una vez formados los distintos grupos, se obtendrá un producto por grupo y la
suma de todos ellos formará la función. Cada grupo estará formado por las variables
que no varíen de cada lado del grupo. Si las variables que no varían tienen un valor 1,
se tomarán directamente; en caso de valer 0, se negarán. Este proceso es válido para
formar grupos de 1 (denominados minitérminos o “miniterm”) y existe otro análogo
para 0 (denominados maxitérminos o “maxiterm”) donde las variables se negarán
cuando no varíen con valor 1 y se formarán productos de sumas. Así pues,
supongamos la función: F = ABCD + ABCD + ABCD + ABCD + ABCD+ ABCD+ ABCD + ABCD + ABCD

CD\AB 00 01 11 10

00 1 1 1 1

01 0 0 0 0

11 0 1 1 1

10 0 0 1 1

Tabla H–4 Método de Karnaugh

Como se puede observar, se ha rellenado la tabla a partir de la tabla de la verdad


que implica la función. Una vez completo el cuadro, se han agrupado todos los 1s
adyacentes en tres grupos: el superior de cuatro, otro situado en la esquina inferior
26 HARDWARE MICROINFORMÁTICO © RA-MA

derecha y, por último, quedaba un 1 libre que se ha tomado junto a otro que
previamente estaba incluido en un grupo. Siguiendo los pasos arriba expuestos, se
obtiene una función considerablemente más simplificada:

F = CD + BCD + AC

Para más de cinco variables existen otros métodos de simplificación que no se


contemplarán como el de Quine McCluskey.

H.8. EJERCICIO PROPUESTO


1. Simplifique la siguiente función propuesta por el Álgebra de Boole:
F = (( AB ) + ( A + B ))(( AB ) + ( A + B )) + C . Compruebe el resultado mediante la
aplicación de Karnaugh.
APÉNDICE I

PUERTAS LÓGICAS

Las puertas lógicas son los componentes que, fruto de la evolución de los
transistores y aprovechando las características de los semiconductores, consiguen
implementar los planteamientos de Boole de forma física. Su agrupación forma los
circuitos integrados y es el paso previo a los microprocesadores. Este capítulo define
los conceptos básicos de utilización.

Como ya se adelantaba en el capítulo anterior, fue Claude Shanon, matemático e


ingeniero estadounidense, famoso por el desarrollo de la Teoría de la Información o
comunicación, quien aplicó la lógica matemática a los circuitos combinacionales.
Shanon nació en Gaylord, Michigan, el 30 de abril de 1916. Estudió en la Universidad
de Michigan y se graduó en matemática e ingeniería eléctrica. Más tarde, en 1940 se
doctoró en el Instituto de Tecnología de Massachusetts (MIT) y fue aquí donde
estableció vínculos entre las Matemáticas y la Electrónica, derivando en los circuitos
lógicos (aspecto éste interesante para el contenido de este libro, a pesar de destacar en
muchas más aplicaciones de las Matemáticas y la Electrónica).

Sus desarrollos dieron lugar a un modelo teórico sobre el que se desarrollaron


los primeros sistemas de almacenamiento de información que han dado lugar a la
ciencia computacional. Así, en 1938 publicó su artículo titulado “A Symbolic Analysis
of Relay and Switching Circuits”, sin duda una de las más claras aportaciones a la
Informática teórica, donde establece los pilares para la aplicación de la lógica
matemática a los circuitos electrónicos. Shanon es capaz de encontrar la
implementación física bajo una aplicación electrónica de las teorías desarrolladas por
George Boole en el Álgebra que lleva su nombre 91 años antes. Éste es el nacimiento
de la Electrónica Digital y de las puertas lógicas.

Aún a día de hoy, estudiosos del tema se siguen apoyando en las teorías de
Shanon para desarrollar la Teoría de Autómatas.
28 HARDWARE MICROINFORMÁTICO © RA-MA

Figura I–1 Claude Elwood Shannon

I.1. PUERTAS LÓGICAS


En definitiva, todo este nuevo sistema de numeración, toda esta álgebra, busca
algo: su uso y tratamiento informático. Recabando en las profundidades, realmente la
informática no es sino una manifestación de la electrónica, y ésa es realmente la
facilidad: determinados componentes (los transistores) pueden funcionar, aparte de en
otros modos, en corte o saturación. Éstos son precisamente dos estados contrarios
perfectamente delimitados y que podrían asociarse a los 0s y 1s propuestos en esta
teoría. Bien, a partir de estos componentes se consiguen implementar una serie de
circuitos a los que se denominarán puertas lógicas capaces de responder a
determinadas funciones. Estas puertas servirán para resolver una gran cantidad de
circuitos y automatismos. A continuación se detalla su funcionamiento mediante la
explicación de su tabla de verdad y su simbología o representación gráfica, que servirá
para su posterior identificación.

I.2. PUERTA OR
Esta puerta consigue un 1 a la salida cuando, al menos, una de sus entradas es 1.
Representa una suma aunque, por sí sola, no puede controlar el acarreo. El signo que
representa la operación es (+). Es equivalente a dos interruptores en paralelo donde
pasará la corriente cuando alguno de ellos o ambos estén cerrados (a “1”).

A B F
0 0 0
0 1 1
1 0 1
1 1 1
Tabla I–1 Puerta OR

Una posibilidad de implementación de un circuito electrónico que responda al


funcionamiento de esta puerta es el representado en la figura siguiente (excluyendo su
análisis ya que excede de los objetivos de este libro):
© RA-MA APÉNDICE I: PUERTAS LÓGICAS 29

Figura I–2 Puerta OR y el CI 7432

La extensión a puertas de más de dos entradas es directa ya que se cumple que


(A+B)+C = A+(B+C), es decir:

A B C F
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 1 ⇔
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 1 F = (A+B)+C F = A+B+C

Figura I–3 Extensión de entradas (OR)

I.3. PUERTA NOR


Esta puerta consigue un 1 a la salida cuando todas sus entradas son 0. Su
funcionamiento es análogo a una OR en la que se hubiese negado la salida. Obsérvese
la diferencia en su simbología mediante un círculo que representa la negación.

A B F
0 0 1
0 1 0
1 0 0
1 1 0
Tabla I–2 Puerta NOR
30 HARDWARE MICROINFORMÁTICO © RA-MA

Figura I–4 Puerta NOR y el CI 7402

El tratamiento algebraico para más de dos entradas es el siguiente:


F = A + B + C = ( A + B)·C , para cuatro F = A + B + C + D = ( A + B)·(C + D) , para
cinco F = A + B + C + D + E = ( A + B)·(C + D)·E ,
... y así sucesivamente. El resultado es
realizar operaciones AND con grupos NOR y como la operación AND permite
transformaciones directas, la agrupación volvería a ser directa, es decir:

F = A + B + C + D + E = (( A + B)·(C + D))·E = ( A + B )·((C + D)·E )


A B C F
0 0 0 1
0 0 1 0
0 1 0 0 ⇔
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0 F = A+ B+C F = ( A + B)·C
Figura I–5 Extensión de entradas (NOR)

I.4. PUERTA AND


Consigue un 1 a la salida sólo cuando todas sus entradas son 1. Representa una
multiplicación. El signo que representa la operación es (·). Se trata del equivalente a
dos interruptores en serie donde sólo pasará la corriente cuando ambos estén cerrados
(a “1”).
A B F
0 0 0
0 1 0
1 0 0
1 1 1
Tabla I–3 Puerta AND
© RA-MA APÉNDICE I: PUERTAS LÓGICAS 31

Figura I–6 Puerta AND y el CI 7408

La extensión a puertas cumple que (A·B)·C = A·(B·C), es decir:

A B C F
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0 ⇔
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1 F = (A·B)·C F = A·B·C
Figura I–7 Extensión de entradas (AND)

I.5. PUERTA NAND


Consigue un 0 lógico a la salida sólo cuando todas sus entradas tienen un valor
de 1. Representa una puerta AND a cuya salida se ha conectado un inversor.

A B F
0 0 1
0 1 1
1 0 1
1 1 0
Tabla I–4 Puerta NAND
32 HARDWARE MICROINFORMÁTICO © RA-MA

Figura I–8 Puerta NAND y el CI 7400

La extensión a puertas de más de dos entradas debe ser tratada algebraicamente,


de modo que para tres variables se usará F = A·B·C = A·B + C , para cuatro
F = A·B·C·D = A·B + C·D , para cinco F = A·B·C·D·E = A·B + C·D + E y así sucesivamente.
Obsérvese que el resultado es realizar operaciones OR con grupos NAND. Dado que
la operación OR sí permite transformaciones directas, la agrupación sería:

F = A·B·C ·D·E = ( A·B + C ·D) + E = A·B + (C ·D + E )


A B C F
0 0 0 1
0 0 1 1
0 1 0 1
0 1 1 1 ⇔
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0 F = A·B·C F = A·B + C
Figura I–9 Extensión de entradas (NAND)

I.6. PUERTA OR EXCLUSIVA


Esta puerta consigue un 1 a la salida cuando existe un número impar de entradas
que valen 1; en el caso de dos entradas cuando exclusivamente una de sus
entradas está a uno (no las dos).

A B F
0 0 0
0 1 1
1 0 1
1 1 0
Tabla I–5 Puerta OR EXCLUSIVA
© RA-MA APÉNDICE I: PUERTAS LÓGICAS 33

La ampliación de la OR exclusiva (también llamada XOR) a más de dos


entradas mantiene el criterio de hacer la función 1 cuando el número de 1s de sus
variables sea impar, es decir, responde a la siguiente tabla de verdad (para tres
variables):

A B C F
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0 ⇔
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 1 F = A⊕ B ⊕C
F = ( A + B)·C
Figura I–10 Extensión de entradas (XOR) I

La obtención de la función a partir de la tabla de la verdad concluye que:

F = A BC + ABC + ABC + ABC , de donde se puede obtener que


F = A·( BC + BC ) + A·( BC + BC )
También se cumple que, para tres entradas:

( A ⊕ B) ⊕ C = A ⊕ B ⊕ C

Figura I–11 Extensión de entradas (XOR) II

I.7. PUERTA NOR EXCLUSIVA


Es la complementaria (o negada) a la OR EXCLUSIVA. Esta puerta sólo
obtiene un nivel lógico alto cuando sus entradas son iguales (en el caso de dos
entradas), o cuando existe un número par de entradas.

A B F
0 0 1
0 1 0
1 0 0
1 1 1
A⊕ B ⊕C
Tabla I–6 Puerta NOR EXCLUSIVA
34 HARDWARE MICROINFORMÁTICO © RA-MA

I.8. PUERTA NOT


Consigue un 1 a la salida cuando la entrada es 0 y un 0 cuando la entrada es 1.
El símbolo que representa la operación es ( ). También recibe el nombre de inversor.
A veces es usada para regenerar señales poniendo dos puertas en serie (recuérdese que
una doble negación equivale a una afirmación). De esta forma se consigue la señal
original regenerada. Las puertas NAND, NOR y NOR exclusivas se pueden interpretar
como AND, OR y OR exclusivas a las que se les ha añadido un inversor a la salida.

A A

0 1

1 0

Tabla I–7 Puerta NOT

Figura I–12 Puerta NOT y el CI 7407

I.9. PUERTAS Y ANALOGÍAS PARA SU COMPRENSIÓN


Una forma sencilla de entender las puertas, sobre todo en el principio, consiste
en establecer una similitud con los montajes serie y paralelo de interruptores; es más,
alejándonos de conceptos eléctricos, vamos a contemplarlo bajo otro prisma.

Supóngase que una persona debe realizar un camino desde un origen a un


destino. En dicho camino existen puentes y diferentes alternativas para llegar al
destino. Además, estos puentes pueden estar abiertos o cerrados y todo este conjunto
de condicionantes definirán el problema.

Imaginemos que nuestro caminante debe llegar desde el origen hasta el destino
de la siguiente figura pasando a través de los puentes A, B y C.
© RA-MA APÉNDICE I: PUERTAS LÓGICAS 35

Figura I–13 Explicación AND

Para llegar hasta el final resulta obvio que tanto A como B y C deben estar
“bajados”. Dicho de otra forma –y si decimos que “estar bajado un puente”
corresponde a un valor 1–, el viajero sólo llegará al final cuando todos los puentes
(variables) tengan un valor 1. Esta definición, según lo estudiado hasta el momento,
corresponde claramente a una puerta AND.

De forma análoga ocurriría si la disposición de puentes fuese en “paralelo”. En


este caso se completaría el camino con el hecho de que un simple puente estuviese
bajado, tal y como se aprecia en la figura.

Figura I–14 Explicación OR

La forma de entender los valores lógicos “fijos” como el 0 o el 1 debe realizarse


como puentes que permanentemente están abiertos o cerrados.

Esta representación gráfica es totalmente válida y operativa si se respetan los


modos de funcionamiento del circuito (las variables iguales deben tener siempre el
mismo valor y conmutar a un tiempo así como las variables y sus negadas deben
ofrecer siempre valores contrarios), obteniendo el funcionamiento perseguido.
36 HARDWARE MICROINFORMÁTICO © RA-MA

I.10. HOMOGENEIDAD ENTRE PUERTAS


Hasta ahora, se ha visto que siempre es preciso simplificar los circuitos. De
hecho, gran parte de este tema se dedica a tal fin (axiomas, Morgan, Karnaugh…).
Evidentemente, un circuito sencillo es más fácil de implementar, mantener, localizar
averías y, además, ¡es más barato!

Ahora bien, esto no siempre se cumple y es preciso buscar una homogeneidad


en los montajes. Esto es debido a que los circuitos integrados habituales no disponen
de diferentes tipos de puertas, sino que se componen de conjuntos homogéneos. Tal
podría ser el caso del 7400 (4 puertas NAND de 2 entradas), 7402 (4 puertas NOR de
2 entradas), 7404 (6 inversores), 7410 (3 puertas NAND de 3 entradas)…

El proceso de obtención de circuitos debe ser el aplicado hasta ahora, con todos
los pasos de simplificación oportunos. Sólo cuando se dispone de la función final más
simple es preciso pensar en la homogeneización de puertas.

El proceso, generalmente, se realiza siempre aplicando de forma exclusiva


Morgan a todas aquellas operaciones que no correspondan a la facilitada por el
integrado elegido. Para ilustrar este punto, se recurre a una función al azar:

F = AC + AB( B + A ) = AC + AB( B + A ) =

A + C + AB + ( B + A ) = A + C + A + B + ( B + A ) =

A + C + A + B + ( B + A)

La función original está formada por 2 puertas AND, 1 NAND y 2 OR, sin tener
en cuenta el número de entradas de cada una de estas puertas. Para homogeneizar el
circuito (en este caso a NOR), se recurre a Morgan de manera que se aplican dobles
negaciones sobre aquellas operaciones que se desean “eliminar”. Dado que una doble
negación no afecta a la función, ésta no varía. Posteriormente se irán “partiendo” estas
negaciones dando lugar a términos negados de una operación NOR. Siguiendo todo el
proceso se llega a la función resultante formada por 8 puertas NOR
(independientemente del número de entradas), lo que precisaría el uso de dos circuitos
integrados como media (supóngase el CI 7402). En la función original, aunque parece
más básica precisaría de 3 integrados (uno por cada tipo de puertas a usar),
exactamente el mismo número una vez homogeneizado el circuito. En conclusión,
resulta más económica y sencilla la implementación con el mismo tipo de puertas,
además de la facilidad de mantenimiento al reducir la diversidad de circuitos
integrados.
© RA-MA APÉNDICE I: PUERTAS LÓGICAS 37

Figura I–15 Implementación homogeneizada

I.11. FAMILIAS LÓGICAS


Una familia lógica hace referencia a un conjunto de circuitos que responden a
una misma tecnología de fabricación. Esto afecta al nivel interno de fabricación de las
puertas lógicas, ya que, en el ámbito externo, las puertas se comportan de igual manera
independientemente de que pertenezcan a una familia u otra. Sería algo así como
comparar dos coches de iguales características pero diferentes marcas. Los dos
dispondrían de distinta mecánica, lo que les confiere distintas prestaciones de
velocidad, consumo y condiciones de trabajo para una misma función.

No se pretende aquí realizar un estudio profundo de sistemas de fabricación


pero sí de conocer las características que pueden identificar una familia determinada.
Éstas son, y se detallan a continuación, las siguientes: transferencia, FAN “in/out”,
consumo, conmutación, tiempos de propagación y ruido.

Visto el concepto de familia lógica bajo un prisma microinformático, resulta de


especial importancia ya que la elección de un microprocesador determinará su familia
lógica y, ésta, las diferentes opciones de circuitería disponibles. Ya no debe
contemplarse sólo la ventaja de poder incluir puertas, montajes, circuitos sin
preocuparse por la compatibilidad, sino además habrá que evaluar qué aporta esa
familia concreta. Es habitual que se disponga de:

• Memorias (RAM, ROM, EPROM...).


• Generadores de señales, o dispositivos de carácter general encargados de
suministrar señales de RESET, CLOCK...
• Controladores de discos duros, disquetes y pantallas (interfaces, en definitiva).
• Controladores de interrupciones.
• Controladores de memoria dinámica (DRAM) encargados, entre otras tareas, de
establecer el refresco de la memoria.
• Controladores de DMA.
38 HARDWARE MICROINFORMÁTICO © RA-MA

• Timers o temporizadores capaces de, pasado un tiempo concreto susceptible de ser


programados, habilitar una interrupción o generar algún evento. USARTS y
controladores de comunicaciones.
• Circuitos de propósito general.

I.12. TRANSFERENCIA
Este tipo de prueba se suele realizar con un inversor, tomándole como puerta
representativa de la familia. Dicho circuito, al recibir un nivel alto (o “1”), lo
transforma en un nivel bajo (o “0”) y viceversa. Ahora, este cambio no se produce de
una forma tan definida como aparece en la primera figura, sino que se “suavizan” los
cambios, dando lugar así a un conjunto de valores que se encuentran definidos en cada
uno de los estados.

Figura I–16 Transferencia

Éstos son:

VIN MAX L Corresponde a la tensión de entrada máxima para seguir considerando un


nivel lógico como bajo (“low”). VIL MAX y MIN como figura en catálogos.

VIN MIN H Corresponde a la tensión de entrada mínima para seguir considerando un


nivel lógico como alto (“high”). VIH MAX y MIN en catálogos.

VOUT MAX L Corresponde a la tensión de salida máxima para seguir considerando un


nivel lógico como bajo. Se define como la IMAX de admisión. VOL MAX y MIN
en catálogos.

VOUT MIN H Corresponde a la tensión de salida mínima para seguir considerando un


nivel lógico como alto. Se define como la IMAX de entrega. VOH MAX y MIN en
catálogos.

Estos valores definen zonas válidas de trabajo, fuera de las cuales se puede dar
la incertidumbre que induciría a error. De esta forma, considérese una familia que
interpreta como 0 lógico los valores de tensión comprendidos entre 0 y 1,5 v, y 1
lógico los valores comprendidos entre 3,5 y 5 v. Para esta familia, un valor de 2,5 v
generará una incertidumbre y, dependiendo de la puerta en concreto, actuará de una
forma o de otra. En algunas familias lógicas se produce una oscilación interna,
generando ruido.
© RA-MA APÉNDICE I: PUERTAS LÓGICAS 39

I.13. FAN IN/OUT


Es una magnitud que expresa el número de líneas que se pueden conectar a la
entrada o salida de una puerta. Este valor viene dado por el consumo de corriente
existente. Así, si una salida va directamente a la entrada de otra puerta, la corriente de
salida de la primera será íntegramente la corriente de entrada de la segunda. Ahora
bien, si en lugar de una puerta a la salida se conectan dos, la corriente de salida deberá
repartirse entre las entradas de las dos puertas, dando lugar a la mitad de intensidad.
Este efecto, a medida que aumente el número de puertas, se irá incrementando. Por
tanto, se definirá “FAN out” como el número de entradas de puertas conectables a una
salida y “FAN in” como la “cantidad de entradas” a que equivale una línea de entrada
determinada (es normal que en chips complejos una línea de entrada se reparta
internamente para atacar a la entrada de varias puertas lógicas internas).

I.14. CONSUMO
Hace referencia a la potencia media consumida por un chip, expresada en mW.
Esta potencia es el resultado del producto de la corriente por la tensión y es vital para
calcular el consumo de un circuito durante el diseño. Normalmente el fabricante del
circuito suele expresar la potencia de consumo bajo determinados factores de trabajo
extremos (en máxima frecuencia de conmutación, en reposo...).

I.15. CONMUTACIÓN
Define los retardos y tiempos empleados en cambiar de un estado a otro bajo
determinadas condiciones. Normalmente los fabricantes suelen incluir muchos
parámetros. Aquí sólo se han definido dos a modo de ejemplo:

tr (“time raise”) Corresponde al tiempo de subida de tensión desde un nivel lógico


bajo a un nivel lógico alto, situado entre el 10% y el 90% del período de
transición.

tf (“time fail”) Corresponde al tiempo de bajada de tensión desde un nivel lógico


alto a un nivel lógico bajo, situado desde el 90% al 10% del período de
transición.

Ambas medidas se representan en la gráfica adjunta, añadiendo, además, una


medida de situación al 50% del período de transición (tanto en subida como en bajada).
40 HARDWARE MICROINFORMÁTICO © RA-MA

Figura I–17 Esquema de conmutación

I.16. TIEMPO DE PROPAGACIÓN


El tiempo de propagación o respuesta está relacionado con el consumo de la
puerta. Así, a mayor velocidad, mayor consumo y viceversa (las familias de mayor
consumo son las más rápidas). De forma habitual, el fabricante suele suministrar un
gráfico tiempo/consumo donde representa las posibilidades de la puerta de tal forma
que se pueda optar por una solución de compromiso. La velocidad del circuito,
habitualmente, vendrá dada por la frecuencia del reloj al que se conecte.

I.17. RUIDO
Se trata de otro parámetro a valorar. Por ruido se entiende cualquier
perturbación capaz de variar una señal. Este ruido puede ser provocado por radiación,
fallos de alimentación, acoples capacitivos... Así, será interesante conocer la fiabilidad o
inmunidad al ruido de cualquier familia, teniendo en cuenta el entorno en el que va a
trabajar.

I.18. FAMILIAS LÓGICAS HABITUALES

Existen determinadas familias lógicas que se utilizan con frecuencia dentro del
entorno digital. A continuación se detallan las más comunes a modo de ejemplo,
sabiendo la gran variedad que existe actualmente en el mercado:

DTL Se trata de una familia ya en desuso. Sirvió de base para el desarrollo de


familias lógicas más potentes. Su nombre viene de “Diode Transistor
Logic” (Lógica de transistor-diodo), ya que se construía a partir de estos
componentes básicos.

TTL Se trata de una familia muy rápida y de bastante uso. El problema viene
dado por su elevado consumo, pero, aun así, tiene una gran aceptación en
el mercado. Su nombre viene de “Transistor Transistor Logic” (Lógica
transistor-transistor).

ECL Se trata, en cierta forma, de una variación de la TTL. Consigue mayor


velocidad, pero, como contrapartida, su consumo también es mayor. Una
© RA-MA APÉNDICE I: PUERTAS LÓGICAS 41

diferencia importante es que no bascula directamente entre corte y


saturación sino entre corte y conducción. Su nombre viene de “Emisor
Coupled Logic” (Lógica de emisor acoplado).

STTL Esta familia también llamada Schottky TTL es una variación de la original
TTL, consiguiendo una velocidad y consumo comprendida entre la TTL y
la ECL.

LSTTL Es similar a la STTL pero con un consumo menor. Su nombre viene de


“Low Power Schottky TTL” (Schottky TTL de baja potencia).

ASTTL Es una variación mejorada de la tecnología STTL. Su nombre viene de


“Advanced STTL”. Mejora las características y reduce el consumo.

ALSTTL Es una variación mejorada de la tecnología LSTTL. Su nombre viene de


“Advanced LSTTL”. Como la anterior, con el mismo consumo mejora las
prestaciones.

HTTL Es una variación de gran velocidad de conmutación de la familia TTL. Su


nombre corresponde a “High Speed TTL” (TTL de alta velocidad).

LPTTL Es una variación de bajo consumo de la familia TTL. Su nombre


corresponde a “Low Power TTL” (TTL de baja potencia).

La tecnología TTL siempre ha estado asociada a transistores bipolares (de ahí su


consumo, de orden de mA), y está asociada a la numeración 74xxx o 54xxx (según sea
para uso comercial o militar); la tecnología CMOS se ha visto siempre relegada a usos
lentos pero de muy poco consumo (las conocidas puertas de la serie 4000). No
obstante, hoy día existe una familia, híbrida en tecnología de ambas, que es, sin duda,
la más utilizada tanto en uso comercial como militar/profesional; se trata de la “High
speed CMOS”, que se incluye en la familia TTL y que, a su vez, se divide en dos
familias: 74HCxxx y 74 HCTxxx. Estas familias poseen las características funcionales
de las TTL bipolares y el consumo de las CMOS.

Corriente Corriente
Subfamilia Especificación Frecuencia
de salida de entrada
Normal 16,00 mA 1,60 mA 7400 35 MHz
Low-Power 3,60 mA 0,18 mA 74L00 3 MHz
High-Power 20,00 mA 2,00 mA 74H00 50 MHz
Schottky 20,00 mA 2,00 mA 74S00 125 MHz
Low-Power Schottky 8,00 mA 0,40 mA 74LS00 45 MHz
Tabla I-8 Subfamilia TTL
42 HARDWARE MICROINFORMÁTICO © RA-MA

I.19. MÁS SIMBOLOGÍA...


De forma habitual, las puertas se representan conforme a la normativa ANSI,
no obstante, hay más normativas de representación que, si bien responden al mismo
funcionamiento, pueden inducir a error si no se está familiarizado con ellas. En la
tabla adjunta se representan las normativas más importantes con su representación y
equivalencias.

Obsérvese que, de forma casi intuitiva, se puede conocer la función de la puerta


gracias a su iconografía concreta.

ANSI 432.14-1973 International British Standard NEMA


IEEE Std. 91-1973 Electrotechnical Institution (National Electrical
Commission Manufacturers Association)

AND

OR

NAND

NOR

NOT

Tabla I–9 Más simbología de puertas

I.20. EJERCICIOS PROPUESTOS


1. Determine a qué función simplificada corresponde el siguiente circuito:
© RA-MA APÉNDICE I: PUERTAS LÓGICAS 43

2. El siguiente cronograma, ¿qué función representa?

3. Simplifique mediante el Álgebra de Boole la función: F = ( A + ( A·· C ) + B)· J

4. Convierta la siguiente función a lógica homogénea a puertas NAND:


F = J·( A + B ) . ¿Cuántos integrados precisaría para implementar la función
original? ¿Cuáles en concreto? ¿Y para la función final? ¿En qué porcentaje se
aprovecha el material?

5. ¿Cuál es el circuito que realiza la función siguiente? (Use Karnaugh para


simplificar la función):

F = A B C D + A B CD + AB C D + AB CD + A BC D + ABC D + A BCD + ABCD

6. Demuestre la igualdad: A BC·( B + C) + AC + ABD·( A + D) = C + A + ABD .


¿Existe algún modo más simplificado?

7. Homogeneice a NOR sin simplificar de forma previa la función:


F = (( AB ) + ( A + B ))(( AB ) + ( A + B ))
44 HARDWARE MICROINFORMÁTICO © RA-MA
APÉNDICE J

LÓGICA COMBINACIONAL

En este punto de la lectura, se conocen las herramientas básicas con las que se
cuenta –en referencia a las puertas lógicas– y cómo utilizarlas –proceso descrito en el
Álgebra de Boole–. Queda, por tanto, poner en práctica lo aprendido. Pero, ahora bien,
¿cómo interpretar la realidad bajo un prisma tan sumamente reducido que todo se
convierte en 0s y 1s? El proceso es mucho más sencillo de lo que a primera vista
pueda parecer. Siguiendo una metodología específica de trabajo, se conseguirá obtener
circuitos realmente útiles mediante sencillos cálculos.

En este capítulo se dan las bases de funcionamiento y el enfoque de cómo


abordar cualquier problema, por complejo que éste pueda parecer. La lógica
combinacional da solución a multitud de planteamientos que, bajo cualquier otra
técnica, resultarían mucho más complejos.

Existen una serie de circuitos de uso común que resulta imprescindible conocer.
Multiplexores, codificadores, comparadores, generadores de funciones,... llegan a ser
elementos base de otros montajes más complejos. Tal es su utilidad que en ocasiones
se recurre a ellos para realizar tareas que podrían ser diseñadas pero que, por la
comodidad de su implementación, no merece la pena abordar.

Este capítulo, al igual que otros, se complementa con una serie de ejercicios
dispares e interesantes que sin duda darán al lector una panorámica de actuación de la
Electrónica Digital combinacional. La tónica general de los circuitos combinacionales
es que siempre las salidas de los diseños realizados, dependerán única y
exclusivamente de las entradas. Esto, que a primera vista puede parecer obvio, tomará
más sentido en el próximo capítulo cuando se descubra que esas mismas salidas
pueden depender de otros factores, como el tiempo y el estado en el que se encontrase
el circuito en el instante anterior. De todos modos, todo a su tiempo... de momento
disfrute aprendiendo a crear circuitos y utilidades que, de un modo sencillo, pueden
reportarle muchas ventajas.
46 HARDWARE MICROINFORMÁTICO © RA-MA

J.1. IMPLEMENTACIÓN DE PROBLEMAS


Con los conocimientos adquiridos hasta ahora, se puede plantear y resolver
cualquier problema de tipo combinacional (una combinación determinada de entradas
implica siempre la misma salida) mediante desarrollo lógico, obteniendo el
consecuente circuito asociado. Es necesario plantearse cuántas y cuáles serán las
entradas y salidas, y a partir de éstas, construir la tabla de verdad completando las
salidas según el funcionamiento definido para el problema. El siguiente paso será la
obtención de la función simplificada y, por último, implementar el circuito. Siguiendo
estos pasos, se desarrollará el resto de la lógica combinacional (las salidas dependen
directamente de las entradas) y secuencial –tratada más adelante– (las salidas
dependen, además de las entradas, del estado anterior de las salidas).

J.2. CRONOGRAMAS
Antes de seguir hay que sentar unas premisas, estableciendo una relación entre
el estudio lógico y físico de la electrónica. Parece que, a estas alturas, el concepto de
1 y 0 para su tratamiento digital está claro. Ahora bien, ¿cómo implementar estos
valores lógicos en magnitudes físicas? Por supuesto, debe existir una electrónica capaz
de manejar y entender estos valores que se podrán cuantificar de alguna manera.

La implementación física de estos valores lógicos es mediante pulsos de tensión


–como de alguna manera ya se adelantaba en este libro y se confirmará más adelante–.
Estos niveles reciben precisamente este nombre (el de “niveles”) porque es preciso
alcanzar unos umbrales mínimos de tensión para ser reconocidos.

Así, y a modo de ejemplo, se puede asumir que un 1 lógico se equiparará a 5 v


“físicos” y lo mismo se hará entre el 0 lógico y 0 v. Claro está que habrá unos valores
mínimos y máximos para que cada valor pueda ser reconocido como tal.

Todo está claro en cuanto a los valores de tensión pero, ¿qué ocurre con el
tiempo? Al igual que se establecen unos valores mínimos a alcanzar para que un valor
sea reconocido como tal, este valor deberá mantenerse durante un intervalo de tiempo
mínimo para que sea reconocido y para saber cuántos valores lógicos representa. La
duda hace referencia a considerar si, por ejemplo, 5 v durante 1 sg equivalen a un 1
lógico... ¿Qué ocurrirá si estos 5 v sólo se mantienen durante 0,5 sg? ¿Y si lo hacen
durante 2 sg? En este ejemplo –lejano a la realidad en sus magnitudes temporales– el
primer caso no se interpretaría como un 1 y el segundo sería una secuencia de dos 1s.

Parece claro que los parámetros tensión y tiempo son cruciales para determinar
en el plano físico los valores lógicos. Para ver (¡sí, ver!) estos valores, se suele usar un
aparato común en la electrónica: el osciloscopio. Este aparato dispone de una pantalla
circular cuadriculada donde se representan los valores de tensión en el tiempo. Suele
disponer de forma habitual de un control de ganancia (para ver más o menos en detalle
los niveles de tensión) y una base de tiempo (que establece una relación entre la
longitud gráfica representada y el tiempo).
© RA-MA APÉNDICE I: PUERTAS LÓGICAS 47

Valores del osciloscopio

Cuadro vertical : 2,5 v


Cuadro horizontal : 0,1 ms
Secuencia leída en
pantalla : 0110110010

OSCILOSCOPIO CRONOGRAMA
Figura J–1 Cronogramas

Suele ser útil disponer de estos aparatos para realizar el análisis de qué ocurre
en cada punto del circuito y realizar comparaciones (suelen disponer de memorias y
varios canales). Para el análisis “sobre el papel” también se usan las mismas
representaciones gráficas que se verían en un osciloscopio. Estas representaciones
reciben el nombre de cronogramas y son de la siguiente forma:

Figura J–2 Cronograma de puertas AND/OR

Quede claro por tanto que un cronograma no es, ni más ni menos, que una
representación gráfica de los conceptos lógicos que el lector ya conoce. Por este
motivo no debe sorprender su uso ya que –como se comprobará más adelante– los
cronogramas aportan más riqueza a la representación de información, permitiendo
incluir el concepto tiempo (muy usado en “sincronismos por flanco”).

J.3. COMPARADORES DE MAGNITUD


Es relativamente usual la necesidad de comparar dos o más números. El
resultado de dicha comparación siempre genera tres salidas:

El primer número es mayor que el segundo (G “Greater” o M “Mayor”)


Ambos números son iguales (E “Equal” o I “Igual”)
El primer número es menor que el segundo (L “Lower” o m “Menor”)
48 HARDWARE MICROINFORMÁTICO © RA-MA

Figura J–3 Comparador de magnitud

Para realizar este montaje es necesario seguir los pasos ya estudiados:


Definición de variables de entrada: Dos números de un bit cada uno (A, B).
Definición de variables de salida: Tres: G, E y L.
Funcionamiento: G será 1 sólo cuando A>B, E será 1 sólo cuando A=B y L
será 1 sólo cuando A<B.

A B G E L
0 0 0 1 0 G = AB
0 1 0 0 1 E = AB + AB = A ⊕ B
1 0 1 0 0 L = AB
1 1 0 1 0
Tabla J–1 Tabla de un comparado

De esta forma se realiza la tabla de verdad, obteniendo la función simplificada y


su posterior implementación.

J.4. DECODIFICADORES
Son circuitos capaces de convertir código de tipo binario, BCD o cualquier
otro en un código común sin codificar. Supongamos un decodificador de cuatro
entradas (A, B, C y D) de código y diez salidas sin codificar (0 a 9). Será necesario
definir la tabla de verdad y continuar los pasos ya habituales. Normalmente se controla
la salida del decodificador mediante una línea de STROBE.

Figura J–4 Clases de decodificadores


© RA-MA APÉNDICE I: PUERTAS LÓGICAS 49

Un circuito habitual dentro de los decodificadores es el “7 segmentos”. Recibe


su nombre por ser una matriz formada por 7 segmentos capaces de representar los 10
dígitos decimales y algunas letras. El proceso es el descrito y se recomienda al lector
interesado en el diseño. Los segmentos son las salidas y sus nombres van desde la a a
la g. Este tipo de decodificador se vende integrado (7446, 7447 en la familia TTL).

Figura J–5 Posibilidades de un 7 segmentos

ENTRADAS SALIDAS
A B C D 0 1 2 3 4 5 6 7 8 9
0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 0 0 1 0 1 0 0 0 0 0 0 0 0
0 0 1 0 0 0 1 0 0 0 0 0 0 0
0 0 1 1 0 0 0 1 0 0 0 0 0 0
0 1 0 0 0 0 0 0 1 0 0 0 0 0
0 1 0 1 0 0 0 0 0 1 0 0 0 0
0 1 1 0 0 0 0 0 0 0 1 0 0 0
0 1 1 1 0 0 0 0 0 0 0 1 0 0
1 0 0 0 0 0 0 0 0 0 0 0 1 0
1 0 0 1 0 0 0 0 0 0 0 0 0 1

Tabla J–2 Tabla de un decodificador

J.5. CODIFICADORES

Figura J–6 Bloques de un codificador

Los codificadores realizan la operación contraria, es decir, pasan un sistema no


codificado a otro que sí lo está. Un ejemplo de codificador puede ser el decimal a
50 HARDWARE MICROINFORMÁTICO © RA-MA

BCD. Existen 10 entradas (0 a 9) y 4 salidas que representan el número introducido.


El sistema de implementación consiste en realizar la tabla, tal y como se indica en la
figura. Para completar dicha tabla, bastará con representar el estado de las entradas (se
ponen a uno cuando coinciden con el valor que representan) y las salidas, que
representan en todo momento el valor de las entradas. El siguiente paso sería la
obtención de las cuatro funciones (A, B, C y D) por cualquiera de los modos ya
conocidos y su implementación directa en puertas lógicas según el tipo de circuito
disponible (al que se llegará a partir del álgebra y los axiomas de simplificación ya
conocidos). Las funciones en cuestión, sin realizar ningún tipo de simplificación y en
formato de obtención a partir de 1s lógicos, son las siguientes:

ENTRADAS SALIDAS
0 1 2 3 4 5 6 7 8 9 A B C D
1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 0 0 0 0 1 1
0 0 0 0 1 0 0 0 0 0 0 1 0 0
0 0 0 0 0 1 0 0 0 0 0 1 0 1
0 0 0 0 0 0 1 0 0 0 0 1 1 0
0 0 0 0 0 0 0 1 0 0 0 1 1 1
0 0 0 0 0 0 0 0 1 0 1 0 0 0
0 0 0 0 0 0 0 0 0 1 1 0 0 1
Tabla J–3 Codificador Decimal-BCD

A= 0123456789 + 0123456789
B= 0123456789 + 0123456789 + 0123456789 + 0123456789
C= 0123456789 + 0123456789 + 0123456789 + 0123456789
D= 0123456789 + 0123456789 + 0123456789 + 0123456789 + 0123456789

J.6. FUNCIONES INCOMPLETAMENTE DEFINIDAS


Es frecuente que muchas funciones estén formadas por términos donde no
intervengan la totalidad de las variables de la función. Éstas reciben el nombre de
Funciones Incompletamente Definidas o, simplemente FID. Son fruto de la
simplificación y, en términos generales, significa que el resultado de ese término en
cuestión no depende de las variables ausentes. No obstante, puede ser necesario que la
función sea “completa”, es decir, que en todos los términos aparezcan todas las
variables. Sería algo así como el proceso contrario a la simplificación: la expansión.

El proceso es sencillo y el número de casos que se pueden presentar es finito,


por lo que resulta conveniente hacer su exposición. Así, si se dispone de una función
con n variables, pueden darse n-1 casos. Imagine que se trabaja con las variables
X, Y, Z . Los casos planteables son dos (3-1): ausencia de una variable en un término o
ausencia de dos.
© RA-MA APÉNDICE I: PUERTAS LÓGICAS 51

Ausencia de Como ya se avanzaba, cuando una variable no aparece en un término


una variable significa que el resultado final de la función no depende de la citada
variable en ese término concreto. Así, si se dispone, por ejemplo, del
término YZ, en ausencia de la variable X, se puede afirmar que
YZ = XYZ + XYZ ya que XYZ + XYZ = YZ( X + X ) = YZ(1) = YZ .

Ausencia de Se trata del mismo caso: la ausencia de dos variables implica que, en
dos variables ese término, el resultado no depende de ninguna. Así, suponga que el
término, por ejemplo, está formado exclusivamente por X . La
“expansión” se producirá de modo que X = X Y Z + X YZ + XY Z + XYZ ya que
X Y Z + X YZ + XY Z + XYZ = X Y( Z + Z) + XY( Z + Z) = X Y(1) + XY(1) = X Y + XY , y, al fin:
X Y + XY = X( Y + Y ) = X (1) = X .

Ilustrando lo expuesto, supóngase la función F = BC + AC sobre la que se desea


completar la totalidad de sus términos con todas las variables. Se obtiene que:

A B C F
0 0 0 0
0 0 1 1
0 1 0 1
F = BC + AC = ABC + ABC + ABC + A BC 0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 0

Como se puede observar, aunque son sólo dos términos los implicados en la
función original, en la tabla de la verdad aparecen cuatro niveles lógicos altos, uno por
cada término de la función expandida.

J.7. CODIFICADORES Y LAS FID


Existen unas particularidades que pueden darse a la hora de trabajar con
diferentes montajes. En este caso, los codificadores y los decodificadores pueden
servir para ilustrar lo que se desea. Supóngase que se pretende realizar el
decodificador, ya mencionado anteriormente, BCD a Decimal. Por definición, el
sistema BCD cuenta con cuatro dígitos (por lo que es capaz de representar 24 = 16
números diferentes) aunque sólo representa diez valores (del 0 al 9). ¿Qué es lo que
ocurre con estos estados no aprovechados?

En determinadas circunstancias se pueden aprovechar estos casos pero


entendiendo que tienen una penalización en seguridad. Lo mejor será ilustrarlo con un
ejemplo:
52 HARDWARE MICROINFORMÁTICO © RA-MA

Supóngase el caso citado (decodificador BCD a Decimal) en el que se desea


obtener, por ejemplo, el circuito correspondiente a la decodificación del número 9.
Aplicando la tabla de Karnaugh se realizaría del siguiente modo:

AB/ AB/ AB/


CD 00 01 11 10 CD 00 01 11 10 CD 00 01 11 10
00 0 0 x 0 00 0 0 x 0 00 0 0 x 0
01 0 0 x 1 01 0 0 x 1 01 0 0 x 1
11 0 0 x x 11 0 0 x x 11 0 0 x x
10 0 0 x x 10 0 0 x x 10 0 0 x x
Tabla 0 Tabla 1 Tabla 2

Se ha representado en la Tabla 0 el Karnaugh con símbolos x en aquellos


estados “imposibles” (todos los superiores al número 9, máximo alcanzable en BCD).
Inicialmente, la función se obtendría a partir de obtener un único grupo con el
elemento 1 indicado, tal y como se aprecia en la Tabla 1, obteniendo que 9 = ABCD .
Ahora bien, considérese la posibilidad de tomar los valores marcados x como el valor
que más interese de cara a la simplificación, tal y como se muestra en la Tabla 2.

Como se puede observar, la simplificación es importante (se ahorran dos


variables y dos inversores) más cuanto mayor sea el circuito pero, ¿a cambio de qué?
La utilización de estados “no reales” tiene su penalización según el uso del circuito.
Así, se podrá afirmar que el dispositivo funciona perfectamente y sin error en todos los
casos en el que el código BCD es válido (valores entre 0 y 9). Si se puede asegurar que
nunca llegará una combinación imposible (por ejemplo, 1111), el diseño de la Tabla 2
es, sin duda, el mejor ya que cumple la función con el menor número de puertas.

Ahora bien, supóngase que se presenta a la entrada una combinación no


permitida, por ejemplo 1111, ¿qué ocurrirá? Como se puede observar, esta
combinación también satisface la función del 9 con lo que podemos afirmar que el
número 15 a la entrada (1111) genera un 9 en decimal (caso, por supuesto, totalmente
indeseable). Además, en este caso concreto, el error se repetirá con la recepción de las
combinaciones 1011 (11) y 1101 (13).

En definitiva este sistema es válido siempre que se pueda garantizar que la


entrada estará controlada. Por otro lado, si se desea conocer qué combinaciones
causarán error, bastará con atender a la tabla de Karnaugh y ver qué valores x se han
tomado para simplificar la salida en cuestión. Cada x tiene un valor según su posición
en Karnaugh (el representado por ABCD), tal y como se muestra en el cuadro:

AB/
CD 00 01 11 10
00 0 4 12 8
01 1 5 13 9
11 3 7 15 11
10 2 6 14 10
© RA-MA APÉNDICE I: PUERTAS LÓGICAS 53

A pesar de esto, puede ser interesante recurrir a este sistema siempre que la
simplificación sea interesante ya que se pueden habilitar métodos colaterales que
solventen esta situación. Bastaría con añadir a cada salida una puerta AND de modo
que se pueda inhibir la salida con la aplicación de una variable a 0 que, previamente
será generada cuando se detecte un número mayor de 9 (recuérdese que es posible
comparar números a través de comparadores de magnitud).

J.8. CONVERTIDORES DE CÓDIGO


Son capaces de pasar de un código a otro. Supóngase que se desea transformar
código binario en 7 segmentos. Es preciso disponer de cuatro entradas para referenciar
10 salidas (desde 0 a 9), ya que 24=16 >10 (se "desperdician" 6 estados). La tabla de la
verdad corresponde a:

Nº A3 A2 A1 A0 a b c d e f g
0 0 0 0 0 1 1 1 1 1 1 0
1 0 0 0 1 0 1 1 0 0 0 0
2 0 0 1 0 1 1 0 1 1 0 1
3 0 0 1 1 1 1 1 1 0 0 1
4 0 1 0 0 0 1 1 0 0 1 1
5 0 1 0 1 1 0 1 1 0 1 1
6 0 1 1 0 1 0 1 1 1 1 1
7 0 1 1 1 1 1 1 0 0 0 0
8 1 0 0 0 1 1 1 1 1 1 1
9 1 0 0 1 1 1 1 0 0 1 1
Tabla J–4 Conversión BCD-7 segmentos

La tabla se realiza observando, para cada uno de unos números a representar,


qué displays se desea encender. Así, para el 0, se encenderán todos menos el segmento
g (si se encendiese, formaría el número 8). Incluso es posible definir cómo se desean
“diseñar” los números 6 y 9 ( o para el 6 y o para el 9).

El paso siguiente es la obtención de las funciones correspondientes a cada uno


de los segmentos. Para ello se usa cualquiera de los métodos ya conocidos (formas
canónicas o, directamente, Karnaugh). Como ejemplo se representa el segmento “a”:

a = ( A3 + A2 + A1 + A0 ) • ( A3 + A2 + A1 + A0 )

Figura J–7 Segmento “a”


54 HARDWARE MICROINFORMÁTICO © RA-MA

J.9. MULTIPLEXORES
Son circuitos que actúan como conmutadores múltiples. Son capaces de
discernir entre varias entradas para obtener una única salida y su valor negado. Esto lo
hacen gracias a unas variables de control que determinarán qué salida se desea obtener.
De tal forma que estamos hablando de un circuito de una salida, “n” entradas de
control y 2n entradas. También recibe el nombre de selector de datos o, simplemente
por simplificar, MX. En la tabla siguiente se muestra la tabla de verdad de la función.
Se ha supuesto para este ejemplo dos entradas de control: S0 y S1, cuatro entradas de
datos: I0, I1, I2, I3 y dos salidas: Z y Z . Como se puede observar, en esta tabla aparecen
algunas “X”. Esto significa que la salida es indiferente del valor de esta variable
(puede ser 0 ó 1).
CONTROL DATOS SALIDAS
S1 S0 I3 I2 I1 I0 Z Z
0 0 X X X 0 0 1
0 0 X X X 1 1 0
0 1 X X 0 X 0 1
0 1 X X 1 X 1 0
1 0 X 0 X X 0 1
1 0 X 1 X X 1 0
1 1 0 X X X 0 1
1 1 1 X X X 1 0
Tabla J–5 Tabla de un multiplexor

Z = S1S0 I 0 + S1S0 I1 + S1S0 I 2 + S1S0 I 3

La utilidad de este montaje radica en el ahorro a la hora de transmitir una


información usando un cable en lugar de varios. Obviamente esta acción se penaliza
en tiempo pero en algunos dispositivos, éste no es el parámetro fundamental de
rendimiento. Es frecuente añadir una entrada más de validación o strobe que conecte o
desconecte el multiplexor.

Figura J–8 Esquema de un multiplexor


© RA-MA APÉNDICE I: PUERTAS LÓGICAS 55

El concepto de multiplexión se amplía en otros campos de la electrónica. Así es


común utilizar multiplexaciones en frecuencia e, incluso, usar términos como
multiplexaciones en el tiempo para indicar que se asignan intervalos temporales a
distintos procesos (podría entenderse la multitarea explicada en el primer capítulo
como una multiplexación en el tiempo).

J.10. DEMULTIPLEXORES
Los demultiplexores o DMX se usan para conseguir transformar una
información transmitida en serie (una única línea) a una salida paralelo (varias líneas).
Normalmente los demultiplexores se asocian a los multiplexores como circuitos
complementarios usados, en conjunto para abaratar costos a la hora de unir puntos de
información distantes entre sí. Resulta obvio entender que será mucho más barato
“multiplexar” una información paralela de 8 bits para enviarla a un edificio distante
(usando un único hilo). Posteriormente en el edificio destino se “demultiplexarán” los
datos volviendo a obtener el código original en paralelo. Esto, por supuesto, lleva
asociada una penalización en tiempo que el usuario deberá valorar. Es habitual que
multiplexores y demultiplexores funcionen con las mismas entradas de control de cara
a optimizar el sincronismo (aspecto fundamental en este tipo de montajes y de todos
los que se expondrán de ahora en adelante). La tabla de la verdad y circuito asociado,
de forma análoga al multiplexor responde a:
I 0 = S1S0 Z
I1 = S1S0 Z
I 2 = S1S0 Z
I 3 = S1S0 Z
CONTROL ENTRADA DATOS (SALIDAS)
S1 S0 Z I3 I2 I1 I0
0 0 0 X X X 0
0 0 1 X X X 1
0 1 0 X X 0 X
0 1 1 X X 1 X
1 0 0 X 0 X X
1 0 1 X 1 X X
1 1 0 0 X X X
1 1 1 1 X X X
Tabla J–6 Tabla de un demultiplexor

J.11. GENERADORES Y DETECTORES DE PARIDAD


Como ya se ha comentado en diversos fragmentos del libro (y se seguirá
haciendo en sucesivos puntos), las comunicaciones suelen presentar problemas. Éstos,
56 HARDWARE MICROINFORMÁTICO © RA-MA

generalmente, provienen de fuentes externas generadoras de ruidos e inciden en los


datos a través de proceso de inducción. Dado que la mayor parte de las
comunicaciones se realizan por cable o radio (en cualquiera de sus variantes), el ruido
eléctrico es uno de los mayores problemas que sólo desaparece de forma completa en
las comunicaciones a través de fibra óptica.

Es preciso, por tanto, habilitar sistemas físicos y lógicos que intenten atenuar
el problema. En cuanto a los medios físicos se encuentra la utilización de cables
apantallados (como son los coaxiales y twinaxiales) y “twisteados” o enrollados sobre
sí mismos. En cuanto a los medios lógicos, se recurre a diferentes sistemas como
puede ser la paridad y los códigos de redundancia cíclica fundamentalmente. Este
tema es desarrollado bajo otro prisma (orientado a los ordenadores) en el apartado
dedicado a las Memorias, dentro de este mismo libro (Paridad, Paridad Lógica y ECC).

Aquí se tratará de forma inicial la paridad como elemento detector de posibles


fallos y a un nivel básico, por lo que debe advertirse al lector que existen sistemas no
sólo capaces de detectar errores sino además capaces de corregirlos. Al final, la
efectividad de un sistema de detección/corrección de errores dependerá,
exclusivamente, de la cantidad de información redundante que se permita añadir pero
esto, claro está irá en detrimento de la tasa de transmisión.

Supóngase que se desea enviar un byte de información y se llega al siguiente


convenio de uso sobre la paridad par: se añadirá un noveno bit que indicará una
paridad par consiguiendo que el número de 1s sea múltiplo de 2 (entendiendo el 0
como un número par). Así, si la información a enviar es, por ejemplo 10100110, habrá
que añadir un noveno bit con valor 0 para que el número total de 1s sea par. Si el dato
a enviar fuese 10011011, habría que añadir un 1 para conseguir un número par de 1s.
Por supuesto, este concepto es ampliable a considerar el número de 1s impar en lugar
de par. Plasmando todo lo expuesto en una tabla de verdad, se obtendría (para
números formados por dos bits):

A1 A0 P.Par P.Impar
0 0 0 1
0 1 1 0
1 0 1 0
1 1 0 1
Tabla J–7 Paridad par/impar en 2 bits
luego:
P.Par = A 1 A 0 + A 1 A 0 = A 1 ⊕ A 0
P.Impar = A 1 A 0 + A 1 A 0 = A 1 ⊕ A 0

que, implementado a través de puertas lógicas genera el siguiente circuito:


© RA-MA APÉNDICE I: PUERTAS LÓGICAS 57

Figura J–9 Generador de paridad

Se remite al lector al capítulo dedicado a las puertas lógicas para ver la


extensión de puertas OR y NOR exclusivas para el manejo de más de dos bits.

J.12. GENERACIÓN DE FUNCIONES


Hasta ahora se ha visto cómo funcionan montajes específicos y cuál es la base
de los sistemas de numeración, álgebra de Boole y su aplicación dentro de la
electrónica digital. Como a estas alturas conoce el lector, la realidad obliga al diseño
de nuevos circuitos que satisfagan las necesidades específicas de cada caso. Dichas
necesidades acaban, en definitiva, respondiendo a una función que, con puertas lógicas
se implementa y conforman la solución buscada.

Dentro del plano más práctico y asumiendo las premisas expuestas, se buscan
soluciones para que la implementación sea lo más cómoda y económica posible. Así
no resulta nuevo el buscar la homogeneización de circuitos para simplificar su
mantenimiento o la simplificación para disminuir su coste.

Dada la diversidad de soluciones posibles a innumerables problemas planteables,


existen dos soluciones cómodas de mantener por su sencillez y económicas por su
estandarización. Se trata de la implementación de funciones a través de otros circuitos
estándar que, en este caso suelen ser decodificadores o multiplexores. A continuación
se ilustra lo expuesto con varios ejemplos. Por supuesto, existe más de una técnica
para realizar estos procesos. Se han definido exclusivamente las más conocidas y, sin
duda, las más didácticas.

J.12.1. Generación a partir de multiplexores

El proceso es realmente sencillo. Se trata de buscar una relación entre la función


y el funcionamiento del multiplexor de modo que converjan en la misma solución que,
en definitiva, es la función buscada. Probablemente éste sea el sistema más usado
aunque no el más sencillo (aunque no reviste ninguna complicación, como se detalla a
continuación).
58 HARDWARE MICROINFORMÁTICO © RA-MA

Dado que un multiplexor recibe varias entradas y, según el estado de una serie
de variables de control, establece una salida, se busca que, la conjunción de señales
aplicadas a las variables de control generan a la salida el valor deseado en relación con
la entrada seleccionada. Así, supóngase la función definida como: F = BC + AC . Hay dos
métodos que se pueden aplicar:

• Se toman todas las variables como entradas de control y la función de salida


como entrada del multiplexor. Este sistema asegura que ante la secuencia de
entrada generada por las variables de control, el resultado sea el deseado ya
que se aplica a la entrada seleccionada por el control el valor que se quiera6,
tal y como muestra la figura. En definitiva se trata de propiciar el valor
deseado de salida conforme a las variables de control, respondiendo así al
funcionamiento explicado de los multiplesores:

A B C F
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 0
Figura J–10 Función a través de MX (I)

• El otro sistema toma como variables de control todas excepto la menos


significativa (la de menor peso7) y evalúa la tabla de la verdad, tomando las
combinaciones de dos en dos. Una vez hecho esto, se busca las coincidencias
entre la variable “retirada” y la salida de la función (en este caso, entre C y
F), “amoldando” el valor de la variable a la salida, tal que:

A B C F
0 0 0 0
F=C
0 0 1 1
0 1 0 1
F =1
0 1 1 1
1 0 0 0
F=0
1 0 1 0
1 1 0 1 F=C
1 1 1 0
Figura J–11 Función a través de MX (II)

6
Obviamente coincidente con la salida de la función.
7
Véase Códigos Ponderados dentro de este mismo texto.
© RA-MA APÉNDICE I: PUERTAS LÓGICAS 59

Aunque este método es más simplificado que el anterior, la primera


impresión puede parecer que añade el problema de la utilización de puertas
externas (obsérvese C que precisaría una puerta inversora). Aunque
realmente es así, la ventaja es que esta “incomodidad” puede cuantificarse ya
que, en el peor de los casos, nunca se precisará disponer de más de una
puerta inversora8.

J.12.2. Generación a partir de decodificadores

Otro sistema de implementación de funciones consiste en el uso de


decodificadores de binario a decimal. El principio, en sí, es sencillo: dado que un
decodificador tiene como misión el convertir un código en un sistema de numeración
no codificado (en definitiva, pasar de un sistema a otro) se aplica el mismo principio a
cualquier función. De este modo se considerará que la función define el código
codificado de entrada (el formado por la combinación binaria de las variables) y el
resultado de la función será el nuevo código generado. Bastará con “sumar” las
salidas (en caso de trabajar con valores lógicos “1”) para obtener la función.

Lo mejor será ilustrar lo expuesto con un ejemplo. Supóngase que se desea


implementar la siguiente función usando un decodificador:

F = ( A·B·C·D) + ( A·B·C·D) + ( A·B·C·D) + ( A·B·C·D) + ( A·B·C·D) + ( A·B·C·D)

Lo primero, como siempre, será simplificar la función. Se usará el método de


Karnaugh:

AB/CD 00 01 11 10
00 1 1 0 1
01 1 1 0 1 F = ( A·C ) + ( A·B·C )
11 0 0 0 0
10 0 0 0 0
Figura J–12 Función con decodificador (I)

Es importante destacar que la simplificación será eficaz si logra eliminar


alguna variable. De no ser así, no aportará ninguna ventaja. La reducción de variables
afectará al decodificador a elegir así, a menor número de variables se podrá elegir un
decodificador más pequeño. En caso de disponer de las mismas variables de entrada,
el circuito responderá siempre a la misma tabla de la verdad, ya sea con la función
simplificada o ampliada y redundante. Como en definitiva, tal y como se detalla a
continuación, el montaje depende de la tabla de la verdad, el circuito será el mismo.

Volviendo al ejercicio concreto, al haberse reducido una variable, se entenderá


que se precisa un decodificador binario→decimal de 3 entradas y, por tanto, 8 salidas
(23 = 8). Lo habitual quizás sea el encontrar este tipo de decodificador integrado en
8
Salvo casos límite donde el número de entradas negadas supere el FAN OUT de la puerta.
60 HARDWARE MICROINFORMÁTICO © RA-MA

formato BCD (binario expresado en 4 bits) y diez salidas (correspondientes al


decimal). No obstante, se toma la licencia de suponer un decodificador ficticio con el
fin de ilustrar el ejemplo, de manera independiente de si se puede encontrar o no en el
mercado el citado circuito. El montaje quedaría como se aprecia en la figura:

A B C F SALIDAS
0 0 0 1 0
0 0 1 0 1
0 1 0 1 2
0 1 1 0 3
1 0 0 1 4
1 0 1 0 5
1 1 0 0 6
1 1 1 0 7
Figura J–13 Función con decodificador (II)

Ya que el funcionamiento consiste en producir un 1 en la salida correspondiente


al número codificado en binario a la entrada, la función valdrá 1 cuando la selección
de entrada coincida con las salidas elegidas para llegar a la puerta OR.

La selección de salidas también podría haberse realizado por selección de 0s. En


ese caso se perseguiría que la función fuese 0 en el resto de las salidas (S1, S3, S5, S6, y
S7 en el ejemplo). El montaje correspondería, por tanto, a la unión de las citadas
salidas en una puerta NOR. De ese modo cuando una de las salidas fuese seleccionada
produciría un 0 y el resto un 1 que, tras la NOR reportaría un 0, es decir, el
complemento a las salidas que producían un 1. Otros montajes responderían a la
aplicación de Morgan:

F = S1 + S 3 + S5 + S6 + S7 = S1 ·S 3 ·S5 ·S 6 ·S 7

F = S1 + S 3 + S 5 + S 6 + S 7 F = S1 ·S 3 ·S 5 ·S 6 ·S 7
Figura J–14 Función con decodificador
© RA-MA APÉNDICE I: PUERTAS LÓGICAS 61

J.13. EJERCICIOS PROPUESTOS


1. Se desea gobernar una prensa (P) con cuatro botones (A, B, C y D) de manera que
sólo funcione cuando se pulsen dos botones cualesquiera. Si se pulsan tres,
deberá activarse una alarma (ALARMA) pero funcionará y, en caso de pulsar los
cuatro, se parará la prensa y se activará la alarma. En cualquier otro caso
diferente a los descritos, la prensa estará inactiva. Calcular todo lo preciso para
obtener el circuito simplificado.

2. Se desea controlar un motor (M) con tres interruptores (P1, P2, P3) y una señal de
alarma (A) de modo que se ajuste al siguiente funcionamiento:

• Si se actúa sobre P1 de forma exclusiva, el motor deberá girar hacia la derecha.


• Si se actúa sobre P2 de forma exclusiva, el motor deberá girar hacia la
izquierda.
• P3 será el botón de alarma por lo que, en caso de ser activado, deberá ser
detenido inmediatamente el motor y activada la luz de alarma
(independientemente del estado del resto de los interruptores). El mismo
proceso se seguirá si se activan P1 y P2 a la vez.

Se pide:

• Formalizar el ejercicio indicando las variables de entrada, salida y estados.


• Funciones simplificadas y circuito.
• Funciones homogeneizadas a puertas NOR que respondan al funcionamiento.

Nota adicional:
El motor ficticio funciona con corriente continua y es suficiente la suministrada por
las puertas para mantenerlo en marcha. Dispondrá de dos bornes de conexión que
determinarán su funcionamiento: así aplicando los valores 0 y 1 a sus bornes girará en
un sentido. La aplicación contraria invertirá la marcha y 00 detendrá el motor. La
combinación 11 se considera un error que activaría la alarma (igual que P3). En la
tabla anexa se representan las combinaciones posibles de funcionamiento.

Borne 1 Borne 2 Giro


0 0 Parado
0 1 Derecha
1 0 Izquierda
1 1 Error

3. Diseñe por bloques funcionales un sistema capaz de recibir datos en decimal,


enviarlos en BCD a través de un único hilo y volver a entregarlos en decimal.
62 HARDWARE MICROINFORMÁTICO © RA-MA

4. Se dispone de un sistema informático, encargado de gestionar cinco dispositivos.


El modo de trabajo responde a la pulsación por parte del usuario de una o más
teclas del PC. Estas teclas (A, B, C) se combinan del siguiente modo:

• Si sólo la tecla C está pulsada, deberá activarse el dispositivo D8.


• Si sólo la tecla B está pulsada, deberá activarse el dispositivo D7.
• Si sólo la tecla A está pulsada, deberá activarse el dispositivo D5.
• Si sólo las teclas A y B están pulsadas, deberá activarse el dispositivo D3.
• Si todas las teclas se pulsan, se activará el dispositvo D1.

Se pide:

• Tabla de la verdad pulsación-dispositivo.


• Función lógica simplificada por cada uno de los dispositivos.

Nota: El concepto de activación responde a la obtención de una salida lógica a nivel alto
(1 lógico) en el puerto de salida.

5. Obtenga del modo más simplificado posible y con la ayuda de un multiplexor


un sistema que realice la función siguiente: F = A BCD + AC + A D + BD .
APÉNDICE K

LÓGICA SECUENCIAL

La característica que distingue a la lógica secuencial de la combinacional es,


precisamente, la consideración de las secuencias (de ahí su nombre) sucedidas en el
circuito anteriormente. Esto implica que las salidas obtenidas dependerán ya no sólo
de las entradas sino, además, del estado anterior en el que se encontrase el cicuito. De
forma implícita se están sentando las bases de lo que es una memoria
microinformática ya que es preciso que el circuito recuerde en qué estado está en cada
momento.

Para abordar este tema, se evoluciona desde las puertas lógicas hasta los
biestables, elementos compuestos internamente por puertas pero que se considerarán
como fundamentales. A partir de ellos se realizarán diferentes circuitos típicos.
Contadores de secuencias, programables, registros de desplazamientos,... son
analizados en este capítulo de forma minuciosa, dando al lector la base para entender
cómo funcionan muchos de los procesos internos del PC (por lo menos, a nivel
conceptual).

Como es de suponer, el tiempo es un factor fundamental en este tipo de


montajes. De este modo se distinguirán circuitos síncronos y asíncronos en función de
su utilización o no de generadores de pulsos que, en definitiva, serán los relojes. El
planteamiento en este sentido es el mismo que el tratado en el capítulo anterior y, por
supuesto, es análogo a los relojes descritos en el segundo capítulo que trabajan sobre
la placa base.

Poco más que añadir... el texto se completa, al igual que otros capítulos, con una
serie de ejercicios prácticos propuestos y cuya solución se encuentra en uno de los
apéndices finales del libro. De este modo podrá comprobar de qué modo se ha
asimilado lo aquí expuesto.
64 HARDWARE MICROINFORMÁTICO © RA-MA

K.1. BIESTABLES R-S


Es el más básico de los biestables. Sus entradas condicionan el estado de la
salida tal que R (RESET) pone a 0 la salida Q y S (SET) la pone a 1. Como se puede
observar, existe una realimentación o “feedback” entre la salida y la entrada. En la
tabla de verdad se puede comprobar que la báscula funciona según los mandatos de R-
S. En caso de tener un 0 en sus dos entradas, la báscula permanece en su estado
anterior, es decir, no varía. El problema se presenta si las dos entradas se ponen a 1.
Esto indica al biestable que se ponga a 0 y 1 a la vez. En la práctica, el resultado es
imprevisible, ya que depende de los tiempos de retardo de las distintas puertas e,
incluso, de la tecnología de fabricación. Por este motivo, el estado R=1 y S=1 es
indeseable y se cataloga como indeterminado.

Supongamos el circuito de la figura. Sobre él existen dos entradas: R y S y dos


salidas: Q y Q . Dadas las características del circuito, las salidas Q y Q son también
entradas del mismo. Para poder realizar su tabla de la verdad distinguiremos Q y Q en
sus matices de entrada o salida asumiendo que Q será una salida y Qt-1 será la misma
salida Q pero asumiendo su papel de entrada, es decir, Qt-1 es el estado en el que se
encontraba Q en un ciclo anterior. Por supuesto, lo expuesto para Q es análogo para
Q . Consideremos cada uno de los casos para el circuito de la figura:

Figura K–1 Biestable R-S

S=0, R=0, Qt-1=0 La puerta A se encuentra con dos 0 a su entrada. La suma lógica
inversa dará un resultado de 1 para Q . Este mismo 1 repercutirá
a la entrada de la puerta B junto al 0 que se encuentra por
definición del estado. El resultado de la operación NOR será por
tanto de 0 para Q. Resumiendo:

S=0, R=0, Qt-1=0=> Q=0 y Q =1

S=0, R=0, Qt-1=1 A la puerta A le llega un 0 por S y un 1 por Qt-1. El resultado de


la NOR es de 0 para Q . A su vez la puerta B recibe un 0 fruto de
la operación anterior y otro por R. El resultado para Q será de 1.
Dicho de otra forma:
© RA-MA APÉNDICE K: LÓGICA SECUENCIAL 65

S=0, R=0, Qt-1=1=>Q=1 y Q =0

S=0, R=1, Qt-1=0 En este caso la puerta A recibe dos entradas a 0. La salida de
Q será por tanto 1. Dicho 1 irá a la entrada de la puerta B donde
encontrará otro 1. El resultado de la puerta será de 0 para Q y 1
para Q negada. En resumen:

S=0, R=1, Qt-1=0 => Q=0 y Q =1

S=0, R=1, Qt-1=1 La puerta A recibe un 0 y un 1 y ofrece como resultado un 0


para Q negada. Dicho 0 se transmite a la puerta B donde
encuentra un 1 en R. El resultado para Q será de 0. Ahora bien, si
este nuevo 0 se vuelve a aplicar a la puerta A con S=0, el
resultado para Q negada será de 1, que ya no afectará a la
estabilidad de la puerta B. Ha sido preciso realizar dos ciclos
para encontrar el estado estable del circuito, es decir:

S=0, R=1, Qt-1=1 => Q=0 y Q =1

S=1, R=0, Qt-1=0 En este caso la puerta A dispone de un 1 y un 0 a su entrada. La


suma lógica inversa generará un 0 a su salida que se repercutirá a
la entrada de la puerta B junto al 0 de R. La suma inversa dará un
1 a su salida. El resultado será por tanto de:

S=1, R=0, Qt-1=0 => Q=1 y Q =0

S=1, R=0, Qt-1=1 De forma análoga a los casos anteriores, estas premisas de
entrada generarán un 0 a la salida de la puerta A. Este 0 junto al
de R provocarán en la salida de la puerta B un estado estable de
1. En definitiva:
S=1, R=0, Qt-1=1 => Q=0 y Q =1

S=1, R=1, Qt=0 En este penúltimo estado se produce algo curioso: cuando a la
puerta A llegan un 1 y un 0, la salida lógica es de 0 por tanto
para Q . A su vez este 0 va a la entrada de la puerta B que, junto
al 1 de R, genera otro 0 para Q. Este estado, aunque se itere,
siempre producirá que tanto Q como Q tienen un 0 a su salida.
Este caso es imposible por definición, ya que Q es precisamente
la inversa de Q y por tanto ambas no pueden tener el mismo
valor. Este caso se considerará como no definido o ND. El
resultado es:
S=1, R=1, Qt-1=0 => Q=ND y Q =ND
66 HARDWARE MICROINFORMÁTICO © RA-MA

S=1, R=1. Qt-1=1 Al igual que en el estado anterior se vuelve a producir un estado
no determinado, ya que Q se pondrá a 0 como resultado de los
dos 1 de su entrada y Q alcanzará el mismo estado como fruto
del 0 de la salida de la puerta A y el 1 de entrada de R. En
resumen:
S=1, R=1, Qt-1=1 => Q=ND y Q =ND

El resultado en forma de tabla de lo expuesto es el siguiente:

S R Qt-1 Q Q Resumen S R Qt
0 0 0 0 1
Qt-1 0 0 Qt-1
0 0 1 1 0
0 1 0 0 1
0 0 1 0
0 1 1 0 1
1 0 0 1 0
1 1 0 1
1 0 1 1 0
1 1 0 ND ND
ND 1 1 ND
1 1 1 ND ND
Tabla K–1 Biestables R-S

Si el biestable se ha implementado con puertas NAND, se le denomina de


“borrado prioritario” mientras que si está formado por puertas NOR es de “inscripción
prioritaria”.

Se ha representado una columna a la derecha llamada Resumen. En ella aparece


el resumen de cada uno de los casos tomados de dos en dos de la tabla. Esta
conjunción de casos genera la tabla resumida representada a la derecha que será el
formato que se usará en adelante.

R S Q
0 0 Qt-1
0 1 1
1 0 0
1 1 ND
Tabla K–2 Tabla de transición biestables R-S

K.2. BIESTABLES D
Es una evolución del R-S. Tiene una única entrada (D) que está conectada
mediante un inversor a la segunda entrada. De esta forma se eliminan los casos de
entradas 1-1 ó 0-0. El resultado es que en la salida se reproduce exactamente lo que
hay en la entrada.
© RA-MA APÉNDICE K: LÓGICA SECUENCIAL 67

Explicado así, se comporta como un cable. Posteriormente se verán aplicaciones


de este biestable gracias a entradas de reloj.

En este caso la única entrada válida sería realmente S, ya que R es simplemente


la negada. Su tabla de verdad es la siguiente. Para mayor claridad se han representado
las entradas R y S, se entiende que a S se le dará el nombre de D:

S R Qt-1 Q Q Resumen “CLOCK” D Q


0 1 0 0 1 S 0 0 Qt-1
0 1 1 0 1 S 0 1 Qt-1
1 0 0 1 0 S 1 0 0
1 0 1 1 0 S 1 1 1
Tabla K–3 Biestable D y tabla de transición

En la tabla de la derecha se ha incluido un reloj “CLOCK” que determina


cuándo el biestable debe trabajar. Obsérvese que funciona como si de un interruptor se
tratase. El motivo de su inclusión es que este tipo de biestable trabaja como un cable
transparente, es decir, transmite a su salida lo que hubiese en su entrada. La única
ventaja que aporta, por el momento, es su control mediante una entrada validadora de
reloj además de, por supuesto, las propiedades de memoria características de un
biestable.

“CLOCK” D Q
0 0 Qt-1
0 1 Qt-1
1 0 0
1 1 1
Tabla K–4 Desarrollo de biestables D

La obtención de un biestable tipo D a partir de un RS o JK es sencilla: basta con


comparar la tabla de la verdad del biestable del que se parte con la del tipo D y
adecuar los valores de entrada. En este caso concreto se observa que la entrada D se
comporta igual que la S en un biestable RS en aquellos casos en los que R y S son
diferentes. Así, para R=0 y S=1, Q toma el valor de 1 (S=Q) y para R=1 y S=0, Q vale
0 (se sigue manteniendo que S=Q). Dado que R y S son en estos casos siempre
complementarias, se opta por añadir un inversor entre ambas entradas, adoptando S
como la entrada D, tal y como se muestra en la figura.

Figura K–2 Biestable D


68 HARDWARE MICROINFORMÁTICO © RA-MA

El proceso sería exactamente igual en el caso de tratar con un biestable JK. Se


invita al lector a que realice las comprobaciones a partir de la explicación anterior.

K.3. BIESTABLES JK
Quizás se trate del biestable más utilizado. Dispone de dos entradas como el R-
S pero no existe el estado de indeterminación. Así, cuando J vale 1, coloca la salida
del biestable a 1 y, cuando K vale 1, el biestable se pone a 0. En el caso J=0 y K=0, el
biestable permanece en el estado anterior, es decir, no se modifica. Para J=1 y K=1, la
salida se invierte, es decir, cambia el estado anterior.

J K Q
0 0 Qt-1

0 1 0
1 0 1
1 1 Qt − 1
Tabla K–5 Biestables J-K

Figura K–3 Biestable J-K

K.4. BIESTABLES T
Se trata de una simplificación del biestable JK. Su única entrada determina que,
si está a 0, la salida no varía, y cuando aparece un 1, se invierte el estado actual. Para
su realización se unen las entradas del JK entre sí y se le da el nombre de T.
Observando la tabla de la verdad del JK se puede comprobar que para entradas iguales
el biestable mantiene el estado anterior para entrada a nivel 0 y niega el estado en el
que se encontraba cuando su entrada es 1. Su tabla de la verdad, a partir de la del JK,
sería la siguiente:
© RA-MA APÉNDICE K: LÓGICA SECUENCIAL 69

J K Qt-1 Q Q T Q
0 0 0 0 1
0 0 1 1 0
0 Qt-1
0 1 0 0 1
0 1 1 0 1
1 0 0 1 0
1 0 1 1 0
1 Q −1
1 1 0 1 0
1 1 1 0 1
Tabla K–6 Biestables T

T Q

0 Qt-1

1 Qt − 1

Tabla K–7 Desarrollo de biestables T

K.5. SINCRONISMO
Es común añadir a los biestables una entrada adicional de reloj. Esto condiciona
la entrada no aceptando ningún dato mientras no está autorizado por el reloj. Éste es el
modo en el que se consigue establecer un modo de ejecución común entre varios
circuitos en un intervalo de tiempo.

El concepto de reloj dentro de la Electrónica Digital en poco difiere a lo que es


un reloj convencional: se trata de un circuito o cristal capaz de producir una serie de
pulsos regulares en el tiempo. De este modo y tomando esta señal como patrón, será
posible establecer frecuencias derivadas de la original.

Dado que el pulso cuadrado de un reloj se puede descomponer en varias partes,


será preciso establecer un criterio a la hora de usar la señal. Así, los relojes pueden ser
activos por nivel (alto o bajo) o por flanco (subida o bajada). La ventaja de trabajar por
flanco frente a nivel es que se evita que durante el tiempo que dura un nivel las
entradas puedan variar. Se podrá observar qué tipo de activación es la usada sobre un
pulso comprobando una pequeña flecha que se colocará sobre el flanco o nivel:

a) Nivel Alto
b) Nivel Bajo
c) Flanco de Subida
d) Flanco de Bajada
Figura K–4 Activaciones de reloj
70 HARDWARE MICROINFORMÁTICO © RA-MA

De igual modo, habrá que establecer un criterio a la hora de representar los


biestables gráficamente que determine qué porción del pulso de reloj es la que les
afecta. El convenio al que se llega es el representado en la figura siguiente:

a) Nivel Alto
b) Nivel Bajo
c) Flanco de Subida
d) Flanco de Bajada
Figura K–5 Sincronismo en biestables

Para mayor información sobre los relojes, se recomienda al lector la lectura del
apartado El Oscilador, dentro del capítulo dedicado a las Placas Base de ordenador
dentro de este mismo libro.

Existe un tipo de memoria conocido como DDR SDRAM (“Double Data Rate
SDRAM”), aunque también se le denomina SDRAM II. Esta memoria de ordenador es
especialmente rápida (competitiva con la popular Rambus) ya que es capaz de duplicar
el rendimiento (envía dos datos por ciclo cuando lo normal es enviar uno) siendo
síncrona al flanco de subida y al de bajada de un mismo pulso, es decir, aprovecha en
un solo pulso dos activaciones.

No obstante, existen una serie de entradas que no dependen de la actuación del


reloj para ser efectivas en el funcionamiento de un biestable. Dada esta condición,
reciben el nombre de entradas asíncronas. Lo habitual es que se disponga de las
siguientes aunque no necesariamente deben estar presentes en todos los biestables:

“Preset” : Pone la salida a 1.


“Clear” : Pone la salida a 0.
“Enable” : Permite el funcionamiento cuando está activa.
“Disable” : No permite el funcionamiento cuando está activa.

Figura K–6 Concepto de sincronismo


© RA-MA APÉNDICE K: LÓGICA SECUENCIAL 71

K.6. REGISTROS DE DESPLAZAMIENTO


Por registro de desplazamiento se entenderá al montaje electrónico formado por
biestables capaces de almacenar de forma temporal una información múltiple.
Obsérvese que en este caso no se hace referencia a un dato simple, sino que el
concepto se amplía a más de un bit, pudiendo almacenar tantos como biestables se
utilicen. Así, para almacenar un byte se precisarán 8 biestables.

Su nombre de registro de desplazamiento proviene del modo en que se transmite


la información de un biestable a otro. Concretamente habría que especificar que el
citado “desplazamiento” se produce en montajes serie (ya sea en su entrada o salida).

Como se adelantaba, es preciso identificar, además del número de bits que se


desea almacenar, dos conceptos más: de qué modo se van a almacenar los datos y
cómo se van a obtener una vez que han sido previamente guardados. Las opciones
disponibles son las cuatro combinaciones que surgen al combinar los conceptos de
entrada y salida con los de serie y paralelo.

Cada montaje responde a un tipo de necesidades y posee unas características


específicas en cuanto a velocidad y obtención de datos. Ahora bien, estas
combinaciones hacen de los registros de desplazamiento no sólo memorias
convencionales, sino herramientas de conversión paralelo-serie y viceversa, resultando
especialmente útiles como interfaz en montajes de comunicaciones. De hecho, la
UART de un puerto serie de un PC, entre otras funciones, tiene la misión de convertir
los datos serie que recibe en palabras de 8 bits para ser posteriormente tratadas por el
ordenador y viceversa. A continuación se detalla cada montaje de manera específica.

K.6.1. Registro Entrada Serie - Salida Serie


Este montaje, por definición, es el más lento. El proceso de entrada se realiza
con tantos pulsos de reloj como biestables (datos) se deseen introducir. Con el primer
pulso, el primer biestable asumirá el primer dato de entrada, quedando así cargado.
Cuando suceda el segundo pulso, el primer biestable trasladará su información al
siguiente y recibirá el segundo bit. Así, sucesivamente se irá cargando el registro
produciéndose un “desplazamiento de la información”. El proceso es análogo a la
salida: una vez cargado el registro, los datos se irán desplazando hacia la derecha
obteniendo en formato serie la información contenida.

Figura K–7 Registro Serie-Serie


72 HARDWARE MICROINFORMÁTICO © RA-MA

K.6.2. Registro Entrada Serie - Salida Paralelo


El proceso de carga del registro responde al ya descrito en el apartado de
serie-serie: serán precisos tantos pulsos de reloj como biestables (bits) se deseen
cargar. Una vez llegado al punto en el que el registro contiene la información, se
puede disponer en forma paralela de la misma ya que bastará con obtener los datos a
partir de la salida de cada uno de los biestables. Obviamente este tipo de salida no
precisa de ningún pulso de reloj, sino que estará disponible desde el último pulso que
produjo la carga. A veces se suele incluir una circuitería adicional que valide la salida
sólo cuando el registro se encuentra completamente cargado.

Figura K–8 Registro Serie-Paralelo

K.6.3. Registro Entrada Paralelo - Salida Serie


Lo novedoso de este sistema obedece al sistema de carga de datos. Existen
varios sistemas aunque en este ejemplo se ha optado por usar entradas asíncronas.
Dado que se pretende una carga inmediata, se han unido las entradas de preset y clear
mediante un inversor de modo que al introducir un 1, éste se transmitirá al preset (y
por tanto a Q) dejando el clear a 0. La operación complementaria se produce ante la
introducción de un 0 que activa el clear (dejando Q a 0) y desactiva el preset. Se
deduce, por tanto, que no sería preciso ni tan siquiera un pulso de reloj para la carga
del registro. Una vez cargado, la salida se produce en serie con el proceso descrito en
montajes anteriores: serán tantos pulsos como biestables los necesarios para conseguir
la descarga de datos. Existen variaciones para la carga en paralelo tal y como se puede
ver en este mismo texto más adelante en el registro universal.

Figura K–9 Registro Paralelo-Serie


© RA-MA APÉNDICE K: LÓGICA SECUENCIAL 73

K.6.4. Registro Entrada Paralelo - Salida Paralelo


Éste es sin duda el sistema más rápido de carga y descarga. No sería precisa ni
siquiera la entrada de reloj ya que, tal y como se ha diseñado el montaje, todo se
realiza de forma asíncrona. El proceso de carga es el descrito en el montaje paralelo-
serie que se produce de forma inmediata. Tras el citado proceso, los biestables y el
registro en su conjunto queda cargado con la información suministrada. El proceso de
descarga es más sencillo aún si cabe. De forma concreta no se produce un proceso de
descarga como tal, sino más bien una “toma de datos” ya que éstos se encuentran
directamente en la salida Q de los biestables. El tiempo total consumido por todo el
proceso dependerá directamente del tiempo de conmutación usado por los biestables
no teniendo por qué llegar a consumir ningún ciclo de reloj.

Figura K–10 Registro Paralelo-Paralelo

K.6.5. Registro Universal


Resulta obvio el deducir que la diferencia entre fabricantes de circuitos
integrados no se encuentra en el precio sino en las prestaciones que ofrece el producto.
Esto es así porque la materia prima de fabricación es barata en extremo (téngase en
cuenta que se está haciendo referencia al silicio principalmente, que es el elemento
más abundante en la Naturaleza). En este sentido, los registros de desplazamiento
encuentran una variante en los registros universales, es decir, circuitos que son
capaces de comportarse como uno de los cuatro modelos descritos anteriormente
según las necesidades del usuario.

A continuación se ilustran varios ejemplos entendiendo que, como siempre en


este campo, hay diseños mejores y peores en función del uso y que se les desee dar y
las prestaciones que se esperen (fiabilidad, precio, rapidez...). En la siguiente figura se
muestra un registro universal donde, según las necesidades del usuario, se conseguirán
los cuatro modos de funcionamiento descritos.
74 HARDWARE MICROINFORMÁTICO © RA-MA

Figura K–11 Registro Universal

Este circuito ofrece dos entradas de control denominadas S1 y S2. La primera


será encargada de la entrada, mientras que la segunda hará lo propio con la salida. En
ambos casos, la colocación a 0 de la entrada implicará un funcionamiento paralelo y
un 1 un funcionamiento en serie. El reloj será común a todos los modos de
funcionamiento aunque en el modo paralelo y dado que se utilizan las entradas
asíncronas de preset y clear, no será preciso ningún pulso para la carga/descarga del
registro.

El funcionamiento es sencillo: se usan las puertas AND como interruptores que


habilitan o deshabilitan el modo de trabajo. Lógicamente se encuentran invertidas las
señales entre el modo serie y paralelo de manera que, cuando funcione una la otra
permanezca desactiva. El único matiz corresponde a la puerta que aparece tras el
inversor que une la señal de preset con la de clear. Su misión es la de evitar un efecto
colateral: la activación de la señal de clear cuando S1 esté a 1 (modo serie).

Otra variante es la mostrada en la figura siguiente, donde el circuito responde a


un registro universal que se encuentra integrado en distintos formatos, como el CI
74194. Se propone al lector el seguimiento detallado del circuito:

Figura K–12 Registro Universal (CI 74194)


© RA-MA APÉNDICE K: LÓGICA SECUENCIAL 75

La variable Control determina si las entradas se realizarán en serie o paralelo


(valores 0 y 1 respectivamente), habilitando o deshabilitando las puertas AND
marcadas con “S”. La puerta OR se encargará de dar paso a una u otra entrada.
Dispone de dos relojes: CK1 y CK2, encargados cada uno de gestionar la entrada/salida
de los datos en serie y paralelo respectivamente. Las salidas marcadas con A0, B0, C0 y
D0 responden a las salidas paralelo. La salida serie se obtiene en el último biestable. El
modo serie trabajará de izquierda a derecha.

Este circuito ofrece la ventaja frente al anterior de no necesitar entradas


asíncronas para su funcionamiento pero aumenta la dificultad en su manejo en cuanto
a la Electrónica externa requerida ya que se deben controlar dos entradas de reloj en
lugar de una para seleccionar el modo de salida. De igual modo la selección de la
forma de trabajo puede resultar más compleja ya que precisa del cambio externo de la
variable de control. Así, si se desea una entrada paralelo y una salida en serie, habrá
que cargar los registros con un pulso de reloj, variar el estado de la variable de control
y generar la serie de pulsos restantes en la otra entrada de reloj para la descarga.

K.7. CONTADORES
Se trata de una aplicación de la lógica secuencial especialmente útil. Recibe este
nombre porque son montajes a partir de biestables capaces de establecer secuencias de
conteo en BCD. La capacidad de conteo de un contador se establece por el número de
biestables que lo compone de forma que se crea la relación de cuenta de 2n donde n
corresponde al número de biestables empleados (se dice que el contador es de módulo
n). De este modo, con un biestable se contarán dos secuencias (21=2 → de 0 a 1), con
dos biestables se contarán cuatro secuencias (22=4 → de 0 a 3), con tres biestables
hasta ocho secuencias (23=8 → de 0 a 7) y así sucesivamente. Normalmente se utilizan
biestables de tipo T o JK donde previamente se han unido sus entradas y se han puesto
a valor 1 lógico, formando así un tipo T.

Estos circuitos servirán de base de desarrollo para multitud de montajes


diferentes como relojes o circuitos de control para registros de desplazamiento,
divisores de frecuencia... Estos circuitos se realimentan de diferentes modos para
conseguir el fin perseguido y básicamente existen dos tipos: síncronos y asíncronos.
Sobre éstos se realizarán variaciones para conseguir otros modelos como, por ejemplo,
los contadores de décadas. A continuación se detalla cada tipo.

K.7.1. Contadores asíncronos


Este tipo de contador se caracteriza porque la salida de cada biestable es la
entrada del reloj del siguiente. Al trabajar con biestables T, como ya se adelantaba,
este tipo de conexión provoca que cada elemento cambie su salida con un pulso de
reloj, consiguiendo dividir la frecuencia. Si se va observando el proceso descrito a
76 HARDWARE MICROINFORMÁTICO © RA-MA

través de un cronograma, podrá comprobarse que lo producido en las salidas de los


biestables es una secuencia en binario.

Este tipo de montaje asíncrono tiene como principal problema la velocidad ya


que se produce un retardo al no conmutar todos los biestables en el mismo instante,
limitando seriamente la frecuencia de utilización. Así, y por cuantificar este punto,
supóngase un contador de módulo 4 (sería capaz de contar hasta 24=16). Si cada
biestable tiene un tiempo de conmutación de 33 ns (valor dentro del rango posible), el
retardo máximo que se puede dar es cuando los cuatro conmuten a un tiempo9, lo que
implicaría un retraso de:

TRETRASO= Nº Biestables x T.Conmutación = 4 · 33 = 132 ns

Obviamente el funcionamiento del contador no puede ser más rápido que el


citado retraso ya que no habría tiempo para pasar de un estado a otro en ese crítico
caso. Por tanto, la velocidad estaría limitada a:
1 1
F= = = 7,575 Mhz
T 132 ns

Figura K–13 Esquema de un contador

Según el circuito de la figura, se dispone de un contador con cuatro biestables


(también denominado de módulo 4) capaz de contar hasta 15 (24=16 → de 0 a 15). Se
observa que es asíncrono porque el reloj sólo ataca al primero de los biestables,
“heredando” el resto el sincronismo a través de la salida del biestable anterior.

Figura K–14 Cronograma de un contador

Como se puede observar, la secuencia producida (indicada en la parte inferior


del cronograma) responde a un conteo desde 0 (0000) hasta 15 (1111) en binario. Si se
deseara conseguir un contador descendente, bastaría con obtener la salida de Q en
9
Este caso límite sólo se daría al pasar de la secuencia 1111 a 0000 ya que, en el resto de los casos
nunca se produce la conmutación de los cuatro biestables.
© RA-MA APÉNDICE K: LÓGICA SECUENCIAL 77

lugar de Q, manteniendo exactamente igual el resto del circuito. Resulta obvio que el
cronograma sería el complementario y la secuencia de conteo sería desde 15
( 0000 = 1111 ) hasta 0 ( 1111 = 0000 ). De hecho, generalizando, se puede afirmar que el
conseguir un contador ascendente o descendente consiste únicamente en usar la salida
del biestable Q o Q , tal y como se resume en la siguiente tabla:

Q → Clock, con salida en Q → Ascendente


Q → Clock, con salida en Q → Ascendente
Q → Clock, con salida en Q → Descendente
Q → Clock, con salida en Q → Descendente

K.7.2. Contadores síncronos


Éste es el otro gran grupo de contadores. La diferencia principal con los
montajes expuestos anteriormente (contadores asíncronos) estriba en que todos los
biestables conmutan a un tiempo. Esto tiene importancia ya que no se producen los
retrasos “en cascada” que ocurrían en los contadores asíncronos. Este tipo de montaje
tiene un tiempo de transición igual al de uno cualquiera de sus biestables,
independientemente del número de estos que compongan el circuito.

De forma básica, estos montajes se realizan con biestables tipo T (o J-K


cortocircuitados) y la entrada de cada biestable se produce a nivel 1 cuando todos los
biestables anteriores también tienen su salida a 1. Esto se consigue mediante una
puerta AND. Como se puede deducir rápidamente, se plantean dos cuestiones en
referencia a la citada puerta:

Paralelo Una forma de establecer las puertas sería el colocar cada una delante del
biestable correspondiente y hacerle llegar la salida de los biestables
anteriores. El problema que acarrea este montaje (al que se denomina
paralelo porque a cada puerta le llegan la totalidad de las salidas anteriores)
es que la última puerta recogerá tantas entradas como biestables le antecedan.
Esto puede originar problemas ya que, por ejemplo, un contador hasta 255
(módulo 8) implicará una puerta poco común de 8 entradas (que si bien
puede encontrarse en el mercado, resulta menos común que otras con menor
número de entradas).

Figura K–15 Contador síncrono carry paralelo


78 HARDWARE MICROINFORMÁTICO © RA-MA

Serie Para evitar el problema anteriormente expuesto, se recurre a montajes en


serie. En este caso cada puerta recibirá la “herencia” de las puertas
anteriores además de la salida generada por el último biestable. La ventaja
de este montaje es que se reduce el número de entradas de las puertas AND
a 2. Como inconveniente se acumulará un retraso: el provocado por la
conmutación de cada una de las puertas lógicas. Este retraso puede llegar a
resultar importante y más si se considera la aplicación de este tipo de
circuitos.

Figura K–16 Contador síncrono carry serie

Esto no es una novedad ya que, si se observa detenidamente, una tabla de la


verdad obedece al mismo “principio”: cambia de estado cuando todos los estados
anteriores tienen valor 1.

K.7.2.1. CONTADOR EN ANILLO

Se trata de un montaje síncrono que, si bien es sencillo en extremo, resulta


bastante caro ya que la capacidad de conteo ya no se establece en 2n donde n coincide
con el número de biestables. En este caso la capacidad de conteo directamente
coincide con el módulo. Así, para contar seis secuencias se precisarán seis biestables.

Figura K–17 Contador en anillo

El funcionamiento, como ya se adelantaba, es sencillo: se realiza una carga al


contador mediante las entradas asíncronas de preset y clear dejando que el
sincronismo del reloj “desplaza” la información. La carga debe ser un número que no
acorte la secuencia por simetría, es decir, se evitarán las cargas del tipo 000000,
111111, 101010, 010101… En definitiva, se recomienda que la carga sea con un único
biestable con un valor contrario al resto, como si de un marcador se tratara. Se une la
© RA-MA APÉNDICE K: LÓGICA SECUENCIAL 79

salida del último biestable con la entrada del primero para repetir la secuencia. Así, si
la carga fuese, por ejemplo 100000 (se ha elegido esta selección por su claridad a la
hora de representación en una tabla de verdad o un cronograma), la traza de la carga
de los biestables sería:

QA QB QC QD QE QF
Carga inicial 1 0 0 0 0 0
Pulso 1º del reloj 0 1 0 0 0 0
Pulso 2º del reloj 0 0 1 0 0 0
Pulso 3º del reloj 0 0 0 1 0 0
Pulso 4º del reloj 0 0 0 0 1 0
Pulso 5º del reloj 0 0 0 0 0 1
Inicio de la secuencia 1 0 0 0 0 0

Tabla K–8 Desplazamiento de datos

Como se puede observar, la secuencia de conteo no corresponde a BCD (32, 16,


8, 4, 2 y 1) por lo que este tipo de contador no es apto para representar los resultados
en un display. Sí será útil como temporizador, por ejemplo, o como cualquier otro
sistema programable (por la secuencia de entrada) capaz de generar una serie de
estados muy concretos.

K.7.2.2. CONTADOR DE JOHNSON

El contador de Johnson es una variación del contador en anillo que optimiza la


relación número de biestables y, por tanto, la capacidad de conteo. Esta relación se
establece en 2n donde n corresponde al número de biestables. Como se puede observar
en la figura, la única diferencia estriba en que la realimentación que unía la salida del
último biestable con la entrada del primero se realiza a través de un inversor. Tal y
como se puede apreciar en el segundo esquema, el citado inversor puede suprimirse
aprovechando la salida negada del propio biestable.

Este montaje consigue “contar más” gracias a la negación, que va creando una
secuencia más a la que se daría en un anillo: su negada.

Figura K–18 Contador de Johnson


80 HARDWARE MICROINFORMÁTICO © RA-MA

A continuación se ha representado la tabla de la verdad a la que obedece este


contador, partiendo de un estado inicial 000. No obstante, poco importaría cuál fuese
el estado inicial ya que el contador se “estabilizaría” en la propia secuencia de cuenta.
La no necesidad de inicialización del montaje es otra ventaja a tener en cuenta.

QA QB QC
Carga inicial 0 0 0
Pulso 1º del reloj 1 0 0
Pulso 2º del reloj 1 1 0
Pulso 3º del reloj 1 1 1
Pulso 4º del reloj 0 1 1
Pulso 5º del reloj 0 0 1
Inicio de la secuencia 0 0 0
Tabla K–9 Desplazamiento de datos

K.7.3. Limitación en la secuencia


Si se desea que el contador sea de un determinado módulo de forma
independiente a su sincronismo (síncrono-asíncrono), sólo se necesita, mediante una
puerta AND, recoger la secuencia que se desea que provoque el final de la cuenta y
llevar la salida al preset o clear de todos los biestables. De esta forma el sistema se
inicializará a valor 0 ó 1 (según la entrada elegida) y comenzará a contar otra vez.

Este sistema es usado, por ejemplo, por relojes digitales donde es necesario
detectar el fin de un minuto o de una hora y, especialmente, para los denominados
contadores de décadas como el de la siguiente figura:

Figura K–19 Contador asíncrono de décadas

El circuito de la figura responde al cronograma siguiente:


© RA-MA APÉNDICE K: LÓGICA SECUENCIAL 81

Figura K–20 Contador de décadas

Es especialmente importante destacar que según la entrada que se desee usar


(preset o clear), el estado a detectar varía. Parece por tanto necesario profundizar en
cómo se realiza la conmutación de estados cuando se desea trabajar con preset o con
clear, tal y como se detalla en los siguientes puntos.

K.7.3.1. LIMITACIÓN POR CLEAR

El método de limitación de secuencia usando la entrada asíncrona de clear,


implica que se detecte el estado justo al que se desea llegar. Así, en un contador de
décadas se pretende una secuencia de conteo de 0 a 9 (un total de diez unidades
contadas donde cada una de ellas “consume” un tiempo t).

Aplicando la detección al número 10 será preciso detectar la secuencia 1010 e,


inmediatamente, conmutarla a valor 0 para que el siguiente número sea el 1.
Obsérvese que todo ocurre en el mismo pulso de reloj de duración t puesto que se trata
de entradas asíncronas y puertas sin la presencia del reloj. Así, una vez ha llegado el
pulso que ha hecho conmutar al contador al estado 1010, en ese mismo instante es
detectada la secuencia por las puertas (con un retardo mínimo expresado por t’) y, a
continuación, activado el clear de todos los biestables. De este modo, ante el próximo
pulso de clock, todos los biestables se encontrarán en la secuencia 0000, origen para
un nuevo conteo ascendente.

Figura K–21 Limitación por clear


82 HARDWARE MICROINFORMÁTICO © RA-MA

Este método no sería válido si se pretendiese reflejar el número que se está


contando en un display 7 segmentos ya que, al llegar al número 10, se vería “algo
extraño” (conmutaría en un breve intervalo de tiempo de 10 –aparecería t’ unidades de
tiempo– a 0 –aparecería t-t’ unidades de tiempo–, reflejándose en el display). Sí
resulta útil, por ejemplo, para establecer temporizaciones.

K.7.3.2. LIMITACIÓN POR PRESET

El método de detección por la señal de preset es análogo al de clear pero habrá


que tener en cuenta el estado al que se conmuta. Así y dado que la señal de preset
pone el biestable a valor 1, será precisa su detección en el estado 1001 (9) del contador
para hacerlo bascular a 1111 (15) en el mismo estado y que así, el próximo número,
sea 0000 (0). Al igual que con el ejemplo anterior, toda esta transición de estados (9-
15) se produce en el mismo pulso de reloj ya que el preset también es una señal
asíncrona. La duración de la “cuenta”, por tanto, sería correcta pero no sería el
circuito recomendable para visualizar los resultados en un display, ya que aparecería la
transición anteriormente citada de 9 a 15.

En la figura se puede apreciar el cambio de secuencia:

Figura K–22 Limitación por preset

En algunos montajes (independientemente de trabajar con preset o clear) se usa


la entrada de reloj como una entrada más a la puerta de detección del estado –tal y
como ocurre en el contador de décadas de la figura anterior–. De este modo se asegura
el momento exacto de la conmutación.

K.7.2.3. CONTADORES PROGRAMABLES

Otra variación de los contadores corresponde a los contadores programables.


Reciben este nombre porque son capaces de ceñirse a una secuencia de conteo
previamente definida por parte del usuario. Así, no será preciso ceñirse a un sistema
de cuenta binaria donde las únicas variaciones posibles son realizarlo de modo
ascendente o descendente. Secuencias del tipo 1-5-2-7 son posibles con este sistema.
Realmente se trata de un algoritmo sencillo que se apoya en las tablas de excitación y
transición para desarrollarse.

El proceso responde a los siguientes puntos:


© RA-MA APÉNDICE K: LÓGICA SECUENCIAL 83

1. Calcular el número de biestables preciso. Para ello bastará con determinar


cuántos dígitos se precisan para representar el mayor de los números y, ese
número de dígitos, se corresponderá con el número de biestables.

2. Realizar una tabla de la verdad donde aparezca una secuencia natural de conteo
ascendente y, a su derecha, las transiciones que se desean realizar. Los valores
no incluidos en la secuencia podrán:

2.1. Ser encadenados a un número dentro de la secuencia permitida. Esto


asegura que, ante un posible error (alcanzar un valor fuera de la
secuencia), el contador es capaz de reiniciarse sólo hacia un valor
permitido.

2.2. Ser ignorados mediante un valor X que se simplificará en el futuro según


las conveniencias específicas de cada caso, como se verá en su momento.

3. Completar las tablas con la ayuda de las tablas de excitación/transición de los


biestables usados (JK generalmente, aunque podría realizarse con cualquier otro
aplicando la tabla de conmutación específica del biestable elegido).

4. Obtener las funciones simplificadas (úsese Karnaugh) de las entradas de los


biestables, atendiendo a las salidas Q (correspondientes al instante t).

5. Representar el circuito conectando las entradas según las funciones obtenidas.


El circuito estará gobernado por una misma línea de reloj y la salida del mismo
se encontrará en la salida Q de cada biestable.

Lo más claro será ilustrar lo expuesto con un ejercicio. Supóngase que se desea
un contador con la secuencia 1-5-2-7. Los pasos a seguir serán los detallados a
continuación:

1. Determinar el número de biestables. En el ejemplo que no ocupa, se precisará


un contador de módulo 3 ya que 23=8>7. Como se observa, no es ningún
problema que la capacidad teoríca de conteo sea superior a la requerida: basta
con disponer del número de biestables precisos como para representar el mayor
de los valores.

2. Realización de la tabla. Así, si la secuencia es 1-5-2-7, a la derecha del 1 deberá


aparecer el 5, a la derecha del 5 el 2 y así sucesivamente. El último de los
valores debe encadenarse con el primero, es decir, del 7 se irá al 1. Dado que se
trata de un ejemplo, se desarrollarán en paralelo las dos posibilidades que se
pueden dar con los valores no incluidos en la secuencia: redireccionarlos a un
número integrado en el conteo o despreciarlos, asignándoles un valor
indeterminado de X.
84 HARDWARE MICROINFORMÁTICO © RA-MA

QA QB QC QA+1 QB+1 QC+1 QA QB QC QA+1 QB+1 QC+1


0 0 0 0 0 1 0 0 0 X X X
0 0 1 1 0 1 0 0 1 1 0 1
0 1 0 1 1 1 0 1 0 1 1 1
0 1 1 0 0 1 0 1 1 X X X
1 0 0 0 0 1 1 0 0 X X X
1 0 1 0 1 0 1 0 1 0 1 0
1 1 0 0 0 1 1 1 0 X X X
1 1 1 0 0 1 1 1 1 0 0 1
Tabla K–10 Tablas con/sin vuelta a secuencia

Gráficamente se podría entender que las dos tablas expuestas responden a los
siguientes grafos, donde el primero contempla todos los estados y redirecciona
los incorrectos a la secuencia, mientras que el segundo no previene ninguna
acción ante un caso imprevisto:

Figura K–23 Grafos con/sin vuelta a secuencia

Como se comprueba en la figura de la izquierda, cualquier número no


contemplado en la secuencia tiene como elemento siguiente el número 1 de
modo que, ante un eventual problema, éste se solventará sin intervención por
parte del usuario. En la tabla de la derecha se ha omitido esta seguridad
reemplazando las secuencias no contempladas por valores indeterminados (X).
En caso de error, el contador se comportaría en función del valor asignado a las
X en el proceso de simplificación de Karnaugh. Este segundo método origina
circuitos más pequeños pero menos fiables, justo el contrario del primer modo
que genera contadores seguros con la penalización de un mayor consumo de
puertas.

3. Completar la tabla con ayuda de la tabla de excitación que en este caso y puesto
que se están desarrollando dos ejemplos en paralelo, correspondería a la
siguiente:
© RA-MA APÉNDICE K: LÓGICA SECUENCIAL 85

Transiciones Entradas

Instante t Instante t+1 Biestable A Biestable B Biestable C

QA QB QC QA+1 QB+1 QC+1 JA KA JB KB JC KC


0 0 0 0 0 1 0 X 0 X 1 X
0 0 1 1 0 1 1 X 0 X X 0
0 1 0 1 1 1 1 X X 0 1 X
0 1 1 0 0 1 0 X X 1 X 0
1 0 0 0 0 1 X 1 0 X 1 X
1 0 1 0 1 0 X 1 1 X X 1
1 1 0 0 0 1 X 1 X 1 1 X
1 1 1 0 0 1 X 1 X 1 X 0
Tabla K–11 Transición con vuelta a secuencia

Como se observa, basta con observar qué dato tiene la salida Q de un biestable
concreto en un instante t y cuál en el instante t+1. Esto habrá sido consecuencia
de la aplicación de unas entradas concretas tal y como se aprecia en las tablas.
De forma análoga ocurriría si el proceso se hubiese realizado sin seguridad:

Transiciones Entradas
Instante t Instante t+1 Biestable A Biestable B Biestable C

QA QB QC QA+1 QB+1 QC+1 JA KA JB KB JC KC


0 0 0 X X X X X X X X X
0 0 1 1 0 1 1 X 0 X X 0
0 1 0 1 1 1 1 X X 0 1 X
0 1 1 X X X X X X X X X
1 0 0 X X X X X X X X X
1 0 1 0 1 0 X 1 1 X X 1
1 1 0 X X X X X X X X X
1 1 1 0 0 1 X 1 X 1 X 0
Tabla K–12 Transición sin vuelta a secuencia

En este caso las secuencias marcadas con X dan igual, por lo que no hay que
condicionar las entradas. La simplificación corresponde a las siguientes tablas
de Karnaugh para ambos casos:

QAQB/ QC 00 01 11 10 QAQB/ QC 00 01 11 10 QAQB/ QC 00 01 11 10


0 0 1 X X 0 X X 1 1 0 0 X X 0
1 1 0 X X 1 X X 1 1 1 0 X X 1

J A = Q B Q C + Q BQ C = Q B ⊕ Q C KA= 1 JB= QAQC


86 HARDWARE MICROINFORMÁTICO © RA-MA

QAQB/ QC 00 01 11 10 QAQB/ QC 00 01 11 10 QAQB/ QC 00 01 11 10


0 X 0 1 X 0 1 1 1 1 0 X X X X
1 X 1 1 X 1 X X X X 1 0 0 0 1
KB= Q A + Q C JC= 1 KC= Q A Q B

En caso de simplificar la tabla sin seguridad de retorno a la secuencia, el


resultado sería el siguiente:

QAQB/ QC 00 01 11 10 QAQB/ QC 00 01 11 10 QAQB/ QC 00 01 11 10


0 X 1 X X 0 X X 1 X 0 X X X X
1 1 X X X 1 X X X 1 1 0 X X 1
JA= 1 KA= 1 JB= QA

QAQB/ QC 00 01 11 10 QAQB/ QC 00 01 11 10 QAQB/ QC 00 01 11 10


0 X 0 X X 0 X 1 X X 0 X X X X
1 X X 1 X 1 X X X X 1 0 X 0 1
KB= QA JC= 1 KC= Q A Q B

A continuación y basándose en las funciones obtenidas, se implementan los


biestables con una línea común de reloj y las entradas obtenidas en Karnaugh.
Por supuesto, la salida del contador se encontrará en la salida Q de cada
biestable.

Figura K–24 Contador con vuelta a secuencia

Figura K–25 Contador sin vuelta a secuencia


© RA-MA APÉNDICE K: LÓGICA SECUENCIAL 87

K.8. INTEGRACIÓN: LAS DIFERENTES ESCALAS


Las diferentes escalas de integración definen hasta qué punto se han integrado
dentro de un mismo circuito una serie de puertas lógicas. Así, y vistas de menor a
mayor escala de integración, las diferentes etapas se han definido como:

ESCALA TRANSISTORES PUERTAS


SSI (Short Scale Integration) 0 ÷ 100 0 ÷ 10
MSI (Medium Scale Integration) 100 ÷ 1.000 10 ÷ 100
LSI (Large Scale Integration) 1.000 ÷ 10.000 100 ÷ 1.000
VLSI (Very Large Scale Integration) 10.000 ÷ 100.000 1.000 ÷ 10.000
VHLSI (Very High Large Scale Integration) >100.000 >10.000
Tabla K–13 Escalas de integración

K.9. TABLAS DE EXCITACIÓN


Las tablas de excitación surgen de la necesidad de interpretar los biestables
como máquinas secuenciales que en definitiva son. Ya no se atiende a la salida en
función de la entrada y el estado interno, sino que, manteniendo los mismos
condicionantes de funcionamiento, se evalúa qué entradas deben darse para una
sucesión concreta de salidas.

La creación de la tabla de excitación es sencilla. En la siguiente figura se ha


representado la tabla de la verdad de un biestable RS y, a continuación, su tabla de
excitación en dos modalidades (llamémoslas “Normal” y “simplificada”, aunque
realmente se utiliza siempre esta última). La interpretación que debe darse a la tabla
central es la siguiente: deberá indicarse qué entradas son precisas para conseguir una
transición de un estado Qt-1 a Qt de 0 a 0. Realmente bastaría con dejar tanto R como S
a valor 0 ya que así no cambia el valor (si estaba en 0, continuará en 0). Luego la
posibilidad sería (tal y como se indica en la tabla “normal” R = 0 y S = 0). Ahora bien,
otra posibilidad sería la de poner R = 1 y S = 0. Ya que R = 1 garantiza que el estado
que vendrá a continuación será 0, de forma independiente al estado anterior. Dado que
hay dos posibilidades válidas definidas como (R=0, S=0) y (R=1, S=0), se puede
determinar que, siempre que S valga 0, de forma independiente al valor de R, el
resultado coincidirá con la transición citada (Qt-1 = 0 y Qt = 0). En definitiva se dirá
que la forma simplificada de dicha transición será R = X y S = 0.

R S Qt Qt-1 Qt R S R S
0 0 Qt-1 0 0 0 0 X 0
0 1 1 0 1 0 1 0 1
1 0 0 1 0 1 0 1 0
1 1 ND 1 1 0 0 0 X
T. Verdad (I) T. Verdad (II) T. Excitación
Tabla K–14 Tablas de excitación de un R-S
88 HARDWARE MICROINFORMÁTICO © RA-MA

Todo lo expuesto es análogo al funcionamiento de un biestable JK y muy


similar al RS. Recuérdese que, en definitiva, la diferencia fundamental entre el
biestable RS y JK es la eliminación en este último del estado de indeterminación
producido con R=S=1. Dado que la indeterminación no se da en las tablas de
excitación (ya que se obtienen las entradas a partir de las salidas y la indeterminación
no es una salida válida), el resultado del JK es prácticamente el mismo que un
biestable RS, tal y como se aprecia en las tablas siguientes:

J K Qt Qt-1 Qt J K J K
0 0 Qt-1 0 0 0 0 0 X
0 1 0 0 1 1 1 1 X
1 0 1 1 0 1 1 X 1
1 1 Q t −1 1 1 0 0 X 0
T. Verdad (I) T. Verdad (II) T. Excitación
Tabla K–15 Tablas de excitación de un J-K

En el caso de los biestables tipo D y tipo T, no tiene sentido el desarrollo


anterior dada su simplicidad. Así, ante un biestable tipo D (que lo único que hace es
transmitir a su salida la entrada recibida), el valor corresponderá con el tomado por Qt,
es decir, siempre habrá coincidencia en la entrada que es preciso aplicar al biestable y
la salida producida en la transición, como se aprecia en la tabla adjunta:

Qt-1 Qt D
0 0 0
0 1 1
1 0 0
1 1 1
T. Excitación
Tabla K–16 Tabla de biestable D

De forma análoga ocurre con el biestable tipo T, ya que su tabla de verdad


cambia el estado con la variable T a 1 y mantiene el estado anterior con la variable T a
0. De aquí se deduce que:

Qt-1 Qt T
0 0 0
0 1 1
1 0 1
1 1 0
T. Excitación
Tabla K–17 Tabla de un biestable T
© RA-MA APÉNDICE K: LÓGICA SECUENCIAL 89

K.10. EJERCICIOS PROPUESTOS


1. Diseñe un dispositivo de forma que, con un único pulsador, ponga en marcha o
pare un motor. El circuito deberá, por tanto, activar o no la bobina de un relé.

2. Diseñe un contador de 0 a 15 donde sólo aparezcan los números pares,


considerando el 0 dentro de este grupo (0, 2, 4, 6…).

3. Diseñar un circuito contador asíncrono de módulo 3 que permita, mediante una


variable de selección, indicar el sentido de conteo (ascendente o descendente).
Este circuito dispondrá de una única salida.

4. Diseñe un contador programable síncrono capaz de realizar cíclicamente la


secuencia 1, 3, 5 y 7. No es preciso habilitar ningún sistema de reinicio a la
secuencia válida de conteo en caso de producirse algún error. De igual modo, se
supone que el circuito inicia siempre su cuenta en un número reconocido de la
secuencia.
APÉNDICE L

SOLUCIÓN A LOS EJERCICIOS

La finalidad de este libro tiene, de partida y tal y como se indicaba en su


introducción, un propósito didáctico, ya sea bajo el plano de la autoformación como
para el aprendizaje supervisado por un tutor. Sea cual sea el caso del lector, sin duda le
resultará de utilidad conocer las soluciones a los diferentes ejercicios propuestos a lo
largo de estos capítulos.

Gran parte de los ejercicios aquí propuestos han servido al autor de base para la
realización de diferentes cursos sobre Hardware Microinformático, contando por tanto
con una puesta en común y un debate que, previo a la publicación de los mismos,
enriquece más este texto. No todos los apartados de libro tienen ejercicios planteados
ya que algunos contenidos se ciñen a un aspecto de práctica manual. En los que sí
existen soluciones susceptibles de ser plasmadas en papel, el lector encontrará los
razonamientos oportunos para comprender la estrategia de resolución seguida. Es
importante desctacar que, la citada solución, no tiene por qué ser única y, en ocasiones,
tampoco la mejor. Ha predominado la claridad de planteamiento a la hora de explicar
el ejercicio a cualquier otro condicionante (como la velocidad de cálculo) que se
pudiera aplicar.

Puede usarse este apéndice, por tanto, como método de autocomprobación de


los conceptos adquiridos, dejando así a juicio del lector la necesidad o no de releer
alguno de los capítulos. También puede resultar útil para los docentes, ampliando su
carpeta de ejercicios (algo que siempre resulta de utilidad).

Poco más que añadir a esta introducción, excepto desear que este apéndice
complemente y ayude a afianzar todos los conceptos expuestos. No hay mayor
recompensa en el aprendizaje que la comprobación del conocimiento adquirido y es
eso lo que, en las líneas siguientes, podrá comprobar de forma efectiva. ¡Buenos
resultados...!
92 HARDWARE MICROINFORMÁTICO © RA-MA

L.1. SOLUCIÓN A LOS EJERCICIOS DEL APÉNDICE G


1.
a) 10011001 = 1·27+ 0·26+ 0·25+ 1·24+ 1·23+ 0·22+ 0·21+ 1·20 = 128 + 16 + 8 + 1 =
153
b) 11100111 = 1·27+ 1·26+ 1·25+ 0·24+ 0·23+ 1·22+ 1·21+ 1·20 = 128 + 64 + 32 + 4 + 2
+ 1 = 231
c) 10000001 = 1·27+ 1·20 = 128 + 1 = 129
d) 01010101 = 0·27+ 1·26+ 0·25+ 1·24+ 0·23+ 1·22+ 0·21+ 1·20 = 64 + 16 + 4 + 1 = 85
e) 00000001 = 0·27+ 0·27+ 0·27+ 0·27+ 0·27+ 0·27+ 1·27 = 1

2.
a) 153 b) 231

153 2 231 2
1 76 2 1 115 2
0 38 2 1 57 2
0 19 2 1 28 2
1 9 2 0 14 2
1 4 2 0 7 2
0 2 2 1 3 2
0 1 1 1
10011001 11100111

a) 129 b) 85 c)

129 2 85 2 1 2
1 64 2 1 42 2 1 0
0 32 2 0 21 2
0 1 2 1 10 2
6
0 8 2 0 5 2
0 4 2 1 2 2
0 2 2 0 1
0 1
10000001 01010101 01

3.
a) 10 011 001 b) 11 100 111 c) 10 000 001
2 3 1 = 231 3 4 7 = 347 2 0 1 = 201

d) 01 010 101 e) 00 000 001


1 2 5 = 125 0 0 1 =1
© RA-MA APÉNDICE L: SOLUCIÓN A LOS EJERCICIOS 93

4.
a) 2 3 1 b) 3 4 7
10 011 001 = 10011001 11 100 111 = 11100111

c) 2 0 1 d) 1 2 5
10 000 001 = 10000001 01 010 101 = 01010101
e) 0 0 1
00 000 001 = 00000001

5.
BINARIO 0 1 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1
DECIMAL 072 079 076 065
ASCII H O L A

6.
ASCII C H I P
DECIMAL 067 072 073 080
BINARIO 0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0

7.
2325 → 0010 0011 0010 0101
4127 → + 0100 0001 0010 0111
0110 0100 0100 1100
+ 0001 + 0110
0101 0010
6 4 5 2

L.2. SOLUCIÓN AL EJERCICIO DEL APÉNDICE H

1. F = ((AB) + (A + B))((AB) + (A + B)) + C =


F = ((AB) + (A B))((AB) + (A B)) + C =
F = ( A(B + B))(A(B + B)) + C =
F = (A (1))(A (1)) + C = ( A A ) + C = 0 + C = C

La simplificación por Karnaugh sería

AB/C 00 01 11 10
0 0 0 0 0 F=C
1 1 1 1 1
94 HARDWARE MICROINFORMÁTICO © RA-MA

L.3. SOLUCIÓN A LOS EJERCICIOS DEL APÉNDICE I


1.
F = (( A + B + B ) + ( B • C )) • C =
(1 + ( B • C )) • C =
1• C = C

2. C B A F
0 0 0 1 ⇒ A • B •C
0 0 1 0
0 1 0 1 ⇒ A • B•C
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 1 ⇒ A • B•C
1 1 1 1 ⇒ A• B •C
F = A • B •C + A • B •C + A • B •C + A• B •C =
A • C • (B + B ) + B • C • ( A + A) = A • C + B • C

3. F = ( A + ( A·· C ) + B)· J = ( J· A) + ( J· A· C ) + ( JB) = J· A(1 + C ) + J· B = JA + JB = J·( A + B)

4. F = J·( A + B ) = J· ( A + B ) = J· ( A· B ) = J· ( A· B ) . Se precisa, en el caso de la función


origen, un total de 2 circuitos integrados (un 7402 para la operación OR que
contiene cuatro puertas y un 7408 para la AND, compuesto igualmente por
cuatro puertas). En ambos circuitos se “desperdician” 3 puertas
(aprovechamiento de un 25% del hardware). En el segundo caso se precisan dos
circuitos 7400, compuestos por cuatro puertas NAND de dos entradas cada una,
usando dos puertas para las negaciones de las variables A y B, una tercera para
el NAND entre ellas. La cuarta sería el resultado anterior en NAND con J y una
quinta que invertiría la función completa, es decir, se aprovecha un 62,5% del
hardware, además de disponer de un circuito homogéneo.

5. F = A B C D + A B CD + AB C D + AB CD + A BC D + ABC D + A BCD + ABCD


© RA-MA APÉNDICE L: SOLUCIÓN A LOS EJERCICIOS 95

F = B•D+ B •D

6. Desarrollando:
A BC·( B + C) + AC + ABD·( A + D) = A BBC + A BCC + AC + AABD + ABD D =
A BC + A BC + A + C + ABD = A BC + A + C + ABD = C·( A B + 1) + A + ABD =
C + A + ABD

Otro sistema es la demostración AB/CD 00 01 11 10


caso a caso en la tabla de la 00 1 1 0 0
verdad. La función mínima se 01 1 1 1 0
obtiene con Karnaugh: 11 1 1 1 1
10 1 1 1 1
La función simplificada responderá a: ( A + C + D )( A + B + C )

7. F = (( AB ) + ( A + B ))(( AB ) + ( A + B )) = (( AB ) + ( A + B ))(( AB ) + ( A + B )) =

F = (( AB ) + ( A + B )) + (( AB ) + ( A + B )) == (( AB ) + ( A + B )) + (( AB ) + ( A + B )) =

F = (( A + B ) + ( A + B )) + (( A + B ) + ( A + B )) = (( A + B ) + ( A + B )) + (( A + B ) + ( A + B ))

L.4. SOLUCIÓN A LOS EJERCICIOS DEL APÉNDICE J

1.
Entradas Salidas Alarma
A, B, C, D 1 Botón pulsado P 1 Prensa activa 1 Alarma activada
0 Botón en reposo 0 Prensa inactiva 0 Alarma en reposo
96 HARDWARE MICROINFORMÁTICO © RA-MA

Proceso
A B C D P ALARMA
0 0 0 0 0 0
0 0 0 1 0 0
0 0 1 0 0 0
0 0 1 1 1 0
0 1 0 0 0 0
0 1 0 1 1 0
0 1 1 0 1 0
0 1 1 1 1 1
1 0 0 0 0 0
1 0 0 1 1 0
1 0 1 0 1 0
1 0 1 1 1 1
1 1 0 0 1 0
1 1 0 1 1 1
1 1 1 0 1 1
1 1 1 1 0 1

2. Entradas: Salidas:
P1, P2, P3 activos con valor 1 y A Alarma activa con valor 1
desactivados con B1 Borne del motor para giro a derecha.
valor 0. B2 Borne del motor para giro a izquierda.

P3 P2 P1 B2 B1 A P3P2/P1 00 01 11 10 B1 = P1 ·P2 ·P3


0 0 0 0 0 0 0 0 0 1 1 B2 = P1 ·P2 ·P3
0 0 1 0 1 0 1 0 1 1 1 A = ( P1 ·P2 ) + P3
0 1 0 1 0 0
0 1 1 0 0 1
1 0 0 0 0 1
1 0 1 0 0 1
1 1 0 0 0 1
1 1 1 0 0 1
© RA-MA APÉNDICE L: SOLUCIÓN A LOS EJERCICIOS 97

B1 = P1 ·P2 ·P3 = P1 ·P2 ·P3 = P1 + P2 + P3 = P1 + P2 + P3 ;

B2 = P1·P2 ·P3 = P1·P2 ·P3 = P1 + P2 + P3 = P1 + P2 + P3

A = ( P1 ·P2 ) + P3 = ( P1 ·P2 ) + P3 = ( P1 + P2 ) + P3 = ( P1 + P2 ) + P3

3.

4. Los dispositivos enumerados corresponden a la siguiente codificación:

Lín Puerto
D1 Impresora activada
D2 -
D3 Conexión a PROXY
D4 Módem activado
D5 -
D6 -
D7 Backup del sistema
D8 Pantalla adicional

Sobre esta tabla, podrían omitirse las columnas D2, D4 y D6 ya que no se usan.
Los datos solicitados son:

A B C D1 D2 D3 D4 D5 D6 D7 D8
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0 0 1 0
0 1 1 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 1 0 0 0
1 0 1 0 0 0 0 0 0 0 0
1 1 0 0 0 1 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0
98 HARDWARE MICROINFORMÁTICO © RA-MA

A partir de lo cual, se obtienen los siguientes diagramas de Karnaugh con el


objetivo de tener las funciones simplificadas:

AB/C 00 01 11 10 AB/C 00 01 11 10 AB/C 00 01 11 10


0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
1 0 0 1 0 1 0 0 0 0 1 0 0 0 0
D1 = A·B·C D3 = A·B· C D5 = A· B· C

AB/C 00 01 11 10 AB/C 00 01 11 10
0 0 1 0 0 0 0 0 0 0
1 0 0 0 0 1 1 0 0 0
D7 = A·B· C D8 = A· B·C

En resumen:

D1 = A·B·C; D3 = A·B· C ; D5 = A· B· C ; D7 = A·B· C ; D8 = A· B·C ;

Las funciones son sencillas ya que se limitan a la obtención de puertas AND a


partir de las variables implicadas. Sólo será preciso disponer –además de las
AND citadas– de los inversores oportunos para conseguir las variables
“negadas”.

5.
S2 S1 S0 En primer lugar es preciso realizar la tabla de la
A B C D F * Z verdad de la función y contrastarla con la
0 0 0 0 0 0 I0 genérica de un multiplexor. Se deberá elegir uno
0 0 0 1 0 que tenga tantas entradas de control como
0 0 1 0 0 0 I1 variables menos una tenga la función original.
0 0 1 1 0 De cara a completar la tabla, se puede
0 1 0 0 0 D I2 simplificar la función por Karnaugh. El
0 1 0 1 1 resultado es el siguiente: F = A D + AC + BD .
0 1 1 0 0 D I3
0 1 1 1 1 Como se observa, se han conectado las variables
1 0 0 0 1 D I4 más significativas (que en este caso se han
1 0 0 1 0 interpretado como A, B y C al no haber ninguna
1 0 1 0 1 1 I5 aclaración al respecto ni especificar que se trata
1 0 1 1 1 de un código concreto como el BCD) a las
1 1 0 0 1 1 I6 entradas de control del multiplexor S2, S1 y S0
respectivamente. La combinación de las entradas
1 1 0 1 1
de control (variables), provoca la salida
1 1 1 0 1 1 I7
especificada en la columna Z.
1 1 1 1 1

Si se observa la variable D (la menos significativa) y se compara con la


columna F correspondiente a la función dada, se observarán similitudes
© RA-MA APÉNDICE L: SOLUCIÓN A LOS EJERCICIOS 99

(representadas por la columna *). Ése será el valor que habrá que asignar a cada
una de las entradas especificadas en Z. El conexionado respondería al siguiente
esquema:

L.5. SOLUCIÓN A LOS EJERCICIOS DEL APÉNDICE K


1. Dado que el biestable T invierte el estado
en el que se encontrase su salida en el
instante anterior, cada vez que se
produzca un pulso a través del pulsador
variará su salida periódicamente en 0/1.

2. Se trata de crear un contador módulo 3 que cuente de 0 a 7, añadiendo un 0


constante a su bit menos significativo. Esto convertirá, por ejemplo, el 001 (1)
en 00010 (2), el 101 (5) en 1010 (10) y así sucesivamente…

3. El ejercicio es bastante concreto en sus especificaciones. Basta con crear el


contador en módulo 3 asíncrono y determinar qué salidas se desean obtener. Así,
la salida Q corresponde a una secuencia de conteo ascendente (0, 1, 2…) y Q a
una secuencia descendente (7, 6, 5…). A través de una variable de control
llamada selección se habilitará o no la salida a través de una puerta AND. La
misma señal complementada se aplicará a la otra salida, de modo que se
100 HARDWARE MICROINFORMÁTICO © RA-MA

seleccione Q o Q pero nunca ambas. Sea cual sea el resultado de la selección, el


dato pasará a una OR que, en definitiva, hace las veces de unión de salidas para
que el usuario sólo encuentre tres variables como resultado en lugar de seis. Tal
y como se aprecia en el circuito, si la selección toma el valor de 1, se habilitará
la salida Q de cada biestable, disponiendo de una secuencia ascendente. Para un
valor de selección 0, la secuencia será descendente (la salida será Q ). El bit
menos significativo será S0 y el más significativo S2.

4. Este ejercicio –similar al número 2 de este mismo capítulo pero con mayor
abundancia de detalles– se puede diseñar de un modo muy sencillo o mediante
un proceso más largo y tedioso de diseño. De cualquiera de las maneras se
contemplarán ambos analizando, en primer lugar, el método sencillo que sería el
recomendable.

Como se puede observar, la secuencia solicitada (1, 3, 5, 7) corresponde a una


cuenta formada por cuatro números (combinaciones) impares. Dado que se trata
de cuatro números, parece que con un total de dos biestables debiera ser
suficiente (22 = 4). Y realmente es así. La sucesión en binario corresponde a las
secuencias 001, 011, 101 y 111. Como se puede observar, en todos los casos el
bit menos significativo (situado a la derecha) corresponde siempre a 1.
“Aislando” el resto de los números, se observa que corresponden a una
secuencia de conteo natural (001, 011, 101 y 111), es decir, se corresponde a 0,
1, 2 y 3 en binario. Bastará, por tanto, con realizar un contador con dos
biestables y añadir una salida adicional como bit menos significativo que
siempre se encuentre a 1 (nivel lógico alto). El esquema de la solución
corresponde a:
© RA-MA APÉNDICE L: SOLUCIÓN A LOS EJERCICIOS 101

La segunda solución pasa por diseñar un sistema capaz de transitar entre los
números definidos en la secuencia, es decir: 1 a 3, 3 a 5 y así, sucesivamente.
Dado que se trata de una secuencia cíclica, al llegar al número 7 será preciso
retornar (transitar) al número 1. Lo expuesto, reflejado en una tabla,
corresponde a:

Transición QAt-1 QBt-1 QCt-1 QAt QBt QCt JA KA JB KB JC KC


1→3 0 0 1 0 1 1 0 X 1 X X 0
3→5 0 1 1 1 0 1 1 X X 1 X 0
5→7 1 0 1 1 1 1 X 0 1 X X 0
7→1 1 1 1 0 0 1 X 1 X 1 X 0

QAQB/ QAQB/
QC 00 01 11 10 QC 00 01 11 10
0 X X X X JA = QB 0 X X X X KA = QB
1 0 1 X X 1 X X 1 0

QAQB/ QAQB/
QC 00 01 11 10 QC 00 01 11 10
0 X X X X JB =1 0 X X X X KB =1
1 1 X X 1 1 X 1 1 X

En el caso del biestable C, tanto JB como KB se pueden implementar


directamente sin la necesidad de usar Karnaugh ya que, como resulta obvio:

JC = X significa que dará igual su conexión, es decir, podrá ponerse a masa o


a nivel Vcc de alimentación (se conectará a masa por proximidad a
KC).
KC = 0 implica la conexión a un 0 lógico permanente, por lo que se deberá
conectar a masa.

Resumiendo, el montaje, responderá a:


102 HARDWARE MICROINFORMÁTICO © RA-MA

Este montaje, tal y como se especifica en el enunciado, será válido en la medida


de que exista un sistema auxiliar capaz de conseguir que siempre se inicie el
conteo dentro de un número reconocido dentro de la secuencia dada.

También podría gustarte