proyecto cu13 ·  · 2017-10-28diseÑo en vhdl de un contador universal independiente programable...

44
CU13 PROYECTO CU13 DISEÑO EN VHDL DE UN CONTADOR UNIVERSAL INDEPENDIENTE PROGRAMABLE DE 4 DÍGITOS BCD. PERMITE TRES MODOS DIFERENTES DE MEDICIÓN: --FRECUENCIA. --PERÍODO. --INTERVALO DE TIEMPO.

Upload: truongdien

Post on 27-May-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

CU13

PROYECTO CU13

DISEÑO EN VHDL DE UN CONTADOR UNIVERSAL INDEPENDIENTE PROGRAMABLE DE 4 DÍGITOS BCD. PERMITE TRES MODOS DIFERENTES DE MEDICIÓN: --FRECUENCIA. --PERÍODO. --INTERVALO DE TIEMPO.

Contador Universal

Canal A

Clock_50MHz

Reset

Out_bcd3 Out_bcd2 Out_bcd1 Out_bcd0

Overflow End of Conversion

Mode

Canal B

Medidor de Frecuencias Medidor de Período Medidor de Intervalo de Tiempo

Contador Universal

Modos de funcionamiento

Salida de 4 dígitos BCD. Indicaciones de «overflow» y «fin de conversión». Base de tiempo programable. Adquisición «one shot» ó «free-running».

CU13

Medidor de Frecuencia

Canal A

Out_ovf Out_eoc

Mode

Canal B

Contador BCD x4

Out_bcd3 Out_bcd2 Out_bcd1 Out_bcd0

Out_ovf

Out_bcd3 Out_bcd2 Out_bcd1 Out_bcd0

Canal A

Reloj 50MHz

Reset

Base de Tiempo

ena0

reloj

Reloj 50MHz

Mode

Reset

"xxxxxxxxxxx00xx"

bt

MEDICIÓN DE FRECUENCIA

CU13

bt

latch_cnt

reset_cnt

t

t

t

t

chA

100 ms -- 1 s -- 10 s

mode_ucnt => "x x x x x x x x x x x M4 M3 M2 M1 M0

0 = one_shot 1 = free running

bt = 100 ms bt = 1 s bt = 10 s

00 = Modo Frec.

MEDICIÓN DE FRECUENCIA

CU13

S0/0 S1/0

S3/0 S2/1

bt=0

bt=1

bt=0

bt=1

bt=0

bt=0 bt=1

bt=1

St0/0 St1/0

St3/0 St2/1

latch_cnt=0

1

0

1

0

0 1

1

latch_cnt rst_cnt

Máquinas de estado "Moore" para generar pulsos "latch" y "reset" a los contadores BCD

CU13

Medidor de Período

Canal A

Out_ovf Out_eoc

Mode

Canal B

Contador BCD x4

Out_bcd3 Out_bcd2 Out_bcd1 Out_bcd0

Out_ovf

Out_bcd3 Out_bcd2 Out_bcd1 Out_bcd0

Canal A

Reloj 50MHz

Reset

% 2 ena0

reloj Reloj 50MHz

Reset

"xxxxxxxxxxx01xx"

bt

Divisor Mode

MEDICIÓN DE PERÍODO

CU13

bt

latch_cnt

reset_cnt

t

t

t

t

10MHZ/1MHZ/ 100KHZ/10KHZ

mode_ucnt => "x x x x x x x x x x x M4 M3 M2 M1 M0

0 = one_shot 1 = free running

01 = Modo Período

MEDICIÓN DE PERÍODO

Período de chA Período de chA

00 = clk => 10 MHz 01 = clk => 1 MHz 10 = clk => 100 KHz 11 = clk => 10 KHz

CU13

Medidor de Intervalo de Tiempo

Canal A

Out_ovf Out_eoc

Mode

Canal B

Contador BCD x4

Out_bcd3 Out_bcd2 Out_bcd1 Out_bcd0

Out_ovf

Out_bcd3 Out_bcd2 Out_bcd1 Out_bcd0

Canal A

Reloj 50MHz

Reset

Base de Tiempo

ena0

reloj Reloj 50MHz

Reset

"xxxxxxxxxxx10xx"

bt

Divisor Mode

Canal B

Mode

MEDICIÓN DE INTERVALO DE TIEMPO

CU13

bt

ChB

t

t

t

t

10MHZ/1MHZ/ 100KHZ/10KHZ

mode_ucnt => "x x x x x x x x x M6 M5 x M3 M2 M1 M0 00 = clk => 10 MHz 01 = clk => 1 MHz 10 = clk => 100 KHz 11 = clk => 10 KHz

10 = Modo Interv.

MEDICIÓN DE INTERVALO DE TIEMPO

ChA

Selección de flanco ChA

Selección de flanco ChB

clock

(Ejemplo con M6 M5 = 00 : ambos canales sensados en el flanco positivo)

CU13

CU13

Código del Contador Universal

CU13

CU13

CU13

CU13

CU13

CU13

CU13

CU13

CU13

CU13

CU13

CU13

Código del TestBench para el Contador Universal

CU13

CU13

CU13

CU13 Simulación del Contador Universal en modo Frecuencímetro

BT = 100 mseg Fin = 50 KHz

Período de la señal en Canal A

CU13

Pulso de Fin de Conversión

Conteo Final en modo Frecuencímetro

CU14

PROYECTO CU14

DISEÑO EN VHDL DE UN VOLTÍMETRO DIGITAL DE 4 DÍGITOS BCD INDEPENDIENTE, DE 8 CANALES AJUSTABLE POR DIP-SWITCHES. PERMITE MEDIR LA TENSIÓN DE ENTRADA CON RANGO DE 0 A 3.3 VDC DESDE LA PLACA DE0-NANO (CYCLONE IV), EMPLEANDO EL ADC SERIE PROVISTO EN LA MISMA.

CONTROLADOR DEL ADC

CONVERSOR BINARIO A

BCD 16 BITS

CONVERSOR BCD A

7 SEGMENTOS

CONVERSOR BCD A

7 SEGMENTOS

CONVERSOR BCD A

7 SEGMENTOS

CONVERSOR BCD A

7 SEGMENTOS

DIVISOR DE FRECUENCIA

XTAL 50 MHz

FPGA

ADC SERIE

GENERADOR 2,5 Hz

CU14 DIAGRAMA EN BLOQUES DEL VOLTÍMETRO

CU14

CU14

CU14

CU14

CU14

CU14

CU14

EJEMPLO: Convertir el número 111111 (binario) = 63 (decimal) = 0110 0011 (BCD)

ALGORITMO DOUBLE DABBLE

Permite convertir un dato binario en formato BCD. El método consiste en desplazar los bits binarios hacia la izquierda de a uno por vez hasta que quede la grilla inicial vacía. Si en algún momento una columna BCD da como resultado un número mayor a 4, se debe sumar 3 a ese resultado. Luego se prosigue con el desplazamiento.

SUMO 3

SUMO 3

6 3

+

+

CU14

CU14

CU14

CU14

CU14

Se requiere adicionar un factor de corrección. La tensión de referencia del conversor ADC de 12 bits es de 3,32 V DC. Por lo tanto se debe multiplicar el valor adquirido por 3320/4095 = 0,8071. Se emplea en este caso un multiplicador dedicado “multiplicador.vhd” que multiplica la salida del conversor x13 y luego se realiza una división X16, desplazando el dato de salida del multiplicador 4 lugares hacia la derecha. Esto dá 0,8125 con un error aceptable.

DISCUSIÓN: QUÉ LE FALTA AL PROYECTO PARA CONVERTIRSE EN UN VOLTÍMETRO ?.

CU14

Multiplicador dataa x 13

Uso del IP Core

CU14

CU14

División x 16