Sunteți pe pagina 1din 4

Estrategia para resolver problemas combinacionales

Tecnologı́a de Computadores - 2003

1. Esquema
La resolución del problema comienza con su enunciado, por lo que la correcta comprensión del mismo constituye
una de las partes más importantes. Por esta razón recomendamos leer el problema una vez sin hacer ningún tipo
de anotación. Esta primera lectura permitirá entender de manera general qué pide el problema y nos ayudará a
concretar en la segunda lectura. En esta segunda lectura, es recomendable seguir los siguientes pasos:

1. Identificar las entradas del circuito: ¿Qué información necesita el circuito? 1 .

2. Identificar las salidas del circuito: ¿Qué queremos que haga?.

3. Un circuito complejo no se puede diseñarse directamente mediante una tabla de verdad sino que habrá que
construir diferentes partes del mismo que conectaremos finalmente. En otras palabras, el circuito puede estar
constituido por varios bloques que será preciso identificar y que pueden ser de dos tipos:

Funciones estándar (MSI) (ver cuadro adjunto): Utilizaremos uno de los circuitos MSI explicados en
clase (codificadores, sumadores, comparadores, . . . ).
Funciones especı́ficas del problema: Diseño con funciones de Boole. Estos subcircuitos se diseñan de
acuerdo a los puntos 4-7 a continuación.

4. Para diseñar el subcircuito especı́fico debemos identificar de nuevo sus entradas y salidas, que pueden ser:

Todas o algunas de las entradas y/o salidas del circuito completo.


Nuevas entradas y/o salidas conectadas a los otros bloques del problema global.

5. Escribir la tabla de verdad (que recoge todos los casos posibles). El tabla tendrá 2 n filas y n + m columnas
donde n y m son respectivamente el número de las entradas y salidas definidas en el punto 4. (las n primeras
son las variables de Boole y las m últimas las funciones de Boole).

6. Simplificar cada una de las m salidas por el método de los mapas de Karnaugh.

7. Dibujar el circuito lógico usando las puertas lógicas especificadas en el enunciado (NAND, NOR o por defecto
el conjunto AND, OR, NOT,. . . ).

8. Conectar todos los bloques para obtener el circuito completo resultante.

Palabra(s) clave Circuito


Elegir, escoger Multiplexor/Demultiplexor
Encaminar, seleccionar Multiplexor/Demultiplexor
Comparar Comparador
Sumar, añadir Sumador
Restar, sustraer Restador
Codificar, convertir Codificador/Decodificador
Funciones especı́ficas Diseño propio

Cuadro 1: Correspondencia entre palabras clave y circuitos MSI. Por supuesto no sólo debemos tomar las palabras
de esta tabla sino cualquier palabra que tenga un significado similar.

1 En ocasiones el número de entradas es elevado por lo que podemos reducir dicho número utilizando un codificador de tamaño

adecuado.

1
2. Ejemplo
Vamos a aplicar el procedimiento explicado en la sección anterior al siguiente problema (del examen de junio de
2002 con algunos cambios).

Se desea realizar un encaminador (router) para una red MVB (Multifunction Vehicle Bus), que es
una red ampliamente utilizada en el mundo del ferrocarril para intercambiar datos entre los distintos
componentes de un coche de tren (véase la figura 1). En dicha red la información se intercambia
en forma de paquetes, los cuales constan de una cabecera de 4 bits, que indica el tipo de mensaje,
seguida de un área de datos en la que se envı́a la información. La finalidad del circuito que se debe
diseñar es la de encaminar los mensajes según su tipo por distintas lı́neas. Ası́, si el tipo de mensaje
es 0, 2, 5, 7 ó 8, el mensaje se encaminará por la lı́nea “Puertos lógicos”. Si el tipo es 10, 13
ó 15, el mensaje se encaminará por la lı́nea “Mensajes”. Si el tipo es 1, 3, 6 ó 9, el mensaje se
encaminará por la lı́nea “Peticiones”. En el resto de los casos los mensajes se considerarán erróneos
y se encaminarán por la lı́nea “A la basura”. Además, en este último caso se activará una señal de
error denominada “Mensaje Erróneo”. Se pide diseñar el circuito lógico para implantar el sistema
descrito.

Puertos logicos
Entrada datos Mensajes
Peticiones
4 A la basura
Tipo Mensaje erroneo

Una vez que realizamos una primera lectura, tendremos una visión global del problema:

Se trata de encaminar los datos que entran por “Entrada Datos” a la salida
correspondiente en función del tipo de mensaje especificado en “Tipo”.

En este caso, la figura es parte del enunciado. Si no fuera ası́, es conveniente tratar de realizar un dibujo esquemático
del circuito.
Comenzamos la segunda lectura siguiendo punto por punto las instrucciones del apartado anterior:
1. Identificar las entradas del circuito: El circuito tiene que encaminar los datos que entran por “Entrada datos”,
luego ésta será la primera entrada. Asimismo, para realizar su tarea necesitamos saber qué tipo de paquete
estamos procesando. Esta información se introduce en el circuito a través de “Tipo” que será la segunda
entrada (en este caso consta de 4 bits). Nótese que el propio dibujo nos habı́a dado ya ésta respuesta.
2. Identificar las salidas del circuito: Como la función del circuito es la de encaminar los datos, las salidas serán
el resultado de ese encaminamiento, es decir: “Puertos lógicos”, “Mensajes”, “Peticiones” y “A la basura”.
Además el circuito nos informa si se ha detectado un mensaje erróneo, por tanto “Mensaje Erróneo” será otra
salida.
3. El circuito puede estar constituido por varios bloques para lo cual es preciso identificarlos. Estos bloques
pueden ser de dos tipos:
Funciones estándar: Tratamos de encontrar palabras clave en enunciado. En este caso encontramos
encaminar por lo que necesitaremos un Multiplexor o un Demultiplexor. Analizando el problema vemos
que tenemos que elegir entre múltiples salidas para encaminar los datos de la entrada luego necesitare-
mos un demultiplexor. El tamaño del demultiplexor será 1 × 2 × 4 (es decir, 1 entrada, 2 variables de
control y 4 salidas).
Funciones especı́ficas del problema: Los demultiplexores necesitan de unas entradas de control (o
selección) para elegir una única salida. Esas entradas toman los valores 0, 1,. . . en binario. En este caso
no encaminamos en función de esos números sino en función de la entrada “Tipo”. Ası́ que debemos
diseñar un circuito propio para traducir los códigos de “Tipo” en variables que entienda el multiplexor.

2
4. Para diseñar el circuito especı́fico, debemos identificar las entradas y salidas de este bloque: En este caso, ya
lo hemos anticipado, lo que debemos diseñar es un circuito que convierta los códigos de “Tipo” a número
que pueda utilizar el demultiplexor para encaminar, por tanto las entradas a nuestro circuito especı́fico serán:
Los cuatro bits de “Tipo” (que llamaremos E3 , E2 , E1 y E0 ).
Y las salidas:
Las variables de control del demultiplexor que debemos controlar para encaminar correctamente los
datos, en este caso 2 (que llamaremos C1 y C0 ). Asimismo debemos determinar cuándo se ha producido
un error, es decir activar la salida “Mensaje erróneo” (que llamaremos M por brevedad).
5. Escribir la tabla de verdad: Antes de rellenar la tabla debemos tener claro la asignación de salidas del
multiplexor que vamos a realizar y que determinarán los valores de las entradas de control al mismo. En este
caso supondremos (esta elección es libre):
- Salida 0: Puertos lógicos (C1 = C0 = 0).
- Salida 1: Mensajes (C1 = 0 y C0 = 1).
- Salida 2: Peticiones (C1 = 1 y C0 = 0).
- Salida 3: A la basura (C1 = C0 = 1).
Con esta elección, la salida M sólo se activa cuando elegimos el canal 3 del demultiplexor. Por esta razón
podemos determinar M con la tabla de verdad en función de las entradas E 3 . . . E0 o simplemente teniendo
en cuenta que el caso 3 corresponde a C1 = C0 = 1 y por tanto M = C1C0 .
E3 E2 E1 E0 C1 C0
0 0 0 0 0 0
0 0 0 1 1 0
0 0 1 0 0 0
0 0 1 1 1 0
0 1 0 0 1 0
0 1 0 1 0 0
0 1 1 0 1 0
0 1 1 1 0 0
1 0 0 0 0 0
1 0 0 1 1 0
1 0 1 0 0 1
1 0 1 1 1 1
1 1 0 0 1 1
1 1 0 1 0 1
1 1 1 0 1 1
1 1 1 1 0 1

6. Simplificar cada una de las salidas por el método de los mapas de Karnaugh: Los diferentes colores representan
diferentes agrupaciones de unos.

E3 E2 E3 E2 E3 E2 E3 E2
00 01 11 10
E1 E0 00 0 1 1 0
E1 E0 01 1 0 0 1
E1 E0 11 1 0 0 1
E1 E0 10 0 1 1 0

E3 E2 E3 E2 E3 E2 E3 E2
00 01 11 10
E1 E0 00 0 0 1 0
E1 E0 01 0 0 1 0
E1 E0 11 0 0 1 1
E1 E0 10 0 0 1 1

3
7. La simplificación de ambas tablas produce el siguiente resultado:

C1 = E 0 E2 + E 0 E0 ≡ E 0 ⊕ E 2
C0 = E 1 E3 + E 2 E3

8. Dibujar el circuito lógico usando las puertas lógicas especificadas en el enunciado (NAND, NOR o por defecto
el conjunto AND, OR, NOT,. . . ): En nuestro caso vamos a usar puertas genéricas AND, OR; NOT, XOR,
...
Circuito Propio

E0
C1
E1

E2

E3
C0

9. Conectar todos los bloques para obtener el circuito completo resultante.

Puertos logicos
DMUX Mensajes
Entrada datos
1x2x4 Peticiones
A la basura
C1
4 Circuito C0
Tipo
Propio
M

3. Conclusión: camino de datos y control


Como se puede observar en la figura anterior, el circuito diseñado consta de dos partes: un camino de datos formado
por el demultiplexor y un circuito de control (el “circuito propio” de la figura) para controlar el demultiplexor en
función del tipo de dato.
Este esquema general se repite en todos los circuitos de proceso de datos. En este tipo de circuitos los datos,
agrupados en palabras de n bits, se procesan por una serie de circuitos combinacionales básicos (ALU, multiplexores,
comparadores, etc) que realizan transformaciones elementales sobre dichos datos. En general, será necesario usar
varios de estos circuitos para llevar a cabo el proceso deseado.
Además de la ruta de datos, es necesario implantar un circuito que la controle en función de una serie de entradas,
tanto externas como generadas por dicha ruta de datos. Este circuito de control será siempre diseñado a medida,
pudiendo ser combinacional o secuencial. En cambio, los circuitos usados en la ruta de datos serán normalmente
bloques básicos que pueden encontrarse en el mercado en forma de chips LSI.

S-ar putea să vă placă și