Está en la página 1de 57

UNIVERSIDAD NACIONAL DE SAN JUAN

Facultad de Ingeniera
Departamento de Electrnica y Automtica

Microprogramacin

Autor: Dr. Ing. Armando D. Assandri

Versin 3.0 - 2008


1. INTRODUCCIN
Existen diversos mtodos para implementar las funciones de prximo estado y de salida de
una Mquina de Estados Finitos (MEF), sea sta de tipo Moore o Mealy. Siguiendo el mtodo
tradicional, que recibe el nombre de lgica aleatoria o cableada, se usan compuertas lgicas
para implementar dichas funciones booleanas (ver la Figura 1.1). Estas ecuaciones se obtienen
por minimizacin de las funciones booleanas utilizando alguno de los mtodos descritos en la
bibliografa.

Figura 1.1 Implementacin tradicional de una MEF.

Siguiendo la evolucin de la tecnologa de los circuitos integrados digitales, se desarrollaron


otros mtodos para implementar la lgica de prximo estado y de salida de las MEFs. Entre
ellos se pueden mencionar el mtodo del contador de salto, basado en tecnologa MSI. En
este mtodo se utiliza un contador binario para implementar el registro de estado de la MEF y
multiplexores, decodificadores y/o compuertas lgicas para implementar las funciones de con-
trol del contador, de la direccin de salto y de salida (ver la Fig. 1.2).

Estos dos mtodos permiten realizar las implementaciones ms rpidas de una MEF a costa de
perder flexibilidad. Como cada diseo requiere de conexiones especficas de acuerdo a las
ecuaciones obtenidas, una vez terminado el proyecto resulta bastante complicado introducir
modificaciones o ampliaciones al circuito. En el caso que se encuentren problemas en el dise-
o una vez que se ha lanzado el producto al mercado, cualquier cambio llega hasta el nivel del
circuito impreso, con un costo bastante alto en la reingeniera.

Otro mtodo para implementar las MEF, denominado lgica programada o microprograma-
cin, se basa en aprovechar la capacidad de las memorias de lectura (ROMs) para realizar
funciones combinacionales (ver la Fig. 1.3). En este caso no se realiza minimizacin alguna y
en la ROM simplemente se carga la tabla de verdad de las funciones de prximo estado y de
salida. Si bien el circuito resulta algo ms lento que los casos mencionados anteriormente, se
tiene la gran ventaja que los diseos son ms fciles de depurar, modificar y ampliar.

1
Entradas

Lgica de Control del


Lgica del Estado de Salto
Contador

Limpiar
Cargar
Registro de Estado
Contar Contador Sincrnico
Reloj

Lgica de Salida Salidas

Figura 1.2 Implementacin de una MEF con un contador de salto.

E1 A0 D0 S1
Entradas
Salidas
E2 A1 D1 S2

D2 S3
D Q A2
X0 D3 S4

D4 S5

D Q A3
PROM
X1

D5
D Q A4 Prximo
X2 D6 Estado

D7

D Q A5 D8
X3
Reloj

Figura 1.3 Implementacin de una MEF por microprogramacin.

Este mtodo de diseo de las MEFs fue propuesto por M. V. Wilkes en 1951 y fue amplia-
mente utilizado para el diseo de la mayor parte de las computadoras y controladores de pe-
rifricos hasta la aparicin del microprocesador. Un microprocesador, a su vez, es una mqui-
na microprogramada en la mayora de los casos. Lo que se hizo en los 70s fue integrar en un
solo chip, la Unidad Aritmtico Lgica (ALU), los registros generales y especficos, el cami-
no de datos (datapath) y la unidad de control. En una arquitectura de procesamiento clsica
tipo CISC (Computadora con Conjunto de Instrucciones Complejo), la unidad de control casi
siempre es una MEF microprogramada. La ejecucin de una instruccin de mquina (tambin
llamada macroinstruccin) desencadena una serie de microinstrucciones que estn almacena-

2
das en la memoria de la unidad de control, y que tienen como resultado final la operacin que
se quiere realizar.

Debido a que el diseo se transform en el almacenamiento de unos y ceros en una memoria,


recibi el nombre de lgica programada (o microprogramada) . Tambin se acu el trmino
firmware para identificar la informacin que se guarda en la memoria, ya que la misma no
era propiamente un software en el sentido clsico, aunque en algunos casos, si se usa un mi-
croassembler, se parece bastante.

2. ESTUDIO DE CASO
A continuacin se describe el funcionamiento de un sistema digital simple que se tomar co-
mo ejemplo para describir distintas tcnicas de microprogramacin que se pueden plantear.

Sea un sistema para el clculo de la velocidad de un eje que gira (o tacmetro), sobre el cual
se ha montado un dispositivo optoelectrnico, cuyo haz es interrumpido por una lmina soli-
daria al eje. El sistema consta en un contador que cuenta estos pulsos durante un cierto tiempo
de duracin fija, el que se usa como base de tiempo. El valor final de cuenta del contador debe
ser cargado en un registro temporario (cerrojo o latch) que est conectado al bus de datos de
un microprocesador. La ventana de tiempo tambin es detectada por el microprocesador, por
lo que ste puede obtener el valor final de la cuenta con posterioridad al flanco descendente
de la base de tiempo. Al terminar cada ciclo de cuenta, el sistema de control debe cargar el
cerrojo y despus poner en cero el contador, a los efectos de que se inicie una nueva cuenta.

Si bien es evidente que esta tarea puede ser realizada directamente con el microprocesador,
como hiptesis se plantea que este subsistema funcione como un perifrico del microprocesa-
dor, ya que ste estar ocupado en otras tareas de mayor relevancia y urgencia. El contador
tiene una capacidad de 16 bits, pero puede ocurrir que durante la ventana de tiempo su capa-
cidad sea rebosada. Esta situacin debe ser tomada en cuenta por el microprocesador, por lo
que debe generarse una seal de interrupcin de tipo flanco cada vez que esta situacin se
produce. Internamente en el microprocesador se deber llevar la cuenta de la cantidad de ve-
ces que se rebos el contador antes de finalizar la ventana de tiempo, a los efectos de tener el
valor correcto de la cuenta.

En la Fig. 2.1 se tiene un diagrama en bloques del sistema planteado, y en la Fig. 2.2 la des-
cripcin algortmica del problema. La mquina consta de 5 estados, los que se denominan a,
b, c, d, y e. El estado a, es considerado el estado inicial de la mquina, al cual se llega accio-
nando sobre las entradas de limpiar (clear) de los flip-flops que conforman el registro de esta-
do, durante la inicializacin del sistema. La MEF permanece en dicho estado esperando que la
seal VENT (de Ventana) se active, es decir que pase de 0 a 1. Durante este tiempo, el con-
tador debe permanecer inhibido de contar, lo cual se realiza poniendo en cero la seal
HABCNT.

Una vez que la seal de la ventana de tiempo (VENT) pasa a su estado activo, se pasa al esta-
do b, en el cual se habilita la cuenta del contador con la seal HABCNT. En dicho estado se
permanece hasta que finalice la ventana de tiempo o bien que el dgito ms significativo del
contador se ponga en 1, indicando que la cuenta ha sobrepasado la mitad del valor mximo.

3
BUS DE DATOS DEL
MICROPROCESADOR

LATCH

Pulsos CONTADOR

HABCNT
Q15
LIMPCNT
CONTROL CRGLTCH
VENT
INT

Figura 2.1 Diagrama en bloques del sistema de ejemplo.

Figura 2.2 Descripcin del sistema mediante una carta ASM.

4
En el caso de que el dgito ms significativo del contador se ponga en 1, la mquina pasa al
estado c, en el cual espera que VENT pase a 0, o bien que el dgito ms significativo del con-
tador se ponga nuevamente en 0. En este ltimo caso, el contador ha sobrepasado su mxima
capacidad de cuenta, por lo que se debe generar una interrupcin al microprocesador, para que
tome en cuenta esta situacin. Esto se realiza con la salida condicional INT, que se activa
cuando la entrada Q15, que es el dgito ms significativo del contador, pasa de 1 a 0. Debido a
que la interrupcin a generar necesita un flanco, el cual es retenido por el microprocesador, no
es necesario mantener esta salida en alto para que el microprocesador reconozca la interrup-
cin. Mientras la mquina est en el estado c, la salida HABCNT debe mantenerse activa, ya
que el contador debe seguir contando los pulsos de entrada mientras la ventana permanece en
1.

El estado c tiene dos prximos estados: el estado b se alcanza en el caso de que se rebose el
contador antes de que la ventana de tiempo pase a 0, y el estado d, al que se llega si se termina
el tiempo indicado por la seal VENT. Desde el estado b tambin se puede llegar al estado d
en la misma situacin. Es decir que cualquiera sea el camino seguido por la MEF para alcan-
zar el estado d, indica que el tiempo de cuenta ha terminado y que debe cargarse el registro
temporario con el valor de cuenta que tiene el contador. Esto se realiza activando la salida
CRGLTCH en el estado d. Dado que la seal VENT tambin es detectada por el microproce-
sador, en cada ciclo el valor del contador se ingresa al sistema de nivel superior a travs del
bus de datos. Del estado d se pasa al estado e en el cual se procede a limpiar el contador con
la salida LIMPCNT. Posteriormente se pasa al estado a para iniciar otro ciclo de cuenta.

Debido a que el problema planteado es al solo efecto de mostrar la tcnica de diseo con me-
morias ROM, se prescindir del anlisis de carreras de salida para realizar la asignacin de
estados. En los casos reales, debern tomarse en cuenta las recomendaciones que a tal fin
existen en la bibliografa, para realizar una asignacin de estados libre de carreras.

3. ESTRUCTURAS DE MICROPROGRAMACIN
Una MEF microprogramada es aqulla que est estructurada mediante una secuencia de pa-
sos o microinstrucciones que tienen como finalidad ejecutar las acciones o realizar las tareas
que tiene definidas. Si la MEF es la unidad de control de una computadora, cada secuencia de
microinstrucciones tiene por finalidad la ejecucin de una instruccin del repertorio de ins-
trucciones de la mquina. Cada una de las microsecuencias en que se divide una instruccin
de la computadora (ADD, MOVE; COMP; etc.) se denomina microinstruccin.

Las microinstrucciones se almacenan en una memoria de m palabras de n bits. Cada palabra


de memoria se divide en campos, cuya funcin depender del esquema que se utilice. El
nmero de campos y la cantidad de bits de cada uno dependen de cada problema. A la tarea de
conformar los campos de las microinstrucciones se le da el nombre de formatear (formatting)
la palabra de memoria. La Fig. 3.1 muestra un formato de 13 bits.

5
Direcciones

Figura 3.1 Formato en campos.

El formato de la palabra depende del esquema que se elija para la MEF. En funcin de la
complejidad del circuito y de las tareas que el mismo realiza se podr elegir el esquema que
ms convenga a la aplicacin. El costo del dispositivo y el rendimiento del mismo depender
de una adecuada seleccin del esquema y de los campos de las microinstrucciones.

El esquema ms simple que se puede configurar es el conformado por una memoria y un con-
tador binario conectado a las lneas de direccin de la memoria. Conectando una seal de reloj
que haga avanzar el contador, se irn direccionando todos los lugares de memoria y cuando se
llegue al ltimo, se vuelve a ejecutar la secuencia desde el principio. En la Fig. 3.2 se tiene un
diagrama de este sistema. La desventaja evidente es que la secuencia a realizar es fija y no se
puede alterar el flujo de ejecucin de las instrucciones. Como aplicacin de un esquema de
este tipo, puede mencionarse el sistema de control del encendido de un cartel luminoso para
publicidad, que normalmente sigue una secuencia fija que se repite cada cierto tiempo
Contador

Figura 3.2 Esquema de secuenciador con un contador y memoria.

6
3.1 DIRECCIONAMIENTO POR PASOS DE ENLACE
En el esquema descrito en pargrafo anterior, el prximo estado de la mquina queda definido
por la secuencia binaria del contador. Es decir que si se est en el estado n, donde n es cual-
quier nmero binario, el prximo estado es siempre el n+1, con la salvedad del ltimo que
tiene como prximo estado al primero. El formato de la palabra es totalmente utilizado para
guardar instrucciones o salidas de la mquina, ya que la determinacin del prximo estado la
realiza la lgica de prximo estado del contador (incrementar el contador en 1).

Dicho sistema no permite implementar una MEF tipo Moore o Mealy, ya que no se puede
definir ms de un prximo estado. Una alternativa es usar un campo de la palabra de la ROM
para definir el prximo estado, el que debe ser retenido en un registro externo a la memoria.
Dicho registro se conforma con tantos flip-flops tipo D como variables de estado tenga la
MEF. A este registro se lo denomina registro de estado, cauce o pipeline, ya que es por el que
se encauza la informacin del prximo estado a las lneas de direccin de la memoria. En la
Fig. 3.3 se tiene un esquema general de este caso.

Figura 3.3 Esquema de direccionamiento por pasos de enlace.

El reloj del sistema, que es quien define el tiempo de estado, entra a las entradas de reloj de
los flip-flops. El prximo estado del sistema, que est definido por un campo de la ROM, se
carga a la salida del registro cauce con cada flanco activo del reloj, obtenindose una nueva
direccin de memoria en conjunto con el estado de las entradas en ese momento.

Cada entrada de la MEF tiene asignada una lnea de direccin de la memoria dedicada. Para
una situacin dada (un estado de la mquina), si la entrada est en 0, se accede a una palabra
de la memoria, y si est en 1, se accede a otra, con lo que se podrn definir dos prximos es-
tados. Este esquema permite implementar cualquier tipo de MEF (Moore o Mealy) sin necesi-
dad de reestructurar la carta ASM que describe el funcionamiento del sistema. Se denomina
direccionamiento por pasos de enlace debido a que cada paso o camino de enlace del diagra-
ma de estados, es decir cada lnea que lleva de un estado a otro, tiene asignado, al menos, una

7
direccin de memoria. Esto se muestra con un ejemplo, como el mostrado en la Fig. 3.4. En la
tabla 3.1 se describe cmo se tendra que llenar el campo de prximo estado de la memoria
para ese ejemplo.

Figura 3.4 Ejemplo para el esquema de direccionamiento por pasos de enlace.

Estado presente Valor de la Campo de Paso de


Entrada E1 Prximo Estado enlace
0011 0 0101 ab
0011 1 0100 ac

Tabla 3.1 Valores a colocar en el campo de prximo estado.

Puede suceder que algn paso de enlace tenga asignado ms de un lugar memoria. Esto se
debe a que si una transicin entre estados es incondicional (ver la Fig. 3.5) o no depende de
todas las entradas de la mquina, entonces se debern asignar al mismo paso de enlace todas
las direcciones de memoria correspondientes a los valores 0 y 1 de las entradas que no se usan
en esa transicin. En dichos casos, el campo de prximo estado se llena con el mismo valor.

Figura 3.5 Caso de una transicin incondicional.

Estado presente Valor de la Campo de Paso de


Entrada E1 Prximo Estado enlace
0010 0 0011 de
0010 1 0011 de

Tabla 3.2 Llenado del campo de prximo estado


para las transiciones incondicionales.

8
Un aspecto en el que hay que tener especial cuidado es con el llenado del campo correspon-
diente a las instrucciones o salidas de la MEF. Se debe recordar que la salida de una MEF es
funcin del estado presente (salidas Moore) y en algunos casos tambin de las entradas (sali-
das Mealy). Por lo tanto, para las salidas Moore se debe colocar un 1 en la columna corres-
pondiente a cada salida y en la fila correspondiente al estado de origen de cada transicin (o
paso de enlace). Por otra parte, para las salidas Mealy, se debe colocar un 1 en la columna
correspondiente a cada salida, pero nicamente en la fila correspondiente al paso de enlace en
que esa salida se activa.

Q15
VENT
MEMORIA

3 4

Prximo estado Instrucciones

Salidas
Registro cauce Reloj D3 = INT
D2 = CRGLTCH
D1 = LIMPCNT
C B A Variables D0 = HABCNT
de estado

Figura 3.6 Esquema de direccionamiento por pasos de enlace para el caso de ejemplo.

En la Fig. 3.6 se tiene el esquema para el caso de ejemplo. En el tacmetro digital se tienen
4 salidas y 3 variables de estado, por lo que se necesitan 7 bits para conformar la palabra de la
ROM. Por otra parte se tiene 2 entradas y 3 variables de estado, por lo que se necesitan 5 lne-
as de direccin en la ROM. Es decir que se necesitaba una ROM de 32 palabras x 7 bits. De
los 32 lugares de memoria, se usan 20, dejndose el resto en 0. Esto ltimo es conveniente
desde el punto de vista de la robustez del sistema, ya que ante una falla que saque a la MEF de
su secuencia normal, se va automticamente al estado inicial.

A los efectos de facilitar el llenado de los datos en la ROM, conviene usar para las variables
de estado las lneas de direccin con peso ms alto, y para las entradas las de peso ms bajo.
De esta manera quedarn todos los lugares de memoria correspondiente a un mismo estado en
una zona adyacente en la memoria. As, para el caso de ejemplo se usan las lneas de direc-
cin A4, A3 y A2 para el estado presente, correspondientes a las variables de estado C, B y A
respectivamente. La lnea de direccin A1 se usa para la entrada VENT y A0 para Q15. El cam-
po de prximo estado utiliza 3 bits y se define as: D6 = C*, D5 = B* y D4 = A*. El asterisco
aqu indica prximo estado de la variable de estado. El campo de instrucciones o salidas se
define as: D3 = INT, D2 = CRGLTCH, D1 = LMPCNT y D0 = HABCNT.

9
3.1.1 PROCEDIMIENTO PARA EL LLENADO DE LA MEMORIA

A continuacin se detalla el procedimiento a seguir para el llenado de los campos de prximo


estado y de instrucciones de la memoria. Para ello se mostrarn los casos representativos de la
MEF cuya carta y asignacin de estados se muestran en la Fig. 2.2. Se comienza por el estado
a, que tiene dos pasos de enlace: uno que vuelve sobre el mismo estado a y otro que lleva al
estado b (ver la Fig. 3.7).

Figura 3.7 Pasos de enlace del estado a.

Dir. A4 A3 A2 A1 A0 D6 D5 D4 D3 D2 D1 D0 Paso de
enlace
0 0 0 0 0 0 0 0 0 0 0 0 0 aa
1 0 0 0 0 1 0 0 0 0 0 0 0 aa
2 0 0 0 1 0 0 0 1 0 0 0 0 ab
3 0 0 0 1 1 0 0 1 0 0 0 0 ab

Tabla 3.3 Llenado de la memoria para el estado a.

Para el estado a, como el prximo estado slo depende de la entrada VENT, se debern asig-
nar dos lugares de memoria para cada paso de enlace, las que corresponden a Q15 igual a 0 y
1 (es decir, la lnea de direccin A0). La transicin de a a ocupa las direcciones 00000 y
00001. El campo de prximo estado de esas dos direcciones se llena con el prximo estado de
esa transicin, es decir, el valor 000 correspondiente al estado a. La transicin de a b ocu-
pa las direcciones 00010 y 00011, colocndose en el campo de prximo estado de ambas di-
recciones el valor 001 correspondiente al estado b. En el estado a no se activa ninguna de las
salidas de la mquina, por lo que el campo de instrucciones de las cuatro direcciones mencio-
nadas est completamente en 0.

El estado b tiene 3 prximos estados: el mismo b, el c y el d. La transicin de b c slo de-


pende de la entrada Q15, por lo que ese paso de enlace tiene asignado 2 direcciones de memo-
ria, 00101 y 00111, que se corresponden con los valores 0 y 1 de VENT. Las otras dos transi-
ciones tienen asignadas una direccin de memoria cada una, ya que dependen de las dos en-
tradas de la MEF. En el campo de prximo estado se debe colocar el prximo estado de cada
paso de enlace: 001 para la transicin b b; 010 para la transicin b c y 011 para la tran-

10
sicin b d. El estado b tiene definida como activa una salida Moore, HABCNT, por lo que
en el campo de instrucciones de las cuatro direcciones de la Tabla 3.4 se debe colocar un 1 en
la columna D0, correspondiente a esa salida.

Figura 3.8 Pasos de enlace del estado b.

Dir. A4 A3 A2 A1 A0 D6 D5 D4 D3 D2 D1 D0 Paso de
enlace
4 0 0 1 0 0 0 1 1 0 0 0 1 bd
5 0 0 1 0 1 0 1 0 0 0 0 1 bc
6 0 0 1 1 0 0 0 1 0 0 0 1 bb
7 0 0 1 1 1 0 1 0 0 0 0 1 bc

Tabla 3.4 Llenado de la memoria para el estado b.

El estado c tambin tiene definidos tres prximos estados (ver la Fig. 3.9). El llenado del
campo de prximo estado es similar a los casos anteriores. Aqu la nica particularidad se
presenta con la salida Mealy INT, que aparece en la casilla de salida condicional. Esa salida se
activa si la MEF est en el estado c y adems se pone en 0 la entrada Q15. Esa condicin co-
rresponde al paso de enlace que tiene asignadas las direcciones 01000 y 01010, por lo que
slo en esas direcciones hay que poner un 1 en la columna de la salida INT. El estado c tam-
bin tiene definida una salida Moore, HABCNT, por lo que la columna correspondiente a esa
salida se llena con unos en todas las direcciones asignadas a este estado.

11
Figura 3.9 Pasos de enlace del estado c.

Dir. A4 A3 A2 A1 A0 D6 D5 D4 D3 D2 D1 D0 Paso de
enlace
8 0 1 0 0 0 0 0 1 1 0 0 1 cb
9 0 1 0 0 1 0 1 1 0 0 0 1 cd
10 0 1 0 1 0 0 0 1 1 0 0 1 cb
11 0 1 0 1 1 0 1 0 0 0 0 1 cc

Tabla 3.5 Llenado de la memoria para el estado c.

En el estado d se tiene el caso de una transicin incondicional, es decir es una transicin que
no depende de ninguna de las entradas. De todas maneras se tienen que usar 4 direcciones de
memoria para definir el prximo estado y las salidas de ese estado, lo que significa un desper-
dicio importante de memoria, ya que la informacin aparece repetida cuatro veces. El campo
de prximo estado se llena en todos los casos con el valor 100 y en el campo de instrucciones
se debe poner un 1 en la columna correspondiente a la salida Moore que se activa,
CRGLTCH, tal como se observa en la Tabla 3.6. La transicin de e a es un caso similar y
se sigue el mismo procedimiento. En la tabla 3.7 se tiene el listado completo del contenido de
la memoria ROM para este caso.

12
Figura 3.10 Pasos de enlace del estado d.

Dir. A4 A3 A2 A1 A0 D6 D5 D4 D3 D2 D1 D0 Paso de
enlace
12 0 1 1 0 0 1 0 0 0 1 0 0 de
13 0 1 1 0 1 1 0 0 0 1 0 0 de
14 0 1 1 1 0 1 0 0 0 1 0 0 de
15 0 1 1 1 1 1 0 0 0 1 0 0 de

Tabla 3.6 Llenado de la memoria para el estado d.

Como resumen de este esquema de microprogramacin, puede decirse que para cada estado se
deben usar 2 p direcciones de memoria, siendo p la cantidad de entradas de la MEF. A cada
paso de enlace de la MEF le corresponde al menos un lugar de memoria. Como ventaja se
tiene que con este esquema se puede implementar todo tipo de MEF, ya sean tipo Moore o
Mealy. La principal desventaja es que la memoria se duplica en longitud por cada entrada de
la mquina que se tenga o agregue. Para sistemas con muchas entradas la utilizacin de la
memoria es pobre y se hace muy engorroso el llenado del contenido de la memoria, lo que lo
hace un mtodo muy propenso a errores.

13
Dir. A4 A3 A2 A1 A0 D6 D5 D4 D3 D2 D1 D0 Paso de Definicin de
enlace las variables
0 0 0 0 0 0 0 0 0 0 0 0 0 aa A4 = C
1 0 0 0 0 1 0 0 0 0 0 0 0 aa A3 = B
2 0 0 0 1 0 0 0 1 0 0 0 0 ab A2 = A
3 0 0 0 1 1 0 0 1 0 0 0 0 ab A1 = VENT
4 0 0 1 0 0 0 1 1 0 0 0 1 bd A0 = Q15
5 0 0 1 0 1 0 1 0 0 0 0 1 bc
6 0 0 1 1 0 0 0 1 0 0 0 1 bb D6 = C*
7 0 0 1 1 1 0 1 0 0 0 0 1 bc D5 = B*
8 0 1 0 0 0 0 0 1 1 0 0 1 cb D4 = A*
9 0 1 0 0 1 0 1 1 0 0 0 1 cd D3 = INT
10 0 1 0 1 0 0 0 1 1 0 0 1 cb D2 = CRGLTCH
11 0 1 0 1 1 0 1 0 0 0 0 1 cc D1 = LMPCNT
12 0 1 1 0 0 1 0 0 0 1 0 0 de D0 = HABCNT
13 0 1 1 0 1 1 0 0 0 1 0 0 de
14 0 1 1 1 0 1 0 0 0 1 0 0 de
15 0 1 1 1 1 1 0 0 0 1 0 0 de
16 1 0 0 0 0 0 0 0 0 0 1 0 ea
17 1 0 0 0 1 0 0 0 0 0 1 0 ea
18 1 0 0 1 0 0 0 0 0 0 1 0 ea
19 1 0 0 1 1 0 0 0 0 0 1 0 ea
20 1 0 1 0 0 0 0 0 0 0 0 0 No esp.
21 1 0 1 0 1 0 0 0 0 0 0 0 No esp.
22 1 0 1 1 0 0 0 0 0 0 0 0 No esp.
23 1 0 1 1 1 0 0 0 0 0 0 0 No esp.
24 1 1 0 0 0 0 0 0 0 0 0 0 No esp.
25 1 1 0 0 1 0 0 0 0 0 0 0 No esp.
26 1 1 0 1 0 0 0 0 0 0 0 0 No esp.
27 1 1 0 1 1 0 0 0 0 0 0 0 No esp.
28 1 1 1 0 0 0 0 0 0 0 0 0 No esp.
29 1 1 1 0 1 0 0 0 0 0 0 0 No esp.
30 1 1 1 1 0 0 0 0 0 0 0 0 No esp.
31 1 1 1 1 1 0 0 0 0 0 0 0 No esp.

Tabla 3.7 Contenido de la memoria para el esquema de pasos de enlace.

3.2 DIRECCIONAMIENTO POR PARES ESTADO-ENTRADA O DE 2 VAS


Una alternativa para mejorar la utilizacin de la ROM es restringir el modelo utilizado para
definir la MEF, limitndolo a un modelo tipo Moore (es decir que no se admiten salidas Mea-
ly) y a una sola entrada afectando a cada estado. El formato de la ROM se modifica agregan-
do un campo para seleccionar una entrada de la mquina mediante un multiplexor, y en fun-
cin del valor que esa entrada tenga se seleccionar mediante otro multiplexor (llamado hori-
zontal) uno de dos campos de prximo estado posibles: uno para la condicin 0 de la entrada
y otro para la condicin 1 de la misma. En la Fig. 3.11 se muestra el esquema de esta configu-
racin. A este esquema tambin se lo puede denominar de 2 vas porque para cada estado slo
se admiten 2 prximos estados.

En este esquema, a las lneas de direccin de la memoria slo llegan las variables de estado de
la MEF. As, el largo requerido de la memoria es sensiblemente menor que en el caso del di-
reccionamiento por pasos de enlace. Se necesitar slo una direccin de memoria por cada

14
estado de la MEF. Como esto da lugar a una memoria corta y ancha, estos esquemas tambin
reciben el nombre de microprogramacin horizontal, y en general son los que permiten un
mayor grado de paralelismo en el funcionamiento de un sistema basado en microprograma-
cin.

Figura 3.11 Esquema de direccionamiento por pares Estado-Entrada o de 2 Vas.

La carta ASM del ejemplo debe modificarse para cumplir con la restriccin impuesta. Se de-
ben agregar estados en las transiciones que dependen de ms de una entrada, ya que este es-
quema slo permite seleccionar una entrada por estado. As, en la carta se deben agregar 2
estados: uno entre las dos casillas de decisin que afectan al estado b y otro entre las casillas
de decisin que afectan al estado c. En los casos en que hayan ms entradas que afecten a un
estado, se debern agregar todos los estados que sean necesarios entre las casillas de decisin
para cumplir con la restriccin impuesta.

Como no se admiten salidas Mealy, se debe transformar la salida condicional que contiene la
salida INT en un estado, con las modificaciones pertinentes para que no se cambie el algorit-
mo verbal definido para la MEF. Como en el lazo formado por los estados b y c se debe man-
tener activa la salida HABCNT, en el estado agregado para la salida Mealy tambin debe
agregarse dicha salida. La Fig. 3.12 muestra la carta ASM modificada para este esquema.

Como puede observarse, los requerimientos de la memoria han cambiado (ver la Fig. 3.13).
Para este caso se necesita: 1 bit para la seleccin de las entradas (se tienen 2 entradas); 3 bits
para el prximo estado si la entrada vale 0, 3 bits para el prximo estado si la entrada vale 1 y
por ltimo 4 bits para las instrucciones o salidas. Esto hace un total de 11 bits de ancho de
palabra de la ROM. Por otra parte, se necesita nicamente una palabra de memoria por cada
estado de la MEF, que con los estados que se agregaron suman 8.

15
000

VENT

001

b
HABCNT

Q15

010 101

c f
HABCNT HABCNT

Q15 VENT

011 100
110
e d
INT, HABCNT HABCNT g
CRGLTCH

111

VENT h
LIMPCNT

Figura 3.12 Carta modificada para el esquema de 2 Vas.

16
Direccin
MEMORIA

1 3 3 4
Pxmo. Est. Pxmo. Est.
3 Seleccin Instr.
0 1

Salidas
VENT 0

Mux 2:1
0 1 D3 = INT
Multiplexor 2:1 D2 = CRGLTCH
Q15 1 D1 = LIMPCNT
D0 = HABCNT

Registro cauce Reloj

Figura 3.13 Esquema de direccionamiento por pares Estado-Entrada para el ejemplo.

3.2.1 PROCEDIMIENTO PARA EL LLENADO DE LA MEMORIA

A continuacin se indica el procedimiento para llenar la memoria para el direccionamiento


por pares Estado-Entrada. En este caso, como siempre un estado tiene slo dos prximos es-
tados y slo se admiten salidas tipo Moore, determinar el contenido de la memoria es mucho
ms sencillo. Slo hay que llenar una fila por estado de la MEF.

Figura 3.14 Determinacin de los valores de los campos del estado a.

Estado A2 A1 A0 S C*0 B*0 A*0 C*1 B*1 A*1 D3 D2 D1 D0


a 0 0 0 0 0 0 0 0 0 1 0 0 0 0
Tabla 3.8 Llenado de la memoria para el estado a.

17
Para el estado a (ver la Fig. 3.14), se debe seleccionar la entrada VENT, por lo que en el cam-
po de seleccin se debe colocar un 0, indicando que el multiplexor de las entradas transfiera a
su salida el valor de dicha entrada. Si la entrada VENT vale 0, el prximo estado es el mismo
estado a, por lo que se debe colocar el valor 000 en el campo correspondiente al prximo es-
tado por 0. Si VENT vale 1, el prximo estado es el b, por lo que se debe colocar el valor 001
en el campo correspondiente al prximo estado por 1. En funcin del valor de la entrada, el
multiplexor horizontal seleccionar uno de los dos valores de prximo estado definidos para
cargarlo en el registro cauce con el prximo flanco del reloj. Como en el estado a todas las
salidas estn inactivas, se pone un 0 en todas las columnas del campo definido para las sali-
das.

Colocar un 1 en la columna
correspondiente a esta salida.
001 Entrada que hay que
seleccionar con el campo de
b Seleccin.
HABCNT

Valor a colocar en el campo de Valor a colocar en el campo de


prximo estado si la entrada prximo estado si la entrada
seleccionada vale 1. seleccionada vale 0.
Q15

010 101

c f
HABCNT HABCNT

Figura 3.15 Determinacin de los valores de los campos del estado b.

Estado A2 A1 A0 S C*0 B*0 A*0 C*1 B*1 A*1 D3 D2 D1 D0


b 0 0 1 1 1 0 1 0 1 0 0 0 0 1
Tabla 3.9 Llenado de la memoria para el estado b.

Para el estado b (ver la Fig. 3.15) hay definidos dos prximos estados diferentes, por lo que
este es el caso ms general. En este caso se debe seleccionar la entrada Q15, por lo que en el
campo de seleccin se debe colocar un 1. En los campos de prximo estado por 0 y por 1 se
coloca 101 y 010 respectivamente. En este estado slo est activa la salida HABCNT, y por lo
tanto se debe colocar un 1 en la columna correspondiente a esta salida (D0).

El llenado de la mayora de los otros estados es similar al anterior. Como caso particular se
tienen las transiciones incondicionales entre estados, es decir aqullas transiciones entre esta-
dos que no dependen de ninguna entrada y por lo tanto tienen definido un nico prximo es-
tado. En este caso, en los campos de prximo estado por 0 y 1 se debe colocar el mismo valor.
Por ejemplo, para la transicin de g h (ver la Fig. 3.16) el prximo estado es el 111 y se
debe colocar ese valor en ambos campos de prximo estado. En el campo de seleccin de las
entradas se puede colocar cualquier valor (0 1), pero no un valor no especificado ya que en
la memoria no se pueden cargar valores indefinidos. Para el llenado del campo de instruccio-
nes se sigue el mismo procedimiento que para los otros casos. En el caso en que en un estado
se active ms de una salida, como por ejemplo en el estado e, se debe colocar un 1 en la co-
lumna correspondiente a cada salida que aparezca en dicho estado. En la Tabla 3.11 se tiene el
contenido completo de la memoria para este esquema.

18
Figura 3.16 Determinacin de los valores de los campos del estado g.

Estado A2 A1 A0 S C*0 B*0 A*0 C*1 B*1 A*1 D3 D2 D1 D0


g 1 1 0 0 1 1 1 1 1 1 0 1 0 0
Tabla 3.10 Llenado de la memoria para el estado g.

Estado A2 A1 A0 S C*0 B*0 A*0 C*1 B*1 A*1 D3 D2 D1 D0


a 0 0 0 0 0 0 0 0 0 1 0 0 0 0
b 0 0 1 1 1 0 1 0 1 0 0 0 0 1
c 0 1 0 1 0 1 1 1 0 0 0 0 0 1
e 0 1 1 0 0 0 1 0 0 1 1 0 0 1
d 1 0 0 0 1 1 0 0 1 0 0 0 0 1
f 1 0 1 0 1 1 0 0 0 1 0 0 0 1
g 1 1 0 0 1 1 1 1 1 1 0 1 0 0
h 1 1 1 0 0 0 0 0 0 0 0 0 1 0
Tabla 3.11 Contenido de la memoria para el direccionamiento por pares Estado-Entrada.

Como puede observarse, la cantidad de bits necesarios para implementar este esquema es sen-
siblemente inferior al caso de direccionamiento por pasos de enlace. Usando direccionamiento
por pasos de enlace se tienen 20 x 7 = 140 bits, mientras que con direccionamiento por pares
Estado-Entrada, se tienen 8 x 11 = 88 bits para el mismo ejemplo, con un mejor aprovecha-
miento de la memoria.

Si bien la cantidad de bits utilizados en este ltimo caso es inferior, la realizacin prctica del
diseo puede requerir ms circuitos integrados (salvo que se haga la implementacin con un
FPGA o un ASIC). Por lo general las memorias se fabrican de 8 bits de ancho, por lo que el
primer caso requiere 1 CI, mientras que el segundo 2 CIs de memoria. En funcin del tamao
del problema y de los requerimientos de memoria, se deber tener cuidado en la definicin del
formato de la palabra de memoria. Ms adelante se ver una forma de reducir el ancho de la
palabra mediante la codificacin de las salidas.

3.3 DIRECCIONAMIENTO DE 4 VAS


El esquema de direccionamiento por pares Estado-Entrada puede expandirse para considerar
ms entradas por estado. Si se consideran 2 entradas por estado, existirn 4 prximos estados
posibles, si se consideran 3 entradas, habrn 8 prximos estados posibles, etc. As, habr que

19
incluir en el formato de la palabra de memoria 2 p campos de prximo estado, siendo p la
cantidad de entradas que se admiten por estado en la carta ASM. Adems, se debern agregar
los multiplexores que hagan falta para seleccionar la cantidad de entradas por estado que ad-
mita el esquema. En la Figura 3.17 se muestra el esquema del direccionamiento llamado de 4
Vas (porque admite 4 prximos estados).

Figura 3.17 Esquema de direccionamiento de 4 Vas.

Como se puede observar, este esquema es ms costoso en hardware que el anterior, pero se
tiene la ventaja que se tendrn que agregar menos estados si se tiene que modificar la carta. Se
siguen imponiendo las restricciones del caso de 2 vas, aunque ms relajadas con respecto a
las entradas. En este caso no se pueden tener ms de 2 entradas afectando a la transicin de
cada estado y slo se admiten salidas tipo Moore.

Al tener ms campos de prximo estado y de seleccin de entradas, el formato se hace ms


ancho, pero en general se tendrn menos estados, dando lugar a una memoria ms ancha pero
tambin ms corta. Por lo tanto este esquema es ms horizontal an que el anterior.

En la Fig. 3.18 se muestra cmo hay que llenar la memoria en el caso ms general. El campo
de seleccin en este caso, queda dividido en dos partes. Un grupo de bits S0 seleccionar la
primera entrada del multiplexor correspondiente a las entradas E1, y otro grupo de bits S1
seleccionar la segunda entrada del multiplexor correspondiente a las entradas E2.

20
PPP
Campo de Instrucciones:
p Colocar un 1 en la
Entrada que hay que Lista de Salidas
columna de cada salida
seleccionar con el campo que aparece en la lista.
de Seleccin S0.

Entrada que hay que


seleccionar con el campo
de Seleccin S1. E1

E2
E2

QQQ RRR SSS TTT

q r s t

Valor a colocar en el Valor a colocar en el Valor a colocar en el Valor a colocar en el


campo de prximo estado campo de prximo estado campo de prximo estado campo de prximo estado
si las entradas si las entradas si las entradas si las entradas
seleccionadas valen 00. seleccionadas valen 01. seleccionadas valen 10. seleccionadas valen 11.

Figura 3.18 Indicaciones para llenar la memoria con el esquema de 4 Vas.

Es de destacar que no siempre hace falta poner los dos multiplexores de las entradas. Incluso
hay casos en los que no hace falta ninguno. Si la MEF tiene slo 2 entradas, dichas entradas
hay que conectarlas directamente al multiplexor horizontal y en tal caso, el campo de selec-
cin de la memoria no existe. Otro caso particular es cuando la MEF tiene 3 entradas y se da
el caso de que en cualquier transicin una de ellas siempre va acompaada de alguna de las
otras dos. En tal caso, la que siempre aparece se conecta directamente a una de las entradas
del multiplexor horizontal, mientras que la otra entrada se selecciona con un multiplexor de
entradas con el campo de seleccin correspondiente. En este caso sera un error agregar un
multiplexor para seleccionar slo una entrada.

El campo de prximo estado se llena de manera anloga al de 2 Vas, nada ms que en este
caso hay 4 campos a llenar de acuerdo a la combinacin binaria de las entradas. Un caso par-
ticular es cuando la transicin entre estados es incondicional, en el que en el campo de selec-
cin se puede poner cualquier valor y todos los campos de prximo estado se llenan con el
mismo valor de prximo estado. Lo mismo para las transiciones afectadas por una sola entra-
da, en el que dos campos llevan un valor de prximo estado y los otros dos llevan otro. Para el
llenado del campo de instrucciones se procede igual que en los casos anteriores, recordando
que las salidas Moore que aparecen en el estado se deben colocar en la fila correspondiente a
dicho estado (y no en la fila del prximo estado!!!).

Para el caso del tacmetro digital de ejemplo, la nica modificacin que habra que hacerle a
la carta ASM es transformar la casilla de salida condicional (salida Mealy) que depende del
estado c en un estado (el f), para cumplir con la restriccin de que slo hayan salidas Moore.
Para preservar el correcto funcionamiento de la MEF, adems se debe incluir en el estado f la
salida HABCNT. En la Fig. 3.19 se tiene la carta modificada para este esquema.

21
Figura 3.19 Carta modificada para el esquema de 4 Vas.

MEMORIA

3 3 3 3 4
Pxmo. Est. Pxmo. Est. Pxmo. Est. Pxmo. Est.
Instr.
00 01 10 11

Salidas
0 1 2 3 D3 = INT
VENT S0 D2 = CRGLTCH
Multiplexor 4:1 D1 = LIMPCNT
Q15 S1 D0 = HABCNT

Registro cauce Reloj

Figura 3.20 Esquema de 4 Vas para el caso de ejemplo.

22
En este caso la mquina slo tiene 2 entradas, y tal como se explic arriba, no hace falta
ningn multiplexor para las entradas. La entrada VENT se conecta directamente a la entrada
de seleccin S0 del multiplexor horizontal y la entrada Q15 a la S1, tal como se muestra en la
Fig. 3.20. En la palabra de memoria no hay ningn campo de seleccin de entradas.

3.3.1 PROCEDIMIENTO PARA EL LLENADO DE LA MEMORIA

A continuacin se vern algunos ejemplos del llenado de la memoria para el esquema de 4


Vas. El prximo estado del estado a slo est afectado por la entrada VENT (ver la Fig. 3.21).
Por lo tanto en el campo de prximo estado habrn valores que no dependen de la entrada
Q15, es decir, el valor que entra por la entrada S1 del multiplexor horizontal es un valor no
especificado. De acuerdo al esquema del circuito, la entrada VENT debe seleccionar el conte-
nido de los campos X0 si vale 0 y X1 si vale 1, y por lo tanto habrn valores que aparecen
repetidos. (Nota: aqu la X significa valor no especificado). As, para el estado a hay que co-
locar el valor 000 en los campos de prximo estado X0 y 001 en los campos X1. Como este
estado no tiene listada ninguna salida, el campo de instrucciones est totalmente en 0.

Figura 3.21 Determinacin de los valores del campo de prximo estado del estado a.

Est. A2 A1 A0 C*00 B*00 A*00 C*01 B*01 A*01 C*10 B*10 A*10 C*11 B*11 A*11 D3 D2 D1 D0
a 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0

Tabla 3.12 Llenado de la memoria para el estado a.

23
Valor a colocar en el campo
de prximo estado si las
entradas valen 01.

001
Colocar un 1 en la
b columna
HABCNT
correspondiente a
Valor a colocar en el campo esta salida.
de prximo estado si las
entradas valen 10 y 11.

Q15

010

c VENT
HABCNT

Valor a colocar en el campo


011 de prximo estado si las
entradas valen 00.
d
CRGLTCH

Figura 3.22 Determinacin de los valores de los campos del estado b.

El estado b tiene definidos 3 prximos estados, habiendo dos que dependen de las dos entra-
das y uno que depende de una sola. As, si las entradas valen 00, en ese campo hay que colo-
car el valor 011, si valen 01 el valor es 001 y si valen 1X, en ambos campos hay que colocar
010. Tambin hay que colocar un 1 en la columna correspondiente a la salida HABCNT (D0).

Est. A2 A1 A0 C*00 B*00 A*00 C*01 B*01 A*01 C*10 B*10 A*10 C*11 B*11 A*11 D3 D2 D1 D0
b 0 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 1

Tabla 3.13 Llenado de la memoria para el estado b.

Un caso particular es el de las transiciones incondicionales. Por ejemplo, para el estado d (ver
la Fig. 3.22), el prximo estado es el e sin importar el valor de ninguna de las entradas de la
MEF. Por lo tanto habr que poner el mismo valor (100) en todos los campos de prximo es-
tado. La salida que se activa en este estado es CRGLTCH, por lo que hay que colocar un 1 en
la columna correspondiente (D2). La Tabla 3.15 resume el contenido de la memoria para el
esquema de 4 Vas.

24
Figura 3.23 Determinacin de los valores del campo de prximo estado del estado d.

Est. A2 A1 A0 C*00 B*00 A*00 C*01 B*01 A*01 C*10 B*10 A*10 C*11 B*11 A*11 D3 D2 D1 D0
d 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0

Tabla 3.14 Llenado de la memoria para el estado d.

Est. A2 A1 A0 C*00 B*00 A*00 C*01 B*01 A*01 C*10 B*10 A*10 C*11 B*11 A*11 D3 D2 D1 D0
a 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
b 0 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 1
c 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 0 0 1
d 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0
e 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
f 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1
- 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
- 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Tabla 3.15 Contenido de la memoria para el esquema de 4 Vas.

Con este esquema, la memoria requerida para implementar el caso de ejemplo es de 6 x 16


bits = 96 bits, algo mayor que con el esquema de direccionamiento de 2 vas, pero con menos
estados.

3.4 ESQUEMA DE DIRECCIONES ASUMIDAS


Este esquema se basa en el diagrama del contador de salto de la Fig. 1.2 y en el esquema de
direccionamiento por pares Estado-Entrada. Como registro cauce se usa un contador con car-
ga en paralelo, como puede ser un 74x163, al que se lo denomina PC (se lee micro PC) por
analoga con el Contador de Programa (Program Counter o PC) de un microprocesador o
computadora. Este esquema impone las mismas restricciones que el esquema de direcciona-
miento por pares Estado-Entrada, es decir slo se admiten una entrada por estado y salidas
Moore. El contador 74x163 tiene varias entradas de control que permiten:

a) Poner a cero la cuenta con la entrada Limpiar (CLR_L).


b) Cargar el contador con la entrada Cargar (LD_L = 0). Se carga el valor presente en las
entradas paralelo del contador.
c) Incrementar el contador en 1 (cuando LD_L = 1).

25
d) Retener la cuenta actual usando las entradas de habilitacin ENP y ENT.

El uso del contador agrega restricciones adicionales, ya que, en funcin de las entradas de
control que se usen, se debe adaptar el resto del circuito al funcionamiento del contador. La
entrada Limpiar (CLR_L) normalmente se usa para la inicializacin de la MEF. Si bien se
pueden plantear esquemas en el que se usen todas las entradas de control de forma convenien-
te, en este trabajo slo plantearemos un esquema en el que se usa la entrada LD_L. En tal caso
la principal restriccin que aparece se da en la asignacin de estados. En general para cual-
quier estado dado, uno de los dos prximos estados deber siempre tener un cdigo que sea el
estado actual ms 1. Es bastante obvio que esto se debe a que el prximo estado asumido por
defecto es el actual ms 1, al que se le da el nombre de direccin asumida. El otro estado, que
puede tener cualquier otro cdigo de estado, se alcanza poniendo en bajo la entrada LD_L,
con lo que se cargar una nueva direccin de la memoria (la direccin de salto) en el conta-
dor.

De esta manera, al haber siempre una direccin asumida, el campo de prximo estado slo
necesita tener un solo campo, el de la direccin de salto. De esta manera se obtiene un es-
quema con menos bits de ancho. Una primera aproximacin a este esquema es el mostrado en
la Fig. 3.24.

Figura 3.24 Esquema de direcciones asumidas sin entradas.

En este caso el formato de la palabra se divide en 3 campos: uno para la direccin de salto,
otro para indicar si el contador se debe incrementar o si debe cargar el prximo estado desde
la memoria y un tercero para las instrucciones. El bit de Incrementar/Cargar se conecta a la
entrada respectiva del contador (LD_L). Si bien este esquema permite implementar una MEF,
no permite realizar saltos condicionados, por lo que su uso es muy limitado.

Una forma de tener la posibilidad de efectuar saltos condicionados por las entradas, es agregar
un multiplexor para las entradas y reestructurar el formato de la palabra de memoria, tal como
se muestra en la Fig. 3.25. Se sigue usando un campo para la direccin salto, que se conecta a
la carga en paralelo del PC. Con un segundo campo se selecciona una entrada del multi-

26
plexor de entrada, cuya salida se conecta a la entrada de Incrementar/Cargar (LD_L) del PC.
El tercer campo se utiliza para las instrucciones de salida de la mquina.

Figura 3.25 Esquema de direcciones asumidas con entradas.

En el multiplexor de entrada puede ser necesario conectar una de las entradas a 0 y otra a 1,
de manera de tener la posibilidad de seleccionar un salto forzado o un incremento del PC
para las transiciones incondicionales. Es necesario aclarar que estas entradas del multiplexor
deben conectarse slo en caso de ser necesario. Si no hacen falta, no se deben incluir, ya que
en todos los casos se debe tratar de hacer la implementacin con el circuito ms simple.

En algunos casos se deber hacer algn cambio en las casillas de condicin de la carta para
cumplir con los requisitos del esquema de direcciones asumidas. Supongamos el caso mostra-
do en la Fig. 3.26. Si luego de hacer la asignacin de estados (y no habiendo forma de cam-
biarla) queda algn estado en el que la direccin asumida est por la salida negada de la casi-
lla de decisin (y por lo tanto, no se cumple con la tabla mostrada en la Fig. 3.25), se puede
cambiar la posicin de la burbuja de negacin al otro paso de enlace de salida de la casilla.
Para preservar el algoritmo descrito por la carta ASM, dentro de la casilla de decisin se debe
colocar el complemento de la entrada que afecta esa transicin. En tal caso, en el multiplexor
de entrada deber conectarse el complemento de la entrada afectada utilizando un inversor.

27
Figura 3.26 Modificacin de las casillas de decisin.

3.4.1 PROCEDIMIENTO PARA HACER LA ASIGNACIN DE ESTADOS

En primer lugar, se debe tener la carta ASM con las modificaciones impuestas por el esquema
de direccionamiento de 2 Vas, es decir una entrada por estado y slo salidas Moore (ver la
Fig. 3.12). Dado que este esquema tiene una restriccin adicional, para hacer la asignacin de
estado se debern buscar caminos por la carta de manera que siempre que se pasa a travs de
una casilla de decisin, uno de los prximos estados tenga la direccin asumida. Esta fase se
debe hacer por prueba y error, hasta obtener un resultado satisfactorio.

A continuacin se describir el procedimiento para el caso de ejemplo. En la Fig. 3.27 se han


dibujado sobre la carta ASM (con lneas de raya y punto) dos caminos posibles sobre los cua-
les aplicar las direcciones asumidas. Por esos caminos los cdigos de estado deben seguir la
cuenta binaria del contador, que en este caso es de 3 bits, a partir de un estado. En el resto de
los casos no cubiertos por estos caminos se debe usar la direccin de salto.

Se puede observar que hay tres transiciones en las que no se cumple con los requisitos del
esquema: la de los estados b, c y f. En todos esos casos se debe cambiar la posicin de la bur-
buja y poner dentro de la casilla de decisin el complemento de la entrada. En la Fig. 3.28 se
tiene la carta modificada, con una asignacin de estados que cumple con las restricciones im-
puestas.

28
a

VENT

b
HABCNT

Q15

c f
HABCNT HABCNT

Q15 VENT

e d
INT, HABCNT HABCNT g
CRGLTCH

VENT h
LIMPCNT

Figura 3.27 Determinacin de los caminos para las direcciones asumidas.

29
000

VENT

001

b
HABCNT

Q15

110 010

c f
HABCNT HABCNT

Q15 VENT

111 101
011
e d
INT, HABCNT HABCNT g
CRGLTCH

100

VENT h
LIMPCNT

Figura 3.28 Asignacin de estados con la carta ASM modificada.

Con las modificaciones realizadas, el esquema de direcciones asumidas va a requerir un mul-


tiplexor de entrada que incluya las siguientes conexiones: VENT , VENT , Q15 y GND para los
saltos incondicionales. As, el formato de la palabra queda con 3 bits para la direccin de sal-
to, 2 bits para seleccionar la entrada y 4 bits para las salidas, haciendo un total de 9 bits, tal
como se muestra en la Fig. 3.29.

30
Figura 3.29 Esquema de direcciones asumidas para el caso de ejemplo.

3.4.2 PROCEDIMIENTO PARA EL LLENADO DE LA MEMORIA

Para el llenado de la memoria con este esquema se procede de forma muy similar al esquema
de direccionamiento por pares Estado-Entrada, con la diferencia de que el campo de prximo
estado ahora slo contiene un valor (la direccin de salto). Slo se detallarn dos casos tpi-
cos, un estado que tenga una entrada y otro que tenga una transicin incondicional.

Figura 3.30 Determinacin de los valores de los campos del estado b.

31
Estado A2 A1 A0 C* B* A* S1 S0 D3 D2 D1 D0
b 0 0 1 1 1 0 0 1 0 0 0 1
Tabla 3.16 - Llenado de la memoria para el estado b.

Para el estado b (ver la Fig. 3.30), se debe seleccionar la entrada Q15 , por lo que en el campo
de seleccin se debe colocar el valor 01. La direccin de salto, que se alcanza por la salida
negada de la casilla de decisin, es la 110. Por ltimo, habr que colocar un 1 en la columna
correspondiente a la salida HABCNT (D0).

100

h Colocar un 1 en la columna
LIMPCNT
correspondiente a esta salida.

Direccin de
000
salto
a

Figura 3.31 Determinacin de los valores de los campos del estado h.

Estado A2 A1 A0 C* B* A* S1 S0 D3 D2 D1 D0
h 1 0 0 0 0 0 0 0 0 0 1 0
Tabla 3.17 - Llenado de la memoria para el estado h.

El estado h tiene cmo nico prximo estado el estado a (ver la Fig. 3.31). En este caso, por
tratarse de una transicin incondicional, con el campo de seleccin se debe elegir la entrada 0
del multiplexor colocando 00 en el campo de seleccin. Esto forzar al contador a realizar una
carga. En el campo de la direccin de salto se coloca el valor 000. Luego hay que colocar un 1
en la columna correspondiente a la salida LIMPCNT (D1).

Estado A2 A1 A0 C* B* A* S1 S0 D3 D2 D1 D0
a 0 0 0 0 0 0 1 0 0 0 0 0
b 0 0 1 1 1 0 0 1 0 0 0 1
f 0 1 0 0 0 1 1 1 0 0 0 1
g 0 1 1 1 0 0 0 0 0 1 0 0
h 1 0 0 0 0 0 0 0 0 0 1 0
d 1 0 1 0 1 1 1 0 0 0 0 1
c 1 1 0 1 0 1 0 1 0 0 0 1
e 1 1 1 0 0 1 0 0 1 0 0 1
Tabla 3.18 Contenido de la memoria para el esquema de direcciones asumidas.

La Tabla 3.18 muestra el contenido completo de la memoria para el esquema de direcciones


asumidas. Se puede observar que para la transicin de g h se ha usado un salto, en lugar de
incrementar el contador. Como de todas maneras es una transicin incondicional, se usa este
mtodo a los efectos de evitar el agregado de una entrada extra en el multiplexor de seleccin
conectada a Vcc , que obligara a usar un multiplexor ms grande (de 8 entradas). La memoria

32
requerida para el caso de ejemplo es de 8 x 9 bits = 72 bits. Se tiene una memoria ms peque-
a que en los casos anteriores, pero se tiene que agregar ms hardware externo a la memoria.

3.5 ESQUEMA DE DIRECCIONES ASUMIDAS MEJORADO


El esquema de direcciones asumidas se puede mejorar mediante la inclusin de un inversor
programable implementado con una compuerta O exclusiva (XOR). Esta compuerta se agre-
ga a la salida del multiplexor de seleccin de entrada, de manera de evitar tener que conectar
entradas negadas para cumplir con el esquema de direcciones asumidas, como sucedi en el
caso anterior. En la memoria aparece un nuevo campo llamado de polaridad de 1 bit, que se
conecta a una de las entradas de la compuerta XOR. Si este bit vale 0, la compuerta XOR se
comporta como un driver, es decir, no modifica la entrada. Si vale 1, la compuerta XOR se
comporta como un inversor.

En este caso ya no hay que conectar una de las entradas a Vcc cuando se quiere hacer un salto
incondicional incrementando el contador. Bastar con seleccionar la entrada 0 del multiplexor
y poner un 1 en el campo de polaridad.

GND COND1 COND2 COND3

0 1 2 3
S1
S0
Multiplexor

Incrementar/Cargar
PC Reloj

Contador con
carga en paralelo

MEMORIA

Direccin de
Polaridad Seleccin Instrucciones
Salto

Salidas

Figura 3.32 Esquema de direcciones asumidas mejorado.

33
Pol. S1 S0 Funcin
0 0 0 Ir a la direccin de salto.
0 0 1 Saltar si la COND1 es Falso.
0 1 0 Saltar si la COND2 es Falso.
0 1 1 Saltar si la COND3 es Falso.
1 0 0 Incrementar el PC.
1 0 1 Saltar si la COND1 es Verdadero.
1 1 0 Saltar si la COND2 es Verdadero.
1 1 1 Saltar si la COND3 es Verdadero.
Tabla 3.19 Operacin del esquema de direcciones asumidas mejorado.

La tabla de verdad de la operacin de este esquema se muestra en la Tabla 3.19. Se puede


observar que al agregar la compuerta XOR la funcionalidad del esquema es mayor. Por un
lado los saltos condicionales pueden hacerse en funcin de cualquier condicin de las entra-
das, y por lo tanto no hace falta modificar la carta como en el caso anterior. Por otra parte, el
multiplexor tiene una mejor utilizacin, ya que slo habr que usar una entrada del mismo por
cada entrada de la MEF, ms uno adicional para el salto incondicional o incrementar el PC.

Figura 3.33 Esquema de direcciones asumidas mejorado para el caso se ejemplo.

34
Para hacer la asignacin de estados se procede igual que en el caso anterior, pero en este caso
no es necesario modificar las casillas de decisin de la carta ASM. Por lo dems, rigen las
mismas restricciones impuestas para el esquema de direcciones asumidas. En la Figura 3.34 se
tiene la carta con una asignacin de estados posible.

000

VENT

001

b
HABCNT

Q15

110 010

c f
HABCNT HABCNT

Q15 VENT

111 101
011
e d
INT, HABCNT HABCNT g
CRGLTCH

100

VENT h
LIMPCNT

Figura 3.34 Carta ASM para el esquema de direcciones asumidas mejorado.

3.5.1 PROCEDIMIENTO PARA EL LLENADO DE LA MEMORIA

Para este caso tambin se explicarn en detalle algunos casos tpicos. Para el estado a (ver la
Fig. 3.35), se debe seleccionar la entrada VENT, por que en el campo de seleccin se coloca el
valor 10. En este estado la MEF debe saltar si la condicin es Falso, por lo que el bit de pola-
ridad debe ponerse en 0. En este estado no hay ninguna salida activa, por lo que el campo de
instrucciones se deja totalmente en 0. La Tabla 3.20 muestra el contenido de la memoria para
el estado a.

35
000 Direccin de
salto
a

Entrada que hay que


seleccionar con el campo de
Seleccin, con Polaridad = 0.
VENT

Direccin
001
asumida
b
HABCNT

Figura 3.35 - Determinacin de los valores de los campos del estado a.

Estado A2 A1 A0 C* B* A* P S1 S0 D3 D2 D1 D0
a 0 0 0 0 0 0 0 1 0 0 0 0 0
Tabla 3.20 - Llenado de la memoria para el estado a.

Figura 3.36 - Determinacin de los valores de los campos del estado b.

Estado A2 A1 A0 C* B* A* P S1 S0 D3 D2 D1 D0
b 0 0 1 1 1 0 1 0 1 0 0 0 1
Tabla 3.21 - Llenado de la memoria para el estado b.

Para el estado b (ver la Fig. 3.36), se debe seleccionar la entrada Q15, por lo tanto, en el cam-
po de seleccin se debe colocar el valor 01. En este estado la MEF debe saltar si la condicin
es Verdadero, por lo que el bit de polaridad debe ponerse en 1. La direccin de salto es la co-
rrespondiente al estado c, y en dicho campo se debe colocar 110. En este estado se activa la
salida HABCNT, por lo que se debe colocar un 1 en la columna correspondiente (D0). La Ta-
bla 3.21 muestra el contenido de la memoria para el estado b.

36
Otro caso particular es el de las transiciones incondicionales. En la carta ASM del caso de
ejemplo se tienen dos casos tpicos. El primero es una transicin incondicional con incremen-
to del contador, tal como en la transicin de g h.

011

g Colocar un 1 en la columna
CRGLTCH
correspondiente a esta salida.

Direccin
100
asumida
h
LIMPCNT

Figura 3.37 - Determinacin de los valores de los campos del estado g.

Estado A2 A1 A0 C* B* A* P S1 S0 D3 D2 D1 D0
g 0 1 1 1 0 0 1 0 0 0 1 0 0
Tabla 3.22 - Llenado de la memoria para el estado g.

En este caso se debe seleccionar la entrada GND, por lo que en el campo de seleccin se debe
colocar 00. Como se trata de un incremento del PC, el bit de polaridad debe ponerse en 1. En
este estado se activa la salida CRGLTCH, por lo que se debe colocar un 1 en la columna co-
rrespondiente (D2). El campo de la direccin de salto es un valor no especificado, pero por
robustez, conviene poner la direccin del prximo estado (100). La Tabla 3.22 muestra el con-
tenido de la memoria para el estado g.

Figura 3.38 - Determinacin de los valores de los campos del estado e.

37
Otro caso de transicin incondicional es la de e b, pero en esta caso se debe usar una direc-
cin de salto, tal como se ilustra en la Figura 3.38. En el campo de seleccin se debe colocar
00 para seleccionar la entrada conectada a GND y en el campo de polaridad se debe colocar
un 0 para forzar la carga del contador con la direccin de salto. En este caso se activan dos
salidas, INT y HABCNT, por lo que se debe colocar un 1 en las columnas correspondientes a
dichas salidas (D3 y D0). La Tabla 3.23 resume el contenido de la memoria para el estado e y
la Tabla 3.24 el contenido completo de la memoria para el esquema de direcciones asumidas
mejorado.

Estado A2 A1 A0 C* B* A* P S1 S0 D3 D2 D1 D0
e 1 1 1 0 0 1 0 0 0 1 0 0 1
Tabla 3.23 - Llenado de la memoria para el estado e.

Estado A2 A1 A0 C* B* A* P S1 S0 D3 D2 D1 D0
a 0 0 0 0 0 0 0 1 0 0 0 0 0
b 0 0 1 1 1 0 1 0 1 0 0 0 1
f 0 1 0 0 0 1 1 1 0 0 0 0 1
g 0 1 1 1 0 0 1 0 0 0 1 0 0
h 1 0 0 0 0 0 0 0 0 0 0 1 0
d 1 0 1 0 1 1 0 1 0 0 0 0 1
c 1 1 0 1 0 1 1 0 1 0 0 0 1
e 1 1 1 0 0 1 0 0 0 1 0 0 1
Tabla 3.24 Contenido de la memoria para el esquema de direcciones asumidas mejorado.

En este caso la memoria requerida es de 8 x 10 = 80 bits. Se requieren algunos bits ms que


en el caso anterior, pero se gana mucho en funcionalidad.

3.6 ESQUEMA DE MICROPROGRAMACIN VERTICAL


En los esquemas basados en PC mostrados se observa que existen al menos tres campos
bsicos: el campo de prximo estado, el campo de seleccin y el de las instrucciones de sali-
da. Opcionalmente se puede agregar el campo de polaridad. Una forma de reducir el ancho de
la palabra en estos esquemas es usar distintos formatos de palabra para contener dichos cam-
pos bsicos. Esto da lugar a lo que se denomina microprogramacin vertical o de formato
variable. Este esquema es particularmente til cuando se tiene una MEF con muchas salidas,
ya que al solapar el campo de instrucciones con los otros el ancho de la palabra se reduce sus-
tancialmente.

El diagrama de la mquina debe ser modificado de manera de agregar los estados necesarios.
Se deben diferenciar los estados que producen salidas, de los que producen saltos condiciona-
les o incondicionales. Se mantienen las restricciones vistas para el criterio de direcciones
asumidas, es decir, nicamente se admiten una entrada por estado y salidas Moore. Adems se
restringe la asignacin de estados, uno de los prximos estados debe tener la direccin actual
ms 1.

Un formato puede ser el siguiente: un campo de 1 bit, denominado de formato, indica qu tipo
de palabra es: si en ese campo hay un 1 es una palabra de instrucciones y si hay un 0 es una
palabra de seleccin de la entrada y salto. La palabra que es instruccin, tendr el resto de los

38
bits para indicar las salidas que se producen en ese estado. La palabra que es seleccin y salto
tendr una parte asignada a cada una de estas funciones.

Cabe aclarar que tambin es posible implementar un formato en el que cada campo bsico
tenga una palabra distinta, en cuyo caso habr que usar 2 bits para el campo de formato de la
palabra y las palabras tendrn 3 formatos distintos. En esto el diseador tiene libertad de ele-
gir los formatos que ms se adecuen al problema.

Formato 1 Formato 2
Instrucciones Seleccin y salto

Listado de salidas

Al estado asumido
(+1) COND

Al estado X Al estado asumido


(salto) (+1)

Figura 3.39 Casillas de estado para el esquema de formato variable.

Supongamos que se usan slo dos formatos distintos, tal como se muestra en la Fig. 3.39. Si
bien este esquema permite ahorrar bits de la memoria, lo hace a un costo, ms all de los cir-
cuitos extra que haya que agregar. Por un lado se debe modificar la carta ASM de una manera
ms radical. Por cada estado de la carta original en general debern colocarse 2 estados, uno
de cada formato. Hay una posible excepcin a esta regla, que se explicar ms adelante con el
caso de ejemplo. Al haber una mayor cantidad de estados, normalmente se requerirn ms
variables de estados y la asignacin de estados se har ms engorrosa. Otra desventaja que se
tiene es que para cada estado original se necesitarn 2 ciclos de reloj y esto impactar en la
frecuencia mxima de trabajo de la MEF. Por lo tanto, si el circuito tiene requisitos de rendi-
miento muy altos se desaconseja usar este esquema y usar algunos de los otros esquemas pro-
puestos.

Con el esquema de dos formatos propuesto se deben introducir algunas modificaciones en el


circuito. Por un lado, se debe agregar una compuerta OR a la entrada de Incrementar/Cargar el
PC, de manera de forzar un 1 en dicha entrada cada vez que se est en un estado de instruc-
ciones. Al colocar el uno se producir siempre un incremento del contador, de manera de pa-
sar al estado de seleccin/salto asociado a esas salidas (Formato 2). Dems est decir que la
asignacin de estados debe tener en cuenta esta situacin, por lo que el cdigo del estado de
seleccin/salto deber ser siempre el del estado de instrucciones ms 1.

Adems, en la salida se debe agregar un cerrojo transparente manejado por el bit de formato.
Debido a que los mismos bits de datos de la memoria se usan para distintas funciones, interesa
retener a la salida de la MEF nicamente lo que est a la salida de la MEF cuando se est en
un estado de instrucciones. Cuando la mquina se encuentra en un estado de salto/seleccin,
se retienen las salidas del estado anterior (Formato 1) independientemente del valor que se

39
presente en la entrada del cerrojo. Para la seleccin de las entradas en las transiciones condi-
cionales se debe usar la Tabla 3.19. En la Fig. 3.40 se muestra el esquema propuesto para al
caso de ejemplo, basado en el esquema de direcciones asumidas mejorado.

No
GND Q15 VENT Usada

0 1 2 3
S1
S0
Multiplexor 4:1

Incrementar/Cargar

PC Reloj

Contador con
carga en paralelo

MEMORIA
1
Bit de
formato 1 2 4
0 Polaridad Seleccin Direccin de salto

1 Instrucciones

C
Cerrojo

D Q Salidas
D3 = INT
D2 = CRGLTCH
D1 = LIMPCNT
D0 = HABCNT

Figura 3.40 Esquema de formato variable para el caso de ejemplo.

En la Fig. 3.41 se muestra la carta ASM para el problema de ejemplo, adaptada a los requisi-
tos de este esquema. Se puede observar que la mayora de los estados de la carta realizada
para el esquema de direcciones asumidas mejorado se ha desdoblado en dos estados. Como
slo se puede seleccionar una entrada por estado de seleccin/salto, las casillas de decisin
que deban separarse para cumplir con esta restriccin requieren slo un estado de Formato 2.
La salida correspondiente al estado del cual dependen las entradas separadas de esta manera
quedar acerrojada en el cerrojo de salida hasta que se decida el prximo estado con otra sali-
da vlida. En total se tienen 13 estados por lo que sern necesarias 4 variables de estado para
implementar esta MEF. El procedimiento para hacer la asignacin de estados es similar al
usado en la Seccin 3.4.1.

40
De todas maneras hay algunas particularidades que remarcar. La transicin de f g es incon-
dicional y con la asignacin de estados realizada se tiene que el cdigo del estado g es el del
estado f ms 1 (direccin asumida). En este caso no hace falta agregar un estado de Formato
2, ya que se incrementar el contador automticamente. Sin embargo, la transicin incondi-
cional de g a es igual al caso general, en el que se deber incluir un estado extra de For-
mato 2 para poder realizar el salto incondicional. Una situacin similar se tiene en el estado l.

Figura 3.41 - Carta ASM para el esquema de formato variable.

3.6.1 PROCEDIMIENTO PARA EL LLENADO DE LA MEMORIA

Para este esquema tambin se detallar el procedimiento para llenar la memoria para casos de
transiciones condicionales e incondicionales. Dado que cada estado original de la mquina se
ha desdoblado casi siempre en dos estados, se proceder al llenado de la memoria consideran-
do los pares de estados de Formato 1 y Formato 2.

El estado a es de Formato 1, por lo que slo se deben llenar los bits correspondientes a las
salidas definidas para este estado (bits D3 ~ D0). Como ninguna de las salidas se activa, todos
los bits se ponen en 0. En las palabras de Formato 1, como slo hay definidas 4 salidas, los

41
bits rotulados con P, S1 y S0 son valores no especificados y se pueden llenar con cualquier
valor, en este caso, con ceros.

El estado b es el de seleccin y salto asociado al estado a. Al estado b se llega automtica-


mente porque el bit de formato en el estado a est en 1, forzando un incremento del PC. Esto
sucede siempre que se est en un estado de Formato 1. Este estado debe seleccionar la entrada
VENT, por lo que en el campo de seleccin se coloca 10. En el campo de polaridad se debe
colocar un 0 debido a que no se tiene que negar la condicin de la entrada. Es decir, el estado
de salto se alcanza por la condicin normal de la entrada. En este caso el estado de salto es el
a, por lo que en los bits D3 ~ D0 deber colocarse su cdigo de estado (0000). En la Tabla
3.25 se han agrisado los campos que hay que llenar en cada formato de palabra.

0000 Direccin de salto


para el estado b.
a

Direccin asumida
0001 del estado a.
b

Entrada que hay que seleccionar


con el campo de Seleccin, con VENT
Polaridad = 0.
Direccin asumida
0010
del estado b.
HABCNT

Figura 3.42 - Determinacin de los valores de los campos de los estados a y b.

Estado A3 A2 A1 A0 F P S1 S0 D3 D2 D1 D0
a 0 0 0 0 1 0 0 0 0 0 0 0
b 0 0 0 1 0 0 1 0 0 0 0 0
Tabla 3.25 - Llenado de la memoria para los estados a y b.

El estado c (ver la Fig. 3.43) es de instrucciones, por lo que slo hay que colocar un 1 en la
columna correspondiente a la salida HABCNT (D0). El estado d es el primer estado de selec-
cin y salto asociado al estado c. En el multiplexor de entrada se debe seleccionar la entrada
Q15, por lo que en el campo de seleccin se debe colocar 01. En este caso el bit de polaridad
debe ir en 1, debido a que en la carta ASM la direccin de salto se alcanza por el camino de la
entrada directa (saltar si Q15 es Verdadero). Por lo tanto, para que se pueda cargar la direc-
cin de salto en el contador se debe negar la entrada. En el campo de la direccin de salto se
debe colocar el cdigo del estado j (1001).

El estado e es el segundo estado de seleccin y salto asociado al estado c. En este caso se debe
saltar si la condicin de VENT es Falso. Por ello, el bit de polaridad debe ir en 0. El campo de
seleccin debe ponerse en 10 para elegir VENT, y la direccin de salto es la correspondiente al
estado c (0010). Como se puede observar, en este caso quedan dos estados de seleccin y sal-
to contiguos. La salida HABCNT permanece acerrojada con en valor presente en el estado 1,
mientras se termina de decidir cul es el prximo estado en base a la condicin de las dos en-
tradas consultadas en forma sucesiva en los estados d y e.

42
Figura 3.43 - Determinacin de los valores de los campos de los estados c y d.

Estado A3 A2 A1 A0 F P S1 S0 D3 D2 D1 D0
c 0 0 1 0 1 0 0 0 0 0 0 1
d 0 0 1 1 0 1 0 1 1 0 0 1
e 0 1 0 0 0 0 1 0 0 0 1 0
Tabla 3.26 - Llenado de la memoria para los estados c, d y e.

El estado f es un caso particular (ver la Fig. 3.44). En este caso la transicin de f g es in-
condicional y el estado g tiene asignado un cdigo de estado que es el de f ms 1. En este caso
no hace falta agregar un estado de Formato 2, ya que la direccin asumida se alcanza por las
caractersticas del cableado del circuito. En el estado f el bit de formato est en 1, y como esa
lnea de dato est conectada a la compuerta O que maneja la entrada de Incrementar/Cargar
del contador, se forzar un incremento del PC. Por lo tanto, en este caso slo hay que llenar
el campo de instrucciones, poniendo un 1 en la columna correspondiente a CRGLTCH (D2).

Figura 3.44 - Determinacin de los valores de los campos del estado f.

43
Estado A3 A2 A1 A0 F P S1 S0 D3 D2 D1 D0
f 0 1 0 1 1 0 0 0 0 1 0 0
Tabla 3.27 - Llenado de la memoria para el estado f.

1011
l HABCNT, INT Colocar un 1 en la columna
correspondiente a estas salidas.

1100
Direccin asumida
m del estado l.

Direccin de salto
0010 del estado m.
c HABCNT

Figura 3.45 - Determinacin de los valores de los campos de los estados l y m.

Estado A3 A2 A1 A0 F P S1 S0 D3 D2 D1 D0
l 1 0 1 1 1 0 0 0 1 0 0 1
m 1 1 0 0 0 0 0 0 0 0 1 0
Tabla 3.28 - Llenado de la memoria para los estados l y m.

El estado l requiere una transicin incondicional al estado c, pero con una direccin de salto
(ver la Fig. 3.45). Por lo tanto, en el estado l se debe colocar un 1 en las columnas correspon-
dientes a las salidas INT (D3) y HABCNT (D1). Para poder realizar el salto incondicional se
agrega el estado m de Formato 2, cuyos campos se deben llenar de la siguiente manera. Con el
campo de seleccin se debe seleccionar la entrada conectada a GND, colocando el valor 00. El
bit de polaridad debe ponerse en 0 para transferir un 0 a la entrada Incrementar/Cargar del
contador y forzar un salto. Por ltimo, en el campo de la direccin de salto se carga el cdigo
del estado c (0010).

Como en otros casos, para mejorar la robustez de la MEF a los estados no usados conviene
definirlos como de Formato 2, con un salto incondicional al estado de inicio. Esto no implica
ningn costo extra.

La Tabla 3.29 resume el contenido de la memoria para el esquema de formato variable para el
caso de ejemplo. La memoria requerida es de 8 x 13 = 104 bits. Se observa que se requieren
ms bits que en el caso de direcciones asumidas, pero el ancho de la memoria es menor. En
este caso el diseo entrara en un solo chip de una memoria comercial.

44
Estado A3 A2 A1 A0 F P S1 S0 D3 D2 D1 D0
a 0 0 0 0 1 0 0 0 0 0 0 0
b 0 0 0 1 0 0 1 0 0 0 0 0
c 0 0 1 0 1 0 0 0 0 0 0 1
d 0 0 1 1 0 1 0 1 1 0 0 1
e 0 1 0 0 0 0 1 0 0 0 1 0
f 0 1 0 1 1 0 0 0 0 1 0 0
g 0 1 1 0 1 0 0 0 0 0 1 0
h 0 1 1 1 0 0 0 0 0 0 0 0
i 1 0 0 0 0 1 1 0 0 1 0 1
j 1 0 0 1 1 0 0 0 0 0 0 1
k 1 0 1 0 0 1 0 1 1 0 0 0
l 1 0 1 1 1 0 0 0 1 0 0 1
m 1 1 0 0 0 0 0 0 0 0 1 0
- 1 1 0 1 0 0 0 0 0 0 0 0
- 1 1 1 0 0 0 0 0 0 0 0 0
- 1 1 1 1 0 0 0 0 0 0 0 0
Tabla 3.29 Contenido de la memoria para el esquema de formato variable.

3.7 ESQUEMA COMBINADO PASOS DE ENLACE + PARES ESTADO-


ENTRADA.
Para el problema de ejemplo tambin se puede plantear un esquema combinado entre el direc-
cionamiento por Pasos de Enlace y el de Pares Estado-Entrada. Este esquema permite imple-
mentar mquinas de cualquier tipo (Moore y Mealy), con la ventaja de tener un mejor aprove-
chamiento de la memoria con respecto al primero de los esquemas. Para el problema de ejem-
plo, conviene conectar a una entrada de direccin de memoria la entrada Q15, ya que la nica
salida Mealy (INT) depende de esa entrada. Para el resto de las transiciones, se puede usar un
esquema con multiplexor horizontal, similar al usado en el esquema de Pares Estado/Entrada.
El esquema combinado en este caso funciona como un esquema de 4 vas, pero con menor
ancho de la palabra y admitiendo salidas Mealy. El esquema planteado se puede ver en la Fi-
gura 3.46.

En este caso, por tener la MEF slo 2 entradas, no se necesita modificar la carta ASM, an
cuando en otros casos podra ser necesaria alguna modificacin de la misma. Por ejemplo, si
una MEF tiene 3 entradas y se usa un multiplexor vertical de entrada para dos de ellas, habr
que separar con estados las casillas de decisin que contengan las dos entradas que van al
multiplexor, esto si es que aparecen juntas en un determinado estado de la mquina.

Para el caso de ejemplo se usan las lneas de direccin A3, A2 y A1 para el estado presente,
correspondientes a las variables de estado C, B y A respectivamente. La lnea de direccin A0
se usa para la entrada Q15. La entrada VENT se utiliza para la seleccin del prximo estado
por 0 por 1, sin necesidad de un multiplexor vertical de entrada (se conecta directamente al
multiplexor horizontal). El campo de prximo estado utiliza 6 bits, separados en dos campos
de 3 bits cada uno, y se define as: D9 = C*0, D8 = B*0, D7 = A*0 D6 = C*1, D5 = B*1 y

45
D4 = A*1. El campo de instrucciones o salidas se define como en los casos ya vistos: D3 =
INT, D2 = CRGLTCH, D1 = LMPCNT y D0 = HABCNT.

Q15

MEMORIA

3 3 4
Pxmo. Est. Pxmo. Est.
Instrucciones
0 1

Salidas
0 1 D3 = INT
VENT Multiplexor 2:1 D2 = CRGLTCH
D1 = LIMPCNT
D0 = HABCNT

Registro cauce Reloj

Fig. 3.46 Esquema combinado Pasos de Enlace + Pares Estado-Entrada

3.7.1 PROCEDIMIENTO PARA EL LLENADO DE LA MEMORIA

En este caso particular, a cada estado le corresponden dos palabras de la memoria, las que
quedan en forma consecutiva por la forma en que se conect la entrada Q15 (al bit menos
significativo de la direccin).

Fig. 3.47 - Determinacin de los valores de los campos del estado a.

El prximo estado del estado a (ver la Fig. 3.47) queda determinado slo por la entrada
VENT. Como en la transicin no se ve involucrada la entrada Q15, en la memoria habr que
repetir la misma informacin en las dos filas correspondientes al estado a. En cada fila habr

46
que colocar el valor 000 en el campo correspondiente al prximo estado por 0 de la casilla de
decisin y 001 en el campo correspondiente al prximo estado por 1 de la misma.

Estado A3 A2 A1 A0 C*0 B*0 A*0 C*1 B*1 A*1 D3 D2 D1 D0


a 0 0 0 0 0 0 0 0 0 1 0 0 0 0
a 0 0 0 1 0 0 0 0 0 1 0 0 0 0
Tabla 3.30 Llenado de la memoria para el estado a.

El estado b tiene definido 3 prximos estados: b, c y d (ver la Fig. 3.48). La primera fila de
este estado, con la direccin 0010, corresponde a las transiciones b b y b d. El campo
correspondiente al prximo estado por 0 se debe llenar con 011 (estado d) y el campo corres-
pondiente al prximo estado por 1 con 001 (estado b). La segunda fila de este estado, con la
direccin 0011, corresponde a la transicin b c. Esta transicin slo depende de la entrada
Q15, por lo que los dos campos correspondientes al prximo estado por 0 y por 1 tendrn el
mismo valor, 010. En este estado slo est activa la salida HABCNT, y por lo tanto se debe
colocar un 1 en la columna correspondiente a esta salida (D0).

Valor a colocar en el
001 campo de prximo
estado si la entrada
b Colocar un 1 en VENT vale 1.
HABCNT la columna
correspondiente
a esta salida.

Q15
Direccin 0011 Direccin 0010

010

c VENT
HABCNT

Valor a colocar en el
011 campo de prximo
Valor a colocar en
estado si la entrada
los dos campos de d VENT vale 0.
prximo estado. CRGLTCH

Figura 3.48 Determinacin de los valores de los campos del estado b.

Estado A3 A2 A1 A0 C*0 B*0 A*0 C*1 B*1 A*1 D3 D2 D1 D0


b 0 0 1 0 0 1 1 0 0 1 0 0 0 1
b 0 0 1 1 0 1 0 0 1 0 0 0 0 1
Tabla 3.31 Llenado de la memoria para el estado b.

El estado c tambin tiene definidos 3 prximos estados y tiene una salida Mealy (INT) y una
Moore (HABCNT) (ver la Fig. 3.49). La primera fila de este estado define la transicin
c b, y le corresponde la direccin de memoria 0100. Como por este camino no interviene la
entrada VENT, se repite el mismo valor (001) para los dos campos de prximo estado. La se-
gunda fila de este estado, con la direccin 0101, define las transiciones c c y c d. El

47
campo correspondiente al prximo estado por 0 se debe llenar con 011 (estado d) y el campo
correspondiente al prximo estado por 1 con 010 (estado c). El campo de instrucciones debe
tener un 1 en las dos filas de este estado para la columna correspondiente a HABCNT (D0),
por ser una salida Moore. Sin embrago, la salida INT (D3), que es Mealy, slo debe activarse
en este estado si Q15 vale 0, es decir en la fila correspondiente a la direccin 0100. Aqu es
donde se ve la ventaja de este esquema combinado.

Valor a colocar en
001 los dos campos de
prximo estado.
b
HABCNT

Colocar un 1 en la columna
correspondiente a esta
salida en las dos direcciones Q15
usadas para el estado c.
010
Valor a colocar en el
c campo de prximo
HABCNT estado si la entrada
VENT
VENT vale 1.
Direccin
0100
011

d
Q15 CRGLTCH

Direccin 0101

INT
VENT Valor a colocar en el
campo de prximo
estado si la entrada
VENT vale 0.

Colocar un 1 en la columna
correspondiente a esta salida
slo en la direccin 0100.

Figura 3.49 Determinacin de los valores de los campos del estado b.

Estado A3 A2 A1 A0 C*0 B*0 A*0 C*1 B*1 A*1 D3 D2 D1 D0


c 0 1 0 0 0 0 1 0 0 1 1 0 0 1
c 0 1 0 1 0 1 1 0 1 0 0 0 0 1
Tabla 3.32 Llenado de la memoria para el estado c.

Los otros dos estados (d y e) no presentan mayor dificultad, por tener transiciones incondicio-
nales. En ambos casos los campos de prximo estado deben llenarse con el mismo valor en las
2 filas correspondientes a dichos estados. Los estados no usados conviene apuntarlos al estado
inicial para darle ms robustez al diseo. La Tabla 3.33 muestra el contenido de la memoria
para este caso de esquemas combinados. Se utilizan 10 x 10 = 100 bits de la memoria para su
implementacin. Este valor se encuentra en un valor intermedio entre los 140 bits utilizados
en el esquema de Pasos de Enlace, y los 88 utilizados en el esquema de Pares Estado-Entrada.

48
Como se puede observar, la penalizacin por la utilizacin de una salida Mealy en este caso
no es muy severa (slo 12 bits ms).

Estado A3 A2 A1 A0 C*0 B*0 A*0 C*1 B*1 A*1 D3 D2 D1 D0


a 0 0 0 0 0 0 0 0 0 1 0 0 0 0
a 0 0 0 1 0 0 0 0 0 1 0 0 0 0
b 0 0 1 0 0 1 1 0 0 1 0 0 0 1
b 0 0 1 1 0 1 0 0 1 0 0 0 0 1
c 0 1 0 0 0 0 1 0 0 1 1 0 0 1
c 0 1 0 1 0 1 1 0 1 0 0 0 0 1
d 0 1 1 0 1 0 0 1 0 0 0 1 0 0
d 0 1 1 1 1 0 0 1 0 0 0 1 0 0
e 1 0 0 0 0 0 0 0 0 0 0 0 1 0
e 1 0 0 1 0 0 0 0 0 0 0 0 1 0
- 1 0 1 0 0 0 0 0 0 0 0 0 0 0
- 1 0 1 1 0 0 0 0 0 0 0 0 0 0
- 1 1 0 0 0 0 0 0 0 0 0 0 0 0
- 1 1 0 1 0 0 0 0 0 0 0 0 0 0
- 1 1 1 0 0 0 0 0 0 0 0 0 0 0
- 1 1 1 1 0 0 0 0 0 0 0 0 0 0

Tabla 3.33 Contenido de la memoria para el esquema combinado Pasos de Enlace +


Pares Estado-Entrada.

3.8 CODIFICACIN DE LAS SALIDAS


Es posible lograr una reduccin en la cantidad de bits necesarios para el campo de las instruc-
ciones o salidas combinando o codificando algunas de ellas. Las salidas que son equivalentes
se pueden combinar dejando una sola columna para representarlas. Dos o ms salidas son
equivalentes si se activan en los mismos estados. Esto resulta ms o menos evidente cuando
se tiene terminada la carta ASM, pero en la fase de definicin del problema no siempre es
fcil detectarlo, especialmente si se trata de una MEF con muchas salidas.

Por otra parte, las salidas que son complementarias pueden obtenerse mediante el uso de in-
versores. Esto tambin puede observarse en la misma carta ASM o bien en el contenido de la
memoria, por simple inspeccin.

49
Figura 3.50 Esquema de direcciones asumidas mejorado con salidas codificadas.

Por ltimo, las salidas que son excluyentes entre s se pueden codificar en un nmero menor
de bits, obtenindose las mismas mediante el uso de un decodificador o bien con un circuito
combinacional adecuado. En el caso de que se utilice un decodificador, debe reservarse una
combinacin para el caso en que ninguna de las salidas del mismo est activa. En algunos
casos, el decodificador dispone de un terminal para colocar todas las salidas en 0, en cuyo
caso puede usarse un bit de la ROM para este fin, pero habr que analizar la conveniencia o
no de usarlo.

Para el caso de ejemplo, podemos lograr una reduccin en el ancho de la palabra usando un
decodificador para las salidas CRGLTCH, LMPCNT e INT, ya que nunca se activan simult-
neamente. En la Tabla 3.34 se tiene una codificacin posible de dichas salidas. La salida
HABCNT se activa en varios estados y en uno de ellos junto con la salida INT, por lo tanto
conviene reservar un bit exclusivo para ella. Como ejemplo de codificacin de las salidas se
tomar el esquema de direcciones asumidas mejorado, que se muestra en la Fig. 3.50. La pa-
labra ahora se conforma as: 3 bits para la direccin de salto, 1 bit de polaridad, 2 bits para
seleccionar la entrada, 2 bits para codificar las 3 salidas mencionadas arriba (D2 y D1) y 1 bit
para la salida HABCNT (D0).

50
Salida Cdigo

D2 D1
No usada 0 0
LMPCNT 0 1
CRGLTCH 1 0
INT 1 1

Tabla 3.34 Cdigo de las salidas.

Estado A2 A1 A0 C* B* A* P S1 S0 D2 D1 D0
a 0 0 0 0 0 0 0 1 0 0 0 0
b 0 0 1 1 1 0 1 0 1 0 0 1
f 0 1 0 0 0 1 1 1 0 0 0 1
g 0 1 1 1 0 0 1 0 0 1 0 0
h 1 0 0 0 0 0 0 0 0 0 1 0
d 1 0 1 0 1 1 0 1 0 0 0 1
c 1 1 0 1 0 1 1 0 1 0 0 1
e 1 1 1 0 0 1 0 0 0 1 1 1
Tabla 3.35 - Contenido de la memoria para el esquema con salidas codificadas.

La Tabla 3.35 resume el contenido de la memoria para el esquema de direcciones asumidas


mejorado con salidas codificadas. La carta ASM correspondiente es la mostrada en la Fig.
3.34. La memoria requerida para este caso es de 8 x 9 = 72 bits.

En el caso de ejemplo la codificacin de las salidas permite ahorrar solo un bit de la memoria,
pero en casos ms complejos, como puede ser la MEF de la unidad de control de un micro-
procesador, la reduccin en el ancho de la palabra puede ser considerablemente mayor (ver el
Cap. 12 de la referencia bibliogrfica 3). Si bien como ejemplo se ha aplicado a este esquema,
la codificacin de las salidas se puede realizar en cualquiera de los esquemas planteados. El
precio a pagar por tener una memoria ms angosta es el(los) decodificador(es) que habra que
agregar para decodificar las salidas que hayan sido codificadas. En el esquema de micropro-
gramacin vertical, el decodificador debe colocarse despus del cerrojo utilizado para retener
las salidas cuando se est en un estado de Formato 2.

3.8 SOLAPADO DE LA BSQUEDA DE MICROINSTRUCCIONES


Es posible mejorar el rendimiento de una unidad de control solapando la bsqueda de la
prxima microinstruccin con la ejecucin de la actual. Las instrucciones o salidas de la MEF
deben mantenerse activas durante un cierto tiempo, que viene fijado por el tiempo que lleva
ejecutar o realizar lo que esa salida indica. Por ejemplo, una combinacin de salidas de la
MEF puede indicarle a una RALU (Unidad Aritmtico Lgica con Registros) que realice una
operacin relativamente compleja como puede ser una suma y una multiplicacin simultnea,
mientras que otra puede ser tan simple como cargar un registro. En general la mxima fre-
cuencia de trabajo de la MEF queda fijada por el peor caso en los tiempos de ejecucin de las
instrucciones de salida. Al tiempo de ejecucin de esa tarea se le debe sumar el tiempo de
acceso de la memoria que contiene el microprograma, los retardos propios de los circuitos
usados para la determinacin del prximo estado (dependiendo del esquema de microprogra-

51
macin utilizado), y el tiempo de establecimiento de los flip-flops que conforman el registro
cauce.

La idea subyacente es independizar de alguna manera los retardos de propagacin propios de


la MEF de los retardos de los circuitos manejados por ella. Para lograr este objetivo se utiliza
un registro conectado a la salida de la memoria, que se usa para mantener la microinstruccin
actualmente en ejecucin (ver la Fig. 3.51). En lugar de utilizar un contador con carga en pa-
ralelo, se utiliza una estructura compuesta de un registro, un incrementador y un multiplexor.
El incrementador se puede implementar utilizando un sumador total de n bits con un 1 en una
de las entradas y la direccin actual en la otra. De esta manera, con cada flanco del reloj se
tiene siempre disponible la direccin asumida en una de las entradas del multiplexor de direc-
ciones y la direccin de salto en la otra. La entrada seleccionada por el multiplexor de condi-
cin es la que decide cul de las dos se usa.

Como puede observarse, mientras se est ejecutando la microinstruccin presente, se est


aplicando la direccin de la prxima en las lneas de direccin de la memoria, independiente-
mente de si se trata una carga o un incremento. Este proceso independiza el tiempo de
bsqueda de la prxima microinstruccin del tiempo de ejecucin de la presente. Por lo tanto,
el perodo del reloj queda fijado por uno de los dos tiempos (el mayor de los dos) y no por la
suma de ambos.

En lo que respecta al llenado de la memoria, el procedimiento a seguir en este caso es el mis-


mo al utilizado en el esquema de direcciones asumidas mejorado. La seleccin de las entradas
es igual a ese esquema y se debe usar la Tabla 3.19.

Lo que se trata en esta seccin entra dentro de lo que se llaman mecanismos de aceleracin,
que se usan para incrementar el rendimiento de un sistema de cmputo. Entre ellos se pueden
mencionar la prebsqueda de instrucciones, el uso de memorias cach para instrucciones y
datos, la segmentacin de la CPU, el uso de TLBs (Translation Lookaside Buffers) para las
direcciones, la ejecucin especulativa, la repeticin de unidades funcionales, etc.

52
GND COND1 COND2 COND3

0 1 2 3
S1
Multiplexor de Condicin
S0

0 1 Registro de
Multiplexor Direcciones Reloj
de Direcciones Asumidas

Incrementador
(Dir. Actual +1)

MEMORIA

Direccin
Polaridad Seleccin Instrucciones
de Salto

Registro Cauce (o Pipeline)

Salidas

Figura 3.51 - Esquema con solapado de la bsqueda de microinstrucciones.

En la organizacin de una computadora, el solapado de la bsqueda de microinstrucciones a


nivel de la unidad de control de una CPU es muy similar a la prebsqueda de instrucciones
(instruction prefectch) en el nivel superior, de ejecucin de macroinstrucciones. A ese nivel lo
que se hace es colocar un circuito que busca otra instruccin de mquina mientras se est eje-
cutando la presente, en base a lo que se denomina principio de localidad de la referencia, que
dice que hay una alta probabilidad de que la prxima instruccin a ser ejecutada es la que si-
gue en orden secuencial en la memoria. La nica diferencia con este planteo a nivel de micro-
programa es que en el nivel superior, la instruccin que se prebusca no siempre se ejecuta.
Esto sucede cuando la instruccin que se est ejecutando es un salto o ramificacin. El princi-
pio de localidad de la referencia tambin se usa en las memorias cach, pero con un criterio
ms amplio (temporal y espacial).

53
4. CONCLUSIONES
En este trabajo se han expuesto distintos esquemas bsicos de la estructura de una MEF mi-
croprogramada. Como se ha mostrado con un caso de ejemplo bastante sencillo, el microcdi-
go (o firmware) puede resultar de longitudes y anchos diferentes. En general se puede decir
que mientras ms horizontal es el microprograma, ms paralelismo se puede lograr con la
unidad de control. La cantidad de microinstrucciones necesarias para ejecutar una tarea resulta
de esta manera menor. Por el contrario, si el microprograma se hace ms vertical, se tienen
menos bits por palabra haciendo el diseo ms econmico, pero hacen falta ms microinstruc-
ciones para realizar la misma tarea. La velocidad y el rendimiento del sistema es menor.

Por lo tanto, se deber buscar un equilibrio (o compromiso, denominado en ingls trade-off)


entre el costo del sistema y su rendimiento, de manera de optimizar cada una de las variables
del problema. La utilizacin de un esquema u otro es una cuestin de criterio del diseador,
en funcin del objetivo general de la aplicacin. Dems est decir que los mostrados son slo
algunos esquemas posibles, pero no los nicos. Existen otros esquemas que se tratan en bi-
bliografa ms especfica usada en cursos avanzados. Aqu slo se tratan de explicar las ideas
bsicas y plantear algunas soluciones.

Adems de las memorias ROM de todo tipo que existen (ROM por mscara, PROM,
EPROM, EEPROM), en la actualidad se dispone de una amplia gama de dispositivos lgicos
programables (SPLDs, CPLDs, FPGAs, etc.) que permiten implementar prcticamente cual-
quier MEF, por compleja que sea, en un solo chip. La evolucin tecnolgica hacia dispositi-
vos programables cada vez ms complejos ha ido modificando los criterios de decisin con
respecto a la conveniencia o no de usar tcnicas de microprogramacin para implementar una
MEF. A esto se suma la facilidad con la que ahora se pueden realizar diseos sumamente
complejos utilizando lenguajes de descripcin de hardware, como VHDL, ABEL o Verilog,
que luego se pueden implementar en un dispositivo programable o bien en un chip a medida
ASIC.

De todas maneras las tcnicas de microprogramacin se siguen utilizando en el diseo de mi-


croprocesadores complejos, principalmente para realizar la unidad de control de los mismos.
As, con relacin a la lgica cableada, la microprogramacin tiene las siguientes ventajas y
desventajas:

Ventajas:

El diseo es ms ordenado y uniforme.


Los cambios y ampliaciones en el sistema son fciles de realizar, sin tener que modifi-
car el cableado.
Para sistemas muy complejos, el costo es menor.
Resulta ms apropiado para diseos con VLSI.
Las posibilidades de diagnstico y deteccin de fallas son mejores.
El sistema es ms confiable.
En las computadoras y microprocesadores:
El diseo de la unidad de control es sistemtico.
Facilidad de implementar una familia de computadoras con cdigo compatible.
Capacidad para emular otras computadoras (para la compatibilidad hacia atrs).
Bajos costos marginales para agregar funciones.

54
Desventajas:

En sistemas simples, el costo puede ser mayor.


Con ciertos esquemas el sistema puede resultar ms lento debido a los tiempos de ac-
ceso de la memoria.
Los diseos son ms fciles de copiar.
En las computadoras se agrega otro nivel de interpretacin con la sobrecarga asociada.
Herramientas de soporte limitadas.

Algo difcil de determinar es el punto en el cual un diseo pasa a ser antieconmico si se lo


implementa con ROM. El costo por bit se incrementa a medida que el tamao de la memoria
se hace ms chico. En algn punto, estimativamente en mquinas de 10 a 20 estados, el costo
de la lgica cableada pasa a ser inferior que el de la lgica programada, aunque esa cifra ha
ido variando mucho con la evolucin tecnolgica. En cada caso corresponde hacer un estudio
tcnico-econmico para encontrar la solucin ptima.

Se puede llegar a encontrar un ancho de palabra que optimice el costo y la velocidad de fun-
cionamiento del circuito. Una ROM organizada con una palabra por estado del algoritmo de
control tiene el menor nmero de estados para dicho algoritmo, y para una frecuencia deter-
minada del reloj, se tendr la mxima velocidad de funcionamiento. Si se restringe el ancho
de la palabra, el nmero de estados, y por lo tanto de microinstrucciones, se incrementar, con
lo que la velocidad del sistema ser menor. El costo de una ROM es, en general, una funcin
de su capacidad en bits, por lo que el producto de la cantidad de palabras por el ancho de la
palabra da una idea del funcional de costo del sistema a optimizar. Si se logra minimizar este
valor, se tendr en general el menor costo, con algn sacrificio en la velocidad de la MEF.

Si bien este trabajo tiene como finalidad principal explicar cmo se implementa una MEF con
las tcnicas de microprogramacin, hay otras conclusiones que tambin se pueden sacar del
mismo. Por un lado, de todo lo expuesto se puede inferir que hay muchas formas de realizar lo
mismo. Unas son ms rpidas y costosas, otras ms lentas y baratas y este concepto se extien-
de a todo un sistema de cmputo. De ah que este tema apunta a desarrollar los criterios de
costo/rendimiento muy extendidos en todos los campos de la ingeniera. Como se puede ob-
servar, encontrar el diseo ptimo puede llevar varios intentos.

Otro aspecto a considerar es el de saber dnde se aplican fundamentalmente las MEF en la


actualidad. Desde la aparicin del microprocesador en los 70, su uso se ha difundido de tal
forma que prcticamente se los usa en todos los aspectos de la vida cotidiana. Esto se ha visto
favorecido por la gran diversidad de microprocesadores que existen. Actualmente se da que
prcticamente hay uno especfico para cada aplicacin y algunos de ellos son muy baratos.
As, cabe preguntarse para qu ver este tema con cierta profundidad, siendo que para casi todo
ya se justifica sobradamente el uso de un microprocesador.

Casualmente como su uso est tan difundido, se hace necesario conocer en detalle cmo fun-
cionan internamente, ms que nada para sacar el mximo de provecho de los mismos. Como
ya se dijo, la principal utilizacin de las tcnicas de microprogramacin es en la implementa-
cin de la unidad de control de un microprocesador, particularmente de los denominados
CISC (Complex Instruction Set Computer). Se hace esta aclaracin ya que los microprocesa-
dores RISC (Reduced Instruction Set Computer) suelen tenerla cableada por cuestiones de
velocidad. Pero esa discusin se deja para cursos ms avanzados.

55
A lo largo del curso se han visto prcticamente todos los elementos bsicos que se encuentran
en un microprocesador: registros, contadores, registros de desplazamiento, memorias ROM y
RAM, decodificadores, mutliplexores, etc. El corazn de un microprocesador es su unidad de
control, que como ya se dijo, es una MEF. Es la que hace que todos esos componentes en
conjunto tengan una funcionalidad muy superior a la de sus componentes aislados. Es la res-
ponsable de activar todas las seales que permiten traer instrucciones de memoria, mover los
datos a travs de las unidades funcionales y llevar los resultados a memoria principal. Y de
ah la importancia de verla con un cierto grado de detalle. Se entiende que en la medida que
todo esto se conozca en profundidad, se facilitar la comprensin del curso que sigue, centra-
do en la programacin de un microprocesador a bajo nivel.

5. LECTURA ADICIONAL
Como referencia bsica se us el libro de Christopher Clare, Desinging Logic Systems Using
State Machines [1]. En el Captulo V se puede encontrar el desarrollo de una MEF que im-
plementa un juego de Black Jack, pero con menos esquemas a los planteados en este trabajo.
En el Captulo 12 del libro de Randy H. Katz, Contemporary Logic Design [3] se describe la
implementacin completa de la unidad de control de un microprocesador simple usando es-
quemas de microprogramacin horizontal y vertical. Resulta interesante el esquema de micro-
programacin vertical propuesto. Los esquemas ms avanzados se han tomado del Captulo 4
del libro de Michel A. Lynch, Microprogrammed State Machine Design [2]. Este libro descri-
be con bastante detalle la tecnologa rebanada de bits (bit slice) que se populariz en los 80,
pero que ahora ha quedado demod con la introduccin de los dispositivos programables
avanzados, especialmente los FPGA, y los lenguajes de descripcin de hardware.

6. BIBLIOGRAFA
1. Clare, Christopher R.- Desinging Logic Systems Using State Machines, McGraw-Hill,
1973.

2. Lynch, Michel A. Microprogrammed State Machine Design, CRC Press, 1993.

3. Katz, Randy H. Contemporary Logic Design, Benjamin Cummings/Addison Wesley


Publishing Company, 1993.

4. Assandri, A. D Procesadores Digitales de Alta Velocidad, Publicacin Interna INAUT,


1989.

56

También podría gustarte