lunes, 19 de noviembre de 2007

7: Problemas resueltos




PROBLEMA: El Buffer. En un diseño que por circunstancias especiales requiere la utilización de circuitos integrados hechos a base de tecnología TTL, una función AND con un factor de carga de salida (fan-out) de 5 debe alimentar:

1) 20 flip-flops J-K con un factor de carga de entrada (fan-in) de 4.

2) 64 funciones OR con un factor de carga de entrada de 2.

3) 12 funciones NAND con un factor de carga de entrada de 3.

¿Cuántos buffers necesita la función AND para poder alimentar a las funciones indicadas si los buffers usados poseen un factor de carga de entrada (fan-in) de 1 y un factor de carga de salida (fan-out) de 6? Sugiérase la forma de conectarlos.

Buscamos primero la cantidad total de factores de carga requeridos para poder alimentar los circuitos indicados:


Si cada buffer tiene un factor de carga de salida (fan-out) de 6, se requerirán n buffers para alimentar los 244 factores de carga de entrada (fan-in) de los circuitos:


Los buffers se pueden conectar en configuraciones de redes tipo "árbol" de varios tipos. Un ejemplo lo sería el AND alimentando dos buffers, y cada uno de estos dos buffers alimentando a su vez otros dos buffers, y así sucesivamente, de dos en dos. Otro ejemplo lo sería el AND alimentando tres buffers, y cada uno de estos buffers alimentando a su vez otros tres buffers, y así sucesivamente, de tres en tres. Puesto que la función AND dada tiene un fan-out de 5, podemos aprovechar al máximo su capacidad alimentando 5 buffers con ella, y continuamos añadiendo buffers en cascada hasta obtener los 41 buffers requeridos:


Nótese que los 41 buffers requeridos son los que están al final de la red sin tomar en cuenta los buffers intermedios. El número de buffers intermedios está determinado por la configuración de la red, y la forma de determinar la red óptima con el menor número posible de buffers intermedios es ya un tema de índole matemática que no será desarrollado aquí porque no viene al caso.

PROBLEMA: Un código binario utilizado ampliamente para facilitar la reducción de errores en comunicaciones digitales tales como la televisión digitalizada terrestre, en ciertos sistemas de televisión por cable, e inclusive en ciertas aplicaciones motorizadas en la industria en donde se recurre a la automatización, es el código Gray, originalmente llamado "código binario reflejado" por su creador Frank Gray. Este código, usado inicialmente para prevenir salidas espurias provenientes de relevadores electromecánicos, es un sistema binario en el cual dos valores sucesivos cualesquiera difieren únicamente en un bit. Una forma para generar una secuencia de código Gray es "reflejando" los bits, listándolos en orden inverso y concatenando la lista así obtenida a la lista original, prefijando los bits originales con un "0" y prefijando los bits reflejados con un "1". A continuación tenemos la aplicación de este método para generar el código Gray de 2 bits, en el cual los pasos son los siguientes:

(1) Escribimos "0,1" en una columna:

0
1

(2) Trazamos un "espejo" reflector debajo de la columna:

0
1
___

(3) "Reflejamos" los números de arriba con respecto al "espejo reflector":

0
1
___

1
0

(4) Distinguimos los números arriba del "espejo" prefijando los bits originales con "ceros":

00
01
___

1
0

(5) Distinguimos los números debajo del "espejo" prefijándolos con "unos":

00
01
___

11
10

con lo cual tenemos la secuencia de un código Gray de dos bits. Si queremos un código Gray de tres bits, repetimos el procedimiento usando la secuencia del código Gray de dos bits que acabamos de obtener, y:

(1) Trazamos un "espejo" reflector debajo de la secuencia de código Gray de dos bits:

00
01
11
10
___

(2) "Reflejamos" los números de arriba con respecto al "espejo reflector":

00
01
11
10
___

10
11
01
00

(3) Distinguimos los números arriba del "espejo" con "ceros" y los números debajo del "espejo" con "unos", obteniendo así la secuencia del código Gray para tres bits:

000
001
011
010
110
111
101
100

Obtener la secuencia correspondiente a un código Gray de 4 bits.

Usando el mismo método recursivo mostrado, basándonos en la secuencia del código Gray para tres bits, obtenemos el siguiente código Gray de 4 bits:

0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000

Obsérvese que el primer valor y el último valor en una secuencia de código Gray difieren únicamente en un bit.

Los códigos Gray se usan ampliamente como codificadores de posición, especialmente en los codificadores rotatorios como el que se muestra a continuación:


Esto esquiva la posibilidad de que cuando varios bits en la representación binaria de un ángulo cambian se produzca una lectura errónea al cambiar unos bits antes que otros, lo cual no lo permite el código Gray por ser un código incremental cambiando un bit a la vez. Es por esto que el código Gray se utiliza ampliamente en los codificadores rotatorios mecánicos en la industria para poder medir ángulos con precisión (en aplicaciones como servomotores con retroalimentación de información y en máquinas-herramientas CNC), convirtiendo el movimiento angular en pulsos digitales. Supóngase que tenemos una máquina en la cual cada uno de los bits de una palabra binaria de cinco bits es empleado para iniciar cierta acción cuando toma el valor de "1", de modo tal que el bit 0 dará la orden de arrancar un motor, el bit 1 dará la orden de encender un rayo láser, el bit 2 dará la orden de detener todo lo que se está llevando a cabo, y así sucesivamente. Es claro que si un orden de secuencias dado por el siguiente diagrama de tiempos:


fuera suministrado a todo el sistema, en las áreas conflictivas resaltadas con color rosa el sistema no sabría que hacer, y cuál acción empieza primero y cuál le sigue después es una cuestión que quedaría por completo al azar, introduciendo riesgos potenciales en el manejo de maquinaria a causa de estos "disparos múltiples" ocurriendo simultáneamente de manera indeterminada. Estas zonas conflictivas quedan eliminadas por completo mediante el uso de una secuencia basada en el código Gray:


En la práctica, es extremadamente fácil generar un código Gray a partir de una lectura de un dato binario. Todo lo que se necesita es la palabra binaria así como la misma palabra binaria desplazada un bit hacia la derecha, para hacer una operación con OR-EXCLUSIVO entre ambas que producirá directamente el código Gray generado a partir de dicha palabra binaria:



PROBLEMA: El Comparador de Voltaje. En la práctica es relativamente difícil obtener y conservar una secuencia limpia de señales digitales como las que se han utilizado en los problemas anteriores. Esto se debe en gran parte a la existencia de parámetros físicos que siempre distorsionan la señal original. La deterioración puede llegar a grado tal de que puede resultar extremadamente difícil, si no imposible, distinguir un 0 de un 1. Por ejemplo, en un circuito en donde el 1 es un voltaje de +3 volts y el 0 es un voltaje de cero volts, ¿cómo se puede esperar que un circuito lógico maneje una entrada aunque sea breve de un voltaje de +1.2 volts? Una manera de solucionar este problema es mediante el uso de un elemento conocido como el "Comparador de Voltaje", cuyo diagrama se muestra a continuación:


El funcionamiento de este elemento es relativamente sencillo. Si el voltaje en la terminal de entrada A es mayor (más positivo) que el voltaje en la terminal de entrada B, la salida será 1. Y si el voltaje en la terminal A es menor que el voltaje en la terminal B, la salida será 0.

Si la terminal B es conectada a un voltaje fijo de referencia Vref y se introduce a la vez la siguiente señal ruidosa Vin en la terminal A, ¿cuál será la forma de onda de salida?


Tomando en cuenta las características del comparador de voltaje, la forma de onda de salida será como se muestra a continuación:


Nótese que el comparador de voltaje por su representación asemeja, y de hecho es, un amplificador operacional común y corriente (de los cuales uno de los op-amp más popular que ha habido en el mercado es el 741), representado en los diagramas esquemáticos con el siguiente símbolo:



PROBLEMA: En el problema anterior, si el voltaje de referencia hubiese sido algo mayor, el ruido de la señal habría ocasionado disparos múltiples produciendo un número mucho mayor de pulsos a la salida del comparador y por ende una señal digital errónea, como lo sugieren las siguientes figuras en las cuales se muestra el ruido sobrepuesto a una señal lógica que nosotros claramente identificamos como un "1" pero que puede dar ocasionar muchas interpretaciones erróneas a la salida de un circuito lógico al ir subiendo en su entrada de "0" a "1":



Para eliminar esta posibilidad, existe un elemento conocido como el "gatillo Schmitt" (Schmitt trigger). El "gatillo Schmitt" usa no uno sino dos voltajes de referencia,
V1 y V2, siendo V1 mayor que V2. Al exceder la señal Vin a la entrada del "gatillo Schmitt" el nivel de voltaje V1, la salida del mismo cambia de "0" a "1". Después de haber subido por encima de V1, si la señal desciende por debajo del nivel V1 pero se mantiene arriba del nivel V2, la salida seguirá siendo "1". Unicamente cuando cae por debajo del nivel V2 la señal Vin logrará cambiar la salida del "gatillo Schmitt" de "1" a "0". Tomando en cuenta lo anterior, ¿cuál será la forma de la señal de salida para un "gatillo Schmitt" con la siguiente señal de entrada?


Tomando en cuenta las características "memorizadoras" del gatillo Schmitt, su señal de salida cuando se le presenta esta señal ruidosa a su entrada será la siguiente:


Comparando este sencillo problema con el anterior, podemos ver por qué el "gatillo Schmitt" es uno de los elementos más importantes usados para extraer una señal legible de un medio ruidoso. Esta es la razón por la cual se pueden encontrar muchas referencias en Internet bajo las palabras "Schmitt trigger".

La diferencia de voltajes de referencia V1-V2 es conocida como histéresis.

El "gatillo Schmitt se representa generalmente de la siguiente manera:



PROBLEMA
: Diseñar un "gatillo Schmitt" (Sugerencia: Usar dos comparadores de voltaje y un flip-flop R-S).

El diseño deseado se muestra a continuación:


Cuando Vin es mayor que V1, la salida del comparado de voltaje # 1 será 1 y la salida del comparador de voltaje # 2 será 0. Esto ocasiona que S=1 y R=0, poniendo al flip-flop en la condición Q=1 independientemente del estado que tenía anteriormente.

Al caer Vin hasta adquirir un valor tal que Vin sea menor que V1 pero mayor que V2, la salida de los dos comparadores de voltaje será cero y el flip-flop R-S retendrá su estado anterior.

Al caer Vin hasta adquirir un valor tal que sea menor que V2, la salida del comparador de voltaje # 1 será 0 y la salida del comparador de voltaje # 2 será 1. Esto ocasiona que S=0 y R=1, poniendo al flip-flop R-S en la condición Q=0 independientemente del estado que tenía anteriormente.

Es digno de hacerse notar que, en la práctica, los Gatillos Schmitt se construyen de una manera algo diferente a la arriba mostrada, utilizando las propiedades de la retroalimentación en los circuitos eléctricos para obtener una configuración más sencilla (y por lo tanto más económica). La acción, sin embargo, es exactamente la misma a la del diseño aquí mostrado.

Por último, podemos ver que cuando V1 = V2, el Gatillo Schmitt se convierte en un simple Comparador de Voltaje.

El gatillo Schmitt es un elemento tan valioso para extraer señales útiles inmersas en ruido que se puede adquirir en componentes prefabricados como el circuito integrado 4584, fabricado con tecnología CMOS:


Este circuito integrado que proporciona seis (hex) gatillos Schmitt al principio puede parecer algo desconcertante. por la ausencia de las dos terminales requeridas en cada gatillo Schmitt para poder fijar la "banda" de voltajes entre V1 y V2 que determinan la "memoria" del efecto de histéresis, lo que distingue al gatillo Schmitt de un simple comparador de voltaje. La respuesta es que esta banda ya está fijada y construída de antemano adentro de cada gatillo Schmitt, mediante tres resistencias conectadas en serie que actúan como divisoras de voltaje (mostradas de color café obscuro en el diagrama):



En el caso del 4584, para una señal de entrada que va subiendo el circuito integrado alimentado con una fuente de poder de 5 volts cambiará de "0" a "1" con 2.9 volts, y si la fuente de poder es de 10 volts entonces cambiará de "0" a "1" con 5.9 volts. Estando ya en "1", al ir cayendo la señal de entrada la salida cambiará de "1" a "0" cuando la entrada ha caído a 2.3 volts si la fuente de poder es de 5 volts, y cambiará de "1" a "0" cuando la entrada ha caído a 3.9 volts si la fuente de poder es de 10 volts. Así, la histéresis o "banda muerta" o "inmunidad contra el ruido" es de 0.6 volts si la fuente de poder es de 5 volts, y es de 2 volts si la fuente de poder es de 10 volts.

Esta misma acción de "gatillo Schmitt" la podemos encontrar en circuitos integrados de funciones lógicas, como el 4093 que incluye cuatro bloques NAND de dos entradas cada uno, con acción de "gatilo Schmitt" en cada una de dichas entradas, cuya relación de terminales "pins" es la siguiente:


La acción de "gatillaje" que ocurre en cada una de las ocho terminales de entrada de este circuito integrado es la misma que la que ocurre en el 4584 que se acaba de describir. Esto equivale a tener ocho gatillos Schmitt construídos dentro del 4093, cada uno de ellos conectados a cada entrada de los cuatro NAND, lo cual le da a los cuatro NAND una excelente inmunidad contra el ruido. No es de asombrar que, por dentro, este circuito integrado sea una cosa algo sofisticada.

En la literatura técnica, la diferencia entre el voltaje de barrera (treshold) más positivo (VT+) que aquí hemos designado V1 y el voltaje de barrera más negativo (VT-) que aquí hemos designado V2 es lo que se define como el voltaje de histéresis (VH). El símbolo utilizado frecuentemente adentro de un gatillo Schmitt para distinguirlo de un comparador tiene que ver precisamente con el efecto de histéresis:



El efecto final y práctico de todo esto es poder llevar a cabo en forma automática y rápida la extracción de una señal útil que puede estar inmersa en ruido eléctrico que puede ser problemático cuando se están transmitiendo millones de bits de información por la línea telefónica o desde un satélite hasta la superficie terrestre:



PROBLEMA: Demuéstrese con un ejemplo un caso en el que las compuertas lógicas de tres estados tri-state puedan ser de utilidad.

El ejemplo más claro es del del bus de líneas de datos compartido (conocido simplemente como bus compartido) en el cual se desea que dos (o más) componentes puedan depositar cada uno de ellos, en tiempos diferentes, su información digital. Esto lo ilustra el siguiente diagrama:


En este caso, las líneas A1 y B1 están conectadas ambas, a través de las dos compuertas tri-state, a la misma línea X1. Lo mismo se puede decir para las líneas de conducción restantes. Tómese en cuenta que son líneas de conducción de señales eléctricas. Si las señales de entrada estuvieran conectadas directamente, sin compuertas tri-state de por medio, al bus de líneas X1X2X3, ¿qué ocurriría si la línea A1 depositara un "1" en X1 y si al mismo tiempo también la línea B1 depositara un "0" en la misma línea X1? Esencialmente tendríamos un corto-circuito eléctrico, un polo de la batería (+) conectado al otro polo de la batería (-) sin resistencia eléctrica alguna de por medio. Esta situación puede destruír el sistema de inmediato. El uso de las compuertas lógicas tri-state impide que esto pueda ocurrir, ya que en cualquier momento sólo una de las compuertas puede estar activada a través de la línea de activación S1 o la línea de activación S2, con lo cual todas las demás líneas quedarán desconectadas eléctricamente del sistema impidiendo el corto-circuito. El estado en el que ocurre la "desconexión" eléctrica es conocido entre los especialistas como un estado de alta impedancia. Los otros dos-estados corresponden a la situación en la que la entrada de una compuerta tri-state es conectada a la salida con un "0" a la entrada pasando como un "0" a la salida y un "1" a la entrada pasando como un "1" a la salida.

PROBLEMA (Difícil): El método de integración de doble pendiente es utilizado con mucha frecuencia como una especie de conversor analógico/digital A/D para la construcción de voltímetros electrónicos de precisión, en donde el objetivo final es obtener una lectura digital (en una carátula numérica) de un voltaje DC desconocido Vx que suponemos se mantiene constante mientras se lleva a cabo la lectura. Consiste en introducir una corriente eléctrica Ix (la cual es proporcional al voltaje que se está midiendo) durante un tiempo fijo predeterminado Tref (que es igual al tiempo en el cual un contador electrónico digital cuenta desde cero hasta su sobreflujo) a un amplificador operacional OP-AMP (véase el Suplemento # 6: El Amplificador Operacional) que está trabajando como integrador lineal, y después en introducir internamente otra corriente eléctrica Iref constante pero de sentido (polaridad) opuesto al de la corriente Ix, hasta que el voltaje a la salida del amplificador operacional regresa a cero en un tiempo Tx después de haber alcanzado un valor "pico" Vp en la condición anterior. Demostrar que:


El mecanismo de este principio de medición requiere de una explicación más a fondo. Antes de que se utilizara el método de integración de doble pendiente para llevar a cabo mediciones eléctricas, se utilizaba el método de integración de una sola pendiente, en el cual un voltaje desconocido aplicado a la entrada del medidor es integrado (este es el proceso de integración matemática que se estudia en cualquier curso de cálculo diferencial e integral) y comparado continuamente contra un voltaje de referencia conocido Vref. El proceso de integración es lineal, o sea que un voltaje (que suponemos constante) al ser aplicado a un integrador (en este caso, un amplificador operacional) va produciendo una "rampa" lineal que empieza desde un voltaje cero y va ascendiendo continuamente en línea recta, a la vez que un contador digital que empieza con una lectura numérica de ceros va contando el tiempo que va transcurriendo mientras se lleva a cabo el proceso de integración. La "pendiente" de la rampa depende de la magnitud del voltaje DC que está siendo medido, entre más alto sea el voltaje de entrada más inclinada será la pendiente de la rampa. Esta operación dual continúa hasta que el voltaje que va siendo integrado iguala al voltaje de referencia Vref con el cual está siendo comparado, momento en el cual la lectura del contador digital que en realidad es una medición del tiempo transcurrido es detenida. El tiempo que transcurre hasta que el circuito analógico integrador detiene el proceso al igualar el voltaje variable (integrado) Vint al voltaje de referencia Vref dependerá de la magnitud del voltaje desconocido, entre mayor sea la magnitud del voltaje de entrada tanto más inclinada será la rampa y menor será el tiempo de medición transcurrido. Esta proporcionalidad inversa nos permite "calibrar" el modo de conteo del reloj digital y los componentes que fijan la rapidez del reloj contador (en el circuito en la figura a el amplificador operacional que tiene puestos la resistencia de entrada R y el capacitor C que es el que realmente está actuando como un integrador analógico, mientras que el segundo amplificador operacional está siendo usado como un simple comparador de voltajes):



Este método requiere que el voltaje de referencia Vref sea estable y preciso para poder garantizar la precisión de la medición. La gran desventaja del método de integración de una sola pendiente es que la integración depende también de las tolerancias de los valores de la resistencia R y la capacitancia C del integrador, y en un medio típico de manufactura cualquier cambio pequeño en los valores de estos componentes altera el resultado de la conversión y hacen que la repetibilidad de la medición sea difícil de duplicar. Precisamente para superar esta dificultad, se ideó el método de integración de doble pendiente.


El circuito básico es el que se muestra en el siguiente diagrama esquemático (puesto que, de acuerdo con la "ley de Ohm", el voltaje de entrada Vx produce una corriente eléctrica Ix en la resistencia R según la relación Vx=IxR, en el esquemático se ha reemplazado a ambos Vx y a la resistencia R por la corriente eléctrica Ix producida):


En el método de integración de doble pendiente hay dos pasos separados. En el primer paso, el voltaje (constante, digamos unos 34.5 milivolts) que está siendo medido se inyecta para provocar una corriente Ix que a su vez produzca un voltaje ascendente v en forma de "rampa" a la salida del amplificador operacional (esta es la primera pendiente), pero en este paso (ni en el segundo) se utiliza un segundo amplificador operacional como comparador de voltaje como en el caso del método de integración de una sola pendiente para detener la rampa ascendente al alcanzar el voltaje integrado un nivel Vref; simplemente se deja que el circuito integrador continúe integrando y que el contador digital siga "contando" el tiempo hasta que el contador digital llegue a su sobreflujo (al superar la lectura "9999") después de un tiempo de ascenso Tref. En ese momento, el contador digital manda una señal para iniciar la inyección al amplificador operacional de una corriente eléctrica invariable Iref prefijada por la electrónica interna, de polaridad opuesta a la corriente Ix, con lo cual la rampa empezará a ser integrada hacia abajo por el cambio de signo, cayendo en forma lineal (esta es la segunda pendiente).

Los eventos señalados ocurren de la siguiente manera:


La expresión general para el voltaje a la salida del amplificador operacional está dada por la relación:


(La capacitancia de un condensador eléctrico expresada en farads está definida por la fórmula C=Q/V en donde Q es la carga eléctrica almacenada por el condensador, expresada en coulombs, y V es el voltaje cuya aplicación produjo tal acumulamiento de carga; y si tanto el voltaje que está siendo aplicado como lo carga eléctrica que se va acumulando son variables, entonces usando infinitésimos la fórmula se puede expresar como C=dq/dv. Por otro lado, la corriente eléctrica I a través de un conductor, expresada en amperes, está definida como el flujo de carga eléctrica Q por unidad de tiempo T, o sea I=Q/T, y si dicha corriente es variable entonces se puede expresar usando infinitésimos como i=dq/dt. Con estas dos relaciones se obtiene la fórmula arriba mostrada, sobre la cual se puede llevar a cabo un simple procedimiento matemático de integración.)

En el transcurso del tiempo Tref:


En el transcurso del tiempo Tx:


Igualando el vp de ambas expresiones:


obteniendo así finalmente:


Nótese que siendo Tref un tiempo constante prefijado dentro del circuito analógico-digital por los procesos de manufactura, y siendo Iref una corriente constante también prefijada en el circuito por los procesos de manufactura, el cociente de ambos será una cantidad constante k, esto es:

Tx = (Tref/Iref)Ix = kIx

Observamos que el tiempo variable Tx depende exclusivamente de la magnitud de la corriente Ix, la cual a su vez es directamente proporcional al voltaje que se está midiendo. Transcurrido el tiempo Tref al final del cual el contador electrónico digital alcanza su sobreflujo, éste regresa a cero y vuelve a empezar a contar. Puesto que Tx depende de la magnitud del voltaje medido, al detener el conteo el contador electrónico al final de Tx la lectura numérica en el mismo será proporcional al voltaje medido.

Prescindiendo de fórmulas y derivaciones algebraicas, podemos explicar de modo más elemental el funcionamiento del método de integración de doble pendiente con el siguiente esquema:


En estos gráficos podemos ver cómo tres distintos voltajes de entrada producen rampas con diferentes inclinaciones. El voltaje más bajo de los tres es el que produce la rampa de color verde, mientras que voltaje más alto de los tres es el que produce la rampa de color rojo, con el voltaje intermedio entre ambos produciendo la rampa de color magenta. Al producirse un sobreflujo en la lectura del contador, e iniciarse tras esto un nuevo conteo con la inyección simultánea de una referencia interna en el circuito que ocasiona que la rampa caiga siempre con la misma inclinación, podemos ver que después del sobreflujo el voltaje de entrada que producirá un conteo mayor de "pulsos de reloj" en la carátula numérica será precisamente el de mayor magnitud, en este caso el que produjo las rampas de color rojo, mientras que el voltaje de entrada que producirá un conteo menor de "pulsos de reloj" será el que produjo las rampas de color verde. Un voltaje cercano a los cero volts producirá igualmente un conteo cercano a cero. La única tarea pendiente aquí es "calibrar" los componentes para que la lectura del conteo de tiempo numérico corresponda con el voltaje que está siendo medido; por ejemplo hacer que un conteo de 3485 "pulsos" corresponda con una lectura de 3.485 volts.

Al final, el factor capacitancia C se cancela porque en ambas expresiones, tanto en la de ascenso (integración positiva) como en la de descenso (integración negativa), se está utilizando el mismo circuito para llevar a cabo ambas operaciones, y al ser igualadas las dos expresiones matemáticamente se ve que la cancelación algebraica de la capacitancia C es una resultante precisamente del haber utilizado el mismo circuito para llevar a cabo las dos integraciones. En realidad, esto puede considerarse como otro "truco" más en el arsenal del diseñista de circuitos electrónicos. Al no aparecer ni el valor de la resistencia R ni el valor de la capacitancia C en la expresión final, no importa que en un medio típico de manufactura haya variaciones en los valores de estos componentes de unidad a unidad.

La corriente fija de referencia Iref, ya sea una referencia alta (REF HI) como una referencia baja (REF LO) se pueden implementar con circuitos integrados como el MAXIM ICL7106 o el MAXIM ICL7107:


Para obtener una lectura numérica con una resolución de 10 bits binarios, por ejemplo, integraríamos por 1024 (210) ciclos de reloj (primera pendiente), y tras esto integraríamos por hasta 1024 ciclos de reloj (dando una máxima conversión de 2 × 210 ciclos). Para una mayor resolución, aumentamos el número de bits y el número de ciclos, pero como una mayor resolución requiere un mayor número de ciclos en la práctica hay que buscar un compromiso entre ambos opuestos, una mayor precisión por un lado y una demanda de mayores tiempos de conteo por el otro. Para una resolución dada, es posible acelerar el tiempo de conversión con cambios moderados en los circuitos, aunque eventualmente todas las mejoras transfieren parte de la precisión adicional lograda a un mayor costo requerido para el acoplamiento de los componentes externos. Inclusive en los circuitos elementales mostrados arriba hay varias fuentes potenciales de error que deben ser tomadas en cuenta (saturación del integrador, ganancia finita, velocidad del comparador, capacitancias parasíticas, inyección de cargas eléctricas, absorción dieléctrica, etc.) Para un conversor de doble pendiente de 20 bits (aproximadamente una parte por millón de resolución) y un reloj de 1 Megahertz de velocidad, el tiempo de conversión (tiempo de una lectura a la siguiente en caso de que el voltaje bajo medición esté variando) sería aproximadaamente de 2 segundos. El cociente visto por el comparador es de unos (2 volts)/106 dividido entre 1 microsegundo, lo cual se traduce en una pendiente de ascenso de 2 microvolts por microsegundo. Con una pendiente tan poco pronunciada, el comparador le permitiría al integrador ir mucho más allá del punto de "disparo". Este "sobre-disparo" (overshoot) medido a la salida del integrador es conocido entre los ingenieros como el "residuo".

A continuación se muestra un instrumento portátil de bolsillo, el voltímetro digital Mastech MAS830B, basado en el principio de la integración de doble pendiente:




y el medidor de capacitancias eléctricas CAP1500, basado en el mismo principio:



PPROBLEMA: ¿Qué elemento lógico fundamental se puede utilizar como detector de la diferencia de fase entre dos señales digitales simétricas iguales entre sí pero desfasadas en sus diagramas de tiempos? Encontrar la constante de fase de ganancia Kp del elemento detector de fase, definida como el cambio en el voltaje promedio a su salida en función del ángulo de desfase entre las dos señales medido en radianes.

El OR-EXCLUSIVO es el elemento más adecuado, ya que produce una salida si las dos señales a su entrada son diferentes:



La salida del OR-EXCLUSIVO para dos señales iguales que no están perfectamente alineadas y sincronizadas una con respecto a la otra sino que están "fuera de tiempos", fuera de fase, se muestra a continuación:



En estos diagramas de tiempos, la señal B está retrasada con respecto a la señal A, y si ambas están alimentando las entradas de un OR-EXCLUSIVO, entonces a la salida del mismo aparecerán los "unos" mostrados como "picos" (con la duración de los mismos resaltada en color amarillo). Si ambas señales A y B estuvieran en sincronía perfecta la una con respecto a la otra, alineadas punto por punto, entonces la salida del OR-EXCLUSIVO no mostraría ningún "pico", sería un "cero" todo el tiempo.

Supondremos ahora que la salida del OR-EXCLUSIVO es de cero volts para un "0" lógico y de un voltaje máximo V0 (digamos, unos +5 volts) para un "1" lógico. Daremos ahora un "brinco" del mundo digital al mundo analógico. Cuando dos señales A y B llegan desfasadas al OR-EXCLUSIVO, entonces la salida del OR-EXCLUSIVO no será de cero volts ni será de V0 volts todo el tiempo, estará variando rápidamente entre cero y V0. Por lo tanto, si conectamos un medidor de voltaje a la salida del OR-EXCLUSIVO, su lectura del voltaje a la salida del OR-EXCLUSIVO estará variando rápidamente puesto que no permanecerá fija ni en cero ni en V0. La ausencia de una lectura estable se puede solventar con el uso de un medidor de voltaje que pueda darnos el voltaje promedio de una señal que está variando de esta manera. Así, dependiendo del grado de desfase entre las dos señales, el medidor de voltaje dará una lectura de voltaje promedio diferente que estará situada entre los cero y los V0 volts.

Es rutinario medir la cantidad de desfase entre dos señales periódicas en términos angulares. Si las dos señales periódicas están "en fase", el ángulo de fase entre las mismas es de cero grados. Conforme se van desfasando, el ángulo de fase va aumentando, hasta el punto en el cual las señales están completamente desfasadas (para un tren "cuadrado" de pulsos, esto implica que cuando la señal A tiene un valor de "1" la señal B tiene un valor de "0" y viceversa), punto en el cual decimos que hay un desfase de 180 grados (o bien de π radianes) entre ellas. Habiendo llegado al punto de desfase total, si la señal B se sigue retrasando con respecto a la señal A entonces se irá emparejando con los siguientes valores de la señal A hasta que, cuando el ángulo de fase recorrido es de 360 grados (o bien de 2π radianes) las señales estarán nuevamente en sincronía la una con respecto a la otra. Y esto es precisamente lo que nos puede detectar el OR-EXCLUSIVO con el voltaje promedio que nos dá de su propia salida.

Es obvio que el voltaje promedio a la salida del OR-EXCLUSIVO será mayor cuanto mayor sea la diferencia de fase entre las dos señales de entrada. Dos puntos de interés son los siguientes:

(A) Cuando las dos señales a la entrada están en fase, el voltaje promedio a la salida del OR-EXCLUSIVO es de v=0 volts.

(B) Cuando las dos señales a la entrada están fuera de fase 180 grados (π radianes), el voltaje promedio a la salida del OR-EXCLUSIVO es de v=V0.

Entre estos dos puntos, habrá una variación lineal del voltaje promedio que dependerá directamente del ángulo de desfase. El diagrama del voltaje promedio v a la salida del OR-EXCLUSIVO en función de la diferencia del ángulo de fase entre las señales de entrada se muestra a continuación:


La constante de ganancia Kp del OR-EXCLUSIVO la podemos obtener considerando la región entre los cero grados y los 180 grados (entre cero radianes y π radianes)

Kp = (V0 - 0)/(π - 0)

Kp = V0/π, para un OR-EXCLUSIVO.

PROBLEMA: Una forma de comprobar la eficiencia de un sistema de comunicación digital es introducir una secuencia de prueba en su transmisor y comparar la secuencia enviada con la secuencia obtenida en el receptor. El porcentaje de bits de error (BER o bits error rate) es igual a la cantidad de bits diferentes entre la secuencia de prueba original y la secuencia recibida, dividida entre el número total de bits empleados para la prueba. Determinar el factor BER para un sistema que arroja con la siguiente secuencia de prueba:


arroja los siguientes resultados:


Inspeccionando las posibles diferencias entre la secuencia recibida y la secuencia enviada, encontramos que hay nueve bits diferentes, los cuales están resaltados a continuación:


Se tiene entonces que:

Total de bits empleados = 9x4 = 126

Bits diferentes = 9

BER = (9/126)x100 = 7.14 %

En la práctica, para poder encontrar el mayor número posible de errores, la secuencia de prueba en lugar de ser una secuencia fija de "unos" y "ceros" es una secuencia binaria al azar. Existe equipo especializado que se encarga de generar este tipo de secuencias y que se encarga de encontrar las diferencias entre los datos enviados y los datos recibidos, calculando de manera automática el factor BER. Este es precisamente el tipo de equipo que utilizan en el campo los ingenieros de mantenimiento y de diseño de redes. A continuación tenemos el medidor del factor BER CSA907R fabricado por la empresa Tektronix:


y un medidor del factor BER fabricado por la emprea Agilent:


así como el siguiente probador manual portátil:


Asociado con la medición del factor BER están las gráficas conocidas como "BER en función de Eb/No", de las cuales se muestra la siguiente como ejemplo:


La definición clásica de Eb/No que casi siempre parece algo críptica para quienes la ven por vez primera es "el cociente de la Energía por Bit (Eb) entre la Densidad de Ruido Espectral (No, de la palabra inglesa Noise que significa "ruido"), lo cual en términos llanos más comprensibles es simplemente la medida de una señal teóricamente libre de todo ruido entre el ruido con el cual está asociada dicha señal, lo cual es medido en el lado receptor y es utilizado como la referencia básica de qué tan fuerte es la señal. Distintas formas de modulación de la señal (BPSK, QPSK, MSK, PSK de 8 bits, PSK de 16 bits, etc.) producen distintas curvas teóricas para estas gráficas del factor BER, y le proporcionan al ingeniero de telecomunicaciones información acerca del mejor desempeño que es posible lograr para cierta cantidad de energía de radiofrecuencia con la cual está siendo transmitida al aire una señal digital. Para quienes deseen mayor información sobre este tema, inclusive sobre cómo es posible utilizar el estándard USB empleado en las computadoras para una comunicación inalámbrica USB, se recomienda consultar la siguiente nota de aplicación de Intersil (este es un documento PDF):

http://sss-mag.com/pdf/an9804.pdf

Aunque se hace todo lo posible por reducir al máximo el factor BER en la transmisión de datos, no es posible reducir el factor BER hasta cero por causas que están fuera del control de los diseñistas de redes, lo cual incluye causas predichas teóricamente como lo indican las gráficas señaladas arriba. Es aquí en donde resulta valiosísima la capacidad de los sistemas digitales para poder detectar errores con la adición de bits de paridad que permitan solicitar de nuevo el envío de la información que llegó defectuosa, e inclusive con la capacidad de corregir errores para no perder tiempo en la solicitud de retransmisión de información.

PROBLEMA: Se desea construír un comparador digital de un bit. El comparador debe tener dos entradas A y B y dos salidas M y K. La salida M (que pudiéramos llamar salida A=B) deberá ser "1" cuando ambos A y B son iguales y "0" cuando son desiguales. La salida K deberá ser "1" cuando cuando A es mayor que B y "0" cuando A es menor que B. Diseñar una configuración con estas características.

La Tabla de Verdad basada en las propiedades requeridas debe ser como se muestra a continuación:


En función de minterms, las salidas estarán dadas por las siguientes expresiones Boleanas:

M = (Salida "A igual a B") = A · B + AB

K = (Salida "A mayor que B") = AB

La salida M la podemos reconocer de inmediato como la de un NOR-EXCLUSIVO.

El comparador de un bit tendrá entonces el siguiente aspecto:



PROBLEMA: Demostrar que es posible construír un comparador digital de dos palabras (siendo AA=A2A1) y B (siendo B=B2B1) de dos bits cada una usando el comparador digital de un bit del problema anterior como bloque fundamental.

Las propiedades del comparador digital de dos palabras A y B de dos bits cada una deben ser como se muestra en la siguiente Tabla de Verdad:


Ahora bien, si usamos dos comparadores digitales de un bit como base, usando los resultados del problema anterior vemos que las salidas del comparador digital de dos bits serán:

M1 = [Salida 'A1 igual a B1' del primer comparador] = A1B1 + A1B1

M2 = [Salida 'A2 igual a B2' del segundo comparador] = A2B2 + A2B2

K1 = [Salida 'A1 mayor que B1' del primer comparador] = A1B1

K2 = [Salida 'A2 mayor que B2' del segundo comparador] = A2B2

El siguiente paso es encontrar las salidas M y K del comparador de palabras de dos bits a partir de su Tabla de Verdad puesta arriba:

M = Salida 'A igual a B'

M = A2B2A1B1 + A2B2A1B1 + A2B2A1B1 + A2B2A1B1

M = A2B2(A1B1 + A1B1) + A2B2(A1B1 + A1B1)

M = (A1B1 + A1B1)(A2B2 + A2B2)

M = M1M2

K = Salida 'A mayor que B'

K = A2B2A1B1 + A2B2A1B1 + A2B2A1B1 + A2B2A1B1 + A2B2A1B1 + A2B2A1B1

K = A2B2K1 + K2A1B1 + K2A1B1 + K2A1B1 + K1A2B2

K = K1(A2B2 + A2B2) + K2A1 + K2A1

K = K1 M2 + K2

Puesto que las salidas del comparador de palabras de dos bits se pueden poner en función de las salidas de dos comparadores individuales de un bit cada uno, queda demostrado que es posible construír un comparador de palabras usando como bloque fundamental el comparador de un bit que ahora podemos empezar a tratar como otra "caja negra" en nuestro repertorio.

El circuito del presente problema toma la siguiente configuración:


Este problema demuestra que el comparador básico de un bit se puede conectar en "cascada" para comparar palabras binarias de varios bits. La metodología empleada en este problema la podemos extender para construír un comparador de tres bits. Naturalmente, el diseño será más elaborado. Y del mismo modo, podemos construír un comparador de cuatro bits, y el diseño será todavía mucho más elaborado. O podemos optar por ahorrarnos una buena cantidad de tiempo y esfuerzo procurando en el mercado un circuito integrado como el 4585 fabricado con tecnología CMOS:



o como el 7485 (fabricado con tecnología TTL), los cuales son comparadores de 4 bits, y los cuales incorporan precisamente todo lo que hemos visto. En el caso específico del 4585, al igual que otros comparadores de bits, se pueden conectar varios en "cascada" para aumentar el tamaño de las palabras binarias que pueden ser comparadas; todo lo que hay que hacer es conectar las tres salidas del primer comparador (terminales 3, 12 y 13 en este caso) a las entradas del segundo comparador (terminales 6, 5 y 4 respectivamente), de la manera como se muestra en el siguiente comparador de palabras de 4 bits construído a base de cuatro comparadores de un bit conectados en "cascada" (ampliar imagen):


Como puede apreciarse en este esquema, el primer comparador se convierte en los bits menos significativos (LSB) de la cadena de comparadores.

Es posible conseguir inclusive circuitos integrados capaces de comparar palabras binarias de ocho bits y de conectar estos circuitos en cascada. Sin embargo, la cuestión de la aplicación es importante, ya que si vamos a estar comparando palabras binarias grandes, es posible que sea más ventajoso y más económico recurrir a un microprocesador (véanse los suplementos anexos a este libro) que se encargue de hacer las comparaciones mediante procesos aritméticos especificados en un pequeño programa almacenado en una memoria ROM; esta es precisamente una de las especialidades del microprocesador.

PROBLEMA: Construír una tabla de secuencias en el orden Q4Q3Q2Q1 para el circuito mostrado, dando el equivalente decimal de cada estado.


Suponiendo que la configuración está inicialmente en el estado Q4Q3Q2Q1=0000, la tabla de secuencias requerida tomará el siguiente aspecto:


Podemos notar que la secuencia de los números 0, 8, 12, 14, 7, 11, 13, 6, 3, 9, 4, 10, 5, 2, y 1 constituye una secuencia de números al azar, y al decir "al azar" nos estamos refiriendo a que conforme el contador pasa de un estado a otro no es posible (sin ver el contador) predecir cuál será el siguiente número decimal generado con sólo ver los números previos que se han ido generando (por esto mismo, esta secuencia no serviría para aquellas preguntas que se formulan en los exámenes usados para determinar el cociente intelectural IQ de una persona, en donde se le pide que determine cuál es el número o los números que siguen a cierta secuencia de números que parece mostrar cierto orden). Puesto que esta secuencia de números al azar se vuelve a repetir idénticamente cada vez que el contador atraviesa el estado Q4Q3Q2Q1=0000, la secuencia se conoce como una secuencia pseudo-azar. Asimismo, este tipo de contador es conocido comúnmente como un generador de secuencia binaria pseudo-azar.

Existen diseños de este tipo de contador para generar secuencias binarias pseudo-azar de más de cuatro bits, la mayoría de los cuales son relativamente fáciles de implementar.

En rigor de verdad, toda secuencia debe ser sometida a un análisis estadístico riguroso antes de ser aceptada como una verdadera secuencia de números al azar. Sin embargo, sin llevar a cabo tal análisis, se encuentra que las secuencias generadas por este tipo de contadores son bastante útiles en la práctica. Resta decir que entre mayor sea el número de cifras en cada número al azar y entre mayor sea la cantidad de números al azar en la lista generada, más útil será la lista de números al azar para representar problemas matemáticos.

Una vez teniendo una lista de números al azar disponible, es relativamente fácil producir una lista de números al azar de diferente magnitud multiplicando o dividiendo la lista original por el factor adecuado. Por ejemplo, supongamos que deseamos una lista de números al azar del 0 al 2. Si dividimos cada número al azar obtenido en el presente problema entre 8, podemos obtener fácilmente la lista deseada:

0/8 = .00, 8/8 = 1.00, 12/8 = 1.50,

14/8 = 1.75, 7/8 = .87, 11/9 = 1.37,

13/8 = 1.62, 6/8 = .75, 3/8 = .37,

9/8 = 1.12, 4/8 = .50, 10/8 = 1.25,

5/8 = .62, 2/8 = .25, 1/8 = .12.

Esta técnica es conocida como escalamiento, porque la magnitud de los números originales es reducida o aumentada a "escala".

Si lo que queremos tener no es un circuito generador de una secuencia binaria pseudo-azar, la cual eventualmente se repetirá una y otra vez en forma idéntica después de cierto número n de estados, sino un verdadero generador aleatorio de números binarios cuyas secuencias siempre serán totalmente impredecibles (lo cual dicho sea de paso es un requisito fundamental para poder utilizar dichas secuencias en técnicas estadísticas refinadas tales como el diseño de experimentos, una rama aplicada de la estadística basada en el análisis de la varianza ANOVA de dos vías, o la simulación Monte-Carlo, otra técnica estadística útil para resolver problemas matemáticos para los cuales la solución analítica exacta puede ser muy difícil si no imposible de obtener), existen otras alternativas tales como el siguiente circuito:


El bloque fundamental para este generador aleatorio de cuatro bits está basado en el mismo circuito biestable que estudiamos en uno de los problemas resueltos del Capítulo 5: El Flip-Flop R-S. En este circuito biestable, al encenderse la máquina o al aplicarle energía eléctrica al sistema hay tantas probabilidades de que el elemento biestable se "encienda" en el estado Q=1 como en el estado Q=0, sin forma alguna de poder predecir en cuál de los dos estados caerá. Como puede verse, en el circuito mostrado hay cuatro elementos biestables independientes el uno del otro, excepto por el hecho de que los cuatro están conectados a la misma fuente de poder a través del circuito interruptor S. Cada vez que se cierra el interruptor S suministrando energía al sistema, Q1 entrará en un estado que puede ser "1" ó "0", ocurriendo lo mismo con Q2, Q3 y Q4. El interruptor S puede ser un relevador electromecánico o un interruptor electrónico. La simpleza de este diseño permite ir agregando más elementos biestables para construír fácilmente un circuito lógico generador de una secuencia totalmente aleatoria de números.

Lo que acabamos de ver es una forma de generar números al azar usando hardware. Podemos generar también números al azar usando software, por medio de algún programa computacional, el cual al ser ejecutado va proporcionando la lista de números. Pero considerando que el programa computacional es ejecutado por algo que está construído en su esencia con circuitos lógicos, a fin de cuentas los circuitos lógicos son los que se vienen encargando de todo.

PROBLEMA: ¿Cuáles son los dos métodos para llevar a cabo una multiplicación binaria? ¿Cuál de los dos métodos es el mejor? Usar los números 1101 (13) y 101 (5) como ejemplo.

Puesto que una multiplicación de un número m por un número n en cualquier sistema numérico, ya sea decimal, binario o cualquier otro equivale a sumar n veces el número m (o lo que es lo mismo, a sumar m veces el número n), este sería el primer método disponible para llevar a cabo una multiplicación:


Para que una máquina pueda realizar las operaciones requeridas bajo este método, se necesitan dos registros de memoria, uno que almacene el número que estará siendo sumado, y otro que contenga el resultado parcial de las sumas cumulativas conforme el número va siendo sumado varias veces en un Sumador Completo. Se requiere también de un contador binario (ascendente o descendente) que lleve la cuenta de cuántas veces hemos sumado el "multiplicando" para saber cuándo el número de adiciones iguala al número "multiplicador" deteniendo así la sumación repetitiva. Para cantidades pequeñas, en una máquina electrónica este proceso se puede llevar a cabo de una manera sumamente rápida; pero si vamos a efectuar una multiplicación de dos números como 1,058,342 y 345,856, las 345,856 sumas parciales tomarían un tiempo apreciable.

El segundo método es esencialmente el mismo procedimiento que el que usan los niños para multiplicar en la escuela primaria:


La gran ventaja de este método es que en vez de requerir de n sumas únicamente se requiere de tantas sumas como "unos" haya en el multiplicador. Si el multiplicador es un número como 10000001, entonces en vez de requerir 129 sumas sólo se requiere una sola, después de haber efectuado un corrimiento hacia la izquierda de uno de los sumandos parciales. Y en la multiplicación binaria llevada a cabo de esta manera, todos los sumandos parciales son iguales al multiplicando, de modo tal que las únicas operaciones involucradas son las operaciones de sumas y desplazamientos, lo cual requerirá del uso de un registro de transferencia construído muy posiblemente a base de flip-flops tipo D.

PROBLEMA: Suponiendo que vamos a dividir un número mayor entre un número más pequeño, ¿cuáles son los dos métodos para llevar a cabo una división binaria? ¿Cuál de los dos métodos es el mejor?

Esto es muy parecido al asunto de los dos métodos disponibles para llevar a cabo una multiplicación binaria. En el primer método para llevar a cabo una división, vamos restando el divisor del dividendo una y otra vez hasta que el número disminuído resulte ser menor que el divisor, en cuyo caso tendremos ya el cociente y el residuo. Pero al igual que como ocurre con la multiplicación, existe un segundo método que es esencialmente el mismo procedimiento que el que usan los niños para dividir en la escuela primaria, y es el que debe ocupar nuestra atención en el diseño de cualquier máquina que pueda efectuar la operación aritmética de división.


PROBLEMA: Dividir 01001110 entre 0110 utilizando lenguaje binario únicamente. En base al mecanismo utilizado, ¿cómo se podría llevar a cabo la operación aritmética de división mediante una máquina?

Imitaremos la rutina familiar de división decimal y escribiremos el procedimiento tal y como se acostumbra en el sistema decimal. Incluiremos cuatro ceros precedentes al frente del número que se irá poniendo en el cociente:


La división resulta ser una que produce un cociente exacto sin residuo. El resultado de la división, 1101 (13 decimal) es el mismo que el que esperaríamos obtener si hubieramos llevado a cabo la división entre los números decimales 78 y 6, que son los que corresponden a los números binarios proporcionados.

Este problema sugiere que el proceso de división se puede lograr mediantes substracciones sucesivas. Y también, al igual que en el caso de la multiplicación, se tiene la presencia de varias operaciones de "desplazamiento". Esto implica que un circuito para llevar a cabo la operación de división requerirá de un substractor con ayuda de algún secuenciador de control. Lo podemos hacer realidad diseñando algún circuito especial para ello. O podemos recurrir a un componente más sofisticado en el cual se pueda programar este tipo de operaciones, un componente como el microprocesador.

PROBLEMA: Diseñar un circuito que sea capaz de llevar a cabo la multiplicación de dos números binarios, a nivel del lenguaje de máquina.

Existen varias maneras de llevar a cabo un diseño de esta naturaleza. En el siguiente diagrama se presenta una de ellas:


Aunque a primera vista este parezca un circuito complejo, en realidad no lo es, ya que todo lo que hace es implementar la operación de multiplicación binaria por simples operaciones de desplazamiento y adición parcial como las que se requieren para poder llevar a cabo la multiplicación "a mano".

La acción del circuito empieza introduciendo los números binarios a ser multiplicados, A4A3A2A1 (el multiplicando) y B4B3B2B1 (el multiplicador), en los registros A y B, respectivamente, los cuales son registros de transferencia de entrada paralela hechos a base de flip-flops J-K ó de flip-flops D. Los números binarios son tomados por dichos registros de un "canal" de datos, del cual se toma primero el número A4A3A2A1 para ser depositado en el registro A y posteriormente el número B4B3B2B1 para ser depositado en el registro B.

Cuando la operación de multiplicación haya sido concluída, el resultado de la misma estará depositado en el doble registro formado por los bloques P1 y P2 de cuatro bits (flip-flops) cada uno, con una capacidad total de ocho bits para contener el resultado de la multiplicación. Al inicio de las operaciones, al ser cargados los registros A y B con los números binarios a ser multiplicados, el doble registro P1-P2 estará "limpio", en "ceros".

El flip-flop J-K que aparece en el borde inferior izquierdo del diagrama es el que se encarga de llevar a cabo el secuenciamiento alternado de las operaciones de desplazamiento y adición, a través de sus terminales complementarias Q y Q. Primero se llevará a cabo un desplazamiento, y tras esto una suma, tras lo cual se llevará a cabo nuevamente un desplazamiento y otra suma.

Al empezar las operaciones, a través de la terminal C2 el flip-flop J-K es puesto en el estado Q=1 iniciándose con ello la primera acción de desplazamiento. El primer bit multiplicador B1 es alimentado al flip-flop multiplicador, el flip-flop R-S que aparece en el diagrama. Si el primer bit multiplicador es "1", o sea B1=1, entonces el flip-flop R-S es puesto en el estado Q=1, de lo contrario será puesto en el estado Q=0. En la siguiente acción, la acción de "adición", también a través de la terminal C2, el flip-flop J-K es puesto en el estado Q=0, con lo cual su salida complementaria entra en el estado Q=1, lo cual se encarga de abrir las dos compuertas (la "compuerta 1" y la "compuerta 2", de color gris claro). Al abrirse la "compuerta 1", esto permite que los contenidos del registro P1 (inicialmente cero) entren al bloque sumador. Si el primer bit multiplicador B1 es un "1", entonces la "compuerta 2" también se abre, permitiendo que los cuatro bits del número A que están puestos en el registro A entren al bloque sumador. Como al empezar el contenido del registro P1 es 0000, el resultado de la suma será simplemente A4A3A2A1, puesta en el mismo registro P1, suponiendo que el bit B1 es un "1". Si hubiera sido un "0", entonces los contenidos del registro P1 seguirían siendo 0000.

Ahora el flip-flop J-K, tras recibir un "pulso" en su terminal de entrada C2, revierte al estado Q=1, iniciándose un nuevo ciclo, con lo cual el siguiente "bit multiplicador" que en este caso será B2 entrará al flip-flop multiplicador R-S, y al mismo tiempo los contenidos en el doble registro P1-P2 serán desplazados un bit hacia la derecha, consumándose así la segunda acción de desplazamiento (esta acción conjunta de desplazamiento en los contenidos del doble registro también ocurrió durante el primer desplazamiento, pero como todos los contenidos binarios de los registros P1 y P2 eran "0", no ocurrió nada que tuviese consecuencia alguna en ese momento). De nueva cuenta, si el segundo bit multiplicador es "1", o sea B2=1, entonces el flip-flop R-S es puesto en el estado Q=1, de lo contrario será puesto en el estado Q=0. Y en la siguiente acción, la acción de "adición", también a través de la terminal C2 el flip-flop J-K es puesto en el estado Q=0, con lo cual su salida complementaria entra en el estado Q=1, lo cual se encarga de abrir las dos compuertas. Nuevamente, al abrirse la "compuerta 1", esto permite que los contenidos del registro P1 (los cuales en esta ocasión ya no son necesariamente "ceros") entren al bloque sumador. Si el primer bit multiplicador B2 es un "1", entonces la "compuerta 2" también se abre, permitiendo que los cuatro bits del número A que están puestos en el registro A entren al bloque sumador, en donde serán sumados a los contenidos del registro P1, depositándose el resultado de la suma en el mismo registro P1.

Estas acciones se van repitiendo de modo idéntico, hasta que al final el resultado de la multiplicación binaria estará puesto en el doble registro P1-P2, con la mitad menos significativa del producto puesta en el registro P2 y la mitad más significativa puesta en el registro P1. El lector observador se dará cuenta de que, en aras de la simplificación didáctica, no se han incluído en el diagrama todos los alambres necesarios para construír el circuito, e inclusive se ha dejado pendiente un asunto importante en la construcción del multiplicador: una carrera crítica que ocurre en la acción de adición que involucra al registro P1, algo que invariablemente puede ocurrir siempre que hay una retroalimentación potencial de alguna señal en un circuito lógico. Es fácil ver el problema que se nos presenta aquí: al estar abierta la compuerta 1 para sumar los contenidos del registro P1 al número A que está proviniendo del registro A, depositando los resultados del sumador en el registro P1, la información es enviada de inmediato al sumador para ser sumada al número A, el cual enviará los nuevos resultados al registro P1, del cual saldrán dichos resultados al sumador para repetir el proceso. Es, en efecto, un círculo vicioso. Queda claro que entre las operaciones de sumar los contenidos del registro P1 al número proveniente del registro A y depositar el resultado de dicha suma en el registro A es necesario poner un dique, una compuerta y/o un registro adicional, posiblemente a la entrada del registro P1, que se cerrará cuando los contenidos del registro P1 se estén enviando al bloque sumador para llevar a cabo la adición, y que se abrirá para que el registro P1 pueda recibir los resultados de la suma a la vez que la compuerta 2 se cierra impidiendo que el depósito del nuevo resultado pueda ser reciclado. De este modo, la solución de los problemas de carreras críticas se reduce a la adición de compuertas y/o registros adicionales, siempre y cuando estos problemas potenciales puedan ser descubiertos a tiempo por los diseñistas.

Obsérvese que cada uno de los "pulsos" de reloj C1 y C2 encargados de llevar a cabo acciones de secuenciamiento van dejando de ser ya simples "pulsos de reloj" para convertirse en señales de control originadas desde algún secuenciador maestro, desde alguna unidad de control que va indicando el orden en el cual se deben ir activando cada una de estas terminales Ci.

El funcionamiento del circuito multiplicador puede ser entendido mejor viendo un ejemplo como el siguiente en el que se lleva a cabo en el mismo la multiplicación de los números 1101 (13) y 0110 (6):


A continuación tenemos una tabla que describe el funcionamiento del circuito multiplicador usando los números dados:


En este caso, el número mayor (1101) es el multiplicando y el número menor (0110) es el multiplicador, lo cual requiere que en algún circuito o procedimiento previo los dos números binarios sean comparados para determinar cuál de ellos es el mayor y cuál de ellos es el menor. El multiplicando es puesto en el registro de memoria A dejándosele intacto todo el tiempo durante el cual se llevará a cabo la multiplicación, mientras que el número B es puesto en el registro de memoria B, asociado al "bit de multiplicación". El resultado final de la multiplicación, 1001110 (78) quedará como el número "0100 1110" puesto en el doble registro P1-P2 en donde se irá acumulando el resultado conforme se lleve a cabo la multiplicación con la adición de los productos parciales. En cada desplazamiento los contenidos del doble registro P1-P2 son recorridos un lugar hacia la derecha, mientras que en cada adición el contenido del registro P1 es sumado al número "0000" si el "bit multiplicador" es cero, o a "1101" si el "bit multiplicador" es "1". Obsérvese cuidadosamente en la tabla que el resultado del tercer ciclo dual produce un sobreflujo:

0110 + 1101 = 10011

Este sobreflujo debe ser guardado temporalmente en algún flip-flop (no mostrado en el diagrama) con el fin de que aparezca en el extremo izquierdo de P1 cuando ocurra el siguiente desplazamiento.

No presenta pues problema alguno el diseñar un circuito que sea capaz de llevar a cabo una operación de multiplicación de dos números binarios, como tampoco presentará problema alguno el diseñar un circuito que sea capaz de llevar a cabo la división de dos números usando substracciones sucesivas. Y si las operaciones aritméticas de multiplicación y división se pueden "grabar" en la microelectrónica de un circuito integrado, también se deben poder "grabar" operaciones más sofisticadas como la extracción de una raíz cuadrada o la obtención de alguna función trigonométrica con operaciones mateméticas que al fin y al cabo se pueden llevar a cabo con simples adiciones, substracciones, multiplicaciones y divisiones. Y de hecho esto fue precisamente lo que se hizo cuando aparecieron en el mercado los primeros microprocesadores; en apoyo de las operaciones básicas del microprocesador 8086 hizo su aparición el co-procesador de matemáticas 8087, el cual se encargaba de realizar operaciones matemáticas que de otro modo hubieran tenido muy atareado al "lento" (para nuestros tiempos actuales) microprocesador 8086; aunque eventualmente en diseños posteriores la microelectrónica del co-procesador de matemáticas terminó siendo incorporada a la microelectrónica de los microprocesadores posteriores tales como el 80386.