La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción a los dispositivos FPGAs. Análisis y ejemplos de diseño.

Presentaciones similares


Presentación del tema: "Introducción a los dispositivos FPGAs. Análisis y ejemplos de diseño."— Transcripción de la presentación:

1 Introducción a los dispositivos FPGAs. Análisis y ejemplos de diseño.
Bozich, Eduardo Carlos Director: Ing. Sergio Noriega Modificada por Ing. F. Videla

2 Objetivo Realización de un kit de implementación en FPGA, para la cátedra de ‘Introducción a los sistemas lógicos y digitales’ mediante la plaqueta experimental UPx10K10, con el dispositivo FLEX10K10

3 Contenido Tipos de lógica programada
Estudio de implementación en AHDL: Medidor de frecuencia y período Adquisisdor autónomo de datos. Implementación en FLEX10K10

4 PLD PLD (Programmable Logic Device)
características modificadas y almacenadas mediante programación Características de fabricación: Funcionabilidad completa Celdas de funciones universales PLD: SPLD CPLD FPGA

5 SPLD SPLD (Simple Programmable Logic Device) Matrices de conexiones
matriz de compuertas AND (intersección). matriz de compuertas OR (unión). PLDs mas pequeños y de menor costo SPLD: PLA PAL GAL

6 CPLD CPLD (Complex Programmable Logic Device)
Bloques lógicos similares a un SPLD Matriz de interconexión programable Tecnologías de programación idem SPLD

7 FPGA FPGA (Field Programmable Gate Array)
Mayor transferencia de datos y registros Tecnología de programación: antifusible, SRAM y flash

8 FPGA: FLEX10K FLEX: Flexible Logic Element matriX Basados en LUT
Programación SRAM 576 a elementos lógicos (LEs) (LUT de 4 entradas, flip-flop y lógica adicional) LABs de 8 LEs c/u 3 a 20 EABs de 2kbits por bloque de RAM interna Interconexión (Fast Track) de LEs, EABs e IOEs

9 Dispositivo FPGA FLEX10K10 de Altera
Implementaciones Medidor de frecuencias y períodos Entradas de medición compatibles con lógica TTL Rango en modo frecuencia: 1Hz a 100MHz. Rango en modo período: 100ns a 10s. Representación mediante 6 dígitos. Comunicación con PC a través de puerto paralelo en modo SPP. Adquisidor autónomo de datos Controlado desde PC a través de puerto paralelo en modo SPP. Control directo del proceso de adquisición de datos del conversor analógico digital ADC0820. Capacidad de almacenamiento de hasta 500 muestras. Dispositivo FPGA FLEX10K10 de Altera

10 Diagrama en bloques AHDL frecuencímetro

11 Frecuencímetro Control de latch y drive
Generador de base de tiempo Control de latch y drive Señal de entrada Acondicionador de señal Contador Latch y drive de LEDs Displays de 7 segmentos Señal de salida del Acondicionador Salida del Generador de base de tiempo Pulsos a contar por el contador

12 Frecuencímetro en AHDL
tiempo BT tiempo de conteo Bloque combinatorio Señal de entrada base de tiempos 10 MHz base de tiempos 10 MHz Generador de base de tiempos 6 Contadores sincrónicos tiempo Z Selección de base w Ubicación del punto dp W z 6 Latchs de 4bits c/u tiempo Señal Z: Maquina de Moore (puesta a cero) Cuádruple MUX 6:1 S0/ 0 S1/ 1 S2/ 0 1 dp Decodificador Decodificador BCD a 7 segmentos Señal W: flip-flop tipoD carga D Q clk clrn Vcc Z W base_tiempos a, b, c, d, e, f, g Displays de segmentos

13 Frecuencímetro en AHDL
Bases de tiempos selec_base[1..0] Duración del nivel alto de la base de tiempos “00” = 0 10000 ms “01” = 1 1000 ms “10” = 2 100 ms “11” = 3 10 ms Ubicación del punto dp selec_base[1..0] Duración del nivel alto de la base de tiempos dígito que contiene el punto “00” = 0 10000 ms 5 “01” = 1 1000 ms 4 “10” = 2 100 ms 3 “11” = 3 10 ms 2

14 Medidor de períodos Control de latch y drive Displays de 7 segmentos
Acondicionador de señal Contador Generador de pulsos de período definido Latch y drive de LEDs Control de latch y drive Señal de entrada

15 Medidor de períodos en AHDL
Bloque combinatorio Señal de entrada Divisor pulsos 10 MHz base de tiempos pulsos 10 MHz Generador de pulsos 6 Contadores sincrónicos Selección de base w Ubicación del punto dp z 6 Latchs de 4bits c/u Cuádruple MUX 6:1 dp Decodificador Decodificador BCD a 7 segmentos a, b, c, d, e, f, g Displays de 7 segmentos

16 Medidor de períodos en AHDL
Pulsos de período definido selec_base[1..0] Período de la señal de pulsos “00” = 0 0.1us “01” = 1 1us “10” = 2 10us “11” = 3 100us Ubicación del punto dp selec_base[1..0] Período de la señal de pulsos dígito que contiene el punto “00” = 0 0.1us 5 “01” = 1 1us 4 “10” = 2 10us 3 “11” = 3 100us 2

17 Error y rango de mediciones
Error de base de tiempos Error de pulsos contados Nº pulsos contados: 1 – pulsos Medidor de frecuencias selec_base[1..0] Duración del nivel alto de la base de tiempos Rango de frecuencias a medir [Hz] error [Hz] “00” = 0 10000 ms 0.1 a  0.1 “01” = 1 1000 ms 1 a  1 “10” = 2 100 ms 10 a  10 “11” = 3 10 ms 100 a  100 Medidor de períodos selec_base[1..0] Período Rango de períodos a medir [ms] error [us] “00” = 0 0.1 us a  0.1 “01” = 1 1us 0.001 a  1 “10” = 2 10 us 0.01 a  10 “11” = 3 100 us 0.1 a  100

18 Error y rango de mediciones
Solución  Prescaler que divida por 10 la señal de entrada Medidor de frecuencias con prescaler selec_base[1..0] Duración del nivel alto de la base de tiempos Rango de frecuencias a medir [Hz] error [Hz] “00” = 0 10000 ms 1 a  1 “01” = 1 1000 ms 10 a  10 “10” = 2 100 ms 100 a  100 “11” = 3 10 ms 1000 a  1000 Medidor de períodos con prescaler selec_base[1..0] Período Rango de períodos a medir [ms] error [us] “00” = 0 0.1 us a  0.01 “01” = 1 1us a  0.1 “10” = 2 10 us 0.001 a  1 “11” = 3 100 us 0.01 a  10

19 Rango de mediciones Rangos de medición teóricos para un error máximo del 10% Sin activación de prescaler Frecuencia: 0.1Hz a MHz Período : us a seg. Con activación de prescaler Frecuencia: 1Hz a MHz Período: ns a seg Limitación de la frecuencia máxima de la FPGA

20 overflow y valor dígito
Comunicación con PC Por puerto paralelo en modo SPP D7 a D0 como salidas y S6 a S3 como entradas pin puerto sentido Función D7 datos salida activa_prescaler D6 FoP D5 selec_base[1] D4 selec_base[0] D3 congela latchs (D2..D0) selección dígito (S6..S3) estado entrada overflow y valor dígito (D2..D0) (S6..S3) “000” = 0 Overflow “001” = 1 valor dígito 1 “010” = 2 valor dígito 2 “011” = 3 valor dígito 3 “100” = 4 valor dígito 4 “101” = 5 valor dígito 5 “110” = 6 valor dígito 6 Secuencia programa de PC: (D7..D4) activo prescaler, modo frec o period., selec. base en forma contínua. Activo carga mediante congelamiento de latch (D3). Secuencia 0-6 en (D2..D0) para cargar overflow y dígitos Se desactiva carga (D3) para refresco de latchs Repeticion de 2-4 de forma necesaria.

21 Adquisidor autónomo de datos
10MHz /INT datos[3..0] FPGA FIFO con palabras de 8 bits full ADC0820 DB[7..0] clear cargar_fifo leer_fifo HoL_nibble clk_PC /CS /WR /RD ADC0820 en modo WR-RD

22 Adquisidor autónomo de datos
Adoptamos tWR = 800ns tRD = 800ns tP = 800ns tINTH = 300ns máximo mínimo tWR 50us 600ns tRD tP 500ns tINTH 225ns x100ns /WR /RD tWR tRD tP tIINTH

23 Adquisidor autónomo de datos con PC
Por puerto paralelo en modo SPP D4 a D0 como salidas y S7 a S3 como entradas pin puerto sentido nodo D0 datos salida clear D1 cargar_fifo D2 leer_fifo D3 HoL_nibble D4 clk_PC S7 estado entrada full (S6..S3) datos[3..0] nibble HoL_nibble datos[3..0] High q[7..4] Low 1 q[3..0] Secuencia programa de PC: D0 en ‘1’ para limpiar memoria Activo carga de FIFO mediante D1 hata que S7=’1’(full). Activo lectura de FIFO con D2. Con D3 en bajo, genero pulso de reloj en D4 y cargo high nibble en (S6..S3). D3 en alto y cargo low nibble en (S6..S3). Repito pasos 3 – 5 hasta cargar totalidad de muestras en PC.

24 Implementación en FLEX10K10
Plaqueta UPx10K10

25 Implementación en FLEX10K10

26 Implementación en FLEX10K10
Plaqueta FPGA con puerto paralelo de PC

27 Implementación en FLEX10K10
Plaqueta Frecuencímetro

28 Implementación en FLEX10K10
Plaqueta Adquisidor

29 Estructura de un elemento lógico. LE (logic element)

30 Modos de operación de los LEs

31 AHDL Base de tiempo

32 AHDL monoestable

33 AHDL salida W reset contador

34 AHDL Bloque cuenta (6 contadores)

35 AHDL Bloque de latchs Caso general

36 AHDL Bloque MPX

37 AHDL decodificadores BCD 7 SEG

38 AHDL punto

39 Medidor de periodos

40 Pines de control y datos FPGA ADC0820

41 Lectura escritura FIFO
Visual Basic AHDL pin puerto sentido Función D7 datos salida activa_prescaler D6 FoP D5 selec_base[1] D4 selec_base[0] D3 congela latchs (D2..D0) selección dígito (S6..S3) estado entrada overflow y valor dígito

42 Programación de la FPGA
Programación de la FPGA. Posteriormente vamos a proceder a programar la FPGA. Para esto vamos a programar la EPC2 de la UPx10K10 a través de la interfase ByteBlaster. Los pasos a seguir son los siguientes: 1.Verificamos que la EPC2 está en su zócalo, y que el jumper J1-EPC2 no está colocado. 2. Como no hay plaquetas enchufadas en CON1 o CON2, verificamos que también los jumpers J1-CON1 y J1-CON2, respectivamente, estén colocados. 3. Conectamos el cable de impresora entre la PC y la UPx10K10, y conectamos la fuente comprobando que tiene energía (LED encendido). 4. Generamos el archivo .pof de programación de la EPC2. Para ello: • Con la ventana del Compiler abierta, vamos a la opción File de la línea 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 OPTIONS→Hardware Setup, y seleccionamos como programador el ByteBlaster. 6. Aún en el Programmer en el MAX+PLUS II, colocamos en ON la opción 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 programación en la ventana Programming File Name (para esta tarea también podemos usar el botón Select Programming File). Este archivo puede tener la extensión .pof, aunque también .jam o .jbc. 10. Una vez elegidos el dispositivo y el archivo de programación, apretamos el botón Add 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 botón Add para incorporar ambos a la ventana Device Names & Programming File Names . En la zona correspondiente al archivo asociado a la EPF10K10 aparecerá como texto <none>. 13. Si todo se ha realizado correctamente, en la ventana Device Names & Programming File Names debe estar en el puesto 1º la EPF10K10 (con <none>) y en 2º lugar la EPC2 (con su archivo .pof) como muestra la figura 4.32. 14. Apretamos el botón Detect JTAG Chain Info para verificar si todo funciona bien. A través del ByteBlaster interno de la UPx10K10 el MAX+PLUS II debe detectar la EPF10K10 y la EPC2. 15. Archivamos estas opciones mediante el botón Save .JCF (JTAG Configuration File). 16. Finalmente volvemos al Programmer en el MAX+PLUS II, y eligimos Program.

43 Comandos en VB para carga y descarga de memoria FIFO

44 FIN


Descargar ppt "Introducción a los dispositivos FPGAs. Análisis y ejemplos de diseño."

Presentaciones similares


Anuncios Google