Está en la página 1de 17

¿Qué es un sistema embebido heterogéneo?

O una plataforma Computación, se le domina heterogéneo si hay varios elementos de


procesamiento, pero de tipos fundamentalmente diferentes. Por ejemplo, un sistema embebido que
tiene una CPU y el FPGA se denomina un sistema embebido heterogéneo porque la CPU y el
FPGA son fundamentalmente diferente en arquitectura. De manera similar, el procesador CPU +
DSP también se denomina un sistema heterogéneo porque un procesador DSP es diferente en
arquitectura a un propósito general o arquitectura embebido. Si la CPU en sí misma es una
arquitectura de múltiples núcleos, pero los núcleos son diferentes en sus capacidades, es decir, al
menos dos núcleos son diferentes en su arquitectura, tal arquitectura de múltiples núcleos también
se denomina multi-núcleo heterogéneo y cualquier sistema embebido basado en él se denominaría
sistema embebido heterogéneo. El núcleo múltiple homogéneo significaría que todos los núcleos
son idénticos. Cualquier combinación de CPU, GPU, DSP, FPGA, CGRA, etc. se denominaría una
plataforma heterogénea. Esta distinción y enfoque en arquitecturas heterogéneas está ganando más
importancia en estos días porque hay un mayor enfoque en la selección de aquellos elementos de
procesamiento que se adapten mejor a las diferentes tareas disponibles en una aplicación compleja.
Sistema Embebido {Peter Marwedel}

Son sistemas de procesamiento de información embebido en un producto mas grande, es


un computación diseñado para realizar una o algunas pocas funciones dedicadas,
frecuentemente en un sistema de computación en tiempo real. Al contrario de lo que ocurre
con los ordenadores de propósito general (como por ejemplo una computadora personal o
PC) que están diseñados para cubrir un amplio rango de necesidades, los sistemas
embebidos se diseñan para cubrir necesidades específicas. En un sistema embebido la
mayoría de los componentes se encuentran incluidos en la placa base (tarjeta de
vídeo, audio, módem, etc.) y muchas veces los dispositivos resultantes no tienen el aspecto
de lo que se suele asociar a una computadora. Algunos ejemplos de sistemas embebidos
podrían ser dispositivos como un taxímetro, un sistema de control de acceso, la electrónica
que controla una máquina expendedora o el sistema de control de una fotocopiadora entre
otras múltiples aplicaciones.
Por lo general los sistemas embebidos se pueden programar directamente en el lenguaje
ensamblador del microcontrolador o microprocesador incorporado sobre el mismo, o
también, utilizando los compiladores específicos, pueden utilizarse lenguajes como C o C+
+; en algunos casos, cuando el tiempo de respuesta de la aplicación no es un factor crítico,
también pueden usarse lenguajes Orientados a Objetos como JAVA.
Puesto que los sistemas embebidos se pueden fabricar por decenas de millares o por
millones de unidades, una de las principales preocupaciones es reducir los costes. Los
sistemas embebidos suelen usar un procesador relativamente pequeño y una memoria
pequeña para ello. Los primeros equipos embebidos que se desarrollaron fueron elaborados
por IBM en los años 1980.
Los programas de sistemas embebidos se enfrentan normalmente a tareas de
procesamiento en tiempo real.
Un sistema en tiempo real(STR) es aquel sistema digital que interactúa activamente
con un entorno con dinámica conocida en relación con sus entradas, salidas y
restricciones temporales, para darle un correcto funcionamiento de acuerdo con los
conceptos de predictibilidad, estabilidad, controlabilidad y alcanzabilidad.
Los sistemas en tiempo real están presentes en nuestra vida diaria, prácticamente en todo lo
que nos rodea: en los aviones, trenes y automóviles, en el televisor, la lavadora o el horno
de microondas, en los teléfonos celulares y en las centrales telefónicas digitales. Son un
elemento imprescindible para garantizar la generación, transmisión y distribución de
la energía eléctrica y para asegurar la calidad y la seguridad de incontables procesos
industriales.
La principal característica que distingue a los STR de otros tipos de sistemas es
el tiempo de interacción. Sin embargo, antes de continuar es necesario aclarar el significado
de las palabras tiempo y real.
 La palabra tiempo significa que el correcto funcionamiento de un sistema depende
no sólo del resultado lógico que devuelve la computadora, también depende del
tiempo en que se produce ese resultado.
 La palabra real quiere decir que la reacción de un sistema a eventos externos debe
ocurrir durante su evolución. Como una consecuencia, el tiempo del sistema
(tiempo interno) debe ser medido usando la misma escala con que se mide el tiempo
del ambiente controlado (tiempo externo).
Los STR se pueden encontrar en lugares muy importantes debido a los servicios que
prestan: ellos monitorizan, controlan y protegen, por ejemplo, los sistemas de transmisión y
distribución que hacen llegar la energía eléctrica a las industrias y también a nuestros
hogares. Los STR están presentes en las áreas de monitoreo de tráfico de trenes; su
importancia es relevante debido a que diariamente se transportan millones de pasajeros.
Un STR tiene tres condiciones básicas:
 interactúa con el mundo real (proceso físico)
 emite respuestas correctas
 cumple restricciones temporales
En contraste con la definición de STR, un sistema rápido produce su salida sin considerar
las restricciones de tiempo del ambiente con que interactúa, para esa clase de sistemas no es
importante el tiempo en el cual los datos llegan al sistema digital sino solamente el tiempo
en que la salida es producida, en otras palabras únicamente interesa la rapidez de dar la
respuesta dentro del intervalo de tiempo cuya medida, entre más pequeña es mejor, sin
importar el costo de generar esa respuesta. De igual manera, tiende a confundirse el
concepto de STR con el de sistema en línea:
Un sistema en línea es aquel que siempre debe estar encendido, disponible y generalmente
conectado a una red de computadoras y depende de la capacidad del hardware para atender
peticiones de servicio y en ningún momento está en sincronía con el mundo real ni tiene
restricciones temporales. En adición a esto, un sistema fuera de línea es aquel que no
siempre está disponible para recibir y enviar información y que depende de una base de
datos previamente establecida para ejecutar su cometido. Como ejemplos de sistemas en
línea se tienen las aplicaciones de Internet como los navegadores web o la adquisición de
datos a través de una tarjeta especializada en un ambiente de tiempo
compartido como Windows.
El concepto de STR no queda restringido a los sistemas digitales o de cómputo, ya que
puede extenderse al mundo vivo: humanos, animales y plantas. Como ejemplo, considérese
una semilla fértil, la cual llega de alguna manera (ya sea por acción del viento, por medio
del desecho de algún animal al final de su digestión, etc.) a la tierra. Se puede asegurar que
el proceso de germinación de la semilla es un sistema de tiempo real en el ambiente y en las
circunstancias en las cuales se desarrolla, ya que a estímulos del ambiente (humedad
apropiada constante, temperatura adecuada constante, luz necesaria, etc.) el sistema (la
semilla) responde dentro de sus restricciones de tiempo específicas. Si la semilla fuera
solamente un sistema rápido (y no de Tiempo Real), tan pronto como ésta tocara la tierra
comenzaría su proceso de germinación, sin importar la escasez de nutrientes del suelo o
agua o estación del año, por lo que el comportamiento de la semilla no correspondería a lo
que está sucediendo en el ambiente, es decir, que el intervalo de tiempo en el que la
respuesta del sistema (semilla) se produce no sería muy importante, pero en la realidad
ocasionaría que muriera rápidamente por la falta de su adaptabilidad, al tratar de consumir
nutrientes más de lo que los puede asimilar o que se encuentren disponibles para ser
absorbidos por la raíz de la planta.
CPU
GPU: Las GPU están construidas de modo que sean mucho más eficiente para el
cálculo de información gráfica (
 Tarjetas dedicadas: Este tipo de unidades gráficas son las que proporcionan mayor
potencia. Como su nombre lo indica, tienen una serie de especificaciones y están
expresamente diseñadas para cumplir con sus tareas específicas, por lo que son
mucho más eficientes. Generalmente se suele entender que una tarjeta dedicada es
aquella que se integra a la tarjeta madre mediante un puerto aparte. Esto último no
siempre es necesario, y lo que realmente define a una tarjeta gráfica dedicada es que
tiene RAM independiente que solo podrá ser utilizada por el GPU, y mientras
cumpla con este requisito puede estar integrada a la placa base o incluso al CPU.

 Integrados gráficos: A diferencia de las unidades dedicadas, las integradas utilizan


la memoria del sistema para realizar sus funciones. Son este tipo de soluciones las
más comunes en los ordenadores modernos, estando hasta en el 90% de los equipos
de cómputo, incluyendo smartphones, tablets y la mayoría de PCs. Con frecuencia
el núcleo central de estas unidades solía estar en la tarjeta madre, pero más
recientemente las cosas han cambiado, y tanto AMD como Intel suelen integrarlas
ahora en sus procesadores, y les han denominado AMD Accelerated Processing
Unit e Intel HD Graphics respectivamente.
 Híbridos: Diseñadas para mantener precios relativamente bajos y al mismo tiempo
asegurarse niveles de potencia adecuados, las unidades gráficas híbridas también
comparten la memoria del sistema, pero para disminuir el tiempo de latencia de esta
última, integran una cantidad limitada de memoria propia que se encarga de realizar
las labores inmediatas. Suele ser éste el tipo de gráficos que encontraremos en
ordenadores portátiles que prometen tarjetas dedicadas.
Cómo funciona un GPU
A diferencia de los procesadores centrales, diseñados con pocos núcleos pero altas
frecuencias de reloj, las GPU suelen tener grandes cantidades de núcleos de procesamiento
a frecuencias de reloj relativamente bajas. En la actualidad, la mayoría de los núcleos de
procesamiento están dirigidos a dos funciones: procesamiento de vértices y de píxeles.
omando en cuenta lo que te hemos dicho anteriormente, podemos decir que el GPU no es
otra cosa que un coprocesador que se encuentra dentro del CPU y que al contrario del
microprocesador central se encarga únicamente de trabajar los gráficos, aligerando la
carga del microprocesador central, de manera que la eficiencia y el rendimiento del
equipo informático sea mucho mayor, elevando la velocidad de procesamiento.
Para que tengas una idea el GPU a pesar de que puede ser considerado un coprocesador se
diferencia del procesador central en su arquitectura que está orientada al trabajo y manejo
de gráficos, siendo incluso mucho más eficiente que el procesador para esa tarea, pero muy
incipiente para realizar otras tareas, es por esta razón que nunca podrá reemplazar al
procesador central dentro de un equipo de cómputo avanzado como un ordenador,
servidor, etc.
Principales características de un Procesador de CPU
 Núcleos
 Memoria cache
 Velocidad
 Socket
Entonces, ¿qué hace que un procesador sea potente? Pues antes la velocidad era la norma,
entre más rápido sea un procesador pues era más potente, pero desde hace algunos años se
llegó al límite de velocidad (3ghz), que por cierto sí se ha rebasado pero por muy poco, y
como la tecnología no se detiene, lo que sigue ahora ya no es "más velocidad", sino "más
núcleos".

un procesador que como quiera no es muy potente.


Entonces, ¿qué hace que un procesador sea potente? Pues antes la velocidad era la norma,
entre más rápido sea un procesador pues era más potente, pero desde hace algunos años se
llegó al límite de velocidad (3ghz), que por cierto sí se ha rebasado pero por muy poco, y
como la tecnología no se detiene, lo que sigue ahora ya no es "más velocidad", sino "más
núcleos".
Y ahora sí, ya sabiendo esto vamos a ver qué demonios es un núcleo.
Vamos a pensar que un procesador es como una persona que trabaja en una fábrica de
dulces y que se llama INTEL, él es el encargado de clasificar las gomitas por tamaño que
salen de una máquina, tiene que separar las chicas de las grandes y pasarlas a una banda
transportadora, esta persona es de un solo núcleo, entonces usa sólo una mano para hacer el
trabajo.
Cuando INTEL inició su chamba pues no tenía mucha habilidad y era lento, pero con el
tiempo se volvió cada vez más rápido separando las gomitas pero llegó un momento en el
que ya físicamente era imposible ser más veloz... y entonces llegó la era de dos núcleos, y
le permitieron usar otra mano, ahora hace el trabajo a la misma velocidad, pero clasifica
dos gomitas a la vez en lugar de una, por lo tanto termina una tanda en menos tiempo.
¿Cómo será, en nuestro ejemplo, tener un procesador de cuatro núcleos?, pues sería como si
a INTEL se le pusiera un ayudante y ahora serían cuatro manos las que separan las gomitas.
Ahora, hay otros factores aquí, para que INTEL y su compañero usen sus 4 manos en
conjunto la máquina que fabrica las gomitas tiene que producir cuando menos 4 gomitas
por vez, porque si sacara sólo 2 gomitas pues INTEL haría su trabajo mientras su ayudante
solo miraría.
Los programas de computadora tienen que estar hechos de manera que permitan a varios
núcleos trabajar al mismo tiempo, si no, un núcleo haría su chamba y los demás estarían sin
uso.
Pero aún que tengamos programas que solo usen un núcleo es una gran ventaja tener un
procesador con varios núcleos, porque, por ejemplo, podemos ver una película, cuyo
procesamiento lo hace un núcleo, y al mismo tiempo estar pasando el antivirus a toda la
computadora para eliminar virus y eso lo haría otro núcleo distinto, así que aunque se hagan
dos cosas pesadas nuestra computadora no se alenta porque el trabajo se reparte.
La memoria cache del procesador es una memoria de acceso aleatorio y muy
rápida ubicada en la CPU, y esta se divide en diferentes niveles, por ejemplo en
los procesadores Intel en L1, L2 y L3.

La memoria cache del procesador es una memoria de acceso aleatorio y muy rápida ubicada
en la CPU, y esta se divide en diferentes niveles, por ejemplo en los procesadores Intel en
L1, L2 y L3.
Memoria Cache L1
Como ya vimos en este articulo hoy por hoy cada procesador suele tener más de un núcleo
y la memoria cache L1 esta en el interior de cada uno de estos núcleos, siendo la L1 la
cache con mayor velocidad, velocidad aproximada a la misma de la CPU, pero debido a su
costo la L1 suele ser una memoria de espacio reducido.
Memoria Cache L2
La memoria L2 es una memoria cache que ya no esta en el interior de cada núcleo, y su
velocidad es inferior a la L1 siendo una velocidad intermedia entre la velocidad del
procesador y la memoria RAM, según la arquitectura del procesador la L2 puede ser de
acceso exclusivo por cada núcleo o acceso compartido entre cada par de núcleos del
procesador.
Memoria cache L3
La memoria L3 es una memoria que al igual que la L2 ya no esta en cada núcleo y su
velocidad es inferior a la L2 siendo una velocidad más parecida a la velocidad de la
memoria RAM y a esta memoria pueden acceder todos los núcleos de la CPU.
Socket

Save
El socket es el soporte que comunica al procesador con la placa principal, y gracias al
Socket se puede extraer un procesador y actualizarlo por uno más potente de una forma
muy cómoda y sencilla.

Los procesadores ARM se encuentran todo tipo de dispositivos tecnológicos, nuestros


smartphones, tablets, Smart TVs… este tipo de procesadores tienen unas
características que los convierten en las CPU ideales para nuestros dispositivos.

Los procesadores ARM están optimizados para realizar instrucciones mucho más


sencillas, a muy bajo nivel, el procesador sólo tiene que seguir los pasos para
conseguir que el código funcione. Gracias a esto, los procesadores ARM consumen mucho
menos energía, lo que los convierte en los componentes idóneos para los SoC que requieren
de un menor consumo.

Un enfoque de diseño basado en RISC permite que los procesadores ARM requieran una
cantidad menor de transistores que los procesadores x86 CISC, típicos en la mayoría de
ordenadores personales. Este enfoque de diseño nos lleva, por tanto, a una reducción de los
costes, calor y energía. Estas características son deseables para dispositivos que funcionan
con baterías, como los teléfonos móviles, tabletas , etc.

La relativa simplicidad de los procesadores ARM los hace ideales para aplicaciones de baja
potencia. Como resultado, se han convertido en los dominantes dentro del mercado de la
electrónica móvil e integrada, encarnados
en microprocesadores y microcontroladores pequeños, de bajo consumo y relativamente
bajo costo. En 2005, alrededor del 98% de los más de mil millones de teléfonos
móviles vendidos utilizaban al menos un procesador ARM.3 Desde 2009, los procesadores
ARM son aproximadamente el 90% de todos los procesadores RISC de 32 bits integrados.
Cabe hacer mención que no existe una tabla de equivalencias de rendimiento entre las
distintas tecnologías de procesadores4 que se utilizan generalmente en la electrónica de
consumo, incluyendo PDA, tabletas, teléfonos móviles, teléfonos inteligentes, relojes
inteligentes, videoconsolas portátiles, calculadoras, reproductores digitales multimedia
(fotos, vídeos, etc.) y periféricos de ordenador como discos duros y enrutadores.

El consumir menos energía implica que emita menos calor, estos procesadores no


alcanzan temperaturas tan altas como nuestros procesadores de sobremesa, lo que hace que
no sea necesario utilizar refrigeración tan potente en ellos. Es este uno de los motivos que
lo convierten en el elemento ideal de nuestros teléfonos móviles o tablets.

En arquitectura computacional, RISC (del inglés Reduced Instruction Set Computer, en


español Computador con Conjunto de Instrucciones Reducidas) es un tipo de diseño
de CPUgeneralmente utilizado en microprocesadores o microcontroladores con las
siguientes características fundamentales:

1. Instrucciones de tamaño fijo y presentadas en un reducido número de formatos.


2. Sólo las instrucciones de carga y almacenamiento acceden a la memoria de datos.

Además estos procesadores suelen disponer de muchos registros de propósito general.

El objetivo de diseñar máquinas con esta arquitectura es posibilitar la segmentación y


el paralelismo en la ejecución de instrucciones y reducir los accesos a memoria. Las
máquinas RISC protagonizan la tendencia actual de construcción de
microprocesadores. PowerPC, DEC Alpha, MIPS, ARM, SPARC son ejemplos de algunos
de ellos.

RISC es una filosofía de diseño de CPU para computadora que está a favor de conjuntos de


instrucciones pequeñas y simples que toman menor tiempo para ejecutarse. El tipo de
procesador más comúnmente utilizado en equipos de escritorio, el x86, está basado
en CISC en lugar de RISC, aunque las versiones más nuevas traducen instrucciones basadas
en CISC x86 a instrucciones más simples basadas en RISC para uso interno antes de su
ejecución.

La idea fue inspirada por el hecho de que muchas de las características que eran incluidas
en los diseños tradicionales de CPU para aumentar la velocidad estaban siendo ignoradas
por los programas que eran ejecutados en ellas. Además, la velocidad del procesador en
relación con la memoria de la computadora que accedía era cada vez más alta. Esto
conllevó la aparición de numerosas técnicas para reducir el procesamiento dentro del CPU,
así como de reducir el número total de accesos a memoria.

Terminología más moderna se refiere a esos diseños como arquitecturas de carga-


almacenamiento.
Procesador digital de señales

Un procesador digital de señales o DSP (sigla en inglés de digital signal processor) es un


sistema basado en un procesador o microprocesador que posee un conjunto de
instrucciones, un hardware y un software optimizados para aplicaciones que
requieran operaciones numéricas a muy alta velocidad. Debido a esto es especialmente
útil para el procesado y representación de señales analógicas en tiempo real: en un sistema
que trabaje de esta forma (tiempo real) se reciben muestras (samples en inglés),
normalmente provenientes de un conversor analógico/digital (ADC).

También conocido como "computadora de programa almacenado": tanto las instrucciones


del programa como los datos se guardan en la

memoria electrónica. Difiere de las computadoras anteriores que fueron programadas a


través de "cableado duro".

26/6/2018 Introducción a la informática paralela

https://computing.llnl.gov/tutorials/parallel_comp/ 11/44

Desde entonces, prácticamente todas las computadoras han seguido este diseño básico:

Compuesto de cuatro componentes principales:

 Memoria
 Unidad de control
 Unidad de lógica aritmética
 De entrada y salida

Lectura / escritura, la memoria de acceso aleatorio se usa

para almacenar las instrucciones y los datos del programa

Las instrucciones del programa son datos codificados

que le dicen a la computadora que haga algo

Los datos son simplemente información para ser

utilizada por el programa

La unidad de control busca instrucciones / datos de la

memoria, decodifica las instrucciones y luego coordina

secuencialmente las operaciones para realizar la tarea


programada.

Unidad aritmética realiza operaciones aritméticas básicas

Entrada / Salida es la interfaz para el operador humano

Arquitectura

Un DSP está diseñado teniendo en cuenta las tareas más habituales del procesado digital:
sumas, multiplicaciones y retrasos (almacenar en memoria).

Los DSP abandonan la arquitectura clásica de Von Neumann, en la que datos y programas
están en la misma zona de memoria, y apuestan por la denominada Arquitectura Harvard.
En una arquitectura Harvard existen bloques de memoria físicamente separados para datos
y programas. Cada uno de estos bloques de memoria se direcciona mediante buses
separados (tanto de direcciones como de datos), e incluso es posible que la memoria de
datos tenga distinta anchura de palabra que la memoria de programa (como ocurre en
ciertos microcontroladores).

Los elementos básicos que componen un DSP son:

Conversores en las entradas y salidas

Memoria de datos, memoria de programa y DMA.

MACs: multiplicadores y acumuladores.

ALU: Unidad aritmético-lógica.

Registros.

PLL: Bucles enganchados en fase.

PWM: Módulos de control de ancho de pulso.

Programación

Un DSP se puede programar tanto en ensamblador como en C. Cada familia de DSP tiene
su propio lenguaje ensamblador y sus propias herramientas suministradas por el fabricante.
Gracias a la colaboración entre fabricantes, existen lenguajes de más alto nivel (y por lo
tanto, más sencillos y rápidos de usar) que incorporan la capacidad de programar los DSP,
en general pasando por un precompilado automático en C. Son los casos de LabVIEW y
Matlab.

Ejemplo de un filtro con script m compatible con LabVIEW MathScript y con Matlab

En el siguiente ejemplo se presenta la programación de un filtro digital en script m. El


parámetro "entrada" es un valor que hay que darle al programa. Cabe destacar que los
coeficientes del filtro están en los arrays den y num. Nótese que todas las operaciones son
sumas (o restas), multiplicaciones y almacenamiento en memoria (variable w).

w=[0 0 0 0 0];

y=zeros(1,length(entrada));

for i=1:length(entrada)

w(5)=entrada(i)-den(2)*w(4)-den(3)*w(3)-den(4)*w(2)-den(5)*w(1);

y(i)= num(1)*w(5)+num(2)*w(4)+num(3)*w(3)+num(4)*w(2);

w(1)=w(2);

w(2)=w(3);

w(3)=w(4);

w(4)=w(5);

end;

Aplicaciones

Las aplicaciones más habituales en las que se emplean DSP son el procesado de audio
y vídeo; y cualquier otra aplicación que requiera el procesado en tiempo real. Con
estas aplicaciones se puede eliminar el eco en las líneas de comunicaciones, lograr hacer
más claras imágenes de órganos internos en los equipos de diagnóstico médico, cifrar
conversaciones en teléfonos celulares para mantener privacidad, analizar datos sísmicos
para encontrar nuevas reservas de petróleo, hace posible las comunicaciones wireless LAN,
el reconocimiento de voz, los reproductores digitales de audio, los módems inalámbricos,
las cámaras digitales, y una larga lista de elementos que pueden ser relacionados con el
proceso de señales.
FPGA o matriz de puertas programables

Es un dispositivo programable que contiene bloques de lógica cuya interconexión y


funcionalidad puede ser configurada en el momento mediante un lenguaje de
descripción especializado. La lógica programable puede producir desde funciones tan
sencillas como las levadas a cabo por una puerta lógica o un sistema de combinacional
hasta complejos sistemas en un chip.

Las FPGA se utiliza en aplicaciones similares a los Asic

FPGA frente a ASIC


Las FPGA se utilizan en aplicaciones similares a los ASIC pero tienen una serie de
inconvenientes así como de ventajas respecto a estos últimos:
Inconvenientes:

 Son más lentas.


 Consumen mayor potencia.
 No pueden realizar sistemas excesivamente complejos.
Ventajas:

 Son reprogramables.
 Los costes de desarrollo y adquisición son mucho menores.
 El tiempo de diseño y manufacturación es menor.

Características

Una jerarquía de interconexiones programables permite a los bloques lógicos de un FPGA


ser interconectados según la necesidad del diseñador del sistema, algo parecido a una placa
de inserción (es una placa de uso genérico reutilizable o semipermanente) programable.
Estos bloques lógicos e interconexiones pueden ser programados después del proceso de
manufactura por el usuario/diseñador, así que la FPGA puede desempeñar cualquier
función lógica necesaria.

Una tendencia reciente ha sido combinar los bloques lógicos e interconexiones de las
FPGA con microprocesadores y periféricos relacionados para formar un sistema
programable en un chip. Ejemplo de tales tecnologías híbridas pueden ser encontradas en
los dispositivos Virtex-II PRO y Virtex-4 de Xilinx, los cuales incluyen uno o más
procesadores PowerPC embebidos junto con la lógica de la FPGA. El FPSLIC de Atmel es
otro dispositivo similar, el cual usa un procesador AVR en combinación con la arquitectura
lógica programable de Atmel. Otra alternativa es hacer uso de núcleos de procesadores
implementados haciendo uso de la lógica de la FPGA. Esos núcleos incluyen los
procesadores MicroBlaze y PicoBlaze de Xlinx, Nios y Nios II de Altera, y los
procesadores de código abierto LatticeMicro32 y LatticeMicro8.

Muchas FPGA modernos soportan la reconfiguración parcial del sistema, permitiendo que
una parte del diseño sea reprogramada, mientras las demás partes siguen funcionando. Este
es el principio de la idea de la computación reconfigurable, o los sistemas reconfigurables.

Las FPGA también se pueden diferenciar por utilizar diferentes tecnologías de memoria:
Las FPGA también se pueden diferenciar por utilizar diferentes tecnologías de memoria:

 Volátiles: basadas en RAM. Su programación se pierde al quitar la alimentación.


Requieren una memoria externa no volátil para configurarlas al arrancar (antes o
durante el reinicio).
 No Volátiles: basadas en ROM. Hay de dos tipos, las reprogramables y las no
reprogramables.

1. Reprogramables: basadas en EPROM o flash. Estas se pueden borrar y volver a


reprogramar aunque con un límite de unos 10.000 ciclos.
2. No reprogramables: basadas en fusibles o antifusibles. Solo se pueden programar
una vez, lo que las hace poco recomendables para trabajos en laboratorios.

Ejemplo de tarjeta de desarrollo que incorpora una FPGA:2


El procesador ARM no solo brinda un rendimiento y una
eficiencia energética increíbles, sino que también brinda gráficos 2D o 3D de avanzada y
aceleración del procesamiento de señales mediante el motor de medios de instrucción única
y datos múltiples (SIMD) ARM NEON™. Puede comenzar a diseñar fácilmente
con Cyclone V SoC aprovechando la documentación completa, el apoyo fuerte de la
comunidad, los kits de desarrollo con muchas características y una gran variedad de
ejemplos de diseño disponibles.

Un sistema en chip o SoC (del inglés system on a chip o system on chip), describe la


tendencia cada vez más frecuente de usar tecnologías de fabricación que integran todos o
gran parte de los módulos que componen un computador o cualquier otro
sistema informático o electrónico en un único circuito integrado o chip.
El diseño de estos sistemas puede estar basado en circuitos de señal digital, señal analógica,
o incluso de señal mixta (tanto analógica como digital), y a menudo módulos o sistemas
de radiofrecuencia (módulos de comunicación inalámbrica: Wi-Fi, Bluetooth, y otros).

Se denomina sistema combinacional o lógica combinacional a todo sistema digital en el que


sus salidas son función exclusiva del valor de sus entradas en un momento dado, sin que
intervengan en ningún caso estados anteriores de las entradas o de las salidas.
Las funciones booleanas –compuestas por operadores OR, AND, NAND, XOR– se pueden
representar íntegramente mediante una tabla de la verdad. Por tanto, carecen de memoria y
de retroalimentación.
ARQUITECTURA PROGRAMABLE
Sin entrar en detalles internamente los FPGAs tienen un conjunto muy grande de
componentes digitales elementales combinacionales y secuenciales, compuertas AND, OR,
NOT, FLIP-FLOPs entre otros.
Lo interesante está en que se pueden “programar” las conexiones entre las compuertas y
FLIP-FLOPs de modo que se puede crear cualquier dispositivo digital que te puedas
imaginar, lo que sea, los únicos limitantes son la frecuencia y la cantidad de compuertas, y
precisamente estos son los factores que determinan el precio del FPGA.

suelen manejar los 50MHz,


Los FPGAs a diferencia de los microcontroladores y microprocesadores no se programan,
se describen, no tienen lenguaje de programación, tienen lenguaje de descripción de
descripción de hardware, se le llama descripción porque lo que en realidad hacemos es
describir las conexiones entre los elementos, hay dos opciones, VHDL y Verilog.

r ese mensaje en VHDL puede implicar unas 300 o 400 líneas de código para alguien que
ya tiene experiencia. Claro que hay sistemas que definitivamente no se pueden hacer en
los microcontroladores y para los FPGA no hay problema.

También existe la posibilidad de implementar un procesador y a este


procesador programarlo en C utilizando las herramientas oficiales, o algunas alternativas.
O también hay FPGAs que llevan in procesador dentro.
Escalabilidad
Es un anglicismo que describe la capacidad de un negocio o sistema de crecer en magnitud. 1
Aunque la palabra escalabilidad no existe en el diccionario de la RAE el adjetivo más
cercano ampliable es de poco uso en telecomunicaciones y en ingeniería informática.
La escalabilidad, término tomado en préstamo del idioma inglés, es la propiedad deseable de
un sistema, una red o un proceso, que indica su habilidad para reaccionar y adaptarse sin
perder calidad, o bien manejar el crecimiento continuo de trabajo de manera fluida, o bien
para estar preparado para hacerse más grande sin perder calidad en los servicios ofrecidos.
En general, también se podría definir como la capacidad del sistema informático de cambiar
su tamaño o configuración para adaptarse a las circunstancias cambiantes. 2 Por ejemplo,
una Universidad que establece una red de usuarios por Internet para un edificio de docentes
y no solamente quiere que su sistema informático tenga capacidad para acoger a los
actuales clientes que son todos profesores, sino también a los clientes que pueda tener en el
futuro dado que hay profesores visitantes que requieren de la red por algunas aplicaciones
académicas, para esto es necesario implementar soluciones que permitan el crecimiento de
la red sin que la posibilidad de su uso y reutilización disminuya o que pueda cambiar su
configuración si es necesario.
La escalabilidad como propiedad de los sistemas es generalmente difícil de definir, 3 en
particular es necesario definir los requisitos específicos para la escalabilidad en esas
dimensiones donde se crea que son importantes. Es una edición altamente significativa en
sistemas electrónicos, bases de datos, ruteadores y redes. A un sistema cuyo rendimiento es
mejorado después de haberle añadido más capacidad hardware, proporcionalmente a la
capacidad añadida, se dice que pasa a ser un sistema escalable.

La portabilidad, en informática, se refiere a la capacidad de un programa o sistema de


ejecutarse en diferentes plataformas o arquitecturas con mínimas modificaciones.

2. La portabilidad, en cuanto al hardware, es la facilidad con que se puede transportar un


dispositivo electrónico (computadora, consola de juego, etc.) y está básicamente
relacionado al peso y las dimensiones del equipo. A menor peso y dimensiones, más
portable es el dispositivo. Portabilidad. Es la propiedad de un programa o una aplicación
informática que le permite funcionar bajo diferentes sistemas. Cuando el programa
informático es portable puede ser utilizados en diferentes tipos de equipos.
Portabilidad en: la programación
La portabilidad es un elemento de suma importancia en la programación de alto nivel. Se
dice que un programa informático es portable cuando este es capaz de ejecutarse sobre
plataformas diferentes. Lo ideal sería que todos los programas funcionaran con
independencia del soporte técnico. En ocasiones para referirse a la portabilidad en la
programación se utiliza el término multiplataforma.
lenguaje ensamblador
Como el lenguaje ensamblador depende estrictamente del tipo de microprocesador utilizado, es
muy difícil que un programa elaborado empleando este lenguaje para un equipo pueda ser
portado a otro tipo de equipo. Generalmente hay que reprogramarlo todo desde cero. Por
eso se dice que el lenguaje ensamblador es no portable.

También podría gustarte