Está en la página 1de 3

Departamento de Tecnologa Electrnica Ejercicio 10.

Comparadores

Diseo digital con esquematicos y FPGA. v1.5 48
10. Comparadores
Ya hemos aprendido a realizar varios diseos: puertas lgicas, decodificadores, codificadores y un
convertidor de hexadecimal a siete segmentos. Ahora vamos a hacer un comparador, primero lo haremos de
un slo bit y luego, con comparadores de un bit construiremos uno de dos bits.
10.1. Comparador de un bit
Lo primero que haremos es comparar dos nmeros de un bit. Realizar esta comparacin es fcil,
simplemente tenemos que construir la tabla de verdad y obtener las ecuaciones lgicas. En la figura 10.1 se
muestra esta tabla de verdad y la obtencin de sus ecuaciones lgicas. Se ha llamado AM a la seal que indica
que A es mayor (A>B) y BM a la seal que indica que B es mayor (A<B).
A B IGUAL AM BM
0 0 1 0 0
0 1 0 0 1
1 0 0 1 0
1 1 1 0 0
AB A~B AB
IGUAL=(AB)+(AB)=AB
AM = m
2
= AB
BM = m
1
= AB
A
B
IGUAL
AM
BM
COMPA1
A B IGUAL AM BM
0 0 1 0 0
0 1 0 0 1
1 0 0 1 0
1 1 1 0 0
AB A~B AB
IGUAL=(AB)+(AB)=AB
AM = m
2
= AB AM = m
2
= AB
BM = m
1
= AB
A
B
IGUAL
AM
BM
COMPA1
A
B
IGUAL
AM
BM
COMPA1

Figura 10.1. Tabla de verdad, ecuaciones logicas, v entradas v salidas del comparador de un bit
El diseo de este circuito es bien fcil, slo son tres puertas, dos puertos de entrada y tres de salida (figura
10.1). Cierra el proyecto anterior, abre uno nuevo llamado compa y crea un nuevo fichero llamado compa1.
Una vez que tengas el plano del circuito, aade las puertas lgicas, recuerda que tienes puertas AND con
una entrada negada para implementar la funcin A

B y A B

(estas se llaman and2b1 y tienen una bolita de


negacin en una de sus entradas). Tambin tienes funciones XNOR para implementar la salida IGUAL.
Pon los puertos con los mismos nombres de la figura 10.1. Cuando tengas el circuito listo gurdalo (CRTLS)
y comprueba el esquemtico (ToolsCheck Schematic).
Si el diseo est bien pasaremos a implementarlo en la FPGA.
Ahora asignamos los pines, ya sabes como se hace, o bien con el fichero UCF o
con la herramienta PACE. Los vas a asignar como muestra la tabla 10.1:
Recuerda que en los pines tienes que poner el que indica en la placa, por
ejemplo para SW0 pondrs P89.
Y por fin implementa el comparador y comprueba que funciona bien.
A SW0
B SW1
AM LD0
IGUAL LD1
BM LD2
Tabla 10.1. Tabla de
asignacion de seales
10.2. Comparador de dos bits
Un comparador de un solo bit es bastante fcil ya que slo tenemos 4 posibles combinaciones. Para uno de
dos bits hay que pensrselo un poco ms. El bloque que queremos implementar se muestra en la figura 10.2.
A partir de dos seales de 2 bits, queremos saber si son iguales, o si una es mayor que la otra. Como son
seales de dos bits tenemos que saber cul es el bit ms significativo. Recuerda que no es lo mismo 10
2
que
01
2
. A pesar de que tienen el mismo nmero de unos y ceros, el orden en que estn situados determina la
diferencia.
Por lo tanto tenemos que diferenciar cul es el bit ms significativo. Para eso podemos representar el circuito
como el bloque de la izquierda de la figura 10.2. En donde se muestran uno por uno todos los bits (o cables)
de cada seal.
Sin embargo, para evitar tener que poner un cable para cada bit, se puede representar como un bus. Esta
representacin se muestra a la derecha de la figura 10.2. Para este ejemplo no se nota mucho la diferencia,
pero imagnate que quieras hacer un comparador de 32 bits.


Departamento de Tecnologa Electrnica Ejercicio 10. Comparadores

Diseo digital con esquematicos y FPGA. v1.5 49
A0
B0
IGUAL
AM
BM
COMPA2
A1
B1
bit mas
signiIicativo
bit mas
signiIicativo
A(1:0)
IGUAL
AM
BM
COMPA2
B(1:0)
2
2
ancho del bus
A0
B0
IGUAL
AM
BM
COMPA2
A1
B1
bit mas
signiIicativo
bit mas
signiIicativo
A(1:0)
IGUAL
AM
BM
COMPA2
B(1:0)
2
2
ancho del bus

Figura 10.2. Diagramas de entradas v salidas del comparador de dos bits. A la i:quierda con cables simple, a
la.derecha con buses.
El comparador de 2 bits lo podramos hacer igual que el cuarto ejercicio de los propuestos del tema 3. Como
tenemos cuatro variables es un nmero adecuado para hacerlo por Karnaugh. Sin embargo, ya que tenemos
el comparador de 1 bit, lo utilizaremos para hacerlo modularmente.
La tabla de verdad del circuito se muestra en la tabla 10.2.
A1 A0 B1 B0 IGUAL AM BM
0 0 0 0 1 0 0
0 0 0 1 0 0 1
0 0 1 0 0 0 1
0 0 1 1 0 0 1
0 1 0 0 0 1 0
0 1 0 1 1 0 0
0 1 1 0 0 0 1
0 1 1 1 0 0 1
1 0 0 0 0 1 0
1 0 0 1 0 1 0
1 0 1 0 1 0 0
1 0 1 1 0 0 1
1 1 0 0 0 1 0
1 1 0 1 0 1 0
1 1 1 0 0 1 0
1 1 1 1 1 0 0
A1 A0 B1 B0 IGUAL AM BM
0 0 0 0 1 0 0
0 0 0 1 0 0 1
0 0 1 0 0 0 1
0 0 1 1 0 0 1
0 1 0 0 0 1 0
0 1 0 1 1 0 0
0 1 1 0 0 0 1
0 1 1 1 0 0 1
1 0 0 0 0 1 0
1 0 0 1 0 1 0
1 0 1 0 1 0 0
1 0 1 1 0 0 1
1 1 0 0 0 1 0
1 1 0 1 0 1 0
1 1 1 0 0 1 0
1 1 1 1 1 0 0

Tabla 10.2. Tabla de de verdad del comparador de dos bits
Para comprender mejor el funcionamiento del comparador, reordenaremos la tabla de verdad por los bits
ms significativos. Ya que el bit ms significativo "manda" sobre el menos significativo, esto se aprecia mejor
en la tabla de la figura 10.3.
A1 B1 A0 B0 IGUAL AM BM
0 0 0 0 1 0 0
0 0 0 1 0 0 1
0 0 1 0 0 1 0
0 0 1 1 1 0 0
0 1 0 0 0 0 1
0 1 0 1 0 0 1
0 1 1 0 0 0 1
0 1 1 1 0 0 1
1 0 0 0 0 1 0
1 0 0 1 0 1 0
1 0 1 0 0 1 0
1 0 1 1 0 1 0
1 1 0 0 1 0 0
1 1 0 1 0 0 1
1 1 1 0 0 1 0
1 1 1 1 1 0 0
A1B1
A1~B1
AM0
Igual0
BM1
MSB LSB
AM1
Igual0
BM0
A1B1
comprobar
el LSB
A1B1
comprobar
el LSB
A1 B1 A0 B0 IGUAL AM BM
0 0 0 0 1 0 0
0 0 0 1 0 0 1
0 0 1 0 0 1 0
0 0 1 1 1 0 0
0 1 0 0 0 0 1
0 1 0 1 0 0 1
0 1 1 0 0 0 1
0 1 1 1 0 0 1
1 0 0 0 0 1 0
1 0 0 1 0 1 0
1 0 1 0 0 1 0
1 0 1 1 0 1 0
1 1 0 0 1 0 0
1 1 0 1 0 0 1
1 1 1 0 0 1 0
1 1 1 1 1 0 0
A1B1
A1~B1
AM0
Igual0
BM1
MSB LSB
AM1
Igual0
BM0
A1B1
comprobar
el LSB
A1B1
comprobar
el LSB

Figura 10.3. Tabla de verdad del comparador de dos bits ordenada desde los bits mas significativos a los menos
Fjate en la tabla de verdad de la figura 10.3:
Cuando A1<B1 entonces A es menor que B: IGUAL=0 ; AM=0 ; BM = 1
Cuando A1>B1 entonces A es mayor que B: IGUAL=0 ; AM=1 ; BM = 0


Departamento de Tecnologa Electrnica Ejercicio 10. Comparadores

Diseo digital con esquematicos y FPGA. v1.5 50
Cuando A1=B1 entonces comprobamos el bit cero:
Si A0<B0 entonces A es menor que B: IGUAL=0 ; AM=0 ; BM = 1
Si A0>B0 entonces A es mayor que B: IGUAL=0 ; AM=1 ; BM = 0
Si A0=B0 entonces A es igual que B: IGUAL=1 ; AM=0 ; BM = 0
De estos puntos podemos extraer que:
A es igual a B (IGUAL=1) cuando:
A1=B1 y A0=B0
A es mayor que B (AM=1) cuando
A1>B1
O cuando (A1=B1) y A0>B0
es menor que cuando
A1<B1
O cuando (A1=B1) y A0<B0
Date cuenta que en estos puntos slo estamos haciendo comparaciones bit a bit. Esto es, podemos hacer
comparaciones individuales. Y podemos traducir estas sentencias a algebra de Boole y puertas lgicas. La
figura 10.4 muestra la construccin del comparador de dos bits para las seales IGUAL y AM. Para no complicar
el esquema, no se ha dibujado el diagrama de puertas para la seal BM, pero es similar al de la seal AM.
A0
B0
IGUAL_0
AM_0
BM_0
COMPA1
A1
B1
IGUAL_1
AM_1
BM_1
COMPA1
IGUAL
Si (A1=B1) y (A0=B0)
IGUAL11 IGUAL01
Si (A1>B1) [(A1=B1) Y (A0>B0)]
AM11 IGUAL11 AM01
IGUAL IGUAL1 IGUAL0
AM AM1 (IGUAL1 AM0)
AM
Iguales
A~B
A0
B0
IGUAL_0
AM_0
BM_0
COMPA1
A1
B1
IGUAL_1
AM_1
BM_1
COMPA1
IGUAL
Si (A1=B1) y (A0=B0)
IGUAL11 IGUAL01
Si (A1>B1) [(A1=B1) Y (A0>B0)]
AM11 IGUAL11 AM01
IGUAL IGUAL1 IGUAL0
AM AM1 (IGUAL1 AM0)
AM
Iguales
A~B

Figura 10.4. Comparador de dos bits hecho con comparadores de un bit (falta el AB)
10.2.1. Diseo del comparador
Ahora tienes que disear el comparador. Puedes crearlo en el mismo proyecto. Ya sabes los pasos,
esquemticamente son:
Crear un smbolo para el comparador de un bit
Crear un nuevo esquemtico de nombre compa2 (no lo llames comp2 porque ya existe
ese componente en la biblioteca de Xilinx y puede llevar a error) que contenga un
diseo similar al de la figura 10.4, incluyendo el circuito de la seal de salida BM
Al terminar el diseo, guardarlo y comprobar el circuito
Opcionalmente puedes simularlo
Y para implementarlo, asignarle los pines de entrada y salida, que sern los
mostrados en la tabla 10.3.
Sintetizar, Implementar y programar la FPGA
A0 SW0
A1 SW1
B0 SW2
B1 SW3
AM LD0
IGUAL LD1
BM LD2
Tabla 10.3.
Asignacion de seales
Una vez que lo hayas implementado en la FPGA, comprueba en la placa que el circuito funciona bien. Presta
atencin al comportamiento de las salidas en funcin de los cambios en las entradas. Fjate cmo el bit ms
significativo "manda" sobre el menos significativo.

También podría gustarte