Está en la página 1de 12

Laboratorio 2

Mediciones Digitales

Laboratorio de Sistemas Digitales - ELO212

Departamento de Electrónica, Universidad Técnica Federico Santa Marı́a, Av. España 1680

Resumen

En este laboratorio se familizarán con sistemas digitales combinacionales, una introducción a sistemas secuencia-
les, su descripción usando Verilog y el uso de un osciloscopio de señal mixta como instrumento de medición. Como
bibliografı́a para este laboratorio, se recomienda consultar el tutorial del osciloscopio (elaborado para ELO-212) que
utilizaremos (publicado en el aula virtual) y la bibliografı́a relativa a Verilog previamente publicada en la experiencia
anterior.

Palabras clave: Mediciones digitales, osciloscopio de señal mixta, Verilog, sistemas digitales, FPGA, HDL.

1
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
DEPARTAMENTO DE ELECTRÓNICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2015

1. Objetivos
Los objetivos técnicos para este laboratorio son los siguientes:

Aprender y familiarizarse con el uso de un osciloscopio de señal mixta.

Conocer, comprender y aplicar los conceptos de prueba estática de un circuito.

Diseñar e implementar un circuito digital usando Verilog.

El resultado de aprendizaje de este laboratorio es el siguiente:


Implementa circuitos digitales, mide y analiza sus caracterı́sticas funcionales.

2. Osciloscopio de Señal Mixta Agilent 54621D


En el laboratorio disponemos de un osciloscopio Agilent 54621D, de señal mixta. Cada grupo debe utilizar el
osciloscopio que coincida con su número de su respectiva mesa. Este tipo de osciloscopio es conocido como de
señal mixta, es decir, posee canales de adquisición tanto digitales como analógicos. En particular, el osciloscopio
Agilent 54621D posee 2 canales analógicos 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: “Guı́a de Uso: Osciloscopio Digital Agilent 54621D”. Dicho tutorial
se encuentra publicado en el aula virtual del laboratorio. Además, un manual en español se encuentra disponible en
Pañol ELO.
Un osciloscopio (de la naturaleza de los que utilizaremos en clase), utiliza la deflexión de un haz de electrones para
representar la evolución temporal de una señal de tensión. En el caso de que los canales de entrada del osciloscopio
sean del tipo digitales (como es nuestro caso), las señales de entrada se convierten a sus valores digitales (mediante un
conversor analógico/digital). Para la correcta visualización de la señal que se pretende medir, es necesario sincronizar
el barrido interno del osciloscopio con algún evento, ya sea que provenga de alguna señal externa de sincronización,
o con la señal misma que estamos midiendo (por ejemplo, se puede sincronizar de acuerdo al nivel de voltaje de la
señal de entrada). A partir de dicho instante de sincronización, la base de tiempo del osciloscopio genera una señal
triangular del tipo diente de sierra, tal como se muestra en la Fig. 1. La base de tiempo de esta señal corresponde a la
base de tiempo que se mostrará en pantalla. Esto último es de mucha importancia, dado que, al ser una señal triangular,
la base de tiempo será lineal. Para cambiar la base de tiempo (por ejemplo, podrı́amos hacerla logarı́tmica), debemos
usar una señal también logarı́tmica (lo mismo se aplicarı́a para una señal exponencial).
Como se puede ver en la Fig. 1, la señal de entrada al osciloscopio logra visualizarse durante un tiempo mayor al
perı́odo (en verde), sin embargo, existe un cierto intervalo de tiempo durante el cual una porción de la señal –en rojo–
no será visible (hasta que nuevamente se cumpla la condición de disparo, impuesto por el nivel de voltaje previamente

Pág. 2 de 12
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
DEPARTAMENTO DE ELECTRÓNICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2015

Figura 1: Sincronización –por nivel de tensión– de un osciloscopio.

seteado). Este tiempo de espera, consiste en el perı́odo 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 tensión) nuevamente.

Figura 2: Señales de sincronización.

Ejemplo: Para poder visualizar las formas de ondas que se indican en la Fig. 2, considerando la señal superior en
el canal 1 y la inferior en el canal 2, se debe escoger como fuente de disparo la señal del canal 2, (con acoplamiento
CC, modo de disparo normal, sin que importe la pendiente), pero con un nivel de tensión de disparo que no supere al
máximo nivel entre ambas señales. Si por el contrario, disparamos el osciloscopio con la señal de mayor frecuencia,
no alcanzarı́amos ver la señal de menor frecuencia en forma estable en la pantalla (dado el redisparo).

Pág. 3 de 12
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
DEPARTAMENTO DE ELECTRÓNICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2015

3. Unidad de Artimetica y Lógica: ALU


La ALU es el corazón de los procesadores. No sólo se encarga de realizar las operaciones aritméticas y lógicas (tal
como indica su nombre) si no que también 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
dirección de memoria donde está alojado un dato. La ALU permite operar con ese dato extraı́do de memoria y luego
volverlo a guardar, entre otras funciones de vital importancia.
Sin embargo, una ALU es un circuito combinacional. En su estructuración, es sencilla. Pero el desafı́o de diseñar
una ALU radica en que debe ser óptima, rápida y 100 % certera (no debe admitir fallas). Tal como se dijo en el
párrafo anterior, la ALU es el corazón de nuestro procesador, si la ALU falla, falla el procesador. Además, si nuestra
ALU es lenta, también podrá ser lento el procesador. Ası́, cuanto más eficiente y rápida sea nuestra ALU, mayores
posibilidades tenemos de diseñar un procesador que sea también rápido y eficiente. La Fig. 3 muestra el diseño general
de una ALU.

A B

F D

S
Figura 3: Esquemático 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 operación a realizar por la ALU); D es una salida de banderas (que no se verán
en esta asignatura), mientras que S es la salida de la operación 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 dimensión. Las operaciones

Pág. 4 de 12
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
DEPARTAMENTO DE ELECTRÓNICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2015

tı́picas de una ALU se pueden enumerar a continuación:

Suma (entre operandos del tipo unsigned).

Suma (entre operandos con signo). Esta operación siempre se realiza en complemento a 2.

Operaciones lógicas: 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 más significativo del operando).

Los desplazamientos se pueden aplicar tanto al operando A como al B.

Comparación: si A = B, entonces S = 1, caso contrario, S = 0.

Las funcionalidades antes mencionadas son comandadas a través de la señal de control F . Sin embargo, hay que
tener en cuenta que una ALU hace mucho más de lo que acabamos de describir. Información 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://library.thinkquest.org/25111/alu.shtml

3. http://www.cs.iupui.edu/˜durresi/CSC3501_07/7_3501_07_2.pdf

4. http://courses.cs.vt.edu/˜cs1104/BuildingBlocks/divide.010.html

5. http://en.wikibooks.org/wiki/Microprocessor_Design/ALU

Pág. 5 de 12
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
DEPARTAMENTO DE ELECTRÓNICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2015

3.1. ALU en Verilog

Si quisiéramos tener una ALU básica de dos bits, tal como se muestra en la Tabla 1, deberı́amos considerar que la
señal de control F tiene que ser capaz de indicar qué operaciones realizar entre A y B.

Entrada de Control F Operación Descripción


000 A&B AND
001 A|B OR
010 A∧B XOR
011 A+B SUMA
100 A−B RESTA

Cuadro 1: ALU de dos bits.

La descripción en Verilog de la ALU descrita en la Tabla 1, se muestra a continuación.

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

Pág. 6 de 12
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
DEPARTAMENTO DE ELECTRÓNICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2015

4. Actividades Previas
Esta sección describe aquellas actividades que cada grupo deberá 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 están en el aula virtual. Lea además el tutorial del osciloscopio desarrollado para el Labora-
torio.

4.1.1. Flip-flop JK

Estudie el funcionamiento del flip-flop JK. Este flip-flop, puede ser utilizado para la construcción 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 señal del CLR o clear, negada), la señal de reloj (CLK) y las entradas
J y K. Las salidas del flip-flop son Q y ∼ Q.

∼ CLR J K Qk+1 ∼ Qk+1


0 x x 0 1
1 0 0 Qk ∼ Qk
1 1 0 1 0
1 0 1 0 1
1 1 1 ∼ 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 condición inicial de salida de

Pág. 7 de 12
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
DEPARTAMENTO DE ELECTRÓNICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2015

nuestro flip-flop). Ahora, conectemos las entradas J y K a un uno lógico 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 ú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, pasará a valer un uno lógico. Al siguiente canto, se producirá
un overflow, y pasará a valer cero nuevamente.
La gran ventaja de este tipo de flip-flops es que podemos conectarlos en cadena y ası́ contar hasta n–bits, en vez
del único bit que contamos en el párrafo anterior. La tabla de verdad para un contador de dos bits se muestra en Tab. 3.

ciclo de reloj Q1 Q0 {Q1 : Q0 }


0 0 0 00
1 0 1 01
2 1 0 10
3 1 1 11
4 0 0 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 representación de este pequeño contador lo podemos ver en la Fig. 4.

Uno Q0 Q1
Lógico

J Q J Q
CLK

K ~Q K ~Q

CLR

Uno
Lógico

Figura 4: Esquemático de un contador de 2 bits.

Pág. 8 de 12
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
DEPARTAMENTO DE ELECTRÓNICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2015

4.2. ALU

Estudie el funcionamiento de una ALU en cualquiera de las referencias indicadas en el punto 3 de la presente guı́a.

4.2.1. Implementación en Verilog

Implemente una ALU con las siguientes caracterı́sticas:

Sus entradas son los operandos A y B que se muestran en la Fig. 3. Sus entradas deben ser de hasta 32 bits (el
número de bits debe ser fijado como parámetro).

La ALU es controlada por una señal 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 más 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 operación 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 código de prueba (Verilog Test Fixture) fijando el parámetro de bits de los operandos en 3. Procure
que el test que demuestre la correcta operación con algunos ejemplos, incluyendo casos extremos y posibles puntos de
falla, pero no necesariamente exhaustivo, para probar el funcionamiento de la ALU.

Pág. 9 de 12
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
DEPARTAMENTO DE ELECTRÓNICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2015

NOTA: De ahora en más, cada vez que se le solicite alguna descripción en Verilog, la misma debe venir acompañada
de su correspondiente testbench, en donde sean puestas a prueba todas las funcionalidades de su hardware. De esta
manera, la implementación de un testbench ya no será explı́cita en los enunciados de los laboratorios siguientes, pero
sı́ será evaluada.

4.3. Reconocedor de Números Primos

Diseñe un circuito que permita identificar con un bit de salida en alto si la palabra de entrada (e) de 3 bits corres-
ponde a un número primo, en caso contrario deberá presentar la salida en bajo.
Ejemplo:

001 -> 0
010 -> 1

Implemente el circuito considerando:

module p r i m o s ( s , e ) ;
input [2: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 diseñado mediante la implementación de un testbench. ¿Cuántos vectores
de prueba se deben generar para hacer un test exhaustivo del hardware propuesto?
Genere el proyecto con parámetros para CPLD (indicando la “Familia”: “XC9500 CPLDs” y el “Modelo”: “Au-
tomatic xc9500”) para poder obtener las Ecuaciones Reducidas, las que podrá encontrar en el “Design Summar-
y/Reports”, en la sección “Equations”. En función de dichas ecuaciones, genere un Esquema Funcional (con las
compuertas, pastillas, números de los pines, voltajes y conexiones correspondientes).

Pág. 10 de 12
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
DEPARTAMENTO DE ELECTRÓNICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2015

5. En el Laboratorio

5.1. ALU

Mostrar al profesor o ayudante la implementación y simulación de la ALU requerida en el punto 4.2 de la Parte
Previa. ¿Cuántas combinaciones se requieren para realizar un test exhaustivo? ¿Qué tipo(s) de test implementó? ¿Es
exhaustivo? ¿Por qué?
¿Cómo se refleja el aumento de operaciones en la implementación? ¿Hubo alguna modificación en la cantidad de
bits de entrada o de salida al aumentar las operaciones? ¿Hay diferencias en la implementación de las operaciones en
Verilog si los operandos son de 4, 8, 16 o 32 bits?

5.2. Mediciones

Arme en una protoboard una configuración básica de un flip-flop JK (7473) en modo toggle, y un inversor 7404
(sı́rvase 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 esté configurado y operando como corresponde (utilice puntas BNC-Caimán para
ver la señal análoga en el osciloscopio). ¿Cuál es la amplitud de la señal que debe utilizar? ¿Debe tener componente
continua? ¿Por qué?
Usando el osciloscopio (previa lectura del manual/tutorial del mismo), mida el tiempo de subida del generador
de señales. Aplique esa señal a la entrada del flip-flop y del inversor. Mida el retardo de propagación para cada
componente observando en el osciloscopio ambas mediciones en forma simultánea. Compare con lo indicado por el
fabricante, ¿cuál es la diferencia? ¿es una diferencia aceptable? ¿por qué?
Luego, mida los umbrales de los niveles lógicos de cada componente (flip-flop e inversor). Para ello, utilice un
tester (y/o puntas BNC-Caimán para ver la señal análoga en el osciloscopio) y un potenciómetro multivueltas para
variar el voltaje de entrada de ambas componentes. Compare con la definición del fabricante tanto el umbral inferior
para el “1”-lógico y el umbral superior para el “0”-lógico.¿Son los valores aceptables? ¿Por qué?

NOTA: Cada vez que se le solicite realizar una medición deberá considerar que se refiere a realizar al menos 10
mediciones distintas (o más si es que alguna de ellas es descartada), tabular, obtener promedios y calcular el porcentaje
de error respecto al valor esperado (valor propuesto por el fabricante, valor nominal o teórico).

Pág. 11 de 12
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
DEPARTAMENTO DE ELECTRÓNICA
ELO212 - Laboratorio de Sistemas Digitales
Primer Semestre 2015

5.3. Reconocedor de Números Primos

Implemente el circuito según el Esquema Funcional que realizó para el punto 4.3 de esta guı́a. Identifique las
etapas del circuito, mida los retardos de cada etapa y el retardo total del circuito. Realice diversas pruebas estáticas
para validar el comportamiento. ¿Cuáles son los valores teóricos de retardo de cada etapa? ¿Corresponden los valores
medidos a los valores esperados? ¿Por qué?

5.4. Circuito combinacional 2.0

Diseñe un módulo que tenga como entrada (e) una palabra de 16 bits, y como salida (s) una de 32 bits. Adicional-
mente, debe tener una señal de entrada (ctl) de 2 bits que permitirá elegir entre 4 distintas operaciones a realizar por el
módulo y que se describen a continuación.

Cuando ctl = 0, deberá agrupar los 1’s de la entrada para que aparezcan al centro de la palabra de salida. Si
el número de unos es impar, el lado derecho de la salida tendrá que tener un uno más que el de la izquierda.
Ejemplo:

00110100_11101100 -> 00000000_00001111_11110000_00000000

Cuando ctl = 1, deberá tomar los 1’s de la entrada e intercalarlos con 0’s a la salida. El primer uno a escribir en
la salida debe estar en la posición menos significativa. Ejemplo:

00110100_11101100 -> 00000000_00000000_01010101_01010101

Cuando ctl = 2, deberá tomar los 1’s e intercalarlos como en el punto anterior, pero empezando con el bit menos
significativo igual a 0. Ejemplo:

00110100_11101100 -> 00000000_00000000_10101010_10101010

Cuando ctl = 3 se deberá hacer el xor entre la salida del caso 1 (los unos intercalados) y una palabra de 32
bits cuyos 16 bits menos significativos corresponden a una palabra formada por la repetición de los 8 bits menos
significativos de la entrada; y los siguientes 16 bits más significativos corresponden a los 8 bits más significativos
de la entrada repetidos. Ejemplo:

00110100_11101100 -> 00110100_00110100_11101100_11101100


Salida Caso 1 -> 00000000_00000000_01010101_01010101
XOR -> 00110100_00110100_10111001_10111001

Pág. 12 de 12

También podría gustarte