ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Codigo VHDL tanques


Enviado por   •  30 de Abril de 2024  •  Síntesis  •  709 Palabras (3 Páginas)  •  24 Visitas

Página 1 de 3

Se tienen dos depósitos de agua de los que se quiere conocer en cada momento el nivel de agua del que esté más vacio, y la diferencia de nivel respecto al mayor (en valor absoluto).

Para conocer el nivel, cada depósito tiene 7 sensores distribuidos a lo alto del depósito. Cada sensor dará un "I' lógico si está cubierto de agua, y un '0' lógico si está al aire.

La salida se dará mediante dos displays de 7 segmentos, uno para indicar el nivel del más vacio, y otro para

indicar la diferencia. Como se tienen 7 sensores para conocer el nivel, el rango de valores va desde 0 a 7. Se supone que ningún sensor va a fallar, por lo tanto, si un sensor indica un 'T' lógico, todos los sensores que estén debajo de él darán un "1" lógico (pues el agua los cubrirá también).

Realizar:

a) Diagrama de bloques del circuito lógico del problema "nivel de depósitos de agua.

b) Síntesis del circuito del apartado anterior, usando VHDL, y descripción de arquitectura tipo COMPORTAMENTAL ALGORITMICO. Para cada bloque funcional debe corresponder la descripción de un process() "descripción modular".

Simular el circuito usando University Waveform. Generar un vector de prueba (testhench) para validar el funcionamiento del circuito (generar estados de entrada suficientes, que permitan evidenciar el correcto funcionamiento), c) d) Implementación en FPGA Cyclone II.

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity WaterLevel is

    Port (

           Sensor_Deposito1 : in  STD_LOGIC_VECTOR (6 downto 0);

           Sensor_Deposito2 : in  STD_LOGIC_VECTOR (6 downto 0);

           Display_Deposito1 : out  STD_LOGIC_VECTOR (6 downto 0);

           Display_Deposito2 : out  STD_LOGIC_VECTOR (6 downto 0);

           Display_Diferencia : out  STD_LOGIC_VECTOR (6 downto 0)

         );

end WaterLevel;

architecture Behavioral of WaterLevel is

    signal Nivel_Deposito1 : integer range 0 to 7;

    signal Nivel_Deposito2 : integer range 0 to 7;

    signal Diferencia : integer range 0 to 7;

begin

    process(Sensor_Deposito1, Sensor_Deposito2)

    begin

        -- Calcular nivel del depósito 1

        Nivel_Deposito1 <= 0;

        for i in 6 downto 0 loop

            if Sensor_Deposito1(i) = '1' then

                Nivel_Deposito1 <= 7 - i;

                exit;

            end if;

        end loop;

        -- Calcular nivel del depósito 2

...

Descargar como (para miembros actualizados) txt (3 Kb) pdf (28 Kb) docx (8 Kb)
Leer 2 páginas más »
Disponible sólo en Clubensayos.com