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

Ejemplos de conversiones VHDL

Uso de los archivos de paquete Numeric_Std y Std_Logic_Arith

A continuación se muestran las conversiones más comunes utilizadas en VHDL. La página está dividida en dos secciones. La primera mitad de la página muestra las conversiones utilizando el archivo de paquete Numeric_Std. La segunda mitad de la página muestra las conversiones usando el archivo del paquete Std_Logic_Arith. Es una buena práctica usar el paquete Numeric_Std ya que no debe usar Std_Logic_Arith. Dado que muchas personas aún insisten en usarlo, ambos ejemplos se muestran a continuación.

Tenga en cuenta que muchos de los ejemplos a continuación usan la 'longitud Atributo VHDL. Este atributo hace que su código sea más portátil y versátil, por lo que debe usarse.

Ejemplo de conversiones usando estándar numérico

Ejemplo de conversiones usando Std_Logic_Arith

Convertir de entero a firmado usando Numeric_Std

El siguiente ejemplo usa la conversión to_signed, que requiere dos parámetros de entrada. La primera es la señal que desea convertir, la segunda es la longitud del vector resultante.

signal input_3  : integer;
signal output_3 : signed(3 downto 0);
  
output_3 <= to_signed(input_3, output_3'length);

Convertir de Integer a Std_Logic_Vector usando Numeric_Std

Primero debe pensar en el rango de valores almacenados en su número entero. ¿Puede su número entero ser positivo y ¿negativo? Si es así, deberá utilizar to_signed() conversión. Si su número entero es solo positivo, deberá usar to_unsigned() conversión.

Ambas funciones de conversión requieren dos parámetros de entrada. La primera es la señal que desea convertir, la segunda es la longitud del vector resultante.

signal input_1   : integer;
signal output_1a : std_logic_vector(3 downto 0);
signal output_1b : std_logic_vector(3 downto 0);
  
-- This line demonstrates how to convert positive integers
output_1a <= std_logic_vector(to_unsigned(input_1, output_1a'length));

-- This line demonstrates how to convert positive or negative integers
output_1b <= std_logic_vector(to_signed(input_1, output_1b'length));

Convertir de entero a sin signo usando Numeric_Std

El siguiente ejemplo usa la conversión to_unsigned, que requiere dos parámetros de entrada. La primera es la señal que desea convertir, la segunda es la longitud del vector resultante.

signal input_2  : integer;
signal output_2 : unsigned(3 downto 0);
  
output_2 <= to_unsigned(input_2, output_2'length);

Convertir de Std_Logic_Vector a Integer usando Numeric_Std

Primero debe pensar en los datos representados por su std_logic_vector. ¿Son datos firmados o son datos sin firmar? Los datos firmados significan que su std_logic_vector puede ser un o positivo numero negativo. Los datos sin firmar significan que su std_logic_vector es solo un número positivo El siguiente ejemplo usa unsigned() typecast, pero si sus datos pueden ser negativos, debe usar signed() encasillar. Una vez que convierta su entrada std_logic_vector como sin firmar o firmada, puede convertirla en un número entero como se muestra a continuación:

signal input_4   : std_logic_vector(3 downto 0);
signal output_4a : integer;
signal output_4b : integer;
  
-- This line demonstrates the unsigned case
output_4a <= to_integer(unsigned(input_4));

-- This line demonstrates the signed case
output_4b <= to_integer(signed(input_4));

Convertir de Std_Logic_Vector a Signed usando Numeric_Std

Esta es una conversión fácil, todo lo que necesita hacer es convertir el vector std_logic_vector como se muestra a continuación:

signal input_6  : std_logic_vector(3 downto 0);
signal output_6 : signed(3 downto 0);

output_6 <= signed(input_6);

Convertir de Std_Logic_Vector a Sin firmar usando Numeric_Std

Esta es una conversión fácil, todo lo que necesita hacer es convertir el std_logic_vector como sin firmar como se muestra a continuación:

signal input_5  : std_logic_vector(3 downto 0);
signal output_5 : unsigned(3 downto 0);
  
output_5 <= unsigned(input_5);

Convertir de firmado a entero usando Numeric_Std

Esta es una conversión fácil, todo lo que necesita hacer es usar la llamada a la función to_integer desde numeric_std como se muestra a continuación:

  
signal input_10  : signed(3 downto 0);
signal output_10 : integer;

output_10 <= to_integer(input_10);

Convertir de Signed a Std_Logic_Vector usando Numeric_Std

Esta es una conversión fácil, todo lo que necesita hacer es usar el molde std_logic_vector como se muestra a continuación:

signal input_11  : signed(3 downto 0);
signal output_11 : std_logic_vector(3 downto 0);

output_11 <= std_logic_vector(input_11);

Convertir de Firmado a Sin firmar usando Numeric_Std

Esta es una conversión fácil, todo lo que necesita hacer es usar el molde sin firmar como se muestra a continuación:

signal input_12  : signed(3 downto 0);
signal output_12 : unsigned(3 downto 0);
  
output_12 <= unsigned(input_12);

Convertir de sin signo a entero usando Numeric_Std

Esta es una conversión fácil, todo lo que necesita hacer es usar la llamada a la función to_integer desde numeric_std como se muestra a continuación:

signal input_7  : unsigned(3 downto 0);
signal output_7 : integer;

output_7 <= to_integer(input_7);

Convertir de Sin firmar a Firmado usando Numeric_Std

Esta es una conversión fácil, todo lo que necesita hacer es usar el molde firmado como se muestra a continuación:

signal input_9  : unsigned(3 downto 0);
signal output_9 : signed(3 downto 0);

output_9 <= signed(input_9);

Convertir de Unsigned a Std_Logic_Vector usando Numeric_Std

Esta es una conversión fácil, todo lo que necesita hacer es usar el molde std_logic_vector como se muestra a continuación:

  
signal input_8  : unsigned(3 downto 0);
signal output_8 : std_logic_vector(3 downto 0);

output_8 <= std_logic_vector(input_8);

Convertir de entero a firmado usando Std_Logic_Arith

El siguiente ejemplo usa la conversión conv_signed, que requiere dos parámetros de entrada. La primera es la señal que desea convertir, la segunda es la longitud del vector resultante.

signal input_3  : integer;
signal output_3 : signed(3 downto 0);
  
output_3 <= conv_signed(input_3, output_3'length);

Convertir de Integer a Std_Logic_Vector usando Std_Logic_Arith

El siguiente ejemplo usa la conversión conv_std_logic_vector, que requiere dos parámetros de entrada. La primera es la señal que desea convertir, la segunda es la longitud del vector resultante.

Una cosa a tener en cuenta aquí es que si ingresa un número negativo en esta conversión, entonces su salida std_logic_vector se representará en notación con signo de complemento a 2.

signal input_1  : integer;
signal output_1 : std_logic_vector(3 downto 0);

output_1 <= conv_std_logic_vector(input_1, output_1'length);

Convertir de entero a sin signo usando Std_Logic_Arith

El siguiente ejemplo usa la conversión conv_unsigned, que requiere dos parámetros de entrada. La primera es la señal que desea convertir, la segunda es la longitud del vector resultante.

signal input_2  : integer;
signal output_2 : unsigned(3 downto 0);
  
output_2 <= conv_unsigned(input_2, output_2'length);

Convertir de Std_Logic_Vector a Integer usando Std_Logic_Arith

Primero debe pensar en los datos representados por su std_logic_vector. ¿Son datos firmados o son datos sin firmar? Los datos firmados significan que su std_logic_vector puede ser un o positivo numero negativo. Los datos sin firmar significan que su std_logic_vector es solo un número positivo El siguiente ejemplo usa unsigned() typecast, pero si sus datos pueden ser negativos, debe usar signed() encasillar. Una vez que su entrada std_logic_vector no esté firmada o esté firmada, puede convertirla en un número entero como se muestra a continuación:

signal input_4   : std_logic_vector(3 downto 0);
signal output_4a : integer;
signal output_4b : integer;
  
-- This line demonstrates the unsigned case
output_4a <= conv_integer(unsigned(input_4));

-- This line demonstrates the signed case
output_4b <= conv_integer(signed(input_4));

Convertir de Std_Logic_Vector a Signed usando Std_Logic_Arith

Esta es una conversión fácil, todo lo que necesita hacer es convertir el vector std_logic_vector como se muestra a continuación:

signal input_6  : std_logic_vector(3 downto 0);
signal output_6 : signed(3 downto 0);

output_6 <= signed(input_6);

Convertir de Std_Logic_Vector a Sin firmar usando Std_Logic_Arith

Esta es una conversión fácil, todo lo que necesita hacer es convertir el std_logic_vector como sin firmar como se muestra a continuación:

signal input_5  : std_logic_vector(3 downto 0);
signal output_5 : unsigned(3 downto 0);
  
output_5 <= unsigned(input_5);

Convertir de firmado a entero usando Std_Logic_Arith

Esta es una conversión fácil, todo lo que necesita hacer es usar la llamada a la función conv_integer de std_logic_arith como se muestra a continuación:

  
signal input_10  : signed(3 downto 0);
signal output_10 : integer;

output_10 <= conv_integer(input_10);

Convertir de Signed a Std_Logic_Vector usando Std_Logic_Arith

Esta es una conversión fácil, todo lo que necesita hacer es usar el molde std_logic_vector como se muestra a continuación:

signal input_11  : signed(3 downto 0);
signal output_11 : std_logic_vector(3 downto 0);

output_11 <= std_logic_vector(input_11);

Convertir de Firmado a Sin firmar usando Std_Logic_Arith

Esta es una conversión fácil, todo lo que necesita hacer es usar el molde sin firmar como se muestra a continuación:

signal input_12  : signed(3 downto 0);
signal output_12 : unsigned(3 downto 0);
  
output_12 <= unsigned(input_12);

Convertir de sin signo a entero usando Std_Logic_Arith

Esta es una conversión fácil, todo lo que necesita hacer es usar la llamada a la función conv_integer de std_logic_arith como se muestra a continuación:

signal input_7  : unsigned(3 downto 0);
signal output_7 : integer;

output_7 <= conv_integer(input_7);

Convertir de Sin firmar a Firmado usando Std_Logic_Arith

Esta es una conversión fácil, todo lo que necesita hacer es usar el molde firmado como se muestra a continuación:

signal input_9  : unsigned(3 downto 0);
signal output_9 : signed(3 downto 0);

output_9 <= signed(input_9);

Convertir de Sin firmar a Std_Logic_Vector usando Std_Logic_Arith

Esta es una conversión fácil, todo lo que necesita hacer es usar el tipo de conversión std_logic_vector como se muestra a continuación:

  
signal input_8  : unsigned(3 downto 0);
signal output_8 : std_logic_vector(3 downto 0);

output_8 <= std_logic_vector(input_8);


Páginas de Nandland más populares

VHDL

  1. Tutorial - Introducción a VHDL
  2. Declaración de procedimiento:ejemplo de VHDL
  3. Registros:ejemplo de VHDL
  4. Firmado vs. Sin firmar en VHDL
  5. Variables - Ejemplo de VHDL
  6. Verificación formal en VHDL usando PSL
  7. Cómo crear una lista de cadenas en VHDL
  8. Cómo detener la simulación en un banco de pruebas VHDL
  9. Cómo crear un controlador PWM en VHDL
  10. Cómo generar números aleatorios en VHDL
  11. Banco de pruebas interactivo usando Tcl