Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


VHDL Ejercicio práctico, Ejercicios de Programación y Diseño Digital Lógico

Programación en VHDL con la finalidad de que este pueda ser util

Tipo: Ejercicios

2018/2019

Subido el 07/11/2019

tlax-ru
tlax-ru 🇲🇽

5

(3)

3 documentos

1 / 4

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.numeric_std.all;
use IEEE.std_logic_arith.all;
entity Principal_VHDL is
Port ( --Para seleccionar piso (destino a...)
P_Select : in STD_LOGIC_VECTOR(7 downto 0);
--Sensor del piso
x: in std_logic_vector(7 downto 0);
Salida_LED: out std_logic_vector(6 downto 0);
U_mayor_D: inout std_logic;
U_menor_D: inout std_logic;
igual: inout std_logic;
Cubo1,Cubo2,Cubo3,Cubo4: out std_logic;
CLOCK_1: in std_logic
);
end Principal_VHDL;
architecture Behavioral of Principal_VHDL is
--Componentes
component JK_FF
port( J,K,CLOCK:in std_logic;
Q,QB: out std_logic
);
--Importante: En otro código se tiene que programar el
funcionamiento del componente
--Ese Archivo deberá llamarse igual que el componente
end component;
--Signals
signal Q,QB: std_logic_vector(2 downto 0):="000";
--De los 8 pisos, se pueden convertir solo a 3 pisos, con un
decodificador
signal Destino,puerto,Destino_f: std_logic_vector(2 downto 0);
--Despues del sensor ("x") pasa por un decodificador con
prioridad. (Valor del más alto)
--Es decir, no impor el valor de los que estan abajo, si no
del valor del sensor más alto.
signal Ubicacion: std_logic_vector(2 downto 0);
--Cuando el elevador va subiendo, los canales de activan a
nivel alto.
--Al bajar el ascensor los dinales de carrera se van
desactivando(nivel bajo)
pf3
pf4

Vista previa parcial del texto

¡Descarga VHDL Ejercicio práctico y más Ejercicios en PDF de Programación y Diseño Digital Lógico solo en Docsity!

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.numeric_std.all; use IEEE.std_logic_arith.all;

entity Principal_VHDL is Port ( --Para seleccionar piso (destino a...) P_Select : in STD_LOGIC_VECTOR(7 downto 0); --Sensor del piso x: in std_logic_vector(7 downto 0); Salida_LED: out std_logic_vector(6 downto 0); U_mayor_D: inout std_logic; U_menor_D: inout std_logic; igual: inout std_logic; Cubo1,Cubo2,Cubo3,Cubo4: out std_logic; CLOCK_1: in std_logic ); end Principal_VHDL;

architecture Behavioral of Principal_VHDL is --Componentes component JK_FF port( J,K,CLOCK:in std_logic; Q,QB: out std_logic ); --Importante: En otro código se tiene que programar el funcionamiento del componente --Ese Archivo deberá llamarse igual que el componente end component;

--Signals signal Q,QB: std_logic_vector(2 downto 0):="000"; --De los 8 pisos, se pueden convertir solo a 3 pisos, con un decodificador signal Destino,puerto,Destino_f: std_logic_vector(2 downto 0); --Despues del sensor ("x") pasa por un decodificador con prioridad. (Valor del más alto) --Es decir, no impor el valor de los que estan abajo, si no del valor del sensor más alto. signal Ubicacion: std_logic_vector(2 downto 0); --Cuando el elevador va subiendo, los canales de activan a nivel alto. --Al bajar el ascensor los dinales de carrera se van desactivando(nivel bajo)

--Inicio del Begin de la arquitectura begin --If Destino_f(0)<=Destino(0) and igual; Destino_f(1)<=Destino(1) and igual; Destino_f(2)<=Destino(2) and igual; --Aqui inicia FlipFlop PFA1:JK_FF port map(Destino_f(0),igual,CLOCK_1,Q(0),QB(0)); PFA2:JK_FF port map(Destino_f(1),igual,CLOCK_1,Q(1),QB(1)); PFA3:JK_FF port map(Destino_f(2),igual,CLOCK_1,Q(2),QB(2)); --Decodificador de Prioridad --La ubicación del elevador recibe la señal del sensor para después tranformarla --a un número de 3 bits Ubicacion<="111" when std_match(x,"1-------") else "110" when std_match(x,"-1------") else "101" when std_match(x,"--1-----") else "100" when std_match(x,"---1----") else "011" when std_match(x,"----1---") --Mas facil un comparador de 3 salidas que de entradas else "010" when std_match(x,"-----1--") -- 8 entradas= 3 Salidas else "001" when std_match(x,"------1-") else "000"; --Decodificador para la selección del piso Destino<= "111" when std_match(P_Select,"10000000") else "110" when std_match(P_Select,"01000000") else "101" when std_match(P_Select,"00100000") else "100" when std_match(P_Select,"00010000") else "011" when std_match(P_Select,"00001000") --Mas facil un comparador de 3 salidas que de entradas else "010" when std_match(P_Select,"00000100") -- 8 entradas= 3 Salidas else "001" when std_match(P_Select,"00000010") else "000"; --Comparador process(Ubicacion,Destino) begin --Para A mayor B if(Ubicacion>Q)then U_mayor_D<= '1'; U_menor_D<= '0'; igual<= '0'; --Para A menor B elsif(Ubicacion<Q)then U_mayor_D<= '0';

library IEEE; use IEEE.STD_LOGIC_1164.ALL;

entity JK_FF is Port ( J,K,CLOCK : in STD_LOGIC; Q,QB: out STD_LOGIC:='0' ); end JK_FF;

architecture Behavioral of JK_FF is --Inicio de la arquitectura begin process(CLOCK) variable TMP:STD_LOGIC; begin if(rising_edge(CLOCK)) then if(J='0'and K='0') then TMP:=TMP; elsif(J='1' and K='1')then TMP:= not TMP; elsif(J='0' and K='1')then TMP:='0'; else TMP:='1'; end if; end if; Q<=TMP; QB<=not TMP; end process; end Behavioral;