Você está na página 1de 6

Laboratorio de Electrnica

2do Semestre 2015

Experiencia 7: Configuracin de Perifricos


N MERO DE SESIONES :1
I. PARTE P REVIA
Es comn que los dispositivos digitales contengan una serie de elementos y mdulos predefinidos. En esta experiencia, y
basado en el conocimiento adquirido en la experiencia anterior, deber configurar una serie de mdulos comnmente utilizados
en dispositivos digitales para Electrnica de Potencia:
contador_up_down:

Nuevamente como su nombre lo indica, este bloque genera una seal tipo contador de hasta 16 bits. Este bloque es
bastante flexible, pudindose configurar de muchas maneras a travs de sus diferentes pines, dentro de los cuales los ms
importantes son:
clk: Seal de reloj base del contador, indica con que frecuencia se incrementa y/o decrementa la cuenta. Esta seal
puede ser directamente el reloj principal OSC2_150 o la salida de un bloque divisor_reloj. Usar otro tipo de
seales, si bien es posible, no es recomendable.
modo(1:0): Indica al contador como debe contar, de acuerdo con:
0: Contador detenido, mantiene el ltimo valor.
1: Contador peridico ascendente, forma de onda tipo diente de sierra
.
.
2: Contador peridico descendente, forma de onda tipo diente de sierra
3: Contador peridico ascendente-descendente, forma de onda triangular simtrica
.
Este valor debe setearse mediante un bloque constant.
c_max(15:0): Indica al contador el valor mximo hasta el que debe contar, partiendo de 0. El mximo valor que
puede tomar c_max(15:0) es FFFF en hexadecimal o equivalentemente en decimal, 65535. Este valor debe
setearse mediante un bloque constant.
slope_ini: El el caso de que se quiera coordinar la cuenta de dos o ms contadores, la seal slope_ini indica
al contador si debe comenzar contando de manera incremental o decremental, a partir del valor de cuenta fijado en
v_carga(15:0).
0: El contador parte decrementando la cuenta.
1: El contador parte incrementando la cuenta.
carga: El el caso de que se quiera coordinar la cuenta de dos o ms contadores, al pasar de 0 a 1 la seal carga
indica al contador que debe saltar al valor de v_carga(15:0) y seguir contando de acuerdo a slope_ini, una
vez que carga vuelva a 0.
v_carga(15:0): Valor al que saltar la cuenta del contador mientras carga valga 1. Cuando carga vuelva a 0, el
contador seguir contando de manera normal a partir de v_carga(15:0) de acuerdo con slope_ini.
evento_int(1:0): Indica al contador bajo que circunstancia debe hacer que la seal s_int pase de 0 a 1, los posibles
valores son:
0: Cuando la cuenta del contador llegue a FFFF (note que esto podra nunca ocurrir).
1: Cuando la cuenta del contador llegue a 0.
2: Cuando la cuenta del contador llegue a c_max(15:0).
PLI V1.1

Laboratorio de Electrnica
2do Semestre 2015

3: Cuando la cuenta del contador llegue a 0 o a c_max(15:0).


Este valor debe setearse mediante un bloque constant.
s_int: Seal que pasa de 0 a 1 durante un periodo de la seal clk cuando se cumple la condicin definida por
evento_int(1:0).
sinc: Seal muy breve que vale 1 cuando:
La cuenta llega a c_max(15:0) y el contador opera en modo Contador ascendente.
La cuenta llega a 0 y el contador opera en modo Contador descendente.
La cuenta pasa de 0 a 1 y el contador opera en modo Contador ascendente-descendente.
Este es la seal que usualmente se utiliza para coordinar mltiples contadores, siendo el contador que enva la seal
sinc el que se considera como contador maestro, mientras que los que reciben esta seal en su entrada carga se
consideran como esclavos.
max: Seal que pasa de 0 a 1 durante un periodo de la seal clk cuando el contador llega a c_max(15:0)
min: Seal que pasa de 0 a 1 durante un periodo de la seal clk cuando el contador llega a 0.
cuenta(15:0): Bus que indica el valor actual del contador.

conversor_ad

(a) Mdulo para controlar las conversiones AD; (b) Esquema de conexin lgico/elctrico entre la FPGA y el conversor AD externo.

El mdulo conversor_ad a diferencia de los mdulos anteriores se comunica con un integrado externo a la FPGA, es
por esto que para su correcto funcionamiento los puertos mostrados en la figura deben conectarse exactamente como
se muestra, de otra forma el mdulo no funcionar. Otra caracterstica de este mdulo es que slo puede haber uno en
todo el proyecto. La funcin de los dems pines es la siguiente:
clk: Es la seal de entrada de reloj, esta seal debe ser de una frecuencia entre 1MHz y 10MHz. Note que la seal
conectada a clk adems debe ser enviada al puerto CLK_ADC a travs de un buffer de salida.
run: La(s) conversin(es) se inician cada vez que la seal run pasa de 0 a 1.
nc(2:0): Indica la cantidad de conversiones que se realizarn cada vez que la seal run cambie de 0 a 1. La cantidad
mxima de conversiones consecutivas a realizar es de 6.
chs(17:0): El integrado externo que realiza las conversiones AD cuenta con 12 entradas anlogas, separadas en
dos grupos de 6 canales, llamados CHA_0, CHA_1, CHA_2, CHA_3, CHA_4, CHA_5 y CHB_0, CHB_1,
CHB_2, CHB_3, CHB_4, CHB_5. Las conversiones siempre se realizan en pares CHA_x:CHB_x, x {0 . . . 6}.
Ya que existen 6 pares de canales, se necesitan 3 bits para codificarlos, lo que se hace de la siguiente manera:
PLI V1.1

Laboratorio de Electrnica
2do Semestre 2015
000: par CHA_0:CHB_0
001: par CHA_1:CHB_1
010: par CHA_2:CHB_2
011: par CHA_3:CHB_3
100: par CHA_4:CHB_4
101: par CHA_5:CHB_5
En la Fig. 1 se muestra la ubicacin fsica de las diferentes entradas anlogas de los conversores AD.

Fig. 1. Distribucin fsica de los pines del ADC.

El mdulo conversor_ad permite realizar lotes de conversiones, es decir realizar grupos de conversiones consecutivas por cada activacin realizada por la seal run. La entrada chs(17:0) indica al mdulo convertidor_ad
en que orden deben realizarse las conversiones deseadas de acuerdo con:
conv #6
f2 f1 f0

conv #5
e2 e1 e0

conv #4
d2 d1 d0

conv #3
c2 c1 c0

conv #2
b2 b1 b0

conv #1
a2 a1 a0

Note los siguientes aspectos:


El valor de chs(17:0) se debe asignar con un bloque constant, y por ende con un nmero hexadecimal, el
que se obtiene reagrupando los dgitos de la forma:
hexa #5
00f2 f1

hexa #4
f0 e2 e1 e0

hexa #3
d2 d1 d0 c2

hexa #2
c1 c0 b2 b1

hexa #1
b0 a2 a1 a0

Eventualmente un canal analgico podra muestrearse ms de una vez si se coloca su cdigo en ms de una
posicin.
El nmero de conversiones a realizar est determinado por nc(2:0), por lo que si nc(2:0)=3, los valores en
los casilleros 4, 5 y 6 no sern considerados.
El orden de las conversiones es absolutamente configurable, por lo que existe completa libertad de parte del usuario
sobre qu canales utilizar.
Si bien esto parece complejo, un ejemplo ayudar a dilucidar la situacin. Suponga la siguiente configuracin de los
diferentes pines del mdulo contador_ad:
Seal
nc(2:0)
chs(17:0)

PLI V1.1

Valor
4
1C153 (en hexadecimal)

Laboratorio de Electrnica
2do Semestre 2015
Por lo tanto cada vez que la seal run pase de 0 a 1, se realizarn 4 conversiones AD. Para saber que canales sern
convertidos es necesario escribir chs(17:0) en formato binario y reagruparlo en grupos de slo 3-bits para saber,
de acuerdo a la codificacin, que canales y en que orden se usan:

hexa:
binario:
codificado:

1
0

0
0

C
0

1
3

0
4

chs(17:0)
1
0 0 0 1
0

5
0
5

3
0

1
2

1
3

Por lo tanto se comienza con el canal 3, luego el canal 2, el canal 5 y finalmente el canal 0. No se consideran
la segunda conversin del canal 3 ni la conversin del canal 4, ya que nc(2:0) indica que slo se realizan 4
conversiones por lote.
busy: Es una salida que vale 1 mientras el mdulo conversor se encuentra procesando un lote de conversiones, y 0
cuando se encuentra inactivo.
interruption: Es una salida que pasa a 1 durante un breve instante indicando que se ha finalizado un lote de
conversiones.
convy(23:0): El dato analgico, tras ser convertido a formato digital, se transforma en un nmero binario de 12-bits.
Ya que como se dijo anteriormente, siempre las conversiones se realizan en pares, luego de cada conversin se
obtienen 24-bits, 12 correspondientes al resultado de la conversin del canal CHA_x y 12 correspondientes a la
conversin del canal CHB_x. La salida convy(23:0) almacena el resultado de la y-sima conversin del ltimo
lote de conversiones realizado, con el formato:
convy(23:0)= [ CHA_x(11:0):CHB_x(11:0) ]
Note que y no tiene por qu ser igual a x, el primer par de canales convertidos se guarda en conv1(23:0), el
segundo en conv2(23:0) y as sucesivamente.
Las entradas anlogas del ADC aceptan voltajes en el rango 04.096V devolviendo un nmero binario de acuerdo
con lo mostrado en la Fig. 2, es decir, el resultado de la conversin se incrementa cada 1mV. Note que el resultado
de la conversin ser 0000 0000 0000 para el rango 0 vin <1mV, por lo que en general siempre se comete un
error al realizar la conversin, pero este error es a lo ms del 0.024%, lo que es absolutamente despreciable.

Fig. 2. Conversin Voltaje de entradaResultado del ADC.

Continuando con el ejemplo anterior, donde se orden realizar un lote de cuatro conversiones de los canales 3 99K 2 99K
5 99K 0 los resultados de las conversiones se almacenarn de la siguiente forma:
Seal de salida
conv1(23:0)
conv2(23:0)
conv3(23:0)
conv4(23:0)

PLI V1.1

[
[
[
[

Valor
CHA_3(11:0):CHB_3(11:0)
CHA_2(11:0):CHB_2(11:0)
CHA_5(11:0):CHB_5(11:0)
CHA_0(11:0):CHB_0(11:0)

]
]
]
]

Laboratorio de Electrnica
2do Semestre 2015

demux_ad

Tal como su nombre lo indica, la funcin de este bloque es la de demultiplexar (separar) la palabra de 24-bits que se
obtiene de la conversin AD en los dos datos de 12-bits correspondientes a los canales yA y yB:
Entrada
convy(23:0)

Valor
conv_x(11:0)
conv_x(23:12)

Seal de salida
conv_xa(11:0)
conv_xb(11:0)

Salida
CHA_x(11:0)
CHB_x(11:0)

Los archivos fuente se encuentran disponibles en la web del ramo. Copie todos los archivos en la carpeta de su
proyecto, pero no incluya el archivo adc.v en el proyecto. ste se agregar automticamente.
II. T RABAJO EN EL LABORATORIO
Para todos los puntos considere lo siguiente:
Ubique la tarjeta de la FPGA sobre una superficie limpia, como por ejemplo una hoja de papel.
Evite tocar la tarjeta FPGA (roja) y la tarjeta de expansin (verde) excepto aquellos puntos destinados especficamente
para el contacto con el usuario, como por ejemplo los Dip Switches.
Preste atencin a la ubicacin de la tierra del osciloscopio. Conctela slo a los pines designados como GND o al tornillo
que conecta la tarjeta de expansin (verde) a la tarjeta de la FPGA (roja).
Por seguridad, si requiere de un generador de seales, conecte el cable BNC a la salida 0-5V TTL.
Genere proyectos independientes para cada uno de los puntos del laboratorio.
La Tabla I resume los diferentes puertos de entrada y salida disponibles en el archivo esquemtico bsico entregado y su
funcin. NO MODIFIQUE EL NOMBRE DE ESTOS PUERTOS Y MENOS AN LOS ELIMINE.
Antes de conectar la etapa de potencia, pida la autorizacin del profesor.
Tabla I
P UERTOS DE ENTRADA Y SALIDA PARA PROGRAMACIN DESDE ESQUEMTICOS
Nombre
Entradas y salidas digitales
OS2_150
LED1_3...LED1_0
DS1_3...DS1_0
LED2_11...LED2_0
DS2_11...DS2_0
Disp1_g...Disp1_a
Disp2_g...Disp2_a
In_11...In_0
Conversores Anlogo-Digital
CLK_ADC
A0_ADC0, A1_ADC0, A2_ADC0
DOUTA_ADC0, DOUTB_ADC0
CS_ADC0

Funcin
Reloj de 150MHz
Leds de la tarjeta de la FPGA (tarjeta roja)
Dip-Switch de la tarjeta de la FPGA (tarjeta roja)
Leds de la tarjeta de la expansin (tarjeta verde)
Dip-Switch de la tarjeta de expansin (tarjeta verde)
Display de 7 segmentos 1
Display de 7 segmentos 2
Entradas digitales 0-5V
Seal de reloj para ambos conversores
Selector de conversin conversor ADC0
Salidas del conversor ADC0
Habilitador del conversor ADC0

II.1 Configure un mdulo contador_up_down de manera que genere una seal triangular simtrica de 3 bits con un
perodo de 16 segundos. Enve los bits de salida del contador a un Display de 7 segmentos, de manera que en l se
despliegue el dgito decimal correspondiente al valor de la cuenta.
II.2 Configure un mdulo contador_up_down de manera que genere una seal diente de sierra ascendente de 1kHz si
DS2_0=0 o una seal triangular simtrica de 2kHz si DS2_0=1. En ambos casos la seal generada debe ser de 12-bits.
Para verificar el funcionamiento de los contadores, conecte la salida del mdulo al grupo de leds LED2 de manera que:
PLI V1.1

Laboratorio de Electrnica
2do Semestre 2015
Los 6 bits ms significativos del contador tipo diente de sierra aparezcan en los bits LED2_11..LED2_6.
Los 6 bits ms significativos del contador tipo seal triangular aparezcan en los bits LED2_5..LED2_0.
los leds LED2_11..LED2_11.
Agregue al programa anterior un bloque comparador (comp16) y configrelo apropiadamente de manera que el LED2_11=1
cada vez que la cuenta del contador_up_down configurado como seal triangular simtrica de 12-bits y una frecuencia
de 4kHz sea mayor que el nmero binario ingresado a travs de los DS2.
Configure un bloque conversor_ad para que realice una conversin AD del canal ADC0_B3, cada vez que el
contador_up_down del punto anterior llegue a su valor mximo. Enve el resultado de la conversin al grupo de
leds LED2.
Pruebe el correcto funcionamiento del punto anterior utilizando un generador de seales configurado para trabajar como:
a) Una seal cuadrada de frecuencia menor a 1Hz y magnitud 2V1V.
b) Una seal cuadrada de frecuencia menor a 1Hz y magnitud 2V2V.
c) Una seal senoidal de frecuencia menor a 1Hz y magnitud 1V y valor medio 2V.
Fusione en un solo proyecto las caractersticas de los puntos II.3 y II.4, de modo de comparar el resultado de la
conversin AD con el valor de la cuenta de contador_up_down. Nuevamente enve la salida de comparacin al
LED2_11. Realice pruebas para las formas de onda del punto II.5.

II.3

II.4

II.5

II.6

ANTES DE CONECTAR EL GENERADOR DE SEALES A LA TARJETA MIDA


CUIDADOSAMENTE LA MAGNITUD DE LAS SEALES. ANTES DE MODIFICAR LA MAGNITUD
O FRECUENCIA DE LA SEAL, DESCONECTE LA TARJETA DE LA FPGA, MODIFIQUE, MIDA
Y LUEGO RECONECTE. LOS ADC SON SUMAMENTE DELICADOS, CAROS Y DIFCILES DE
CONSEGUIR. CUDELOS.
III. I NFORME
III.1 Para los puntos II.1, II.2, II.3, II.4 y II.6, entregue los archivos fuente utilizados (envelos por correo), en el informe
escrito comente los aspectos trascendentes de cada uno de estos proyectos. De ser posible incluya imgenes de estos
aspectos importantes.

PLI V1.1