Download - FPGA-Implemenmtacion de Frec. en Vhdl
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
1/44
Introduccin a los dispositivosFPGAs. Anlisis y ejemplos
de diseo.
Bozich, Eduardo Carlos
Director: Ing. Sergio NoriegaModificada por Ing. F. Videla
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
2/44
Realizacin de un kit de implementacin en
FPGA, para la ctedra de Introduccin a los
sistemas lgicos y digitales mediante la
plaqueta experimental UPx10K10, con el
dispositivo FLEX10K10
Objetivo
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
3/44
Tipos de lgica programada
Estudio de implementacin en AHDL:
Medidor de frecuencia y perodo
Adquisisdor autnomo de datos.
Implementacin en FLEX10K10
Contenido
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
4/44
PLD (Programmable Logic Device)
caractersticas modificadas y almacenadas
mediante programacin
Caractersticas de fabricacin:
Funcionabilidad completa
Celdas de funciones universales
PLD:
SPLDCPLD
FPGA
PLD
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
5/44
SPLD (Simple Programmable Logic Device)
Matrices de conexiones
matriz de compuertas AND (interseccin).
matriz de compuertas OR (unin).
PLDs mas pequeos y de menor costo
SPLD:
PLA
PAL
GAL
SPLD
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
6/44
CPLD (Complex Programmable Logic Device)
Bloques lgicos similares a un SPLD
Matriz de interconexin programable
Tecnologas de programacin idem SPLD
CPLD
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
7/44
FPGA (Field Programmable Gate Array)
Mayor transferencia de datos y registros
Tecnologa de programacin: antifusible, SRAM y flash
FPGA
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
8/44
FLEX: Flexible Logic Element matriX
Basados en LUT
Programacin SRAM
576 a 12160 elementos
lgicos (LEs) (LUT de 4entradas, flip-flop y lgica
adicional)
LABs de 8 LEs c/u
3 a 20 EABs de 2kbits porbloque de RAM interna
Interconexin (Fast Track)
de LEs, EABs e IOEs
FPGA: FLEX10K
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
9/44
Medidor de frecuencias y perodos
Entradas de medicin compatibles con lgica TTL
Rango en modo frecuencia: 1Hz a 100MHz.
Rango en modo perodo: 100ns a 10s.
Representacin mediante 6 dgitos.Comunicacin con PC a travs de puerto paralelo en modo SPP.
Adquisidor autnomo de datos
Controlado desde PC a travs de puerto paralelo en modo SPP.
Control directo del proceso de adquisicin de datos delconversor analgico digital ADC0820.
Capacidad de almacenamiento de hasta 500 muestras.
Dispositivo FPGA FLEX10K10 de Altera
Implementaciones
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
10/44
Diagrama en bloques AHDL frecuencmetro
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
11/44
Seal de salida delAcondicionador
Pulsos a contar por el contador
Salida del Generador de base de tiempo
Displays de 7 segmentos
Acondicionador
de sealContador
Generador de
base de tiempo
Latch y
drive de LEDs
Control delatch y drive
Seal de
entrada
medicindeTiempo
contadospulsosdeNsealf
Frecuencmetro
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
12/44
6 Contadores sincrnicos
6 Latchs de 4bits c/u
Cudruple MUX6:1
Decodificador DecodificadorBCDa 7 segmentos
Displays de segmentos
Bloque
combinatorio
Seal de
entrada
10 MHz
Seleccin
de base
base de
tiemposbase de
tiempos
w
z
Generador de
base de tiempos
10 MHz
Ubicacin
del punto dp
dp
a, b, c, d, e, f, g
tiempo
tiempo
Z
W
tiempo
BT
tiempo
de conteo
00
S0/ 0
S1/ 1
S2/ 0
10
1
1
Seal Z: Maquina de Moore
(puesta a cero)
DQ
clk
clrnVcc
Z
W
base_tiemposSeal W: flip-flop tipoD
carga
Frecuencmetro en AHDL
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
13/44
selec_base[1..0] Duracin del nivel alto
de la base de tiempos00 = 0 10000 ms
01 = 1 1000 ms
10 = 2 100 ms
11 = 3 10 ms
Bases de tiempos
medicindeTiempo
contadospulsosdeNsealf
selec_base[1..0] Duracin del nivel alto
de la base de tiempos
dgito que contiene
el punto
00 = 0 10000 ms 5
01 = 1 1000 ms 4
10 = 2 100 ms 3
11 = 3 10 ms 2
Ubicacin del punto dp
Frecuencmetro en AHDL
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
14/44
Displays de 7 segmentos
Acondicionador
de sealContador
Generador de
pulsos de perodo
definido
Latch y
drive de LEDs
Control delatch y drive
Seal de
entrada
pulsosTcontados*pulsosdeNsealT
Medidor de perodos
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
15/44
6 Contadores sincrnicos
6 Latchs de 4bits c/u
Cudruple MUX 6:1
Decodificador Decodificador BCDa 7 segmentos
Displays de 7 segmentos
Bloque
combinatorio
Seal de
entrada
10 MHz
Seleccin
de base
pulsos pulsos
w
z
Generador
de pulsos
10
MHz
Ubicacin
del punto
dp
dp
a, b, c, d, e, f, g
Divisor
base de tiempos
Medidor de perodos en AHDL
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
16/44
selec_base[1..0] Perodo de la seal de
pulsos00 = 0 0.1us
01 = 1 1us
10 = 2 10us
11 = 3 100us
Pulsos de perodo definido
selec_base[1..0] Perodo de la seal de
pulsos
dgito que contiene
el punto
00 = 0 0.1us 5
01 = 1 1us 4
10 = 2 10us 3
11 = 3 100us 2
Ubicacin del punto dp
pulsosTcontados*pulsosdeNsealT
Medidor de perodos en AHDL
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
17/44
Error de base de tiempos
Error de pulsos contados
Medidor de frecuencias
selec_base[1..0] Duracin del nivel alto
de la base de tiempos
Rango de frecuencias
a medir [Hz]
error [Hz]
00 = 0 10000 ms 0.1 a 99999.9 0.1
01 = 1 1000 ms 1 a 999999 1
10 = 2 100 ms 10 a 9999990 10
11 = 3 10 ms 100 a 99999900 100
Medidor de perodos
selec_base[1..0] Perodo Rango de perodos
a medir [ms]
error [us]
00 = 0 0.1 us 0.0001 a 99.9999 0.1
01 = 1 1us 0.001 a 999.999 1
10 = 2 10 us 0.01 a 9999.99 10
11 = 3 100 us 0.1 a 99999.9 100
N pulsos contados: 1999999 pulsos
medicindeTiempo
contadospulsosdeNseal
f
pulsosTcontados*pulsosdeNsealT
Error y rango de mediciones
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
18/44
SolucinPrescaler que divida por 10 la seal de entrada
Medidor de frecuencias con prescaler
selec_base[1..0] Duracin del nivel alto
de la base de tiempos
Rango de frecuencias
a medir [Hz]
error [Hz]
00 = 0 10000 ms 1 a 999999 1
01 = 1 1000 ms 10 a 9999990 10
10 = 2 100 ms 100 a 99999900 100
11 = 3 10 ms 1000 a 999999000 1000
Medidor de perodos con prescaler
selec_base[1..0] Perodo Rango de perodosa medir [ms] error [us]
00 = 0 0.1 us 0.00001 a 9.99999 0.01
01 = 1 1us 0.0001 a 99.9999 0.1
10 = 2 10 us 0.001 a 999.999 1
11 = 3 100 us 0.01 a 9999.99 10
Error y rango de mediciones
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
19/44
Rangos de medicin tericos para un error mximo del 10%
Sin activacin de prescaler
Frecuencia: 0.1Hz a 99.9999MHz
Perodo : 1us a 99.9999 seg.
Con activacin de prescaler
Frecuencia: 1Hz a 999.999MHz
Perodo: 100ns a 9.99999 seg
Limitacin de la frecuencia mxima de la FPGA
Rango de mediciones
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
20/44
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
21/44
FPGA ADC0820
/WR /RD/CS
/INT
DB[7..0]
10MHz
datos[3..0]
full
clearcargar_fifo
leer_fifoHoL_nibble
clk_PC
FIFO conpalabras
de 8 bits
ADC0820en modo
WR-RD
Adquisidor autnomo de datos
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
22/44
x100ns
/WR
/RD
tWR tRD tP
tIINTH
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
mximo mnimo
tWR 50us 600ns
tRD 600ns
tP 500ns
tINTH 225ns
Adoptamos
tWR= 800ns
tRD= 800ns
tP= 800ns
tINTH= 300ns
Adquisidor autnomo de datos
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
23/44
Por puerto paralelo en modo SPP
D4 a D0 como salidas y S7 a S3 como entradaspin puerto sentido nodo
D0 datos salida clear
D1 datos salida cargar_fifo
D2 datos salida leer_fifo
D3 datos salida HoL_nibble
D4 datos salidaclk_PC
S7 estado entrada full
(S6..S3) estado entrada datos[3..0]
nibble HoL_nibble datos[3..0]
High 0 q[7..4]
Low 1 q[3..0]
Secuencia programa de PC:
1. D0 en 1 para limpiar memoria
2. Activo carga de FIFO mediante D1 hata que S7=1(full).
3. Activo lectura de FIFO con D2.
4. Con D3 en bajo, genero pulso de reloj en D4 y cargo high nibble en (S6..S3).
5. D3 en alto y cargo low nibble en (S6..S3).
6. Repito pasos 35 hasta cargar totalidad de muestras en PC.
Adquisidor autnomo de datos con PC
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
24/44
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
25/44
Implementacin en FLEX10K10
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
26/44
Plaqueta FPGA con puerto paralelo de PC
Implementacin en FLEX10K10
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
27/44
Plaqueta Frecuencmetro
Implementacin en FLEX10K10
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
28/44
Plaqueta Adquisidor
Implementacin en FLEX10K10
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
29/44
Estructura de un elemento lgico.
LE (logic element)
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
30/44
Modos de operacin de los LEs
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
31/44
AHDL Base de tiempo
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
32/44
AHDL monoestable
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
33/44
AHDL salida W reset contador
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
34/44
AHDL Bloque cuenta (6 contadores)
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
35/44
AHDL Bloque de latchsCaso general
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
36/44
AHDL Bloque MPX
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
37/44
AHDL decodificadoresBCD 7 SEG
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
38/44
AHDL punto
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
39/44
Medidor de periodos
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
40/44
Pines de control y datos FPGA
ADC0820
i
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
41/44
Lectura escritura FIFO
pin puerto sentido Funcin
D7 datos salida activa_prescaler
D6 datos salida FoP
D5 datos salida selec_base[1]
D4 datos salida selec_base[0]
D3 datos salida congela latchs
(D2..D0) datos salida seleccin dgito
(S6..S3) estado entrada overflow y valor dgito
AHDL Visual Basic
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
42/44
Programacin de la FPGA4.6.1.3 Programacin de la FPGA. Posteriormente vamos a proceder a programar la FPGA. Para esto vamos a programar la EPC2 de la UPx10K10 a travs de la
interfase ByteBlaster. Los pasos a seguir son los siguientes:
1.Verificamos que la EPC2 est en su zcalo, y que el jumper J1-EPC2 no est colocado.2. Como no hay plaquetas enchufadas en CON1 o CON2, verificamos que tambin los jumpers J1-CON1 y J1-CON2, respectivamente, estn colocados.
3. Conectamos el cable de impresora entre la PC y la UPx10K10, y conectamos la fuente comprobando que tiene energa (LED encendido).
4. Generamos el archivo .pof de programacin de la EPC2.
Para ello: Con la ventana del Compiler abierta, vamos a la opcin File de la lnea superior y elija Convert SRAM Object File.
Elegimos el archivo .sof a convertir y lo ingresamos mediante Add a la lista
5. Elegimos el Programmer en el MAX+PLUS II, vamos a OPTIONSHardware Setup, y seleccionamos como programador el ByteBlaster.
6. An en el Programmer en el MAX+PLUS II, colocamos en ON la opcin MultiDevice JTAG Chain en el sub-men JTAG.
7. Elegimos MultiDevice JTAG Chain Setup en ese submen.8. Seleccionamos EPC2 en la ventana Device Name.
9. Escribimos el nombre del archivo de programacin en la ventana Programming File Name (para esta tarea tambin podemos usar el botn Select Programming
File). Este archivo puede tener la extensin .pof, aunque tambin .jam o .jbc.10. Una vez elegidos el dispositivo y el archivo de programacin, apretamos el botnAdd para incorporar ambos a la ventana Device Names & Programming File
Names.
11. Seleccionamos ahora EPF10K10 en la ventana Device Name.
12. Borramos el contenido de la ventana Programming File Name y apretamos el botnAdd para incorporar ambos a la ventana Device Names & Programming File
Names . En la zona correspondiente al archivo asociado a la EPF10K10 aparecer como texto .
13. Si todo se ha realizado correctamente, en la ventana Device Names & Programming File Names debe estar en el puesto 1 la EPF10K10 (con ) y en 2
lugar la EPC2 (con su archivo .pof) como muestra la figura 4.32.
14. Apretamos el botn Detect JTAG Chain Info para verificar si todo
funciona bien. A travs del ByteBlaster interno de la UPx10K10 el
MAX+PLUS II debe detectar la EPF10K10 y la EPC2.
15. Archivamos estas opciones mediante el botn Save .JCF (JTAG
Configuration File).
16. Finalmente volvemos al Programmer en el MAX+PLUS II, y
eligimos Program.
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
43/44
Comandos en VB para carga y descarga de
memoria FIFO
-
8/14/2019 FPGA-Implemenmtacion de Frec. en Vhdl
44/44
FIN