Diseño de controlador de linterna circulante
1. Debe haber una variedad de cambios de patrones (al menos 4 diseños).
2. Se pueden cambiar y ciclar varias flores automáticamente.
3. Se puede seleccionar la velocidad de cambio de la linterna.
4. Interruptor cero.
Diseño del sistema
De acuerdo con los requisitos de diseño del sistema, se diseña un controlador de linterna con seis patrones de flores que cambian cíclicamente. El diseño del sistema adopta un método de diseño de arriba hacia abajo. El diagrama esquemático del diseño de la organización general del sistema se muestra en la siguiente figura, que consta de un módulo de control de sincronización y un módulo de control de pantalla. Todo el sistema tiene tres señales de entrada: la señal de reloj del sistema CLK, la señal de borrado del sistema CLR y el interruptor de selección SPRRD que controla la velocidad y el ritmo lento de las linternas. Los 9 LED de señal de salida [8...0] se utilizan para simular luces de colores.
TODOS;
La Entidad SX ES
PUERTO (
VELOCIDAD: EN STD_LOGIC;
CLK: EN STD_LOGIC;
CLR: IN STD_LOGIC;
CLK1: OUT STD_LOGIC
END SX
ARTE ARQUITECTURA DE SX
SEÑAL; CK: STD_LOGIC;
COMENZAR
PROCESO(CLK, CLR, VELOCIDAD)ES
VARBLE TEMP.STD_LOGIC_VECTOR(2 DOWNTO 0);
COMENZAR
IF CLR='1' ENTONCES
CKlt;='0';
TEMP:="000";
ELSIF(CLK'EVENT AND CLK='1') ENTONCES
IF(SPEED='1')ENTON
IF TEMP="001" ENTONCES
TEMP:="000";
CKlt;=NOT CK;
ELSE TEMP:=TEMP '1';
FINALIZAR SI; p>
p>
ELSE
IF TEMP="111" THEN
TEMP:="000";
CKlt;=NO CK ;
ELSE
TEMP:=TEMP '1'
END IF
END IF; /p>
END IF;
END PROCESO;
CLK1lt; =CK;
END ART; Programa fuente VHDL del módulo de control (XS.
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
ENTITY XS IS
PUERTO(CLK1: EN STD_LOGIC ;
CLR: EN STD_LOGIC;
LED: FUERA STD_LOGIC_VECTOR(8 DOWNTO 0));
END ENTITY XS
ARTE ARQUITECTURA DE LA LUZ: STD_LOGIC_VECTOR(8 DOWNTO 0);
COMENZAR
PROCESO(CLR, CLK1)ES
CONSTANTE L1: STD_LOGIC_VECTOR(8 DOWNTO 0):=" 001001001";
CONSTANTE L2: STD_LOGIC_VECTOR(8 DOWNTO 0):="010010010";
CONSTANTE L3: STD_LOGIC_VECTOR(8 DOWNTO 0) :="011011011";
CONSTAN
T L4: STD_LOGIC_VECTOR(8 DOWNTO 0):="100100100";
CONSTANTE L5: STD_LOGIC_VECTOR(8 DOWNTO 0):="101101101";
CONSTANTE L6: STD_LOGIC_VECTOR(8 DOWNTO 0):="110110110";
COMENZAR
IF CLR='1' ENTONCES
CURRENT_STATElt;=S0;
ELSIF(CLK1'EVENT AND; CURRENT_STATElt;=S2;
CUANDO S2=gt;LIGHTlt;=L2; CURRENT_STATElt;=S3;
CUANDO S3=gt; LIGHTlt;=L3 ; CURRENT_STATElt;=S4;
CUANDO S4=gt;=L4; CURRENT_STATElt;=S6;
CUANDO S6=gt; LIGHTlt; =L6; CURRENT_STATElt; =S1;
FINALIZAR CASO; PROCESO;
LEDlt;=LUZ;
ARTE FINAL;
Programa fuente VJDL (CAIDENG.VHD) para el diseño de nivel superior del controlador de linterna
BIBLIOTECA IEEE;
UTILIZAR IEEE.STD_LOGIC_1164.ALL;
ENTIDAD CAIDENG ES
PUERTO(CLK: EN STD_LOGIC;
CLR: EN STD_LOGIC;
VELOCIDAD: EN STD_LOGIC;
LED: FUERA STD_LOGIC_VECTOR(8 DOWNTO 0));
ENTIDAD FINAL; /p>
ARTE ARQUITECTURA DE CAIDENG ES
COMPONENTE SX ES
PUERTO(VELOCIDAD: EN STD_LOGIC;
CLK: EN STD_LOGIC;
CLR: EN STD_LOGIC;
CLK1: OUT STD_LOGIC
FINAL COMPONENTE SX
COMPONENTE XS
PUERTO(CLK1: EN STD_LOGIC;
CLR: EN STD_LOGIC;
LED: OUT STD_LOGIC_VECTOR(8 DOWNTO 0));
FINAL COMPONENTE XS
p>
SEÑAL S: STD_LOGIC;
COMIENZO
U1: MAPA DE PUERTO SX (VELOCIDAD, CLK, CLR, S
U2: XS); MAPA DE PUERTOS( S, CLR, LED);
FINAL ARTE;