qlab02a

Anuncio
Solución Quiz 2 Lunes
Laboratorio de Sistemas Digitales
01/2003
Considere el siguiente esquema:
CLK
Q0
Q1
Q2
Q3
sec
write
10 [us]
a) Utilizando la tarjeta de desarrollo genere dichas formas de onda, a partir de una
señal de reloj externo.
El siguiente es el código ABEL, con los vectores de prueba incluídos, que genera las
formas de onda del esquema, con la señal clk como entrada:
module quiz2a;
reloj pin 9;
reset pin 80;
q3..q0 pin 77,76,25,12 istype 'reg';
sec pin 24 istype 'com';
write pin 41 istype 'com';
cuenta=[q3..q0];
C=.C.;
X=.X.;
equations
cuenta.clk=!reloj;
cuenta.ar=reset;
when (cuenta==13) then cuenta:=0;
else cuenta:=cuenta+1;
when ((cuenta==1) # (cuenta==2) # (cuenta==3) # (cuenta==5) # (cuenta==7) # (cuenta==11) #
(cuenta==13)) then sec=1; else sec=0;
when (cuenta==6) then write=1; else write=0;
test_vectors ([reloj, reset ] -> [cuenta, sec, write])
[ 0 , 0 ] -> [ X , X, X ];
[ C , 1 ] -> [ 0 , 0, 0 ];
[ C , 0 ] -> [ 1 , 1, 0 ];
[ C , 0 ] -> [ 2 , 1, 0 ];
[ C , 0 ] -> [ 3 , 1, 0 ];
[ C , 0 ] -> [ 4 , 0, 0 ];
[ C , 0 ] -> [ 5 , 1, 0 ];
[ C , 0 ] -> [ 6 , 0, 1 ];
[ C , 0 ] -> [ 7 , 1, 0 ];
[ C , 0 ] -> [ 8 , 0, 0 ];
[ C , 0 ] -> [ 9 , 0, 0 ];
[ C , 0 ] -> [ 10 , 0, 0 ];
[ C , 0 ] -> [ 11 , 1, 0 ];
[ C , 0 ] -> [ 12 , 0, 0 ];
[ C , 0 ] -> [ 13 , 1, 0 ];
end;
Código 1. Descripción en ABEL del diseño que cumple con el esquema dado.
Como se implementaron los vectores de prueba, se pueden obtener las siguientes
formas de onda:
Figura 1. Formas de onda obtenidas del diseño implementado por el código 1.
Se puede apreciar entonces que el diseño cumple con las especificaciones dadas por
el esquema.
b) Muestre, empleando el osciloscopio mixto las señales anteriores. Explique
claramente la forma de disparo utilizada.
Para realizar la implementación en la tarjeta de desarrollo se utiliza el ambiente Xilinx
Webpack 4.1 (que próximamente tendrá la posibilidad de realizar las simulaciones
temporales con los vectores de prueba, de manera de utilizar sólo un ambiente de trabajo).
El reloj de la tarjeta debe tener un período de 5 [us], que corresponde a una frecuencia de
200 [kHz], por lo que el divisor del reloj de la tarjeta debe ser 500. La siguiente es la
imagen capturada del osciloscopio mixto que muestra la implementación hecha:
Imagen del osciloscopio...
Figura 2. Imagen capturada del osciloscopio mixto.
Esta imagen fue capturada con los siguientes seteos en el osciloscopio:
Digital Threshold
D0-D7: TTL (1.4V)
Trigger Mode Coupling Noise Rej Holdoff
Pattern Normal DC
Off 600.00us
Trigger
Pattern
1 XX 2 D15 XXXX XXXX XXXL LLLX D0
Time Time Ref Main S/div Delay
Main Center 10.0us/ 46.2us
Acquisition Realtime Vectors Infinite Persistence
Normal
Off
On
Off
Se puede apreciar la sincronización por patrón con los canales D1 al D4 en la cuenta
inicial.
c) Utilice el pin 81 como señal de control para mostrar en forma serial el contenido
constante de un registro (0x45) (es decir, cuando esté en 1 se muestra en forma
serial y cuando este en 0 se carga con el valor 0x45). Alimente el reloj de dicho
registro con la señal write. Sincronice de manera de obtener en el osciloscopio las
anteriores formas de onda más el contenido del registro en forma serial
El código ABEL anterior puede ser modificado de manera de colocar un registro
que realice la tarea de desplazarse sobre si mismo, en forma cíclica, para enviar su
contenido en forma serial. Esta modificación es:
module quiz2a;
reloj pin 9;
reset,control pin 80,81;
q3..q0 pin 77,76,25,12 istype 'reg';
sec pin 24 istype 'com';
write pin 41 istype 'com';
registro7..registro0 node istype 'reg';
serial pin 40 istype 'com';
registro=[registro7..registro0];
cuenta=[q3..q0];
C=.C.;
X=.X.;
equations
cuenta.clk=!reloj;
cuenta.ar=reset;
registro.clk=write;
when (cuenta==13) then cuenta:=0;
else cuenta:=cuenta+1;
when ((cuenta==1) # (cuenta==2) # (cuenta==3) # (cuenta==5) # (cuenta==7) # (cuenta==11) #
(cuenta==13)) then sec=1; else sec=0;
when (cuenta==6) then write=1; else write=0;
when (control==0) then
{
registro:=^h45;
serial=1;}
else{
registro:=[registro0,registro7..registro1];
serial=registro1;}
test_vectors “sin variación...
end;
Código 2. Descripción en ABEL del diseño, más la salida en forma serial, que cumple
con el esquema dado.
Se ha agregado el control del pin 81, sin hacer mucho incapié en los vectores
de prueba. Al implementar el diseño en la tarjeta de desarrollo se obtiene las siguientes
formas de onda. Nótese que debe ajustarse la base de tiempo parar poder visualizar el
contenido del registro, pero el osciloscopio se encuentra perfectamente sincronizado:
Figura 3. Imagen capturada del osciloscopio mixto, considerando la salida serial.
Esta imagen fue capturada con los siguientes seteos en el osciloscopio:
Digital Threshold
D0-D7: TTL (1.4V)
Trigger Mode Coupling Noise Rej Holdoff
Pattern Normal DC
Off 448.00us
Trigger
Pattern
1 XX 2 D15 XXXX XXXX LLXL LLLX D0
Time Time Ref Main S/div Delay
Main Center 100us/ 352us
Acquisition Realtime Vectors Infinite Persistence
Normal
Off
On
Off
Nótese que se ha agregado a la sincronización por patrón los canales D6 y D7 en
nivel bajo (L), que corresponden: D6 a la señal write y D7 a la salida serial del registro con
contenido 0x45. La palabra hexadecimal 0x45 está marcada entre los cursores en la figura
3. Para estabilizar el disparo se utiliza el holdoff en 448 [us].
Descargar