FPGA-Implemenmtacion de Frec. en Vhdl

download FPGA-Implemenmtacion de Frec. en Vhdl

of 44

Transcript of 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