Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. Especificación.
Se desea diseñar un sistema combinacional que tenga como entrada cuatro palabras de dos bits
cada una, denominadas a, b, c y d; y que genere dos salidas. La salida f1 debe generar una señal
alta cuando se tenga: a>b>c>d. La salida f2 debe colocarse en alto cuando a<=c o cuando a<d.
2
a
2 f1
b 2
c f2
2
d
Desde un punto de vista combinacional se tienen que realizar 2 diseños, ya que hay dos
funciones de salida, a partir de tablas de verdad que tienen 256 renglones cada una, ya que es un
espacio de 8 variables de entrada.
Con el apoyo de programas puede generarse la tabla de verdad en formato .pla. El que puede ser
procesado por el minimizador espresso.
int escribe_archivo(void)
{ FILE *stream;
/* Abre stream para escritura, en modo texto. */
if ((stream = fopen("modcomp2.txt", "w")) == NULL) {
fprintf(stderr, "No pudo abrir archivo de salida.\n");
return 1;
}
prtinfile(stream);
fclose(stream); /* close stream */
return 0;
}
int main(void)
{ escribe_archivo(); return 0;}
El archivo de datos generado tiene un peso de 4 KB. Se da un listado de los 256 renglones de la
tabla de verdad.
El comando:
Espresso –Dexact –oeqntott modcomp2.txt > modcomp.eqn
Obtiene un listado de las ecuaciones minimizadas de diseño, en dos niveles, en formato eqn.
assign f1 = (a1&a0&b1&~b0&~c1&c0&~d1&~d0);
assign f2 = (~a0&d1&d0) | (c1&c0) | (~a0&c1) | (~a1&d1) | (~a1&c0) |
(~a1&~a0) | (~a1&c1);
Endmodule
Puede notarse que la expresión lógica para la función f1, podría haberse deducido considerando
que la tabla de verdad sólo tiene un mintérmino. Ya que a>b>c>d sólo puede cumplirse para la
combinación a=3, b=2, c=1 y d=0, en decimal. Lo que permite escribir directamente:
f1 =a1a0b1b0’c1’c0d1’d0’
a
a<=c
c
f2
d
d>a
a
Ahora los mapas de los subsistemas involucran a 4 variables, y pueden escribirse directamente:
a1a0 d1d0
c1 c0 00 01 11 10 a1 a0 00 01 11 10
0 4 12 8 0 4 12 8
00 1 0 0 0 00 0 1 1 1
1 5 13 9 1 2 5 13 9
01 1 1 0 0 01 0 0 1 1
15 11 15 11
11 13 17 1 1 11 03 07 0 0
2 6 14 10 2 6 14 10
10 1 1 0 1 10 0 0 1 0
a<=c d>a
Resultando:
f2=(a0’+c1+c0)(a0’+c0+c1’)( a1’+c1) + (d1+d0)( a1’+a0’)(d0+a1’)( d1+a1’)(d1+a0’)
Con 18 literales y 28 entradas en tres niveles.
Puede compararse con el resultado obtenido con espresso, con la opción –epos, en la cual f2 se
obtiene en 2 niveles con 18 literales, 23 entradas.
La siguiente descripción Verilog, mediante el empleo de buses de dos bits cada uno, representa
las funciones buscadas. Nótese que la especificación: a>b>c>d se reemplaza por la lógicamente
equivalente, mediante operadores and. Como el resultado de una comparación entre dos
operandos binarios da como resultado un valor de un bit, pueden emplearse operadores al bit.
En este caso, la descripción también puede efectuarse empleando operadores lógicos (&& y ||,
para el and y para el or de expresiones lógicas).
c>d
b>c
a>b
a<d
a<=c
Los bloques comparadores pueden ser descritos por compuertas lógicas básicas. Determinando
de este modo expresiones booleanas de las funciones. Al descenso de la descripción abstracta a
expresiones boolenas, mediante compuertas y registros, en el caso de sistemas secuenciales, se
lo denomina nivel de transferencia de registros o RTL (register transfer level).
xor
Nótese que el xor se implementa en tres niveles. Esto se debe a que las compuertas de biblioteca
disponibles son compuertas and, or e inversores. La Figura 7, describe la expresión booleana:
Result = D1D0’ + D1’D0, empleando tres niveles.
Si los bits más significativos son iguales, la señal _n0002 luego del inversor estará en alto, en la
Figura 8. En este caso se comparan los dos bits menos significativos. Si no son iguales se
comparan los bits más significativos, generando la señal inferior del or de salida.
El descenso a nivel de compuertas, es una forma de representar las funciones por expresiones.
La Figura 8, muestra el esquemático para la función A menor que B. Que es representada por la
expresión: ALB= a1’b1 + a0’b0 (a1==b1).
Una vez descrita la red booleana por expresiones, se las minimiza, pero considerando que el
bloque mínimo de implementación física es una Tabla de búsqueda (LUT look-up table), de 4
bits de entrada y un bit de salida. Estas tablas permiten almacenar una tabla de verdad de una
función de cuatro variables. Por supuesto que este bloque también permite representar funciones
boolenas de dos y tres variables, pero en estos casos se estará perdiendo parte de la superficie
del chip.
d
f1
f2
f1=a1a0b1b0’c1’c0d1’d0’
Para f2 se tiene un mux que bajo el control de la señal a0 deja pasar la salida de la
LUT4_EAFF, con a0=0; o la de la LUT4_D5D4, con a0=1.
La LUT EAFF representa a: i0+i1i2+i3’, que en términos de las entradas resulta: c1+d1d0+a1’.
f2 = a0(a1’c1+c0c1+a1’d1+a1’c0) + a0’(c1+d1d0+a1’)
En este tipo de síntesis se obtienen las ecuaciones de la red booleana en la forma suma de
productos. Puede escogerse que se desplieguen las ecuaciones minimizadas en Verilog.
assign f1 = (b[1] && !d[1] && !d[0] && !b[0] && c[0] && a[0] && !c[1] && a[1]);
assign f2 = !((!d[1] && !c[1] && a[1]) || (!d[0] && !c[1] && a[1])
|| (!c[0] && a[0] && a[1]) || (a[0] && !c[1] && a[1])
|| (!d[1] && !c[0] && a[0] && !c[1]));
La síntesis RTL genera en este caso comparadores sin emplear las funciones xor.
Cuando se han obtenido las ecuaciones booleanas del sistema digital, desde las tablas de verdad
o mapas de Karnaugh, pueden representarse el sistema mediante un módulo estructural basado
en compuertas.
En este caso el mapeo tecnológico a FPGA, resulta igual al anterior. Pero el descenso a nivel de
compuertas es diferente, ya que no emplea los comparadores que sintetiza la descripción
abstracta. Ahora la descripción no es abstracta, ya que se da la arquitectura interna. La Figura
15 muestra los dos bloques que generan las funciones de salida.
En este caso se obtiene una minimización basada en suma de productos. Generando un esquema
RTL basado en una red booleana con nodos que implementan los productos o cubos que cubren
a las funciones. Cada producto se implementa en dos niveles, considerando la obtención de las
señales complementadas mediante inversores, dentro de los nodos.
El mapeo tecnológico de los nodos anteriores a una CPLD, se muestra en la Figura 25.
Ejercicios propuestos.
Índice general.
Índice de Figuras.