Está en la página 1de 29

UNIVERSIDAD DE GUADALAJARA, CENTRO

UNIVERSITARIO DE CIENCIAS EXACTAS E


INGENIERÍA.

Programación de Sistemas Reconfigurables

I7268

INGENIERÍA EN COMUNICACIONES
Y ELECTRÓNICA

Investigación FPGA’s, memoria y


almacenamiento.
Profesor: Diaz Guerrero Primitivo Emanuel

Díaz Iñiguez Miguel Ángel. 218721252

07 de diciembre del 2022


Contenido
Definición.......................................................................................................................... 3
Estructura (que son y como funcionan) ........................................................ 5
Uso de los FPGA .......................................................................................................... 13
Empresas que lo desarrollan .............................................................................. 15
Software de implementación .............................................................................. 17
Principales lenguajes de programación ....................................................... 17
Memorias y almacenamiento .............................................................................. 19
Definición

Los FPGA (Field Programmable Gate Arrays) son dispositivos


semiconductores reprogramables, de los cuales constan de arreglos de
compuertas lógicas internas las cuales se conectan entre sí mediante
trayectorias electrónicas (fusibles), los cuales se basan en 3 elementos
configurables básicos: bloques lógicos configurables (CLB), bloques de
entrada y salida (IOB) y canales de comunicación.
El bloque lógico
configurable (CLB) consta
de una parte combinacional
para crear funciones
booleanas de manera lógica
junto a una parte
secuencial para así
sincronizar la salida con una
señal CLOCK externa
(implementación de
registros), la cual varía
según el fabricante. Los
bloques de entrada y salida Imagen 1.—Arquitectura básica de un FPGA
(IOB) son elementos lógicos
distintos con un esquema de interconexión programable que permite la
conexión entre celdas de elementos lógicos (puede o no ser
permanente, dependiendo de la programación usada). Y los canales de
comunicación son las interconexiones ya mencionadas (fusibles).
Este arreglo de compuertas es reprogramable y utilizan tecnologías de
proceso SRAM (ya mencionado en los LUT) para su implementación de
manera programable, el cual puede reproducir desde funciones tan
sencillas (compuertas) hasta la implementación de un chip.
Su densidad se establece en cantidades equivalentes a cierto número de
compuertas, es decir, tiene un número de puertas equivalentes mucho
mayor que un dispositivo CPLD común y además de ser pequeños, se
organizan según su número de filas y columnas. Donde dentro de ellos,
se comunican los CLB entre ellos y con las terminales E/S por medio de
conexiones llamados comunicación. Cada FPGA contiene una matriz de
CLB idénticos (de forma cuadrada), conectados por medio de líneas
metálicas que corren vertical y horizontalmente entre bloque (Imagen
1). Sus densidades varían desde los centenares de módulos lógicos
hasta un aproximado de 180k (hasta 1000 pines), donde también
cambian su consumo de potencia, voltajes de alimentación, velocidad y
,más que obvio, su arquitectura.

Cada CLB está configurado para procesar cualquier aplicación lógica de


manera completa, es decir, permiten la implementación de cualquier
función booleana representada en SOP (suma de productos).
Donde su diseño lógico se implementa mediante bloques generadores de
funciones o LUT, los cuales permiten almacenar la lógica requerida
(tiene una memoria interna pequeña de 16 bits). Estos generadores son
componentes de cedas de memoria SRAM, permitiendo almacenar
direcciones de celdas
que se quieren
implementar de
manera lógica (como
una tabla de verdad);
en cada celda se
almacena el resultado
para las combinaciones
de las entradas,
existiendo dos tipos de
Imagen 2.- Arquitectura de un bloque lógico LUT (con multiplexores
configurable FPGA o (look-up table). El
cual, si se aplica una
combinación de LUT en entradas, el circuito traduce en una dirección de
memoria y se envía fuera del bloque el dato almacenado en esa
dirección (Imagen 2).En este tipo de circuitos, los CLB están ordenados
en arreglos de matrices programables, la cual se encarga de dirigir las
salidas de un bloque a otro. Las E/S pueden estar conectadas
directamente al PSM o CLB, o por
medio de vías o canales de
comunicación.
Llevando con esto último las
diferencias y características de
un CPLD y un FPGA:
Estructura (que son y como funcionan)

La ventaja de estos es que son menos costosos, con mayor capacidad


de reprogramación la cual da apoyo a un proceso de desarrollo y es
aplicable frente a otros circuitos integrados. Es decir, todo el desarrollo
se lleva a cabo en un solo ambiente de trabajo para así optimizar la
representación lógica mediante métodos de minimización, simulación y
practica sin tener que estar reduciendo el diseño, gastar tiempo y dar
uso de gran variedad de herramientas (software de implementación y
para que se usan).
Al hablarse de la estructura también se puede definir como las
características o arquitectura del dispositivo a evaluar, en todo caso, se
apreciará el contenido de un FPGA de manera a detalle.

Macroceldas
Es un circuito que contiene una función de
lógica combinacional de suma de
productos y un FF opcional en función a la
implementación de lógica combinacional y
secuencial (ambos tipos de lógica)
(Imagen3). Estos varian su complejidad,
pero bien se hace un copuesto de una OR
con circuitos adicionales. Existen la
Imagen 3.- Tipos básicos de combinacional L (unicamete genera
macroceldas PAL/GAL para
lógica combinacional funciones logicas 16/8), combinacional
fon FF (salidas combinacionales de 16/4)
y Combinacional o salida FF V (cada salida es configurables en el FF o
bien, puramente combiacionales 22v10).
Bloques lógicos configurables

Como se mencionó de manera


rápida en la definición del FPGA,
estos CLB se conforman por medio
de módulos pequeños análogos a
las macroceldas de un CPLD,
donde cada uno de estos tienen
interconexiones programables
Imagen 4- bloques CLB dentro de
locales para conectar entre si los estructura global de interconexiones
módulos (Imagen 4). programables
Ya dentro del FPGA, este puede
ser configurado para lógica combinacional, registrada o ambas, dado
que se implementa junto a un FF que forma parte de la lógica asociada
para la lógica registrada, es decir, un LUT (Imagen 5).

Los LUT tienen una capacidad de 2𝑛 celdas


de memoria, donde n son el numero de
variables de entrada. Dentro de las
mismas se programan patrones de 1s y 0s
para sus funciones de lógica especificadas
Imagen 5- Diagrama de (si es un 1, el termino aparecerá en la
bloques básico de un módulo salida, de lo contrario, si es un 0, el
lógico FPGA producto asociado no se mostrará en la
salida) (Imagen 6).
A grandes rasgos, como
tal son tablas de
consulta, multiplexores y
FF, donde la tabla
consiste en la SRAM de
almacenamiento,
proporcionando así las
funciones del circuito
combinacional del mismo
bloque (tabla de verdad),
de manera similar como
el ROM; sin embargo, el Imagen 6.- Lógica de los LUT
detalle funcional y la ventaja dada es la de almacenar dichas tablas se
pueden escribir en la memoria. Pero también su desventaja es que la
memoria es volátil y hay que volver a cargar el contenido de la tabla si
se interrumpe la alimentación eléctrica.

IOB(Bloques de E/S)

Estos constituyen una interfaz de conexión


entre los pines externos y el circuito
interno, es decir, la comunicación de
adentro hacia fuera, funcionando para
transmitir las señales digitales . Estos son
determinados para organizar el numero de
pines en grupos independientes, siendo los
bloques diseñados por el fabricante o bien
determinados para el dispositivo (Imagen
7) los cuales están bastante elaborados
para así posibilitar usarlos con diversos
tangos de voltaje, frecuencias, señales Imagen 7.- Estructura de los
digitales, entre otros. Existe un bloque de bloques de E/S
estos por cada terminal de estos dentro del FPGA donde existen 3
caminos posibles para una señal:
• Camino de entrada: Conecta la terminal del circuito integrado a la
lógica interna del FPGA (conexión directa o con registro a través
de un FF IFF1 o IFF2).
• Camino de salida: comunicación entre la lógica interna con la
salida del FPGA a través de un multiplexor y del buffer de salida,
llegando a la salida; es decir, su uso es la transmisión de datos en
ambos flancos del reloj o bien, para el registro en las señales de
salida del FPGA.
• Camino de alta impedancia: Comunicación entre la señal de
control de alta impedancia con el buffer de salida.
(Configuración de las E/S en
diagrama 1).

Arquitectura

De manera interna, como se


especificó en su definición, es una
matriz de bloques CLB programables
para diferentes funcionalidades,
estas están rutadas entre CLBs y a
su vez a las celdas E/S (encargadas
de comunicar la lógica interna de los
FPGA al exterior).
La manera en que se realizan las
conexiones si bien son solamente Diagrama 1.- Configuración de las R/S
de un FPGA genérico
fusibles, existe una jerarquía esto
para determinar la función lógica
conectándose entre celdas vecinas en
varios niveles de grupos y bloques,
llamándose conexiones configurables.
En cambio, las conexiones
disponibles son aquellas las cuales
son abundantes entre celdas vecinas Imagen 7.- Conexiones de los
CLBs dentro del FPGA
y escasas entre celdas lejanas
(imagen 7).
Esto da una gran ventaja ya que debido a la naturaleza programable de
las interconexiones dentro de su arquitectura hacen que sean
reutilizables ante proceso de modificación de reingeniería (esto debido a
cambios de la programación nueva probándose así de manera inmediata
en el dispositivo).
Ya mencionado en los bloques lógicos, estos están fuertemente ligados
a las interconexiones ya que se basan en lógica ROM el cual contiene m
bits de direcciones y n bits de ancho de la palabra programable,
haciendo una función de n funciones de m bits, PLA(Programmable Logic
Array) de los cuales existen ANDs programables y ORs programables
(Imagen 8), y los PAL (Programmable Array Logic) el cual tiene ANDs
programables y ORs fijos (Imagen 9). Haciendo su función con suma de
productos.

Imagen 8.- Suma de productos del PLA Imagen 9.- Plano del OR fijo PAL

En general, los FPGA por su arquitectura se utilizan para se un


dispositivo de configuración volátil con celdas hechas a base de LUT y
PLD o CPLD, además de las ya mencionadas funciones de sumas de
productos (Imagen 10).

FPGA volátil con memoria de configuración no volátil interna al chip

Módulos del FPGA

Al saber que este tipo de dispositivos son programables por el usuario,


también hay disponibilidad de dispositivos FPGA que contienen dentro
suyo una lógica implementada en hardware. El módulo hardware es
una parte de la lógica dentro de un FPGA el cual está programada por el
fabricante para así dar una función específica para no ser reprogramado
(como un microprocesador predeterminado para el usuario).
La ventaja de estos módulos es que al ser algo ya definido por el
fabricante, se vuelve mas pequeño, ahorrando capacidad del FPGA y
consumiendo menos espacio del chip en comparación al del que el
usuario puede programar, y sin mencionar el tiempo de implementación
o desarrollo para el usuario. Si se llega dar cierto margen de error, no
habría preocupación alguna ya que estos son probados. Sin embargo, la
desventaja de este modulo es que solo se darán esas especificaciones
durante la fabricación, de lo cual, no se podrá cambiar. Si bien, el
módulo hardware es cómodo en la estructura del FPGA, se puede
programar más de uno en su interior, es decir un circuito integrado
(Imagen 11). Algunos de estos son como los microprocesadores,
interfaces de E/S y procesadores digitales de señal.
Queda por agregar
que los FPGA que
contienen
procesadores
integrados y otras
funciones en módulos
se conocen como
dispositivos FPGA de
Imagen 11.- Concepto básico de un modulo hardware
integrado de un FPGA plataforma ya que
estos se pueden
implementar en un sistema completo sin necesidad de dispositivos
externos de soporte.
Si bien este tipo de módulos no es programable, existe el que, si puede
ser programado, el módulo software el cual solo se puede programar
algunas cosas del módulo hardware, tales como su función
predeterminada. Ambos son módulos importantes en el campo de los
FPGA de plataforma.

FPGA SRAM, Altera y XILINIX

Los FPGA como se mencionó con


anterioridad, son volátiles, sin
embargo, pueden no serlos ya que
Imagen 12.- FPGA no volátil (con host
estos están con tecnología
y memoria integrada)
antifusible (SRAM), es decir, que todos los datos programados en los
CLB no se pierden cuando se desconecta de la alimentación. Entonces,
estos incluyen una memoria de configuración no volátil integrada en su
chip (o bien, se puede utilizar una memoria externa) para así tener un
almacenamiento y poderlo reconfigurar cuando se conecte la
alimentación como un procesador de host para la transferencia de datos
(Imagen 12).
Por otro lado, las características anteriormente explicadas son para el
FPGA genérico, pero existen variedad de ellos, se mencionará solo los
más importantes en este caso.
Los FPGA de Altera se basa mucho en la arquitectura de los FPGA
comunes, ya que contienen la estructura de las tablas LUT para sus
módulos lógicos, que en este caso son módulos lógicos adaptativos ALM
(Adaptive Logic Module) de igual manera con suma de productos (SOP).
Los cuales son la unidad básica de diseño de estos FPGA (Stratix II), los
cuales contienen una
sección de lógica
combinacional o registrada,
SOP, FF y demás para la
creación de funciones
aritméticas (recuento y
desplazamiento) (Imagen
13) .
Sus modos de operación se
basan en 4: El normal, el
Imagen 13.- Modulo ALM de Stratix II
LUT ampliado, aritmético y
aritmético compartido. Estos son para la cadena de registros y así crear
contadores y registros de desplazamiento.
El esencial es el modo normal y el LUT ampliado, ya que el modo normal
se utiliza para la generación de lógica combinacional, implementando
una o dos funciones de salida gracias a las dos tablas de LUTs que
contiene (Imagen 14).
Por el lado del LUT ampliado, expande la función a 7 variables en vez de
6 como en el normal.

Imagen 15.- Configuración o


modo LUT del ALM

Imagen 14.- Posibles configuraciones


en ALM de su LUT en modo normal

Finalmente, los dispositivos XILINIX son combinación de dos líneas de


FPGA: Spartan y Virtex, los cuales son FPGA de plataforma ya que
tienen funciones integradas (memorias, procesadores, transceptores y
otros módulos IP hardware y software). La arquitectura de estos son
como el de un FPGA tradicional, pero con una especificación llamada
arquitectura ASMBL (Application SpecificModular Block) con más de
miles de millones de transistores dentro del mismo dispositivo. Donde
dentro de el mismo FPGA tiene sus CLBs
con unidades básicas de lógica (Logic
Cells, LC). Cada una de estas tiene lógica
LUT de 4 entradas , junto con lógica
adicional y un FF (SOP de 16 términos
distintos). Su densidad varia dentro de
los 2k hasta 74k celdas lógicas en el
mismo Virtex (Imagen 16).
Dentro de este tipo de FPGA, se puede
crear una cadena de suma de productos
la cual se basa en dos LC junto a un MUX
(en vez de un OR) para así expandir la
función de la SOP.

Imagen 16.- CLB dentro de un


Virtex
Uso de los FPGA

Si bien se ha sabido las partes principales de un FPGA (el que son y


cómo funcionan) además de algunas características de estos. Sin
embargo, no se ha destinado el para que se usan.
EL uso de los FPGA es muy amplio en varios sectores de la electrónica,
ya sea por su versatilidad y flexibilidad al ser aplicados en el
procesamiento digital de las señales (DSP), comunicaciones,
procesamiento de datos, entre otros más. Si bien, mayormente es para
el tratado de señales ya que los CPLD o PLD no tienen un tratamiento
tan alto de frecuencias como el de un FPGA.
Las aplicaciones mas importantes para los sectores destacados son los
siguientes:

• Comunicaciones (radio definida por software SDR)

Dado que los algoritmos de estos sectores son más complejos en un


entrono de tiempo real, dado que el mecanismo simple de la antena
encargada de recibir y enviar señales era muy lento cuando modificaba
su frecuencia a grandes rasgos y no podía modificar la funcionalidad
para lo que fue diseñado. Es por lo que el uso del FPGA en estos
sectores se combinan con ADC o DAC para crear convertidores
sustituyendo a la antena, ya que
también viene definida por el
software, haciendo que su
modificación o actualización del
dispositivo sea sencilla y no
requiere de algún dispositivo
externo extra (Imagen 17).
Imagen 17.- Uso en el sector de
comunicaciones de un FPGA

• Sistemas de visión artificial

El funcionamiento de los FPGA aquí es el modo de almacenamiento que


se le puede dar ya que muchos dispositivos precisan de un sistema para
conocer su posición, reconocer objetos del entorno, reconocer rostros
para así poder interactuar de forma adecuada con ellos. Es decir,
requiere manejar volúmenes altos de imágenes, es por ello que se opta
usar un FPGA con almacenamiento SRAM para guardar datos y no
sobresaturar el dispositivo de manera independiente. Algunos ejemplos
de estos son como las cámaras de videovigilancia, robots, imágenes
medicas (rayos x, procesos PET, scanner CT, imágenes tridimensionales,
etc.), ya que las prestaciones que provee el FPGA son de frecuencias y
procesamiento en paralelo adaptándose bien a las necesidades de los
dispositivos y/o usuarios.

• Codificación y encriptación (criptografía)

Este es la capacidad de configurar las unidades computacionales con un


ancho de bits necesario, baja latencia y alta capacidad matemática, esto
por su alta capacidad y almacenamiento de los FPGA.

• Radioastronomía

Al estudiar fenómenos em el espacio mediante la captación de ondas,


señales o radiación electromagnética, los FPGA se usan para el gran
procesamiento de las imágenes a tratar ya que es una cantidad muy
grande de información dando el máximo potencial del uso de el ya
mencionado.

• Reconocimiento de voz

Al ser tan bueno el FPGA en este ámbito, resulta muy eficiente al


comparar frecuencias de la onda de voz de un ser humano, ayudando a
que, gracias a su almacenamiento, se pueden comparar ambas
frecuencias para detectar similitudes.

• Data center o Cloud

Al generar demasiado crecimiento exponencial de datos adquiridos y


procesados en internet, se lleva a una alta demanda de capacidad
computacional, ya sea por la latencia, flexibilidad y seguridad de estos
en cierto apartado del almacenamiento, entonces se gasta espacio,
consumo y dinero. He ahí donde entra el FPGA gracias a su alta
capacidad de aceleración computacional, flexibilidad al ser configurado y
la seguridad de software y hardware.
• Ingeniería de control

La alta capacidad de crear controladores en base a un FPGA esta abierto


a la posibilidad de reconfigurar este durante el tiempo de ejecución en la
fabricación de este en fabrica o libre, ya que permite una adaptación al
entorno de trabajo con el al dar libre albedrio de la selección del
algoritmo que se ajuste, además de disminuir tiempo de implementación
y es ahorrador en recursos lógicos.

Empresas que lo desarrollan

A inicios del 2007, el mercado del FPGA ha estado entre el productor de


propósito general y de conjunto de competidores con dispositivos con
características más específicas (FPGA con módulos), siendo alguno de
ellos los que se mencionaran a continuación.

Xilinix

Al ser uno de los grandes lideres de fabricación de los FPGA, se


caracteriza por ser una compañía de tecnología estadounidense además
de ser la primera compañía manufacturera de modelos fabless
(fabricante de semiconductores que carece de una planta de fabricación
propia, especializándose en chips). Sus creaciones van desde los Virtex
(alto rendimiento) Kintex (medio rendimiento) y Artix (bajo
rendimiento), con un software computacional Xilinix ISE y Vivado Design
Suite.

Altera

También al ser uno de los fabricantes grandes, y ser uno de los lideres y
pioneros en lógica programable, desarrolla características orientadas a
chips programables SOPC, creando así procesadores embebidos,
transceptores y memoria embebida dentro de sus FPGA, ofreciendo el
software de Quartus II, dirigido al diseño y simulación de circuitos
lógicos.

Lattice Semiconductor
Al sacar al mercado su tecnología de 90nm, es el líder de la tecnología
no volátil gracias a las grandes ventajas de sus FPGA, ofreciendo desde
dispositivos RAM combinados con tecnología no volátil no
reprogramable.

Actel

Fabricante de macroceldas de puertas lógicas programables en FPGA de


baja potencia no volátiles, creando consigo su tecnología Flash
reprogramable, siendo su foco los FPGA de núcleos hardware con un
procesador ARM (SRAM).

Atmel corp/Microchip technology

Al producir microcontroladores derivados del 8051, AT91SAM basados


en ARM y arquitecturas variadas; su especialidad es dispositivos de
radiofrecuencia, memorias EEPROM y Flash, ASICs, WiMAX y demás.
Siendo de gran uso en mercados de consumo, comunicaciones,
computadores, redes, electrónica industrial, medicina, automotriz,
aeroespacial y militar. Es decir, son sistemas seguros.

Achronix Semiconductor

Es una empresa sin fabrica que vende FPGA de alta velocidad (eFPGA),
es decir, productos a nivel de sistema y herramientas de diseño para el
apoyo, tales como sus más famosos FPGA Speedster7t (dispositivos
autónomos con tecnología FinFET de 7nm de TSMC), Speedcore eFPGAs
(una IP FPGA que se integra en un dispositivo SoC o ASIC, donde sus
CLB son indicados por el cliente, RAM lógica y bloques DSP y MLP),
Tarjetas aceleradoras VectorPath (una tarjeta basada en los FPGA
Speedster7t, la cua tiene interfaces de red 400G y 200G, 8 memorias
GDDR6 y puertos de expansión adicionales para personalizar la
conectividad) y ACE (herramientas de desarrollo para diseñar FPGA y
eFPGA Achronix).

Estas son algunas de las empresas más importantes que se mantienen


aun al margen del mercado de los FPGA.
Software de implementación

Se es necesario cuatro elementos para la implementación de la


programación de un FPGA los cuales son: una computadora, un software
de desarrollo, un dispositivo
lógico programable (FPGA en
el caso) y una manera de
conectar el dispositivo a la
computadora. Donde el
proceso de programación
(software) se le denomina
flujo de diseño (Imagen 18)
haciendo un proceso de
manera automática si se tiene Imagen 18.- Diagrama de flujo de diseño para
los elementos para su la programación de un dispositivo FPGA,
programación hacia el SPLD o CPLD
dispositivo de destino.
Donde para su implementación de desarrollo en un lenguaje de
programación deben estar en la categoría de CAD (Computer Aided
Design) o bien, es el software de diseño asistido por ordenador, este
sirve para crear y editar modelos bidimensionales y tridimensionales de
circuitos u objetos físicos. Este si bien es usado en ingenierías, también
se usa en civil o aeronáutica; ya que permite agilizar el trabajo,
automatizar procesos manuales del diseño del producto, además de que
reduce errores, gana velocidad y aumenta el factor de calidad,
consiguiendo eficiencia y productividad, ya que permite visualizar antes
de producir el resultado final, haciendo interactivo su uso sin necesidad
de prototipos.
Dependiendo del propósito de la idea (circuitos electrónicos) se usará si
bien el 2D o el 3D, a pesar de todo, el diseño en 3D permite una mayor
precisión y detalle del espacio de trabajo, ofreciendo una visión más real
de la idea o modelo.

Principales lenguajes de programación

El lenguaje de desarrollo para un FPGA es VHDL o Verilog, donde ambos


lenguajes de programación permiten diseñar FPGA para hacerlo
funcional con una estructura de hardware de bajo nivel.
VHDL

Es un lenguaje IEEE utilizado para describir circuitos digitales y


automatizar el diseño electrónico (lenguaje de descripción de hardware).
Donde su acrónimo proviene de VHSIC (Very High Speed Integrated
Circuit) y HDL (Hardware Description Language).
Dentro de este hay varias formas para diseñar el circuito:
• Funcional o comportamental: Describiendo el comportamiento
del circuito, contando solo las características respecto a las
entradas y salidas (donde puede ser secuencial los procesos del
VHDL), es decir, son procesos ejecutados en paralelo entre sí, y
en paralelo con asignaciones concurrentes de señales y con las
instancias a otros componentes.
• Flujo de datos: Son asignaciones de las señales en paralelo.
• Estructural: Se forma una jerarquía superior con base a las
instancias de los componentes del circuito, esto dado a que se
conectan los puertos de estas instancias con las señales internas
del circuito. Esta se recomienda cuando el diseño digital se vuelve
complejo o se forma por muchos bloques de hardware.
• Mixta: Es la combinación de todas o algunas de las maneras de
describir el circuito.

Algunas de las herramientas para programar con VHDL son Warp,


Altera, Xilinix, ActiveVHDL, GHDL (GNU), MAX+Plus II, Quartus II,
ModelSIM/ISE, entre otros programas con la capacidad de programar
FPGA usando sus propios lenguajes.
Verilog

Al igual que el VHDL, es un lenguaje de descripción de hardware para


modelar sistemas electrónicos, probando e implementando circuitos
analógicos, digitales y de señal mixta a diferentes niveles de
abstracción. Este es muy similar al lenguaje C, haciendo cómodo al
usuario o ingeniero trabajar con un lenguaje familiarizado. Este consiste
en una jerarquía de módulos definidos con conjuntos de puertos de
entrada, salida y bidireccionales (cables y registros) definiendo las
sentencias secuenciales y concurrentes junto al comportamiento del
módulo, es decir, describen los cables, puertos y registros. La estructura
de Begin/End guarda las sentencias secuenciales y ejecuta su orden
secuencial. A pesar de ello, todas las sentencias concurrentes y los
bloques de begin/end se ejecutan en paralelo.
Por otro lado, un subconjunto de sentencias es el lenguaje sintetizable,
es decir, se puede convertir una lista de nodos que describen los
componentes básicos y los Conectores que se implementaran en
hardware, la cual se transforma o puede se transformada en un circuito
integrado (ASIC) o una cadena de bits para un FPGA.

Memorias y almacenamiento

La memoria es un almacenamiento de datos binarios de grandes


cantidades, donde existen varios tipos de los cuales se mencionarán las
más importantes tales
como las memorias
semiconductoras formadas
por matrices de
almacenamiento (LATCH o
condensadores).
Sus unidades de datos
binarios son los bits (unidad
menor de los datos
binarios), byte (8 bits o
Imagen 19.- Matriz de almacenamiento de 64 múltiplos de 8), nibbles (4
celdas (3 formas distintas) bits) y las palabras (uno o
más bytes). En base a lo
anterior, se puede crear la
matriz de la memoria de
manera básica donde puede
almacenar1 o 0 en cada
celda (ejemplo imagen 19).
Cada bloque de la matriz de
memoria es una celda de
almacenamiento y puede ser
fila o en columna, es decir,
su organización.
Imagen 20.- Ejemplo de direcciones de memoria
Esto debido a la posición de en una matriz bidimensional
los datos dentro de la matriz
(dirección), es decir, la dirección de un bit en una matriz d 2
dimensiones se da por filas y columnas, pero depende de la organización
de la memoria en unidades de datos (Imagen 20).
Por otro lado, la capacidad de la memoria se basa en el número total de
los datos que puede almacenar, es decir, el tope de su matriz de
almacenamiento (por ejemplo, la de 64 bits con espacio de 8 bytes).
Este tipo de matrices tienen una operación dentro del dispositivo, es
decir, tienen dos modos de operación: de escritura y lectura.

Operación de escritura

Para almacenar datos en la memoria, se introduce en el registro de las


direcciones un código que se encuentra almacenado en el mismo. Una
vez hecho esto, el decodificador de direcciones obtiene la dirección y
selecciona la posición de la memoria a dar, donde la memoria recibe la
señal de escritura y se almacena en los registros de datos
almacenándose en la memoria especificada (Imagen 21).

Imagen 21.- Operación de escritura


Operación de lectura

Es lo mismo que en el de escritura, sin embargo, en este la memoria


recibe la orden de lectura, donde se copia el byte especificado en el
almacenamiento, cargándose en el registro de datos a través del bus de
datos (Imagen 22).

Imagen 22.- Operación de lectura

En el campo de las memorias semiconductoras dominan las RAM y ROM.


Donde las RAM (Random-Access Memory) es la que se tarda lo mismo
en acceder a cualquier dirección de memoria siendo seleccionadas de
cualquier manera u orden (de lectura o escritura). Estas pierden los
datos almacenados cuando se desconecta la alimentación, haciéndolas
volátiles.
En cambio, las ROM (Read-Only Memory) es donde los datos se
almacenan de manera permanente o semipermanente, donde no se les
puede operar de manera escrita. Esta es de acceso aleatorio, pero solo
que esta es para lectura. Haciendo de estas no volátiles.
RAM

Como bien se menciono con anterioridad, estas cuando se escriben los


datos en una determinada dirección de la RAM, los datos almacenados
son remplazados por nuevos, si bien no son destruidos, si no que crean
una copia del contenido de una dirección por la operación de lectura,
dejando el contenido intacto. Entonces, a RAM se utiliza mas para el uso
de almacenamiento de datos a corto plazo, ya que no puede conservar
datos almacenados cuando se desconecta de la alimentación.
Para esto, existen distintos tipos de familias de la RAM:
• SRAM: Es una RAM estática
la cual se caracteriza por las
celdas de memoria latch, es
decir, se mantiene en 1 o 0
indefinidamente (Diagrama
2) donde su matriz básica se
organiza en filas y columnas,
donde cada celda va a una
única línea de datos (E/S), a
través del buffer de entrada
y salida de datos (Imagen
23). Diagrama 2.- Celda típica de memoria
Donde tiene cierta SRAM (LATCH)
configuración para escribir
datos (por ejemplo, en este
caso de 4 bits, la línea de
selección fija se pone en 1 y
los cuatro bits de datos se
colocan en las líneas de
entrada de datos. Entonces
write se pone en 1,
almacenando cada bit en una
celda seleccionada en la
columna asociada).
En este caso puede haber Imagen 23.- Matriz SRAM básica
dos tipos de SRAM que
cumplen distintos funcionamientos, estas son las síncronas y
asíncronas.
Las SRAM asíncronas son las que en su funcionamiento no esta
sincronizado con un reloj de sistema, es decir, no depende de la
frecuencia del reloj de la unidad procesadora. Este depende de sus
salidas (permiten que los datos actúen como líneas de entrada o
salida y conectan la memoria con el bus de datos en una
computadora), su matriz de memoria (organizados en bits,
nibbles, bytes o múltiplos de bytes), su lectura (la salida de los
datos), su escritura (llevados a través del control de datos de
entrada y la de E/S de columna a la dirección seleccionada para
ser almacenados) y sus ciclos
de las dos anteriores (es decir,
tiempos dentro de la
memoria, esto para un
periodo de ciclo de lectura y
escritura, dado que se debe
escribir en la memoria una
unidad de datos para ser leída
(Imagen 24)).
Por otro lado, las SRAM
síncronas las importantes son
las de ráfaga, esta si esta
sincronizada al reloj del
sistema, operando con la
misma señal de reloj que la de
un microprocesador (por
ejemplo), haciéndose una
Imagen 24.- Ejemplo de diagramas de tiempo sincronización de ambos
de los ciclos de lectura y escritura básicos de la dispositivos haciendo una
SRAM operación más rápida. Su
funcionamiento se explica en
la imagen 25, entonces, dado que esta utiliza registros con señal de
reloj para sincronizar todas las entradas con el reloj del sistema. Tanto
la dirección como la entrada de escritura/lectura (W/R), la señal del chip
y los datos de entrada se colocan en los flancos de los registros activos,
haciendo sincronía.
Imagen 25.- Diagrama de bloques básico de un SRAM síncrona

Entonces, su operación en ráfaga se representa por sus direcciones, ya


que permite a la memoria leer o escribir hasta cuatro posiciones
utilizando una única
dirección, donde los dos
bits menos significativos
se aplican al circuito
produciendo una
secuencia de cuatro
direcciones internas
(Imagen 26).
Imagen 26.- Lógica de ráfaga de direcciones

• DRAM: Su principal uso de las DRAM es para las computadoras,


ya que sus tipos de celdas de memoria esta formada por un
transistor y u condensador, permitiendo densidades mayores que
la de la SRAM, pero el tiempo de acceso es mucho mayor. Y dado
que la carga almacenada en el capacitor se pierde, sus celdas
requieren una operación de refresco frecuente para conservar los
datos almacenados. Utilizando así la multiplexación de direcciones,
la cual sirve para reducir el número de líneas de dirección, además
de tener sus ciclos de lectura y escritura como en el SRAM. Sin
embargo, a estos se les agrega el modo de página rápido, esto por
los ciclos de lectura y escritura. Se le dice página a la sección de
memoria disponible en una misma dirección de fila y que consta
de todas las columnas de dicha fila; permitiendo operaciones de
lectura y escritura sucesivas
en todas las direcciones de
columna de una fila
seleccionada (Imagen 27).
Además de tener de ciclos
de refresco, estos son
debidos a la descarga del
Imagen 27.- Cronograma del modo de página de
la operación de lectura capacitor conforme pasa el
tiempo y la temperatura,
haciendo que cada bit se refresque periódicamente. Donde la operación
de lectura refresca todas las direcciones de la fila seleccionada, pero no
se debe depender de un solo ciclo de lectura, esto para evitar la perdida
de datos. Donde ahí entran los tipos de refresco especial:
Refresco solo con RAS y refresco CAS antes de RAS. El primero trata de
la transición de una señal RAS a 1, que almacena la dirección de la fila
latch y así realizar el refresco, mientras que la línea CAS permanece en
0 a lo largo del ciclo, utilizando n contador externo para proporcionar las
direcciones de fila en este tipo de operación.
El otro tipo de refresco se basa en la línea CAS en 1 y RAS en 0,
activando un contador de refresco interno generando la dirección de la
fila para realizar la descarga, conmutando los datos hacia el
decodificador de filas.
Este consta de 3 tipos de RAM:

• FPM DRAM: Se basa en la probabilidad de las direcciones de


memoria siguientes a las que haya que acceder se encuentren en
la misma fila (o misma página).
• EDO DRAM: DRAM con salida de datos extendida o con modo
hiperpágina (similar al anterior), no desactiva los datos de salida,
pudiendo acceder a la siguiente dirección de columna antes de que
el sistema externo acople los datos validos actuales. Acelera el
tiempo de acceso.
• BEDO DRAM: Mismo funcionamiento de SRAM síncrona de ráfaga,
ahorrando tiempo de acceso.
• SDRAM: Sincronizada con el reloj del sistema, con la misma
operación del SRAM síncrona de ráfaga , sin embargo, el
procesador espera al SDRAM a terminar sus operaciones internas,
permitiendo que el procesador gestione otras tareas mientras se
realiza las operaciones de lectura o escritura en la memoria.
Ahorrando tiempo de ingreso.

ROM

Este tipo de memorias se mantienen de forma permanente o


semipermanente por sus datos almacenados, los cuales pueden ser
leídos o se requiere de un equipo externo para cambiarlos. Estos
almacenan datos que se utilizan de manera repetida en aplicaciones
(tablas, conversiones o instrucciones programadas), estas no son
volátiles. Estas tienen tres conjuntos de señales: entrada de dirección,
entrada de control y salida de datos, caracterizándose por dos
elementos principales: su arreglo de registros y decodificadores de
dirección. Donde el arreglo de registros almacena los datos que se
programan en la ROM. Cada registro contiene varias celdas de memoria
que equivalen al tamaño de palabra.
A grandes rasgos la familia de las ROM se indica en la imagen 28

Imagen 28.- Familia de las ROM


• MROM o rom de mascara: Esta almacena su información al
momento en que se fabrica el circuito integrado, compuestas por
un arreglo rectangular de transistores. Los datos se almacenan
por la conexión o desconexión de la fuente de un transistor con la
columna de salida (salidas), y se le llama mascara por el proceso
de rutas conductoras o bien sus conexiones. Aquí se utiliza una
“mascara” para depositar metales en el silicio, donde se
determinan se forman conexiones de una manera similar al de
pinturas en aerosol, pero de manera mas pequeña. La mascara es
precisa y costosa, la cual se debe fabricar dependiendo de la
especificación del cliente y su información binaria de manera
correcta.
• PROM: Esta se creo a partir del menor volumen que de las MROM,
ya sea por economía o simple producción. Estas tienen enlaces de
fusible, las cuales pueden ser programadas por el usuario (no
durante el proceso de fabricación, sino por programas y según sea
la necesidad). Sin embargo, una vez ya programada la PROM se
convierte en una MROM ya que no se puede borrar ni
reprogramarse, dando el hecho de que si la PROM tiene fallas o se
quiere modificar, se debe hacer una nueva, ya que esa es
obsoleta.
• EPROM: Esta se puede programar por el usuario, borrarse y
reprogramar casi todas las veces necesarias. Sin embargo, una
vez a programada se hace una memoria no volátil que almacenara
los datos en forma indefinida, siendo el mismo proceso de
programación que la del PROM.
• EEPROM: Misma estructura que la EPROM de compuerta flotante,
pero agrega una región de oxido muy delgada por encima del
colector de la celda de memoria de MOSFET, produciendo que su
capacidad se borre mediante electricidad.
• CD-ROM: También conocido como disco compacto (CD) es un tipo
de almacenamiento de solo lectura utilizado para sistemas
computacionales, siendo las mismas tecnologías de disco y
hardware utilizados por sistemas de audio para recuperar
información.

Si bien, la RAM y el ROM se pueden usar como memoria de la


computadora de manera interna para dar una mayor velocidad al
sistema, comunicándose con el CPU (como el microprocesador) donde
sus funciones principales pueden ser aptas y especiales para funciones
de equipos y sistemas digitales. Entonces, el funcionamiento de ambas
tipos de memorias dependen del panorama visto por la situación del
usuario, es decir, la RAM a partir de ser volátil y dar una pérdida de
datos, no puede almacenar y guardar datos cuando se desconecta de la
energía, sin embargo su gran velocidad y uso de recursos bien
aprovechados según sea su tipo de RAM, se puede dar por bien para
suministrar mayor velocidad pero teniendo perdida de datos a partir de
desconexión de energía. Por otro lado, la ROM funciona como u no
volátil, y al ser de solo leída y puede que sea reprogramable, hace que
la cantidad de su capacidad de almacenamiento sea grata para el
usuario sin necesidad de contar con la perdida de datos, pero sin una
velocidad igual que la de la RAM.
ES por ello que en sistema computacionales se combinan ambas
memorias para dar mayor provecho dentro de un CPU, junto a
microprocesadores y configuraciones variadas para aprovechar al
máximo el rendimiento del sistema y, más que eso, comprender el para
que se utilizan estos tipos de dispositivos en el campo electrónico.
Bibliografia

Floyd, T. L. & Vuelapluma, S. L. (2016). Fundamentos de sistemas


digitales. Pearson Educación.

Mano, M. M. (2001). Digital Design (3.a ed.). Prentice Hall.

Tocci, R. J. (2017). SISTEMAS DIGITALES. Pearson Educación.

Martínez Manzano, P. (2019, 18 junio). FPGA (field programmable gate


array). MCI Capacitación. Recuperado 7 de diciembre de 2022, de
https://cursos.mcielectronics.cl/2019/06/18/fpga-field-programmable-
gate-array/

TecnologÃ-as, G. (s. f.). Arquitectura FPGA - GENERA TecnologÃ-as.


https://www.generatecnologias.es/arquitectura_fpga.html

404 File not Found - Repositorio Institucional de la Universidad de El


Salvador. (s. f.).
https://ri.ues.edu.sv/id/eprint/9862/1/Principios+del+FPGA+y+aplicacio
nes+en+el+control+de+procesos+industriales.pdf

colaboradores de Wikipedia. (2022, 22 mayo). Field-programmable gate


array. Wikipedia, la enciclopedia libre.
https://es.wikipedia.org/wiki/Field-programmable_gate_array

TecnologÃ-as, G. (s. f.-b). Desarrollo de FPGA: Empresa de IngenierÃ-a


ElectrÃ3nica - GENERA TecnologÃ-as.
https://www.generatecnologias.es/desarrollo_fpga.html

colaboradores de Wikipedia. (2022b, mayo 31). VHDL. Wikipedia, la


enciclopedia libre. https://es.wikipedia.org/wiki/VHDL

colaboradores de Wikipedia. (2021, 4 enero). Verilog. Wikipedia, la


enciclopedia libre. https://es.wikipedia.org/wiki/Verilog

Integral Innovation Experts. (2021, season-02). Qué es CAD, para qué


sirve y qué ventajas tiene. Recuperado 7 de diciembre de 2022, de
https://integralplm.com/blog/2019/08/20/que-es-cad/

También podría gustarte