0% encontró este documento útil (0 votos)
30 vistas26 páginas

Tema 1

El documento ofrece una capacitación sobre VHDL y FPGA, comenzando con una introducción al lenguaje de descripción de hardware VHDL, sus características, y diferencias con Verilog. Se abordan tipos de datos, funciones, paquetes y la estructura interna de las FPGAs, destacando su capacidad de ser programadas para crear circuitos digitales. Además, se discuten los estilos de descripción y la importancia de la configuración en el diseño de hardware.

Cargado por

AnonimusCKF
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
30 vistas26 páginas

Tema 1

El documento ofrece una capacitación sobre VHDL y FPGA, comenzando con una introducción al lenguaje de descripción de hardware VHDL, sus características, y diferencias con Verilog. Se abordan tipos de datos, funciones, paquetes y la estructura interna de las FPGAs, destacando su capacidad de ser programadas para crear circuitos digitales. Además, se discuten los estilos de descripción y la importancia de la configuración en el diseño de hardware.

Cargado por

AnonimusCKF
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

CAPACITACIÓN EN VHDL CON

FPGA

“Cuando tu única
herramienta es un martillo,
tratas todos los problemas
como si fueran clavos”

Ing. Jhonatan Juño Garcia


Tema 1: Introducción al VHDL
TEMARIO 1
1. Introducción al lenguaje de descripción de Hardware
1.1 EL VHSIC Hardware Description Language (VHDL).
1.2 Historia.
1.3 Características de VHDL.
1.4 Estilos de Descripción.
2. Diferencia entre VHDL y Verilog.
3. Tipos de datos, Operadores y atributos.
3.1 Tipos de Datos en VHDL
3.2 El Tipo Signed y Unsigned
3.3 El tipo Integer
3.4 Conversiones de Tipos
4. Funciones y paquetes
4.1 Funciones en VHDL
4.2 Paquetes en VHDL
5. La FPGA
5.1 Dispositivos Lógicos Programables
5.2 Definición
5.3 Estructura Interna de la FPGA
1. Introducción al lenguaje de descripción de Hardware
Los lenguajes de descripción hardware son lenguajes especializados en la descripción de
estructuras, el diseño de las mismas y el comportamiento del hardware.
Con estos lenguajes se pueden representar diagramas lógicos, circuitos con diferentes
grados de complejidad, desde expresiones booleanas hasta circuitos más complejos

Estos lenguajes son estándares ANSI e IEEE. Esto quiere decir que son independientes de la
tecnología empleada y del fabricante. Gracias a ello, el intercambio entre los fabricantes y
los usuarios es más fácil permitiendo a los usuarios usar una descripción de un componente
en la simulación de sus diseños. Además estos modelos son reutilizables permitiendo ser
sintetizados por diferentes librerías de distintos fabricantes.
1. Introducción al lenguaje de descripción de Hardware
1.1 EL VHSIC Hardware Description Language (VHDL)
VHDL se trata de un lenguaje de descripción de circuitos electrónicos digitales, esta
significa que mediante él se pueden describir los comportamientos de los circuitos. Este
comportamiento puede transferirse a algún dispositivo con sus componentes propios, con
ellos logrará el comportamiento deseado. El comportamiento el dispositivo es
independiente al hardware del dispositivo.

VHDL no es un lenguaje de programación, por ello, para saber diseñar circuito con él, no solo
se necesita conocer su sintaxis, sino que también es necesario tener una serie de cuestiones
en cuenta:

• Es necesario pensar con puertas lógicas y biestables, no en variables y funciones como en


los lenguajes de programación.
• Es importante evitar los bucles combinacionales y los relojes que estén condicionados.
• Es necesario saber diferenciar las partes del circuito en combinacionales y secuenciales.
1. Introducción al lenguaje de descripción de Hardware
1.2 Historia

1950 2000

1983: Empieza el 1987: IEEE lanza el primer


1978: IBM
desarrollo de Verilog estándar de VHDL: “IEEE
desarrolla el
marco principal 1076-1987”
del algoritmo de
síntesis lógica
1986: Synopsis Co. 1995: IEEE lanza el
1983: El Fundada con el primer estándar de
departamento de objetivo de desarrollar Verilog “IEEE 1394”
defensa [Link]. la síntesis lógica HDL
Funda el proyecto
VHDL.

Desarrollo del HDL


1. Introducción al lenguaje de descripción de Hardware
1.3 Características de VHDL
• Existen cuatro tipo de objetos en VHDL: constantes, variables, señales y archivos.
• VHDL es un lenguaje “strong typing”, lo que implica que no pueden asignarse valores a
señales o variables que no sean del tipo declarado para esa señal o variable.
• Para realizar lo antes mencionado se debe llamar a una función de conversión de tipo.
• Permite dividir un diseño de hardware en módulos más chicos.
• Permite la definición de nuevos tipos
• El código suele más extenso que el desarrollado en Verilog (se busca que el mismo
sirva como documentación)
• Posee librerías estándar
• No todo lo descripto en VHDL podrá ser utilizado para configurar una FPGA (no todo
VHDL es sintetizable).
• No es “case sensitive”. Es lo mismo entity que ENTITY.
• Los comentarios se expresan con -- (doble guión).
• Las instrucciones finalizan con el carácter ; (punto y coma).
1. Introducción al lenguaje de descripción de Hardware
1.4 Estilos de Descripción
En los HDL se pueden diferenciar tres estilos de descripciones.

• Descripción estructural: Especifica los elementos que se pueden usar y sus


interconexiones. Estos elementos pueden ser: procesadores, memorias, puertas
lógicas, bloques funcionales o transistores.
• Descripción comportamental: Describe el funcionamiento del circuito, componente o
modulo. Es similar a la descripción de los programas de software. Estos descriptores
pueden ser un sistema, algoritmos de comportamiento, transferencias de registros o
ecuaciones lógicas.
• Descripción flujo de datos: Genera los datos necesarios para la realización física del
módulo, estos datos reflejan el flujo de información y dependencia entre operaciones y
datos. Este tipo de descriptor puede ser un grupo de bloques, particiones físicas, un
trazado o un plano base.
1. Introducción al lenguaje de descripción de Hardware
1.4 Estilos de Descripción
• Descripción de comportamiento: Especifica cómo se comportan las salidas con respecto a las
entradas. No proporciona información de cómo será el circuito, dejando al sintetizador
determinarlo.
Ejemplo: La descripción de comportamiento de un multiplexor de dos entradas y una salida y
una entrada de selección sería: “la salida será igual a la primera entrada (I0) si la entrada de
selección esta desactivada; y la salida será la segunda entrada (I1) si la entrada de control
esta activada”.

Fig. 6 Multiplexor de dos entradas Fig. 7 Estructura de la descripción de comportamiento


1. Introducción al lenguaje de descripción de Hardware
1.4 Estilos de Descripción
• Descripción de flujo de datos: Especifica el circuito como un conjunto de expresiones
booleanas concurrentes que describen como circula la información. La descripción de
flujo de datos del mismo multiplexor que en el apartado anterior (dos entradas, una
salida y una entrada de selección) tendría como salida una ecuación lógica tal que:
Ejemplo: Q = (I0 AND NOT S) OR (I1 AND S)

Fig. 8 Estructura de la descripción de flujo de datos


1. Lenguajes de Descripción de Hardware
1.4 Estilos de Descripción
• Descripción Estructural: Especifica el circuito describiendo las conexiones entre los
distintos módulos y la descripción de estos módulos previamente en el apartado de
arquitectura. Los módulos previamente descritos son puertas lógicas.

Fig. 9 Estructura de la descripción estructural


2. Diferencia entre VHDL y Verilog

Característica VHDL Verilog


Lenguaje de Deriva de ADA, con sintaxis similar a Basado en C, con sintaxis simple y concisa
Programación lenguajes tradicionales. similar a C/C++.
Más compacto y menos detallado,
Más detallado y verboso, lo que puede
Complejidad facilitando el aprendizaje para
hacer el código más extenso.
principiantes.
Preferido para el diseño sistemas críticos Más utilizado para aplicaciones
Popularidad
como aeroespacial y defensa. comerciales como ASIC y FPGA.
Preferido para diseño y verificación de
Simulación y Ideal para modelado a nivel de sistema
hardware, más eficiente en síntesis y
Síntesis debido a sus capacidades de alto nivel.
simulación.
Capacidades de Soporta tipos de datos definidos por el Menos tipos de datos predefinidos y menos
Tipos de Datos usuario, ofreciendo mayor flexibilidad. flexible en comparación con VHDL.
Las asignaciones concurrentes y
Manejo de Soporta asignaciones concurrentes y
secuenciales están implícitas dependiendo
Asignaciones secuenciales de manera explícita.
del contexto.
2. Diferencia entre VHDL y Verilog
3. Tipos de datos, operadores y atributos
3.1 Tipos de Datos en VHDL
• Para numeros:
• Para puertos de entrada-salida ▪ INTEGER → Valores enteros Sintetizable
▪ STD_LOGIC → 1bit ▪ NATURAL → Integer Positivo
▪ STD_LOGIC_VECTOR →n bits ▪ REAL → Valores Reales
No Sintetizable
▪ BOOL → Valores Booleanos
VHDL es un lenguaje fuertemente tipado. Esto significa que cada señal o puerto
que declaremos debe utilizar uno de los tipos predefinidos de VHDL o un tipo personalizado
que hayamos creado.
3.2 El Tipo Signed y Unsigned
Existen 2 tipos mas que utilizamos a menudo en VHDL: signed y unsigned. Para utilizar estos tipos,
necesitamos incluir el paquete numeric_std de la biblioteca estándar ieee.
Cuando utilizamos el tipo signed, los datos se interpretan como un número en complemento a 2.
El tipo unsigend es un número binario normal. Esto significa que podemos asignar valores
negativos al tipo signed pero no al tipo unsigned.
3. Tipos de datos, operadores y atributos
3.2 El Tipo Signed y Unsigned
Los tipos signed y unsigned son similares al tipo std_logic_vector. Sin embargo, también podemos
realizar operaciones matemáticas con ellos. Además, también podemos asignarles datos
numéricos.

La librería ieee.numeric_std define una serie de operadores matemáticos que podemos utilizar
con estos tipos, a diferencia de std_logic_vector que no soporta estas operaciones.

Operador Operación
+ Suma
- Resta
* Multiplicación
/ División
mod Modulo
rem Modulo con signo
3. Tipos de datos, operadores y atributos

Operador Operación
> Mayor
< Menor
>= Mayor o igual
<= Menor o igual
/= Diferente

3.3 El tipo Integer

El tipo de datos entero se utiliza para expresar un valor que es un número entero en VHDL. Es
similar al tipo entero en otros lenguajes de programación como C.
El tipo entero es similar a los tipos signed y unsigned. Podemos utilizar el tipo entero para
expresar números y realizar las mismas operaciones aritméticas y de comparación básicas.
3. Tipos de datos, operadores y atributos
3.4 Conversiones de Tipos
4. Funciones y paquetes
4.1 Funciones en VHDL

e1
e2
Función: n e3 Z

. ..
en

𝑍 = 𝐹(𝑒1, 𝑒2, 𝑒3, ⋯ , 𝑒𝑛)

Utilizamos funciones para implementar pequeñas porciones de código que podemos reutilizar en
nuestros diseños. En VHDL, una función es un subprograma que toma cero o más valores de
entrada y devuelve un valor de salida calculado. La sintaxis general de una función en VHDL:
4. Funciones y paquetes
4.2 Paquetes en VHDL [Link]
Un paquete VHDL proporciona una forma práctica de
F1
mantener agrupadas una serie de funciones, Funciones
procedimientos, definiciones de tipos, componentes F2
y constantes relacionados entre sí. F3

. ..
Esto nos permite reutilizar cualquiera de los
Fn
elementos del paquete en diferentes diseños VHDL.
En este sentido, los paquetes pueden considerarse
[Link]
similares a las cabeceras en lenguajes de
programación como C.

Los paquetes suelen constar de dos partes bien Library work


diferenciadas: la declaración del paquete y el cuerpo Use [Link]
del paquete. Sin embargo, no siempre es necesario
escribir el cuerpo del paquete.
4. Funciones y paquetes
4.2 Paquetes en VHDL

Para usar un paquete debemos incluirlo en la descripción principal de la siguiente forma:


5. La FPGA
5.1 Dispositivos Lógicos Programables
Un Dispositivo Lógico Programable (PLD) es un componente electrónico usado para
construir circuitos digitales reconfigurables. A diferencia de una compuerta lógica que
tiene una función fija, los PLDs salen de fábrica sin una función en específico, por lo tanto
necesitan ser programados o
reconfigurados antes de
poder ser usados.
5. La FPGA
5.2 Definición
En términos simples podemos ver un
dispositivo FPGA como un “chip en blanco”
dentro del cual podemos “crear” nuestros
propios circuitos digitales. Es decir estamos
“creando hardware”.
Una FPGA en su interior tiene una gran de
compuertas lógicas, flip flop buses de
conexión agrupados en celdas lógicas, estas a
su vez agrupadas en forma de matrices, todos
estos sin ninguna conexion. Para comprender
el funcionamiento de estos dispositivos
podemos hacer una aproximación bastante
simplificada, como se muestra en la siguiente
figura:
5. La FPGA
5.2 Definición
Para crear un circuito digital debemos hacer una “Configuración”, es decir establecer uniones
entre elementos y así obtener nuestro circuito.

CONFIGURACION

CIRCUITO 1
CIRCUITO 2

Esta configuración se consigue descargando en la FPGA un fichero binario,


denominado bitstream, que contiene toda la información necesaria para establecer
las conexiones entre los elementos internos de la FPGA
5. La FPGA
5.2 Definición
Para poder generar el bitstream se requiere herramientas de software que hagan el trabajo
de interpretar una “descripción de hardware HDL” que de escribe a partir de un diseño.
DISEÑO HDL

descripción

síntesis

configuración
5. La FPGA
5.3 Estructura Interna de la FPGA

La FPGA consta de 3 componentes principales


• Bloques lógicos configurables (CLB)
• Bloque de entrada/salida (E/S) programable
• Interconexiones programables.
5. La FPGA
5.3 Estructura Interna de la FPGA

Los bloques lógicos configurables son los


componentes responsables de implementar las
funciones lógicas del núcleo. El bloque lógico
básico puede ser cualquier cosa, como un
transistor, una puerta NAND, multiplexores,
tablas de búsqueda (LUT) o incluso
procesadores. Tanto Xilinx como Altera utilizan
bloques lógicos basados en tablas de consulta
(LUT) para implementar las funcionalidades
lógicas y de almacenamiento.

Common questions

Con tecnología de IA

VHDL's strong typing feature ensures that only values of the same type can be assigned to variables or signals, which reduces errors related to type mismatches. This feature requires programmers to be explicit about data types, promoting robustness and reliability in designs . Additionally, strong typing in VHDL necessitates the use of conversion functions for data types, which adds an additional layer of type safety to the design .

The complexity of VHDL's syntax, which derives from ADA, contributes to code verbosity and detailed documentation. This makes VHDL particularly suited for projects requiring thorough documentation and high reliability, such as aerospace and defense systems . The extensive syntax also allows for modular design, making it possible to break down a hardware design into smaller modules, facilitating easier debugging and maintenance .

VHDL's origins, particularly its development by the US Department of Defense in the 1980s and its standardization by IEEE in 1987, laid the groundwork for its use in critical applications like aerospace and defense systems where precision and reliability are paramount . This historical focus on robustness and detailed documentation has made VHDL the preferred choice for systems requiring comprehensive testing and validation, influencing its continued use in high-stakes environments and setting a benchmark for other HDL developments .

Packages in VHDL enhance modularity and reusability by encapsulating related functions, procedures, type definitions, and constants within a single module that can be reused across different designs . This modular approach is analogous to header files in C, enabling designers to apply common functionality to various parts of a project without redefining them, thus streamlining development and ensuring consistency .

An FPGA comprises three fundamental components: Configurable Logic Blocks (CLBs), programmable input/output blocks, and programmable interconnections. CLBs are responsible for implementing the core logical functions and can include elements like Logic Gates and Lookup Tables (LUTs). The input/output blocks determine how the FPGA interfaces with external devices, while the programmable interconnections provide the flexibility needed to configure the logic blocks and the layout of the design dynamically .

The IEEE standardization of VHDL in 1987 (IEEE 1076-1987) marked a significant milestone by providing a universally accepted framework for hardware description, ensuring compatibility and interoperability across different platforms and tools . This standardization facilitated the exchange and reuse of design components, boosted the development of VHDL-centric tools, and solidified VHDL's role in sectors requiring rigorous design standards, thus influencing subsequent generations of hardware description languages .

The signed and unsigned data types in VHDL differ primarily in how they interpret binary data. Signed types interpret values as two's complement numbers, allowing representation of both positive and negative integers . In contrast, unsigned types treat values as non-negative binary integers . This distinction affects arithmetic operations; for example, a signed type can handle negative results while an unsigned type cannot, necessitating careful selection based on the intended operation and expected results .

The bitstream configuration crucially influences FPGA functionality by detailing every connection within the device, essentially programming the "blank slate" to perform specific tasks. It transforms the FPGA from an unconfigured state into a customized circuit, defining how each Configurable Logic Block (CLB) and interconnection operates . This flexibility allows designers to upload new designs without physically altering the hardware, making FPGAs highly adaptable for different applications .

VHDL and Verilog differ significantly in their design focus and use cases. VHDL is derived from ADA and is strongly typed, making it more verbose and detailed. This verbosity is an advantage in critical system designs like aerospace and defense due to its high-level modeling capabilities . Verilog, based on C, has a simpler and more concise syntax, often preferred for commercial applications like ASICs and FPGAs due to its efficiency in simulation and synthesis . While VHDL supports more complex user-defined data types, Verilog offers a less flexible but more straightforward approach .

Hardware description languages, including VHDL, support three main styles of description: structural, behavioral, and dataflow. Structural description specifies the elements and their interconnections, providing a blueprint that closely mirrors physical circuits . Behavioral description focuses on how a system behaves, simulating functionality without detailing physical implementation, which is left to synthesis tools . Dataflow description outlines the flow of data through the system, capturing dependencies and operations in concurrent expressions .

También podría gustarte