qlab02b

Anuncio
Solución Quiz 2 Martes
Laboratorio de Sistemas Digitales
01/2003
Considere el siguiente esquema:
CLK
Q0
Q1
Q2
Q3
sec
ckr
30 [us]
a) Utilizando la tarjeta de desarrollo genere dichas formas de onda, a partir de una
señal de reloj externo (la única entrada es CLK). Genere los vectores de prueba
correspondientes.
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';
ckr pin 41 istype 'com';
cuenta=[q3..q0];
C=.C.;
X=.X.;
equations
cuenta.clk=!reloj;
cuenta.ar=reset;
when (cuenta==11) then cuenta:=0;
else cuenta:=cuenta+1;
when ((cuenta==1) # (cuenta==2) # (cuenta==3) # (cuenta==5) # (cuenta==7) # (cuenta==11)) then
sec=0; else sec=1;
when ((cuenta==5) # (cuenta==11)) then ckr=1; ckr=0;
test_vectors ([reloj, reset ] -> [cuenta, sec, ckr])
[ 0 , 0 ] -> [ X , X, X ];
[ C , 1 ] -> [ 0 , 1, 0 ];
[ C , 0 ] -> [ 1 , 0, 0 ];
[ C , 0 ] -> [ 2 , 0, 0 ];
[ C , 0 ] -> [ 3 , 0, 0 ];
[ C , 0 ] -> [ 4 , 1, 0 ];
[ C , 0 ] -> [ 5 , 0, 1 ];
[ C , 0 ] -> [ 6 , 1, 0 ];
[ C , 0 ] -> [ 7 , 0, 0 ];
[ C , 0 ] -> [ 8 , 1, 0 ];
[ C , 0 ] -> [ 9 , 1, 0 ];
[ C , 0 ] -> [ 10 , 1, 0 ];
[ C , 0 ] -> [ 11 , 0, 1 ];
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 10 [us], que corresponde a una frecuencia de
100 [kHz], por lo que el divisor del reloj de la tarjeta debe ser 1000. La siguiente es la
imagen capturada del osciloscopio mixto que muestra la implementación hecha:
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 448.00us
Trigger
Pattern
1 XX 2 D15 XXXX XXXX XXXL LLLX D0
Time Time Ref Main S/div Delay
Main Center 20.0us/ 86.0us
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 (0x54) (es decir, cuando esté en 1 se muestra en forma
serial y cuando esté en 0 se carga con el valor 0x54). Alimente el reloj de dicho
registro con la señal ckr. 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';
ckr 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=ckr;
when (cuenta==11) then cuenta:=0;
else cuenta:=cuenta+1;
when ((cuenta==1) # (cuenta==2) # (cuenta==3) # (cuenta==5) # (cuenta==7) # (cuenta==11)) then
sec=0; else sec=1;
when ((cuenta==5) # (cuenta==11)) then ckr=1; else ckr=0;
when (control==0) then
{
registro:=^h54;
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/ 440us
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 ckr y D7 a la salida serial del registro con
contenido 0x54. La palabra hexadecimal 0x54 está marcada entre los cursores en la figura
3. Para estabilizar el disparo se utiliza el holdoff en 448 [us].
Descargar