Documente Academic
Documente Profesional
Documente Cultură
“FPGA”
1
ÍNDICE
Contenido
ÍNDICE.................................................................................................................................................. 2
INTRODUCCIÓN ................................................................................................................................... 3
OBJETIVOS ........................................................................................................................................... 4
OBJETIVO GENERAL ......................................................................................................................... 4
OBJETIVOS ESPECÍFICOS .................................................................................................................. 4
MARCO TEÓRICO ................................................................................................................................. 5
CPLD ................................................................................................................................................ 5
Field-programmable gate array (FPGA) .......................................................................................... 7
DESARROLLO ..................................................................................................................................... 12
CONVERTIDOR ............................................................................................................................... 12
RELOJ DIGITAL ............................................................................................................................... 16
CHAPA ELÉCTRICA ......................................................................................................................... 23
CONCLUSIONES ................................................................................................................................. 28
BIBLIOGRAFÍA .................................................................................................................................... 28
2
INTRODUCCIÓN
Las principales diferencias entre los (dispositivos lógicos programables complejos) y los
FPGA son arquitectónicos. Un CPLD tiene una estructura algo restrictiva que consiste en
una o más matrices lógicas de suma de productos programables que alimentan un
número relativamente pequeño de registros sincronizados. El resultado de esto es una
menor flexibilidad, con la ventaja de retrasos de temporización más predecibles y una
mayor relación lógica-interconexión. Las arquitecturas FPGA, por otro lado, están
dominadas por la interconexión. Esto los hace mucho más flexibles pero también mucho
más complejos de diseñar.
3
OBJETIVOS
OBJETIVO GENERAL
OBJETIVOS ESPECÍFICOS
Utilizar un FPGA que posea las características más avanzadas para este desarrollo.
4
MARCO TEÓRICO
CPLD
Los CPLD extienden el concepto de un PLD (del acrónimo inglés Programmable Logic
Device) a un mayor nivel de integración ya que permite implementar sistemas más
eficaces, ya que utilizan menor espacio, mejoran la fiabilidad del diseño, y reducen costos.
Un CPLD se forma con múltiples bloque lógicos, cada uno similar a un [[PLD]m]. Los
bloques lógicos se comunican entre sí utilizando una matriz programable de
interconexiones, lo cual hace más eficiente el uso del silicio, conduciendo a una mejor
eficiencia a menor costo. A continuación se explican brevemente las principales
características de la arquitectura de un CPLD.
Arquitectura
El primero se basa en una matriz de filas y columnas con una celda programable de
conexión en cada intersección. Al igual que en las GAL esta celda puede ser activada para
conecesconectar la correspondiente fila y columna. Esta configuración permite una total
interconexión entre las entradas y salidas del dispositivo o bloques lógicos. Sin embargo,
estas ventajas provocan que disminuya el rendimiento del dispositivo, además de
aumentar el consumo de energía y el tamaño del componente.
5
En la interconexión mediante multiplexores, existe un multiplexor por cada entrada al
bloque lógico. Las vías de interconexión programables son conectadas a las entradas de un
número de multiplexores por cada bloque lógico. Las líneas de selección de estos
multiplexores son programadas para permitir que sea seleccionada únicamente una vía de
la matriz de interconexión por cada multiplexor la cual se propagara a hacia el bloque
lógico. Cabe mencionar que no todas las vías son conectadas a las entradas de cada
multiplexor. La rutabilidad se incrementa usando multiplexores de mayor tamaño,
permitiendo que cualquier combinación de señales de la matriz de interconexión pueda
ser enlazada hacia cualquier bloque lógico. Sin embargo, el uso de grandes multiplexores
incrementa el tamaño de dispositivo y reduce su eficiencia.
Bloques Lógicos
Un bloque lógico es similar a un PLD, cada uno pose un bloque de compuertas AND y OR
en forma de suma de productos, una configuración para la distribución de estas sumas de
productos, y macroceldas. El tamaño del bloque lógico es una medida de la capacidad del
CPLD, ya que de esto depende el tamaño de la función booleana que pueda ser
implementada dentro del bloque. Los bloques lógicos usualmente tienen de 4 a 20
macroceldas.
Macroceldas
Las macroceldas de un CPLD son similares a las de un PLD. Estas también están provistas
con registros, control de polaridad, y buffers para salidas en alta impedancia. Por lo
general un CPLD tiene macroceldas de entrada/salida, macroceldas de entrada y
macroceldas internas u ocultas (buried macrocells), en tanto que un 22V10 tiene
solamente macroceldas de entrada/salida. Una macrocelda interna es similar a una
macrocelda de entrada/salida, sólo que esta no puede ser conectada directamente a un
pin de salida. La salida de una macrocelda interna va directamente a la matriz de
interconexión programable.
Celda de entrada/salida
La función de una celda de entrada/salida es permitir el paso de una señal hacia dentro o
hacia el exterior del dispositivo. Dependiendo del fabricante y de la arquitectura del CPLD
estas celdas pueden o no ser consideradas parte del bloque lógico.
6
Field-programmable gate array (FPGA)
Los FPGA contienen una matriz de bloques lógicos programables y una jerarquía de
interconexiones reconfigurables que permiten que los bloques se "conecten entre sí",
como muchas puertas lógicas que pueden interconectarse en diferentes configuraciones.
Los bloques lógicos se pueden configurar para realizar funciones combinacionales
complejas, o simplemente compuertas lógicas simples como AND y XOR . En la mayoría de
los FPGA, los bloques lógicos también incluyen elementos de memoria, que pueden ser
simples flip-flops o bloques de memoria más completos.
Diseño técnico
7
no recurrentes relativos a un diseño ASIC (a pesar del costo unitario generalmente más
alto), ofrecen ventajas para muchas aplicaciones.
Historia
Altera y Xilinx continuaron sin competencia y crecieron rápidamente desde 1985 hasta
mediados de la década de 1990, cuando surgieron competidores, erosionando una
8
importante cuota de mercado. En 1993, Actel (ahora Microsemi ) prestaba servicios al 18
por ciento del mercado. Para 2010, Altera (31 por ciento), Actel (10 por ciento) y Xilinx (36
por ciento) juntos representaban aproximadamente el 77 por ciento del mercado de
FPGA.
La década de 1990 fue un período explosivo para los FPGA, tanto en sofisticación como en
el volumen de producción. A principios de la década de 1990, los FPGA se usaban
principalmente en telecomunicaciones y redes. Hacia el final de la década, los FPGA
llegaron a las aplicaciones de consumo, automotrices e industriales.
Las principales diferencias entre los CPLD (dispositivos lógicos programables complejos) y
los FPGA son arquitectónicos. Un CPLD tiene una estructura algo restrictiva que consiste
en una o más matrices lógicas de suma de productos programables que alimentan un
número relativamente pequeño de registros sincronizados. El resultado de esto es una
menor flexibilidad, con la ventaja de retrasos de temporización más predecibles y una
mayor relación lógica-interconexión. Las arquitecturas FPGA, por otro lado, están
dominadas por la interconexión. Esto los hace mucho más flexibles (en términos de la
gama de diseños que son prácticos para la implementación dentro de ellos) pero también
mucho más complejos de diseñar.
En la práctica, la distinción entre FPGA y CPLD suele ser de tamaño, ya que los FPGA
suelen ser mucho más grandes en términos de recursos que los CPLD. Normalmente, solo
los FPGA contienen funciones integradas más complejas, como sumadores,
multiplicadores, memoria y serdes. Otra distinción común es que los CPLD contienen flash
incrustado para almacenar su configuración, mientras que los FPGA usualmente
requieren, pero no siempre, memoria externa no volátil.
Aplicaciones
Un FPGA se puede usar para resolver cualquier problema que sea computable. Esto se
prueba trivialmente por el hecho de que FPGA se puede usar para implementar un
microprocesador blando, como Xilinx MicroBlaze o Altera Nios II. Su ventaja radica en que
a veces son significativamente más rápidos para algunas aplicaciones debido a su
naturaleza paralela y la optimalidad en términos del número de puertas utilizadas para un
determinado proceso.
Los FPGA originalmente comenzaron como competidores de los CPLD para implementar la
lógica de pegamento para PCB. A medida que aumentaron su tamaño, capacidades y
velocidad, se hicieron cargo de funciones adicionales hasta el punto de que algunos se
comercializan ahora como sistemas completos en chips ( SoC ). Particularmente con la
introducción de multiplicadores dedicados en arquitecturas FPGA a finales de la década de
9
1990, las aplicaciones que tradicionalmente habían sido la única reserva de DSP
comenzaron a incorporar FPGA en su lugar.
Otra tendencia en el uso de FPGA es la aceleración de hardware, donde uno puede usar el
FPGA para acelerar ciertas partes de un algoritmo y compartir parte del cálculo entre el
FPGA y un procesador genérico.
Diseño y programación
10
Luego, utilizando una herramienta de automatización de diseño electrónico , se genera
una lista de redes asignada por tecnología. La lista de conexiones puede ajustarse a la
arquitectura de FPGA real utilizando un proceso llamado lugar y ruta , generalmente
realizado por el software propietario de ruta y ruta de la compañía FPGA. El usuario
validará el mapa, colocará y enrutará los resultados a través del análisis de tiempo , la
simulación y otras metodologías de verificación . Una vez que se completa el proceso de
diseño y validación, el archivo binario generado (también utilizando el software
propietario de la empresa FPGA) se utiliza para (re) configurar el FPGA. Este archivo se
transfiere al FPGA / CPLD a través de una interfaz en serie ( JTAG ) o a un dispositivo de
memoria externo como una EEPROM.
Los HDL más comunes son VHDL y Verilog , aunque en un intento por reducir la
complejidad del diseño en HDL, que se han comparado con el equivalente de los lenguajes
ensambladores , hay movimientos para elevar el nivel de abstracción a través de la
introducción de lenguajes alternativos . El lenguaje de programación gráfica LabVIEW de
National Instruments (a veces denominado "G") tiene un módulo adicional FPGA
disponible para el hardware FPGA de destino y programa.
Más recientemente, OpenCL está siendo utilizado por los programadores para aprovechar
el rendimiento y la eficiencia energética que proporcionan los FPGA. OpenCL permite a los
programadores desarrollar código en el lenguaje de programación C y seleccionar
funciones FPGA como kernels OpenCL usando construcciones OpenCL.
11
DESARROLLO
CONVERTIDOR
Código:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity convertidor is
end convertidor;
begin
process (Entrada)
begin
case Entrada is
12
when "000100"=> Salida <= "1001100"; --4
13
when "011110"=> Salida <= "0110000"; --E
14
when "110111"=> Salida <= "1001100"; --4
end case;
end process;
end Behavioral;
Simulación:
15
RELOJ DIGITAL
Código:
16
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity digital_clock_top is
port (
clk50mhz: in STD_LOGIC;
);
end digital_clock_top;
begin
case numero is
17
when 0 => salida := "00000011"; -- 0
end case;
return(salida);
end digito;
begin
begin
-- contador 1HZ
else
count <= 0;
18
end if;
else
refresh_count <= 0;
end if;
end if;
end process;
show_display: process(refresh_state)
case refresh_state is
end case;
-- mostrar hora
case display_sel is
19
when "0111" => display <= digito(min1); -- display 3
end case;
if display_sel="1101" then
end if;
end process;
begin
-- contador de segundos
segundos := segundos + 1;
else
segundos := 0;
end if;
if min1 = 10 then
min2 := min2 + 1;
min1 := 0;
end if;
20
-- primer dígito hora
if min2 = 6 then
hora1 := hora1 + 1;
min2 := 0;
end if;
if hora1 = 10 then
hora2 := hora2 + 1;
hora1 := 0;
end if;
hora2 := 0;
hora1 := 0;
end if;
end if;
end process;
end Behavioral;
21
Simulación:
22
CHAPA ELÉCTRICA
Código:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity CHAPA is
end CHAPA;
-- alias
23
alias Y1 : STD_LOGIC is LED(1); --estado 1
begin
-- registro de estados
process(CLK)
begin
if RST='1' then
else
end if;
end if;
end process;
process (state_reg, A, B, C)
begin
24
case state_reg is
when S0 =>
end if;
when S1 =>
end if;
when S2 =>
end if;
when S3 =>
end if;
when S4 =>
end if;
when S5 =>
end case;
end process;
25
process (state_reg)
begin
Y0 <= '0';
Y1 <= '0';
Y2 <= '0';
Y3 <= '0';
Y4 <= '0';
Y5 <= '0';
case state_reg is
when S0 => Y0 <= '1'; --los led encenderan para mostrar en que estado estan
end case;
end process;
end Behavioral;
26
Simulación:
27
CONCLUSIONES
Para la realización de la chapa se utilizó una libreria bastante útil incluida en VIVADO
con la cual se generó una máquina de estados tipo Mealy la cual es de mucha utilidad
porque solo es necesario de diagrama de estados para poder realizar dicho diseño.
BIBLIOGRAFÍA
Victor P. Nelson, H. Troy Nagle, Bill D.Carrol, J. David Irwin, Analisis y Diseño de
Circuitos Logicos Digitales, Prentince Hall.
28