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

Dominando std_logic de VHDL: Estados, resolución y análisis de forma de onda

En VHDL, el tipo std_logic es la piedra angular para representar un solo bit en un cable físico. A diferencia del tipo simple integer usado en tutoriales anteriores, std_logic ofrece un conjunto más rico de valores que modelan el comportamiento real de señales digitales con mayor precisión.

Mientras que un pin digital usualmente lleva un logic high ('1') o un logic low ('0'), una señal física también puede aparecer en estados de alta impedancia, débiles o indefinidos. El tipo std_logic captura todas estas posibilidades, convirtiéndolo en el tipo más empleado en diseño VHDL.

Este artículo es parte de la serie Tutoriales Básicos de VHDL.

A continuación se muestra la lista completa de valores que una señal std_logic puede asumir:

'1'Logic 1
'0'Logic 0
'Z'Alta impedancia
'W'Señal débil; 0 o 1 indeterminado
'L'0 débil (pull-down)
'H'1 débil (pull-up)
'-'No importa (don't care)
'U'No inicializado
'X'Desconocido (múltiples controladores)

En la mayoría de los tutoriales nos centraremos en los valores primarios '1' y '0', y ocasionalmente 'U' y 'X' para resaltar errores de diseño. Los estados restantes son características avanzadas útiles para modelar protocolos como I2C o crear buses tri-state.

Cuando varios procesos conducen la misma señal std_logic, el lenguaje emplea una función de resolución para determinar el valor resultante. Este mecanismo previene errores en tiempo de compilación o ejecución en simulaciones y está definido por una tabla de resolución, como se muestra a continuación.

U X 0 1 Z W L H -
U X X 1 1 1 1 1 X 1
U X 0 X 0 0 0 0 X 0
U U U U U U U U U U
U X X X X X X X X X
U X 0 1 Z W L H X Z
U X 0 1 W W W W X W
U X 0 1 L W L W X L
U X 0 1 H W W H X H
U X X X X X X X X -

Ejercicio

Este tutorial en video demuestra cómo declarar señales std_logic y visualizarlas en una simulación de forma de onda.

El código VHDL final producido en este ejercicio se muestra a continuación:

library ieee;
use ieee.std_logic_1164.all;

entity T10_StdLogicTb is
end entity;

architecture sim of T10_StdLogicTb is
  signal Signal1 : std_logic := '0';
  signal Signal2 : std_logic;
  signal Signal3 : std_logic;
begin
  process is
  begin
    wait for 10 ns;
    Signal1 <= not Signal1;
  end process;
  -- Driver A
  process is
  begin
    Signal2 <= 'Z';
    Signal3 <= '0';
    wait;
  end process;
  -- Driver B
  process(Signal1) is
  begin
    if Signal1 = '0' then
      Signal2 <= 'Z';
      Signal3 <= 'Z';
    else
      Signal2 <= '1';
      Signal3 <= '1';
    end if;
  end process;
end architecture;

La ventana de forma de onda en ModelSim después de presionar run y hacer zoom en la línea de tiempo:

Dominando std_logic de VHDL: Estados, resolución y análisis de forma de onda

La forma de onda con el cursor colocado en la otra parte del ciclo de señal repetitivo:

Dominando std_logic de VHDL: Estados, resolución y análisis de forma de onda

Análisis

Este ejercicio ilustra la función de resolución de VHDL en acción. Al inspeccionar la forma de onda en lugar de confiar solo en la salida textual, obtenemos una visión más clara de cómo múltiples controladores interactúan en una señal std_logic.

Signal1 es conmutado por un solo proceso, por lo que su valor alterna limpiamente entre '0' y '1'. Las señales conducidas por tanto el Driver A como el Driver B se resuelven según la tabla mostrada anteriormente.

SeñalDriver ADriver BResultado
Signal2'Z''Z''Z'
Signal2'Z''1''1'
Signal3'0''Z''0'
Signal3'0''1''X'

Dominando std_logic de VHDL: Estados, resolución y análisis de forma de onda

Conclusión

Vaya al siguiente tutorial »

VHDL

  1. Principales Cuellos de Botella en Flujos de Trabajo de Impresión 3D y Soluciones Probadas
  2. Problemas Comunes del Sistema de Refrigeración del Coche y Cómo Diagnosticarlos
  3. Guía de seguridad para polipastos de motor: Mejores prácticas en el lugar de trabajo
  4. Principales Causas de Accidentes de Grúa y Cómo Prevenirlos
  5. Desbloqueando datos IoT: Cómo la gestión de reglas de negocio impulsa valor empresarial
  6. Aplicaciones industriales clave de la aleación A286: Alta resistencia y resistencia a la corrosión
  7. Implementación de lista enlazada dinámica en VHDL con tipos protegidos y punteros de acceso
  8. Aprovechando procedimientos en-proceso para diseños FSM más limpios en VHDL
  9. Uso de funciones impuras en VHDL: Mejorando legibilidad y mantenibilidad de FSM
  10. Dominando funciones VHDL: Guía práctica para diseño eficiente
  11. Uso de procedimientos en VHDL: Simplifique su diseño con código reutilizable