


Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Programación en VHDL con la finalidad de que este pueda ser util
Tipo: Ejercicios
1 / 4
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!



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;