jueves, 10 de septiembre de 2020

En VHDL, la instrucción FOR-LOOP es una instrucción secuencial que se puede utilizar dentro de una instrucción de proceso, así como en subprogramas.

La instrucción FOR-LOOP se utiliza siempre que es necesario repetir una operación.

En el código de comportamiento VHDL, es decir, cuando escribimos un código VHDL de un banco de pruebas en un modelo de comportamiento puro, la instrucción de uso FOR-LOOP se puede considerar como una implementación SW común de una instrucción de bucle como en los otros lenguajes SW.

En VHDL RTL, la sentencia FOR-LOOP se utilizará teniendo en cuenta la implementación final del hardware.


La etiqueta de bucle es opcional, pero es una buena práctica de usar ya que el código VHDL se volvió más legible incluso si el archivo de origen VHDL se hizo más grande (ahora el espacio en el disco es más barato que hace algunos años, por lo que no es un problema).
Xilinx ISE implementa la descripción diferente VHDL del adder de una manera ligeramente diferente y la implementación depende del código VHDL RTL. La implementación FOR-LOOP desencadena una arquitectura de hardware diferente. Se informa de un informe de tiempo y área para los dos diseños en
Como es evidente, en un Xilinx Spartan 3 FPGA,equivalente al Ciclón II Altera FPGA, el área y el informe de tiempo para la implementación de dos diferentes difiere tanto en área como en tiempo. La sincronización máxima alcanzable está en la versión de código VHDL equilibrada y es de aproximadamente 80 MHz en la implementación de adder en cascada y alrededor de 107 MHz en la implementación equilibrada de adder de árbol.
Con asignaciones repetidas a una señal de destino, se sintetizará en un multiplexor grande con lógica en las entradas de selección para evaluar las condiciones de las diferentes opciones en las ramas de la instrucción case. No se deducirá ninguna "prioridad" del orden de las sucursales

La instrucción de caso VHDL funciona exactamente de la manera en que funciona una instrucción switch en C. Dada una entrada, la instrucción examina cada condición posible para encontrar una que satisfaga la señal de entrada. Son útiles para comprobar una señal de entrada contra muchas combinaciones.

-------------------------------------------------------------------------------

library ieee;
use ieee.std_logic_1164.all;
 
entity example_case_statement is
end example_case_statement;
 
architecture behave of example_case_statement is
 
  signal r_VAL_1  : std_logic := '0';
  signal r_VAL_2  : std_logic := '0';
  signal r_VAL_3  : std_logic := '0';
  signal r_RESULT : integer range 0 to 10;
   
begin
 
 
  -- Uses r_VAL_1, r_VAL_2, and r_VAL_3 together to drive a case statement
  -- This process is synthesizable
  p_CASE : process (r_VAL_1, r_VAL_2, r_VAL_3)
    variable v_CONCATENATE : std_logic_vector(2 downto 0);
  begin
    v_CONCATENATE := r_VAL_1 & r_VAL_2 & r_VAL_3;
     
    case v_CONCATENATE is
      when "000" | "100" =>
        r_RESULT <= 0;
      when "001" =>
        r_RESULT <= 1;
      when "010" =>
        r_RESULT <= 2;
      when others =>
        r_RESULT <= 9;
    end case;
     
  end process;
 
 
  -- This process is NOT synthesizable.  Test code only!
  -- Provides inputs to code and prints debug statements to console.
  p_TEST_BENCH : process is
  begin
    r_VAL_1 <= '0';
    r_VAL_2 <= '0';
    r_VAL_3 <= '0';
    wait for 100 ns;
    r_VAL_2 <= '0';
    r_VAL_3 <= '1';
    wait for 100 ns;
    r_VAL_2 <= '1';
    r_VAL_3 <= '0';
    wait for 100 ns;
    r_VAL_2 <= '1';
    r_VAL_3 <= '1';
    wait for 100 ns;
    wait;
  end process;
   
end behave;



IF-ELSIF El orden de las sentencias en la estructura if-elsif es muy importante. Más de una condición puede ser verdadera, y es la primera condición verdadera la que provoca que se ejecuten el grupo de sentencias que le siguen if CONDITION then -- sentencias secuenciales elsif CONDITION then -- sentencias secuenciales elsif CONDITION then -- sentencias secuenciales else -- sentencias secuenciales end if;

La instrucción if controla la ejecución condicional de otras instrucciones secuenciales. Contiene al menos una condición booleana (especificada después de la palabra clave if). Las condiciones restantes se especifican con la cláusula elsif . La cláusula else se trata como elsif true entonces. Las condiciones se evalúan una por una hasta que cualquiera de ellas se convierte en verdadera o no hay más condiciones que comprobar. Cuando una condición es true, la secuencia de instrucciones especificada después de la cláusula then se ejecuta. Si no se cumple ninguna condición, el control se pasa a la siguiente instrucción después de la instrucción if.
 la implementación de la arquitectura es diferente. La sección declarativa de arquitectura está vacía. No necesitamos una declaración de señal interna. El circuito se implementa mediante un proceso. En la lista de sensibilidad del proceso se declaran toda la señal a la que el proceso es sensible. De hecho, el proceso se evalúa cada vez que se programa una transacción en la señal a,b,d,e. El proceso impulsa el puerto de salida de la entidad g. El concepto de controlador es fundamental en VHDL. Comprenderá profundamente este concepto, ya que es la razón principal de error en la implementación de hardware de un código VHDL.
 

No hay comentarios:

Publicar un comentario

Contador de décadas:

Se comenzó este diseño mediante instanciacion de componentes para ello se crearon diversos elementos individuales los cuales fueron integrad...