Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> VHDL

Domine VHDL: Introducción Completa para Diseño FPGA y ASIC

Tutorial – Introducción a VHDL

VHDL es un acrónimo horrible. Significa VHSIC Hardware Description Language. ¡Un acrónimo dentro de otro acrónimo, genial! VHSIC significa Very High Speed Integrated Circuit. Por tanto, VHDL expandido es Very High Speed Integrated Circuit Hardware Description Language. Uf, qué trabalenguas. VHDL es uno de los dos lenguajes usados en educación y empresas para diseñar FPGAs y ASICs. Si no está familiarizado con estos fascinantes circuitos, primero podría beneficiarse de una introducción a FPGAs y ASICs. VHDL y Verilog son los dos lenguajes que los diseñadores digitales usan para describir sus circuitos, y son diferentes por diseño a los lenguajes de software tradicionales como C y Java.

En el ejemplo siguiente, crearemos un archivo VHDL que describe una compuerta AND. Como recordatorio, una compuerta AND simple tiene dos entradas y una salida. La salida es 1 solo cuando ambas entradas son 1. A continuación se muestra una imagen de la compuerta AND que describiremos con VHDL.

Una compuerta AND

¡Empecemos! La unidad fundamental de VHDL se llama señal. Por ahora, supongamos que una señal puede ser 0 o 1 (hay otras posibilidades, pero llegaremos a eso). Aquí hay lógica básica de VHDL:

signal and_gate : std_logic; 
and_gate <= input_1 and input_2; 

La primera línea define una señal de tipo std_logic llamada and_gate. Std_logic es el tipo más usado para definir señales, pero hay otros que aprenderá. Este código genera una compuerta AND con una salida (and_gate) y 2 entradas (input_1 e input_2). La palabra clave "and" es reservada en VHDL. El operador <= es el operador de asignación. Al leer el código en voz alta: "La señal and_gate OBTIENE input_1 AND-con input_2".

Ahora puede preguntarse de dónde vienen input_1 e input_2. Como su nombre indica, son entradas a este archivo, así que debe decírselo a las herramientas. Las entradas y salidas de un archivo se definen en una entidad. Una entidad contiene un puerto que define todas las entradas y salidas. Creemos una entidad simple:

entity example_and is 
  port ( 
    input_1 : in std_logic; 
    input_2 : in std_logic; 
    and_result : out std_logic 
  ); 
end example_and; 

Esta es su entidad básica. Define una entidad llamada example_and y 3 señales, 2 entradas y 1 salida, todas de tipo std_logic. Falta otra palabra clave de VHDL para completarla: arquitectura. Una arquitectura describe la funcionalidad de una entidad particular. Piénselo como una tesis: la entidad es el índice y la arquitectura es el contenido. Creemos una arquitectura para esta entidad:

architecture rtl of example_and is 
  signal and_gate : std_logic; 
begin 
  and_gate <= input_1 and input_2; 
  and_result <= and_gate; 
end rtl; 

El código anterior define una arquitectura llamada rtl de la entidad example_and. Todas las señales usadas por la arquitectura deben definirse entre las palabras clave "is" y "begin". La lógica real de la arquitectura va entre "begin" y "end". Casi termina el archivo. Una última cosa: debe decirle a las herramientas qué librería usar. Una librería define cómo se comportan ciertas palabras clave en su archivo. Por ahora, acepte que necesita estas 2 líneas al principio:

library ieee; 
use ieee.std_logic_1164.all; 

¡Felicidades! Ha creado su primer archivo VHDL. Puede ver el archivo completo aquí:

library ieee; 
use ieee.std_logic_1164.all; 
entity example_and is 
  port ( 
    input_1 : in std_logic; 
    input_2 : in std_logic; 
    and_result : out std_logic 
  ); 
end example_and; 
architecture rtl of example_and is 
  signal and_gate : std_logic; 
begin 
  and_gate <= input_1 and input_2; 
  and_result <= and_gate; 
end rtl; 

¿Parece que tuvo que escribir mucho código solo para crear una simple compuerta AND? Primero, las compuertas AND no son simples. Segundo, tiene razón; VHDL es un lenguaje muy verboso. Acostúmbrese a que algo muy fácil en software le llevará significativamente más tiempo en un HDL como Verilog o VHDL. Pero pídale a un programador de software que intente generar una imagen en un monitor VGA que muestre el Juego de la Vida de Conway y vea cómo se le gira la cabeza. Por cierto, ese video se crea con VHDL y un FPGA. ¡Pronto podrá hacerlo usted también!

A continuación, discutiremos otra palabra clave fundamental de VHDL: process.

VHDL

  1. Cuestionario VHDL Básico - Parte 4: Verifica tu comprensión
  2. Diseño de máquina de estados finitos en VHDL: Ejemplo práctico de semáforo
  3. Uso de listas de sensibilidad en procesos VHDL para diseño RTL fiable
  4. Tu primer programa VHDL: Tutorial paso a paso Hello World
  5. Guía completa de conversiones de tipos VHDL con Numeric_Std y Std_Logic_Arith
  6. Generación de números aleatorios en VHDL: De uniforme a OSVVM
  7. Entendiendo la diferencia entre señales y variables en VHDL
  8. Integración de librerías IP de Quartus Prime en VUnit: guía paso a paso
  9. Controlador VHDL dual de display de 7 segmentos para Pmod SSD – Fácil integración FPGA
  10. Uso de procedimientos en VHDL: Simplifique su diseño con código reutilizable
  11. Ejemplo de procedimiento VHDL: Incrementando un vector Standard Logic