P. 1
FPGA

FPGA

|Views: 6|Likes:
Publicado porFer Nei

More info:

Published by: Fer Nei on Jan 21, 2014
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PPT, PDF, TXT or read online from Scribd
See more
See less

07/13/2015

pdf

text

original

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

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

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

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

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 .

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 .

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

FPGA: FLEX10K FLEX: Flexible Logic Element matriX Basados en LUT Programación SRAM 576 a 12160 elementos lógicos (LEs) (LUT de 4 entradas. EABs e IOEs . 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.

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

Diagrama en bloques AHDL frecuencímetro .

Frecuencímetro Generador de base de tiempo Control de latch y drive Señal de entrada Acondicionador de señal Contador Latch y drive de LEDs f señal  Nº de pulsos contados Tiempo de medición Displays de 7 segmentos Señal de salida del Acondicionador Salida del Generador de base de tiempo Pulsos a contar por el contador .

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

0] “00” = 0 “01” = 1 “10” = 2 “11” = 3 Duración del nivel alto de la base de tiempos 10000 ms 1000 ms 100 ms 10 ms dígito que contiene el punto 5 4 3 2 .0] “00” = 0 “01” = 1 “10” = 2 “11” = 3 Duración del nivel alto de la base de tiempos 10000 ms 1000 ms 100 ms 10 ms f señal  Nº de pulsos contados Tiempo de medición Ubicación del punto dp selec_base[1..Frecuencímetro en AHDL Bases de tiempos selec_base[1..

Medidor de períodos Generador de pulsos de período definido Control de latch y drive Señal de entrada Acondicionador de señal Contador Latch y drive de LEDs Tseñal  Nº de pulsos contados* Tpulsos Displays de 7 segmentos .

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

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

0001 a 99.1 “01” = 1 “10” = 2 “11” = 3 1000 ms 100 ms 10 ms 1 a 999999 10 a 9999990 100 a 99999900 1  10  100 Medidor de períodos selec_base[1.999 0.0] “00” = 0 Duración del nivel alto de la base de tiempos 10000 ms Rango de frecuencias a medir [Hz] 0.001 a 999.01 a 9999.1 a 99999.1 1  10  100 .9 error [Hz]  0.9 error [us]  0.0] “00” = 0 “01” = 1 “10” = 2 “11” = 3 Tseñal  Nº de pulsos contados* Tpulsos Período 0.99 0.9999 0.1 us 1us 10 us 100 us Rango de períodos a medir [ms] 0..1 a 99999..Error y rango de mediciones • Error de base de tiempos • Error de pulsos contados Nº pulsos contados: 1 – 999999 pulsos f señal  Nº de pulsos contados Tiempo de medición Medidor de frecuencias selec_base[1.

01 a 9999.9999 0.1 us 1us 10 us 100 us Rango de períodos a medir [ms] 0.01  0.0] “00” = 0 “01” = 1 “10” = 2 “11” = 3 Duración del nivel alto de la base de tiempos 10000 ms 1000 ms 100 ms 10 ms Rango de frecuencias a medir [Hz] 1 a 999999 10 a 9999990 100 a 99999900 1000 a 999999000 error [Hz] 1  10  100  1000 Medidor de períodos con prescaler selec_base[1.99 error [us]  0.999 0.1 1  10 ...001 a 999.99999 0.0] “00” = 0 “01” = 1 “10” = 2 “11” = 3 Período 0.00001 a 9.0001 a 99.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.

999MHz 100ns a 9.1Hz a 99.9999MHz  Período :  Frecuencia:  Período: 1us a 99. 1Hz a 999.99999 seg • Con activación de prescaler Limitación de la frecuencia máxima de la FPGA .9999 seg.Rango de mediciones Rangos de medición teóricos para un error máximo del 10% • Sin activación de prescaler  Frecuencia: 0.

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

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

Adquisidor autónomo de datos máximo tWR tRD tP tINTH 50us mínimo 600ns 600ns 500ns 225ns Adoptamos tWR = 800ns tRD = 800ns tP = 800ns tINTH = 300ns tWR /WR tRD tP tIINTH /RD 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 x100ns .

0] 0 1 Secuencia programa de PC: 1.0] q[7.4] q[3.S3).. genero pulso de reloj en D4 y cargo high nibble en (S6.. Activo lectura de FIFO con D2. 5.S3) puerto datos datos datos datos datos estado estado sentido salida salida salida salida salida entrada entrada nodo clear cargar_fifo leer_fifo HoL_nibble clk_PC full datos[3. D3 en alto y cargo low nibble en (S6. D0 en „1‟ para limpiar memoria Activo carga de FIFO mediante D1 hata que S7=‟1‟(full).S3).0] nibble High Low HoL_nibble datos[3. 2. Con D3 en bajo. 3.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 D0 D1 D2 D3 D4 S7 (S6.. Repito pasos 3 – 5 hasta cargar totalidad de muestras en PC. 6. 4.. ....

Implementación en FLEX10K10 Plaqueta UPx10K10 .

Implementación en FLEX10K10 .

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

Implementación en FLEX10K10 Plaqueta Frecuencímetro .

Implementación en FLEX10K10 Plaqueta Adquisidor .

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

Modos de operación de los LEs .

AHDL Base de tiempo .

AHDL monoestable .

AHDL salida W reset contador .

AHDL Bloque cuenta (6 contadores) .

AHDL Bloque de latchs Caso general .

AHDL Bloque MPX .

AHDL decodificadores BCD 7 SEG .

AHDL punto .

Medidor de periodos .

Pines de control y datos FPGA ADC0820 .

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

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

Comandos en VB para carga y descarga de memoria FIFO .

FIN .

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->