Anda di halaman 1dari 11

Laboratorio 2

Mediciones Digitales
Laboratorio de Sistemas Digitales - ELO212
Departamento de Electronica, Universidad Tecnica Federico Santa Mara, Av. Espana 1680

Resumen
En este laboratorio se familizaran con sistemas digitales combinacionales, una introduccion a sistemas secuenciales, su descripcion usando Verilog y el uso de un osciloscopio de senal mixta como instrumento de medicion. Como
bibliografa para este laboratorio, se recomienda consultar el tutorial del osciloscopio (elaborado para ELO-212) que
utilizaremos (publicado en el aula virtual) y la bibliografa relativa a Verilog previamente publicada en la experiencia
anterior.

Palabras clave: Mediciones digitales, osciloscopio de senal mixta, Verilog, sistemas digitales, FPGA, HDL.


UNIVERSIDAD TECNICA
FEDERICO SANTA MARIA

DEPARTAMENTO DE ELECTRONICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2016

1. Objetivos
Los objetivos tecnicos para este laboratorio son los siguientes:
Aprender y familiarizarse con el uso de un osciloscopio de senal mixta.
Conocer, comprender y aplicar los conceptos de prueba estatica de un circuito.
Disenar e implementar un circuito digital usando Verilog.
El resultado de aprendizaje de este laboratorio es el siguiente:
Implementa circuitos digitales, mide y analiza sus caractersticas funcionales.

Mixta Agilent 54621D


2. Osciloscopio de Senal
En el laboratorio disponemos de un osciloscopio Agilent 54621D, de senal mixta. Cada grupo debe utilizar el
osciloscopio que coincida con su numero de su respectiva mesa. Este tipo de osciloscopio es conocido como de
senal mixta, es decir, posee canales de adquisicion tanto digitales como analogicos. En particular, el osciloscopio
Agilent 54621D posee 2 canales analogicos y 16 canales digitales, de los cuales solamente tenemos 8 habilitados para
nuestras experiencias de laboratorio. La forma de usar este osciloscopio y todos sus detalles, las puede encontrar en un
tutorial especialmente preparado para este ramo: Gua de Uso: Osciloscopio Digital Agilent 54621D. Dicho tutorial
se encuentra publicado en el aula virtual del laboratorio. Ademas, un manual en espanol se encuentra disponible en
Panol ELO.
Un osciloscopio (de la naturaleza de los que utilizaremos en clase), utiliza la deflexion de un haz de electrones para
representar la evolucion temporal de una senal de tension. En el caso de que los canales de entrada del osciloscopio
sean del tipo digitales (como es nuestro caso), las senales de entrada se convierten a sus valores digitales (mediante un
conversor analogico/digital). Para la correcta visualizacion de la senal que se pretende medir, es necesario sincronizar
el barrido interno del osciloscopio con algun evento, ya sea que provenga de alguna senal externa de sincronizacion,
o con la senal misma que estamos midiendo (por ejemplo, se puede sincronizar de acuerdo al nivel de voltaje de la
senal de entrada). A partir de dicho instante de sincronizacion, la base de tiempo del osciloscopio genera una senal
triangular del tipo diente de sierra, tal como se muestra en la Fig. 1. La base de tiempo de esta senal corresponde a la
base de tiempo que se mostrara en pantalla. Esto u ltimo es de mucha importancia, dado que, al ser una senal triangular,
la base de tiempo sera lineal. Para cambiar la base de tiempo (por ejemplo, podramos hacerla logartmica), debemos
usar una senal tambien logartmica (lo mismo se aplicara para una senal exponencial).
Como se puede ver en la Fig. 1, la senal de entrada al osciloscopio logra visualizarse durante un tiempo mayor al
perodo (en verde), sin embargo, existe un cierto intervalo de tiempo durante el cual una porcion de la senal en rojo
no sera visible (hasta que nuevamente se cumpla la condicion de disparo, impuesto por el nivel de voltaje previamente

2 de 11
Pag.


UNIVERSIDAD TECNICA
FEDERICO SANTA MARIA

DEPARTAMENTO DE ELECTRONICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2016

Figura 1: Sincronizacion por nivel de tension de un osciloscopio.

seteado). Este tiempo de espera, consiste en el perodo durante el cual el osciloscopio no puede desplegar ninguna
imagen en pantalla, debido a que: a) debe refrescar la misma; b) existe un tiempo de ajuste necesario asociado a la
espera hasta que se de vuelvan a dar las condiciones de disparo (el nivel de tension) nuevamente.

Figura 2: Senales de sincronizacion.


Ejemplo: Para poder visualizar las formas de ondas que se indican en la Fig. 2, considerando la senal superior en
el canal 1 y la inferior en el canal 2, se debe escoger como fuente de disparo la senal del canal 2, (con acoplamiento
CC, modo de disparo normal, sin que importe la pendiente), pero con un nivel de tension de disparo que no supere al
maximo nivel entre ambas senales. Si por el contrario, disparamos el osciloscopio con la senal de mayor frecuencia,
no alcanzaramos ver la senal de menor frecuencia en forma estable en la pantalla (dado el redisparo).

3 de 11
Pag.


UNIVERSIDAD TECNICA
FEDERICO SANTA MARIA

DEPARTAMENTO DE ELECTRONICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2016

3. Unidad de Artimetica y Logica: ALU


La ALU es el corazon de los procesadores. No solo se encarga de realizar las operaciones aritmeticas y logicas (tal
como indica su nombre) si no que tambien tiene funciones vitales para que un procesador pueda funcionar como tal.
Por ejemplo, piensen que un procesador es un circuito secuencial: primero realiza una tarea, luego realiza la siguiente,
y as sucesivamente. Sin embargo, es la ALU quien determina el orden de esa secuencia. La ALU permite generar la
direccion de memoria donde esta alojado un dato. La ALU permite operar con ese dato extrado de memoria y luego
volverlo a guardar, entre otras funciones de vital importancia.
Sin embargo, una ALU es un circuito combinacional. En su estructuracion, es sencilla. Pero el desafo de disenar
una ALU radica en que debe ser o ptima, rapida y 100 % certera (no debe admitir fallas). Tal como se dijo en el
parrafo anterior, la ALU es el corazon de nuestro procesador, si la ALU falla, falla el procesador. Ademas, si nuestra
ALU es lenta, tambien podra ser lento el procesador. As, cuanto mas eficiente y rapida sea nuestra ALU, mayores
posibilidades tenemos de disenar un procesador que sea tambien rapido y eficiente. La Fig. 3 muestra el diseno general
de una ALU.

S
Figura 3: Esquematico de una ALU.

En la Fig. 3, A y B son dos operandos de entrada (generalmente de 32 bits, a menos que se diga lo contrario); F
es la entrada de control (selecciona la operacion a realizar por la ALU); D es una salida de banderas (que no se veran
en esta asignatura), mientras que S es la salida de la operacion realizada por la ALU. Hay que tener en cuenta que S
es de las mismas dimensiones de A o B. Siempre de trabaja con operandos de la misma dimension. Las operaciones

4 de 11
Pag.


UNIVERSIDAD TECNICA
FEDERICO SANTA MARIA

DEPARTAMENTO DE ELECTRONICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2016

tpicas de una ALU se pueden enumerar a continuacion:


Suma (entre operandos del tipo unsigned).
Suma (entre operandos con signo). Esta operacion siempre se realiza en complemento a 2.
Operaciones logicas: AND, OR, NOT.
Desplazamiento de bits a la izquierda (se desplazan n bits a la izquierda, rellenando con ceros por la derecha).
Desplazamiento de bits a la derecha (sin signo: se desplazan n bits a la derecha, rellenando con ceros por
la izquierda; con signo: se desplazan n bits a la derecha, rellenando de bits por la izquierda, cuyos valores
coinciden con el valor del bit mas significativo del operando).
Los desplazamientos se pueden aplicar tanto al operando A como al B.
Comparacion: si A = B, entonces S = 1, caso contrario, S = 0.
Las funcionalidades antes mencionadas son comandadas a traves de la senal de control F . Sin embargo, hay que
tener en cuenta que una ALU hace mucho mas de lo que acabamos de describir. Informacion sobre el funcionamiento
de una ALU puede ser encontrada en las siguientes referencias:
1. http://www.windowsnetworking.com/articles_tutorials/arithmetic-logic-unit.html
2. http://www.cs.iupui.edu/durresi/CSC3501_07/7_3501_07_2.pdf
3. http://courses.cs.vt.edu/cs1104/BuildingBlocks/divide.010.html
4. http://en.wikibooks.org/wiki/Microprocessor_Design/ALU

5 de 11
Pag.


UNIVERSIDAD TECNICA
FEDERICO SANTA MARIA

DEPARTAMENTO DE ELECTRONICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2016

3.1. ALU en Verilog


Si quisieramos tener una ALU basica de dos bits, tal como se muestra en la Tabla 1, deberamos considerar que la
senal de control F tiene que ser capaz de indicar que operaciones realizar entre A y B.
Entrada de Control F

Operacion

Descripcion

000

A&B

AND

001

A|B

OR

010

AB

XOR

011

A+B

SUMA

100

AB

RESTA

Cuadro 1: ALU de dos bits.


La descripcion en Verilog de la ALU descrita en la Tabla 1, se muestra a continuacion.
module a l u 2 ( S , A, B , F ) ;
i n p u t [ 1 : 0 ] A, B ;
input [2:0] F;
output reg [1 : 0 ] S ;

a l w a y s @( )
begin
case (F)
3 d0 : S = A & B ;
3 d1 : S = A | B ;
3 d2 : S = A B ;
3 d3 : S = A + B ;
3 d4 : S = A B ;
d e f a u l t : S = A & B;
endcase
end
en d m o d u le

6 de 11
Pag.


UNIVERSIDAD TECNICA
FEDERICO SANTA MARIA

DEPARTAMENTO DE ELECTRONICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2016

4. Actividades Previas
Esta seccion describe aquellas actividades que cada grupo debera realizar para responder las preguntas de la Parte
Previa a ser publicada en el Aula Virtual.

4.1. Estudio de Componentes y Uso del Osciloscopio


Estudie el datasheet de los siguientes componentes:
Compuertas AND 7408.
Compuertas OR 7432.
Inversor 7404.
Flip-flop JK 7473.
El contador de cuatro bits 74393.
Todos los datasheets estan en el aula virtual. Lea ademas el tutorial del osciloscopio desarrollado para el Laboratorio.
4.1.1. Flip-flop JK
Estudie el funcionamiento del flip-flop JK. Este flip-flop, puede ser utilizado para la construccion de contadores,
los cuales son de suma utilidad en los circuitos digitales. Por ejemplo, la Tabla 2 muestra la tabla de verdad para un
flip-flop JK, cuyas entradas son CLR (es la senal del CLR o clear, negada), la senal de reloj (CLK) y las entradas
J y K. Las salidas del flip-flop son Q y Q.
CLR

Qk+1

Qk+1

Qk

Qk

Qk

Qk

Cuadro 2: Tabla de Verdad de un flip-flop JK.


Es interesante observar que un flip-flop tipo JK (un simple flip-flop) se puede comportar como un contador de un
bit. Supongamos lo siguiente: primero CLR = 0, luego Qk+1 = 0 (hemos seteado la condicion inicial de salida de

7 de 11
Pag.


UNIVERSIDAD TECNICA
FEDERICO SANTA MARIA

DEPARTAMENTO DE ELECTRONICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2016

nuestro flip-flop). Ahora, conectemos las entradas J y K a un uno logico permanente (ese valor, para ambas entradas,
no debe variar). Lo que nos dice la tabla de verdad Tab. 2 es que, ante cada canto (o flanco) positivo de nuestro reloj
(CLK), se aplica la u ltima fila de nuestra tabla de verdad, es decir Qk+1 = Qk . Dicho de otra manera, si Q vale
inicialmente cero, al siguiente canto positivo del reloj, pasara a valer un uno logico. Al siguiente canto, se producira un
overflow, y pasara a valer cero nuevamente.
La gran ventaja de este tipo de flip-flops es que podemos conectarlos en cadena y as contar hasta nbits, en vez
del u nico bit que contamos en el parrafo anterior. La tabla de verdad para un contador de dos bits se muestra en Tab. 3.
ciclo de reloj

Q1

Q0

{Q1 : Q0 }

00

01

10

11

00

Cuadro 3: Tabla de verdad de un 2 flip-flop JK en cadena.


En la Tabla 3, se puede ver como dos flip-flops en cadena pueden generar un contador de 0 a 3 (dos bits). Un
esquema de representacion de este pequeno contador lo podemos ver en la Fig. 4.
Uno
Lgico

Q0

Q1

~Q

~Q

CLK

CLR

Uno
Lgico

Figura 4: Esquematico de un contador de 2 bits.

8 de 11
Pag.


UNIVERSIDAD TECNICA
FEDERICO SANTA MARIA

DEPARTAMENTO DE ELECTRONICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2016

4.2. ALU
Estudie el funcionamiento de una ALU en cualquiera de las referencias indicadas en el punto 3 de la presente gua.
4.2.1. Implementacion en Verilog
Implemente una ALU con las siguientes caractersticas:
Sus entradas son los operandos A y B que se muestran en la Fig. 3. Sus entradas deben ser de hasta 32 bits (el
numero de bits debe ser fijado como parametro).
La ALU es controlada por una senal de control F .
La salida de la ALU, es S (debe tener la misma cantidad de bits que cualquiera de sus entradas).
La ALU debe realizar lo siguiente:
1. A&B.
2. A|B.
3. A B.
4. A + B.
5. A B.
6. sll(A, B): Desplaza B bits de A hacia la izquierda, rellenando con ceros por la derecha.
7. srl(A, B): Desplaza B bits de A hacia la derecha, rellenando con ceros por la izquierda.
8. sra(A, B): Desplaza B bits de A hacia la derecha, pero rellenando por la izquierda con bits con valor
igual al bit mas significativo de A.
9. eq(A, B): Compara si A = B, entonces S = 1, caso contrario, S = 0.
10. gt(A, B): Compara si A > B, entonces S = 1, caso contrario, S = 0.
11. lt(A, B): Compara si A < B, entonces S = 1, caso contrario, S = 0.
Por ejemplo, para la operacion ssl, si los operandos son de ocho bits, A = 10001110 y B = 00000011, entonces
sll(A, B) = 01110000; a su vez, para las siguientes operaciones, considerando B = 00000010 entonces srl(A, B) =
00100011 y sra(A, B) = 11100011. El mismo concepto se aplica cuando el operador es de 32 bits.
Prepare un codigo de prueba (Verilog Test Fixture) fijando el parametro de bits de los operandos en 3. Procure
que el test que demuestre la correcta operacion con algunos ejemplos, incluyendo casos extremos y posibles puntos de
falla, pero no necesariamente exhaustivo, para probar el funcionamiento de la ALU.

9 de 11
Pag.


UNIVERSIDAD TECNICA
FEDERICO SANTA MARIA

DEPARTAMENTO DE ELECTRONICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2016

NOTA: De ahora en mas, cada vez que se le solicite alguna descripcion en Verilog, la misma debe venir acompanada
de su correspondiente testbench, en donde sean puestas a prueba todas las funcionalidades de su hardware. De esta
manera, la implementacion de un testbench ya no sera explcita en los enunciados de los laboratorios siguientes, pero
s sera evaluada.

4.3. Reconocedor de Intervalos de Numeros


Disene un circuito que permita identificar con un bit de salida en alto si la palabra de entrada (e) de 4 bits corresponde a un numero en intervalo 2 a 5, en caso contrario debera presentar la salida en bajo. Ademas para los grupos
impares la salida debe estar en alto si la palabra de entrada es 8 o 9, y para los grupos pares 14 o 15.
Ejemplo:
0010 -> 1
0110 -> 0
Implemente el circuito considerando:
module r e c o n o c e r n u m e r o s ( s , e ) ;
input [3:0] e ;
output s ;
/ / Co m p lete s e g u n c o r r e s p o n d a

en d m o d u le
Verifique el funcionamiento del circuito disenado mediante la implementacion de un testbench. Cuantos vectores
de prueba se deben generar para hacer un test exhaustivo del hardware propuesto?
Genere el proyecto con parametros para CPLD (indicando la Familia: XC9500 CPLDs y el Modelo: Automatic xc9500) para poder obtener las Ecuaciones Reducidas, las que podra encontrar en el Design Summary/Reports, en la seccion Equations (en Linux debe habilitar HTML en las opciones en Edit Preferences HTML
Browser y Edit Preferences ISE General CPDL reports). En funcion de dichas ecuaciones, genere un Esquema Funcional (con las compuertas, pastillas, numeros de los pines, voltajes y conexiones correspondientes).

10 de 11
Pag.


UNIVERSIDAD TECNICA
FEDERICO SANTA MARIA

DEPARTAMENTO DE ELECTRONICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2016

5. En el Laboratorio
5.1. ALU
Mostrar al profesor o ayudante la implementacion y simulacion de la ALU requerida en el punto 4.2 de la Parte
Previa. Cuantas combinaciones se requieren para realizar un test exhaustivo? Que tipo(s) de test implemento? Es
exhaustivo? Por que?
Como se refleja el aumento de operaciones en la implementacion? Hubo alguna modificacion en la cantidad de
bits de entrada o de salida al aumentar las operaciones? Hay diferencias en la implementacion de las operaciones en
Verilog si los operandos son de 4, 8, 16 o 32 bits?

5.2. Mediciones
Arme en una protoboard una configuracion basica de un flip-flop JK (7473) en modo toggle, y un inversor 7404
(srvase como ayuda la Fig. 4). Use un generador de pulsos como entrada del reloj para el caso del flip-flop, antes
de conectar valide que el generador este configurado y operando como corresponde (utilice puntas BNC-Caiman para
ver la senal analoga en el osciloscopio). Cual es la amplitud de la senal que debe utilizar? Debe tener componente
continua? Por que?
Usando el osciloscopio (previa lectura del manual/tutorial del mismo), mida el tiempo de subida del generador de
senales. Aplique esa senal a la entrada del flip-flop y del inversor. Mida el retardo de propagacion (tphl y tplh, revise
el datasheet) para cada componente observando en el osciloscopio ambas mediciones en forma simultanea. Estudie un
procedimiento para realizar esta medicion. Compare con lo indicado por el fabricante, cual es la diferencia? es una
diferencia aceptable? por que?

5.3. Reconocedor de Intervalos de Numeros


Implemente el circuito segun el Esquema Funcional que realizo para el punto 4.3 de esta gua. Identifique las
etapas del circuito, mida los retardos de cada etapa y el retardo total del circuito. Realice diversas pruebas estaticas
para validar el comportamiento. Cuales son los valores teoricos de retardo de cada etapa? Corresponden los valores
medidos a los valores esperados? Por que?

11 de 11
Pag.