UNIVERSIDAD POLITÉCNICA
DEL CENTRO
Investigaciones de la Unidad 2
Matricula - Nombre del Alumno
004424-Alan Yahir Animas Casanova
Asignatura
Programación de Sistemas Embebidos
Profesor
M.I.S. Pablo Pérez López
Cuatrimestre: 7
Grupo: M1
e-mail: ayacimhr@gmail.com
25 de octubre de 2022
T1_U2: Explicar la metodología de diseño de circuitos de pequeña
escala de integración (Small Scale Integration – SSI) combinacional y
secuencial.
Sistemas combinacionales
Son caracterizados porque no
almacenan información, las
salidas están relacionadas con
las entradas a través de una
función booleana.
Características
• Está formado por funciones lógicas elementales (AND, OR, NAND, NOR, etc.)
• Tienen un determinado número de entradas y salidas
Ejemplo:
• Codificadores
• Decodificadores
• Multiplexores
• Demultiplexores
• Comparadores
El diseño de sistemas combinaciones y secuenciales se realiza mediante uso de circuitos
electrónicos. Así tenemos la siguiente clasificación de chips:
• SSI (Small Scale Integration). Chips con menos de 12 puertas.
• MSI (Medium Scale Integration). Entre 12 y 100 puertas.
• LSI (Large Scale Integration). Entre 100 y 10,000 puertas.
• VLSI (Very Large-Scale Integration). Más de 10,000 puertas.
Sistemas secuenciales
Es un circuito en donde las salidas no solo dependen de los valores de las entradas en
el presente, sino que también dependen de un estado interno del circuito. Este estado
interno varía en función de los anteriores valores de las entradas.
Características
1. Un circuito secuencial posee
un número finito de estados.
En un instante dado el
circuito se encuentra en uno
y solo uno de sus estados.
2. Una de las entradas del
circuito secuencial se
denomina el reloj. El
intervalo entre dos pulsos de bajada del reloj es un ciclo del circuito.
El estado del circuito se mantiene constante durante un ciclo del reloj.
3. En un instante dado, el circuito calcula sus salidas en función de sus entradas,
exceptuando el reloj y de su estado interno.
4. Al final de cada ciclo (justo antes del pulso de bajada del reloj) el circuito calcula
su estado válido para el próximo ciclo en función de su estado actual y sus
entradas.
5. Un circuito secuencial actúa como circuito combinacional dentro de un ciclo. Si
cambian sus entradas, también pueden cambiar sus salidas.
Metodología de SSI (Small Scale Intregation)
Metodología de diseño combinacional
1. El diseño se realiza a partir del planteamiento de un problema.
2. Se obtiene primero la tabla de verdad de cada una de las salidas y,
opcionalmente, las expresiones canónicas.
3. Luego se procede a la simplificación para obtener una expresión booleana
mínima para cada función.
4. Por último, se
realiza el
diagrama lógico
y el circuito de
mínimo tamaño.
Método de simplificación:
1. Simplificación algebraica, aplicando directamente el álgebra de booleana. Es útil
para funciones con pocas variables.
2. Simplificación tabular, mediante tablas y mapas que representan la tabla de
verdad. Útil para funciones con hasta cinco o seis variables.
3. El método más usual es el mapa de Karnaugh.
Criterios
- Menor número de términos en la función (que equivalen a puertas lógicas).
- Menor número de variables en cada término (que equivalen a entradas de las
diversas puertas).
- Menor valor asociado: n°términos+n°variables n°términos con un solo literal-1.
T2_U2: Explicar la estructura de programas de HDL. Identificar la
organización y la estructura del lenguaje de programación VHDL.
HDL
Un lenguaje de descripción de hardware (HDL, hardware description language) es un
lenguaje de programación especializado que se utiliza para definir la estructura, diseño
y operación de circuitos electrónicos, y más comúnmente, de circuitos electrónicos
digitales, como el convertidor analógico-digital o cualquier antena digital satelital. Así,
los lenguajes de descripción de hardware hacen posible una descripción de hardware
hacen posible una descripción formal de un circuito electrónico, y posibilitan su análisis
automático y su simulación.
Los lenguajes de descripción de hardware se parecen mucho a otros lenguajes de
programación de ordenadores tales como el “C” o “JAVA”: básicamente consisten en una
descripción textual con expresiones, declaraciones y estrcuturas de control.
La estructura de los HDL es que utilizan expresiones estándares basados en texto que
reflejan la estructura de los circuitos electrónicos, si se vieran dentro de una tarjeta, se
podrían más de un millón de compuertas a disposición del programador. Al igual que
los lenguajes de programación concurrentes, la sintaxis y semántica de los HDL
incluyen notaciones especificas para la concurrencia. Sin embargo, al contrario de lo
que ocurre con la mayoría de los lenguajes de programación, los HDL incluyen también
una notación especifica para el tiempo, debido a que este es una característica
fundamental en los circuitos electrónicos reales. Los lenguajes cuyo único propósito es
expresar la conectividad entre una jerarquía de bloques son más bien clasificadas como
“lenguajes de listas de conexiones” (o lenguajes “netlist”), tales como los que se usan en
los programas de diseño asistido por ordenados (CAD). Los HDL son algo más rico que
estos lenguajes de listas de conexiones, ya que no sólo permiten definir la estructura de
un circuito, sino también su comportamiento. Así, los HDL pueden ser usados para
escribir especificaciones “ejecutables” de hardware. Es decir, un programa escrito en
HDL hace posible que el diseñador de hardware pueda modelar y simular un
componente electrónico antes de que este sea construido físicamente. Es esta la
posibilidad de “ejecución” de componentes lo que hace que a veces los HDL se vean
como lenguajes de programación convencionales, cuando en realidad se debería
clasificarlos más precisamente como lenguajes de modelado.
En la práctica existen distintos tipos de simuladores capaces de trabajar tanto con
eventos discretos (digitales) como continuos (analógicos), existiendo lenguajes HDL
específicos para cada caso. Pero desde el punto de vista práctico, una gran ventaja de
los HDL está en que, utilizando un programa llamado “sintetizador” es posible inferir, a
partir de la expresión textual del programa, el conjunto de operaciones lógicas y el
circuito equivalente necesario para realizar la función del programa. El conjunto de
operaciones lógicas y el circuito equivalente necesarios para realizar la función del
programa. Esto permite saltar desde el ámbito de la simulación software al de la
implementación real del hardware sobre circuitos lógicos reales tales como los ASIC o
las FPGA.
VHDL
Es un lenguaje de especificación definido por el IEEE (Institute of Electrical and
Electronics Engineers) utilizando para describir circuitos digitales y para la
automatización de diseño electrónico, a estos lenguajes se les suele llamar lenguajes de
descripción de hardware.
El lenguaje VHDL fue desarrollado por el departamento de defensa de los Estados
Unidos a inicios de los años 80 basado en el lenguaje de programación ADA con el fin
de simular circuitos eléctricos digitales. Posteriormente se desarrollaron herramientas
de síntesis e implementación en hardware a partir de los archivos VHD. Otros métodos
para diseñar circuitos son la captura de esquemas (con herramientas CAD) y los
diagramas de bloques, pero estos no son prácticos en diseños complejos. Otros
lenguajes para el mismo propósito, pero con un nivel de abstracción superior son
“Verilog” y “ABEL”.
La organización de un programa en VHDL está formada por módulos o unidades de
diseño, cada uno de ellos compuestos por un conjunto de declaraciones e instrucciones
que definen, describen, estructuran y evalúan el comportamiento de un sistema digital.
Existen cinco tipos de unidades de diseño en VHDL:
• Declaración (entity declaration)
• Arquitectura (architecture)
• Configuración (configuration)
• Declaración del paquete (package declaration)
• Cuerpo del paquete ( package body)
Cuando se trabaja en VHDL puede utilizarse tres de los cinco módulos, pero solo dos de
ellos deben utilizarse (entidad y arquitectura) ya que son indispensables para que
funcione.
La estructura del VHDL fue diseñado con base a los principios de la programación
estructurada. La idea es definir la interfaz de un módulo de hardware mientras deja
invisible sus detalles internos. La entidad (Entity) en VHDL es simplemente la
declaración de las entradas y salidas de un módulo mientras que la arquitectura
(Architecture) es la descripción detalla de la estructura interna del módulo o de su
comportamiento. Muchos diseñadores conciben la “Entity” como una funda de la
arquitectura dejando invisible los detalles de lo que hay dentro (architecture). Esto
forma la base de un sistema de diseño jerárquico, la arquitectura de la entidad de más
nivel (top level) puede usar otras entidades, dejando invisible los detalles de la
arquitectura de la identidad de menos nivel. En un fichero texto VHDL la entidad y la
arquitectura se escriben separadas, por ejemplo, a continuación, se muestra un
programa muy simple en VHDL de una compuerta de 2 entradas. Como otros
programas, VHDL ignora los espacios y saltos de líneas. Los comentarios se escriben
con 2 guiones (--) y terminan al final de la línea. En la siguiente figura se muestra la
estructura de un modelo en VHDL.
Sintaxis para la declaración de la entidad
HDL define muchos caracteres especiales llamados “palabras reservadas”. Aunque las
palabras reservadas no son sensibles a las mayúsculas o minúsculas, en el ejemplo que
sigue las utilizaremos en mayúsculas y negrita para identificarlas.
Además de darle nombre a la entidad el propósito de la declaración es definir sus
señales (o ports) de interfaz externa en su declaración de ports. Además de las palabras
reservadas o claves ENTITY, IS, PORT and END, una ENTITY tiene los siguientes
elementos.
• Nombre_entidad; es un identificador seleccionado por el usuario para
seleccionar la entidad.
• Nombre de señal; es una lista de uno o más identificadores separados por una
coma y seleccionados por el usuario para identificar las señales externas de la
interfaz.
• MODO es una de las 4 siguientes palabras reservadas para indicar la dirección
de la señal.
Cuando se omite el modo de una señal en la declaración de la entidad se sobreentiende
que es de entrada.
• Tipo de señal; en VHDL, hay varios tipos de señales predefinidas por el
lenguaje, tales como:
Sintaxis para la definición de la arquitectura
La sintaxis para la declaración de la arquitectura es la siguiente (aparecen en mayúscula
las palabras reservadas del lenguaje VHDL, pero esto no es necesario):
Las declaraciones y definiciones que preceden al BEGIN, pueden estar presentes todas,
algunas o ninguna. Esto depende del tipo de diseño que se esté realizando. No obstante,
la declaración de señales se utiliza mucho, pues contribuye entre otras cosas a la
claridad del diseño.
“Nombre_entidad” es el nombre de su entidad. “Nombre_arquitectura” es el nombre
dado por el usuario a la arquitectura. Las señales externas de la arquitectura son las
declaradas en el port de la entidad, no obstante, una arquitectura puede contener
señales y otras declaraciones que solo existen localmente en esa arquitectura.
Declaraciones comunes a varias entidades pueden ser puestas en un “paquete”
separado utilizado por todas las entidades. Las declaraciones en la arquitectura pueden
aparecer en diferente orden, pero lo más usual es comenzar por la declaración de las
señales. “Signal signal-name: signal-type” Variables en VHDL son similares a las señales
excepto que ellas no tienen significado físico en el circuito. En el ejemplo anterior no se
puso declaración de variables, ellas son usadas en funciones, procedimientos y
procesos. Todas las señales, variables y constantes en VHDL tienen asociadas un tipo,
este especifica el conjunto de valores que el objeto puede tomar. También hay un
conjunto de operadores tales como “add”, “and”, etc. Asociados con un tipo dado.
T3_U2: Explicar el procedimiento de programación de circuitos SSI
combinacionales y secuenciales en VHDL.
Aun cuando la mayoría de descripciones van a ser de flujo de datos o algorítmicas, por
ser las más cercanas al pensamiento humano, resulta interesante conocer una
descripción que va a permitir la incorporación al diseño de elementos de biblioteca,
realización de diseños jerárquicos a partir de componentes, etc. La descripción
estructural es el estilo de VHDL más cercano al Netlist, por lo que soporta la definición
y referencia (instanciación) de componentes y la especificación de interconexiones
entre unos y otros. Este estilo lo utilizan sobre todo las herramientas CAD para
intercambiar información entre ellas. La descripción estructural en VHDL incluye las
dos construcciones básicas: la de componentes y la forma en que se interconectan, es
por ello que a continuación se mencionan brevemente la declaración de componentes
y la interconexión entre ellos.
Definición de componentes.
Los componentes se declaran con la palabra especial component. Esto es algo muy
parecido a la entidad (entity). La declaración de componentes es:
• component nombre [is]
o [generic (lista_parámetros); ]
o [port (lista_puertos); ]
• end component [nombre];
Enlace entre componentes y entidades.
Cada componente debe enlazarse con una entidad y una arquitectura predefinida, para
que se pueda referenciar en el diseño tantas veces como sea necesario. El enlace entre
componentes, entidades y arquitecturas se realiza mediante sentencias for. La sintaxis
para este enlace es:
• for lista_refs: nombre_componente
o use entity nombre_entidad(nombre_arquitectura) | use configuration
nombre_config
• [generic map (parámetros)]
• [port map (puertos)]
Repeticion de estructuras: generate.
En muchas ocasiones el hardware está compuesto por estructuras que se repiten una y
otra vez. Para poder describir estructuras repetitivas, el VHDL tiene la instrucción
generate que repite, tantas veces como se diga, las sentencias especificadas en su
interior. Las dos formas de esta sentencia son:
La forma más común es la de la izquierda. La etiqueta, al igual que en los block, es
también obligatoria.
Esta sentencia es concurrente, por lo que no debe estar dentro de los process o
subprogramas. Pero puede incluir cualquier instrucción concurrente, como sentencias
de block o process.
Definición de señales.
Las señales sirven para conectar unos componentes con otros. Se declaran igual que las
señales de cualquier otro tipo de descripción y tienen exactamente el mismo
significado.
Referencia de componentes.
Un mismo componente se puede reproducir (instanciar, referenciar replicar, copiar,
etc.) tantas veces como se necesite en la arquitectura. Es una instrucción concurrente y
su forma general es la siguiente:
Configuración.
Algunas de las definiciones anteriores, especialmente la de enlace, se pueden
especificar en un bloque especial llamado configuración. La forma general de la
declaración de la configuración de una entidad es la siguiente:
T4_U2: Explicar el procedimiento de implementación del programa
VHDL de circuitos SSI en PLD.
A mediados de los años ochenta el Departamento de Defensa de los Estados Unidos y la
IEE (Institute of Electrical and Electronics Engineers) patrocinaron el desarrollo de este
lenguaje de descripción de hardware con el propósito de desarrollar circuitos integrado
de muy alta velocidad. Hoy en día VHDL se ha convertido en uno de los estándares en
la industria más usados para describir sistemas digitales. Este tipo de lenguajes es
usado para implementarlos en un PLD (Programmable Logic Device). El PLD más
simple está formado por un vector de compuertas de tipo AND que es programable y
otro de compuertas de tipo OR que no es programable. Estos pueden interconectarse
utilizando tecnología EPROM, EEPROM o FLASH de la manera que se desee, así teniendo
diferentes funcionamientos. Las ventajas de utilizar PLDs es que un solo PLD puede
sustituir 10 o más circuitos TTL.
El lenguaje VHDL es un lenguaje de descripción de hardware que provee un medio para
especificar un sistema digital en una amplia gama de niveles de abstracción. El lenguaje
soporta los primeros estados conceptuales de un diseño con su nivel de abstracción de
comportamiento. Este lenguaje también provee construcciones jerárquicas que
permiten al diseñador controlar la complejidad de la descripción. La programación en
VHDL está formada por entidades que tienen una arquitectura y esta a su vez tiene
procesos. En la declaración de entidades se definen las entradas y salidas del circuito
especificando cuántas son, el tamaño, si son de entrada o salida y el tipo. Se puede decir
que una entidad es el equivalente al esquemático de lo que queremos representar que
describe las conexiones de un componente al resto del proyecto.
El modo de una entidad puede ser de cuatro tipos, entrada (in), salida(out), buffer o
bidireccional (inout). El tipo puede ser de la siguiente forma:
• Bit - Puede tener el valor de 0 ó 1.
• Bit_vector – Es un vector de bits del tamaño que se necesite
• Std_logic, std_ulogic, std_logic_vector, std_ulogic_vector – Puede tener
nueve valores para indicar la intensidad de la señal.
• Boolean – Puede tener los valores de verdadero y falso.
• Integer – Puede tener un rango de valores de números enteros.
• Real – Puede tener un rango de números reales
• Character – Puede tener el valor de cualquier carácter.
• Time – Utilizado para indicar tiempo.
La arquitectura describe lo que se puede hacer con los puertos de entrada para que los
puertos de salida puedan tener un funcionamiento. En la arquitectura se dice que se
debe de hacer con los puertos de entrada para obtener la salida. Si la entidad se ve como
una caja negra, la arquitectura es el conjunto de detalles dentro de la caja negra.
Para describir una arquitectura hay estilos con diferentes niveles de abstracción:
• Estilo de comportamiento (Behavioral) – Este estilo utiliza las condiciones o
comandos comúnmente usados en un lenguaje de programación tales como
condiciones IF, THEN o CASE sin que el programador se preocupe de la
distribución de las compuertas del PLD. Es necesario incluir un proceso ya que
es una estructura secuencial.
• Estilo de flujo de datos (Dataflow) - En este estilo se describe como la
información es transimitida de señal a señal y de la entrada a la salida sin el uso
de asignaciones secuenciales. En este estilo no se utilizan los procesos.
• Estilo estructural (Structural) – En este estilo se describe un “netlist” de VHDL
en donde se interconectan los componentes y se evaluan inmediatamente con
señales. En el estilo estructural se especifican cuales componentes son usadas y
de qué manera están interconectadas.
• Estilo mixto – Este es la combinación de dos o más de los estilos anteriores.
Un proceso es un evento concurrente de una arquitectura. Una arquitectura puede
tener varios procesos para describir la operación concurrente de varias piezas de la
arquitectura como una máquina de estados, un contador o una ALU (Arithmetic Logic
Unit). El proceso es el evento concurrente más usado porque provee un amplio rango
de flexibilidad como resultado de su naturaleza secuencial. También permite la
sincronización con otros eventos concurrentes.
T5_U2: Explica la operación de los circuitos Mediana Escala de
Integración (MSI) combinacionales, contadores y registros.
MSI (Médium Scale Integration): Esta escala comprende todos aquellos integrados cuyo
número de puertas oscila entre 12 y 100 puertas. Es común en sumadores,
multiplexores, ... Estos integrados son los que se usaban en los primeros ordenadores
aparecidos hacia 1970.
La existencia de muchos sistemas digitales complejos normalizados tales como
contadores, multiplexores, decodificadores, etc., ha permitido su diseño en circuito
integrado y produjo la aparición de la escala de integración media (MSI). bajo esta
denominación se incluyen aquellos circuitos integrados que contienen de 100 a 1000
componentes, equivalentes aproximadamente a 10 y 100 puertas lógicas
respectivamente.
Las ventajas que tienen esos integrados son las siguientes:
• Realizaciones más compactas (al tener soluciones completas en un sólo circuito
integrado con algunas pocas puertas extra para realizar la adaptación en algunos
casos).
• Menos alambrado (puesto que para usar los circuitos MSI sólo se requiere
alambrar entradas y salidas, la función lógica que realizan ya está alambrada en
su interior).
• Soluciones modulares (toda la lógica relacionada con una subfunción está
contenida en un solo circuito integrado).
Facilidad de mantenimiento (por la misma razón que el punto anterior).
• Eran circuitos atractivos, Ya que permitieron fabricar sistemas electrónicos más
complejos utilizando placas impresas
T6_U2: Explicar el procedimiento de programación de circuitos MSI
combinacionales, contadores y registros en FPGA.
FPGA (Field Programmable Gate Array: matrices de puertas programables por campo).
- Estructura interna: matriz de bloques lógicos (LB) que se comunican entre sí y con los
pines de E/S a través de canales de ruteo horizontal (CRH) y vertical (CRV).
Los diferentes modelos comerciales se diferencian en:
• Arquitectura de los LB
• Arquitectura de las
interconexiones
• Tecnología de la programación
Los canales de ruteo están formados
por pistas paralelas, que pueden estar
segmentadas o no:
FIG: Interconexión en una FPGA con conexiones
segmentadas (SB), (conexiones crosbar (Xbar, X),
enrutadas (switch), …) Los Bloque Lógicos (LB)
implementan funciones lógicas, hay dos tipos:
El diseño de una aplicación con una
FPGA se lleva a cabo especificando la
función lógica a desarrollar, bien
mediante un sistema CAD de dibujo de
esquemas, bien mediante un lenguaje
de descripción de hardware. Una vez
definida la función a realizar, el diseño
se traslada a la FPGA. Este proceso
programa los bloques lógicos
configurables (CLBs) para realizar una función específica (existen miles de bloques
lógicos configurables en la FPGA). La configuración de estos bloques y la flexibilidad de
sus interconexiones son las razones por las que se pueden conseguir diseños de gran
complejidad. Las interconexiones permiten conectar los bloques lógicos (CLBs) entre
sí. Finalmente, dispone de células de memoria de configuración (CMC, Configuration
Memory Cell) distribuidas a lo largo de todo el chip, las cuales almacenan toda la
información necesaria para programar los elementos programables mencionados
anteriormente. Estas células de configuración suelen consistir en memoria RAM y son
inicializadas en el proceso de carga del programa de configuración.
Los elementos programables de una FPGA son:
1. Bloques de lógica configurable (CLBs)
2. Bloques de entrada/salida (IOBs)
3. Interconexiones programables
• Mediante tecnología fusible y ser del tipo OTP
• Mediante anti fusibles o mediante células tipo SRAM.
Tecnologías de programación de FPGA, tipos de CMC:
• Celdas SRAM (LCA): se pueden reprogramar, pero son volátiles
• Celdas FLASH: se pueden reprogramar y no son volátiles
• Anti fusibles: no son volátiles, pero no se pueden reprogramar.
Estructura de una FPGA
Dependiendo del fabricante nos podemos encontrar con diferentes soluciones. Las
FPGAs que existen actualmente en el mercado, dependiendo de la estructura que
adoptan los bloques lógicos que tengan definidos, se pueden clasificar como
pertenecientes a cuatro grandes familias.
• Matriz simétrica (symmetrical Array), XILINX
• Basada en columnas (Row-Based), ACTEL
• Mar de puertas (Sea-of-Gates), ORCA
• PLD jerárquico (Hierarchical PLD), ALTERA o CPLDs de XILINX.
Los elementos básicos de una FPGA son:
1. Bloques lógicos CLBs, cuya estructura y
contenido se denomina arquitectura. Hay
muchos tipos de arquitecturas, que varían
principalmente en complejidad (desde una
simple puerta hasta módulos más complejos
o estructuras tipo SPLD). Suelen incluir
biestables o MOS para facilitar la
implementación de circuitos secuenciales.
Otros módulos de importancia son los
bloques de Entrada/Salida (IOB).
2. Recursos de interconexión, cuya estructura y contenido se denomina
arquitectura de rutado.
3. Memoria RAM, que se carga durante el RESET para configurar bloques y
conectarlos.
CLBs: Bloques Lógícos Configrables
Constituyen el núcleo de una FPGA. Cada CLB presenta una sección de lógica
combinacional programable y registros de almacenamiento:
Los registros de almacenamiento sirven como herramientas en la creación de lógica
secuencial. La sección de lógica combinacional suele consistir en una LUT (Look Up
Table), que permite implementar cualquier función bolean a partir de sus variables de
entrada. Su contenido se define mediante las células de memoria (CMC). Se presentan
también multiplexores (MUX) y conmutadores, como elementos adicionales de
direccionamiento de los datos del CLB, los cuales permiten variar el tipo de salidas
(combinacionales o registradas), facilitan caminos de realimentación, o permiten
cambiar las entradas de los biestables. Se encuentran controlados también por el
contenido de las células de memoria (CMC).
IOBs: Bloques entrada/Salida
La periferia de la FPGA está constituida por bloques de entrada/salidas configurables
por el usuario
• Cada bloque puede ser configurado independientemente para funcionar como
entrada, salida o bidireccional, admitiendo también la posibilidad de control
triestado.
• Los IOBs pueden configurarse para trabajar con diferentes niveles lógicos (TTL,
CMOS, …).
• Además, cada IOB incluye flip-flops que pueden utilizarse para registrar tanto
las entradas como las salidas.
Líneas de interconexión
• Constituyen un conjunto de caminos que permiten conectar las entradas y
salidas de los diferentes bloques.
• Están constituidas por líneas metálicas de dos capas que recorren horizontal y
verticalmente las filas y columnas existentes entre los CLBs.
Dos elementos adicionales participan activamente en el proceso de conexión:
• Puntos de Interconexión Programable (PIP, Programmable Interconnection
Point) o Permiten la conexión de CLBs e IOBs a líneas metálicas cercanas. o
Consisten en transistores de paso controlados por un bit de configuración
• Matrices de interconexión (SW, Switch Matriz o Magic Box).
o Son dispositivos de conmutación distribuidos de forma uniforme por la
FPGA.
o Formados internamente de transistores que permiten la unión de las
denominadas líneas de propósito general, permitiendo conectar señales
de unas líneas a otras.
Tipo de líneas de interconexión:
1. Líneas de propósito general
2. Líneas directas
3. Líneas largas
Líneas de propósito general
Conjunto de líneas horizontales y verticales conectadas a una matriz de interconexión.
Líneas directas
Líneas de conexión directa entre bloques, sin tener que pasar por ninguna matriz de
interconexión. Proporcionan la implementación más eficiente de redes entre CLBs e
IOBs adyacentes, al introducir retardos mínimos y no usar recursos generales (SM).
Líneas largas
Líneas conductoras de señal de gran longitud que atraviesan la FPGA de arriba abajo y
de izquierda a derecha. Permiten un fan-out elevado y un acceso rápido de una señal a
un punto distante, sin la degradación temporal que originan las conexiones de
propósito general. Suelen estar limitadas, por lo que es conveniente dedicarlas para
señales críticas, como pueda ser el reloj o señales de inicialización globales.
Células de memoria de configuración (CMC)
• El dato de una célula de memoria habilita o deshabilita dentro del dispositivo un
elemento programable.
• Están constituidas por dos inversores CMOS conectados para implementar un
latch, además de un transistor de paso usado para leer y escribir la célula.
• Sólo son escritas durante la configuración y pueden ser leídas durante un
proceso conocido como “readback”.
• El proceso de configuración consiste en la carga de un fichero formado por un
conjunto de bits, cada uno de los cuales es almacenado en una de estas células
de memoria estática.
T7_U2: Explicar el procedimiento de implementación de circuitos MSI
combinacionales, contadores y registros en FPGA
El FPGA puede ser programado por dos métodos diferentes:
1. Programación por JTAG: Este método emplea el protocolo IEEE JTAG (Joint Test
Action Group), los bits son descargados directamente hacia el chip FPGA, los
datos de programación estarán presentes en el chip siempre y cuando este se
mantenga energizado, recordando que el FPGA en sí mismo es un dispositivo
volátil, este método de programación es ideal para la prueba de códigos ya que
la elaboración de un archivo *sof no requiere un proceso extra más allá de una
compilación que ejecuta el mismo software
2. Programación por Active Serial: Este método emplea archivos de extensión .JIC
los cuales son configurados en la memoria EPCS256 de forma que la
programación sea permanente para el chip FPGA, los archivos requeridos para
la configuración no son creados por defecto, requieren un proceso extra.
Referencias
• Metodología De Diseño De Circuitos De Pequeña Escala3 [4lo5x55v7w0x]. (s. f.).
Recuperado 22 de octubre de 2022, de
https://doku.pub/documents/metodologia-de-diseo-de-circuitos-de-pequea-
escala3-4lo5x55v7w0x
• colaboradores de Wikipedia. (2021, 18 octubre). Lenguaje de descripción de
hardware. Wikipedia, la enciclopedia libre. Recuperado 22 de octubre de 2022,
de
https://es.wikipedia.org/wiki/Lenguaje_de_descripci%C3%B3n_de_hardware
• colaboradores de Wikipedia. (2022, 31 mayo). VHDL. Wikipedia, la enciclopedia
libre. Recuperado 22 de octubre de 2022, de
https://es.wikipedia.org/wiki/VHDL
• V, J. S. (s. f.). Vhdl organización y arquitectura. Recuperado 22 de octubre de
2022, de https://es.slideshare.net/vashstampide1/vhdl-organizacin-y-
arquitectura
• usere. (2004, 7 mayo). Capítulo 3: Implementación en VHDL.
http://catarina.udlap.mx/u_dl_a/tales/documentos/lep/rubio_s_d/capitulo3.p
df
• Apuntes_VHDL. (2010, 11 agosto). Acrobat Distille.
http://www.itq.edu.mx/carreras/IngElectronica/archivos_contenido/Apuntes
%20de%20materias/Apuntes_VHDL_2016.pdf
• ¿ Explicar sobre las ventajas y caracterÃsticas de las escalas de integraciÃ3n de
los circuitos lÃ3gicos SSI, MSI, LSI y VLSI? (s. f.). Google Groups. Recuperado 25 de
octubre de 2022, de https://groups.google.com/g/electronica-
virtual/c/j7EO0ksELfU?pli=1
• Robert. (2007, 23 febrero). Procedimiento de diseño de circuitos digitales. Buj.
https://repositori.udl.cat/bitstream/handle/10459.1/45767/Buj.pdf?sequenc
e=1
• 404 File not Found - Repositorio Institucional de la Universidad de El Salvador.
(s. f.). Recuperado 25 de octubre de 2022, de
https://ri.ues.edu.sv/id/eprint/9862/1/Principios+del+FPGA+y+aplicaciones
+en+el+control+de+procesos+industriales.pdf