Diseño VHDL del controlador de semáforo de intersección
1. Tareas de diseño del sistema y descripción general de funciones
1. Tareas de diseño del sistema
Requisitos de la tarea : Diseñar un controlador de semáforo para una intersección formada por la confluencia de una vía principal y un ramal. (1) Las carreteras principales y secundarias están equipadas con una luz indicadora verde, amarilla y roja y dos tubos digitales con pantalla (2) la carretera principal está en un estado normal que permite el tráfico, mientras que la vía secundaria solo puede pasar; cuando hay un vehículo; 3) Cuando hay vehículos en ambos ramales, se les permite pasar alternativamente por 45 segundos cada vez, y se permite el paso por el ramal; para pasar durante 25 segundos Durante cada proceso de conversión de una luz verde a una luz roja, una luz amarilla debe estar encendida durante 5 segundos y mostrar el tiempo de cuenta regresiva
2. p>
(1) Las carreteras principales y secundarias están equipadas con una luz indicadora verde, amarilla y roja, y dos tubos digitales con pantalla.
(2) Siempre se permite el paso por la vía principal, mientras que por la vía secundaria solo se permite el paso cuando hay un vehículo.
(3) Cuando hay vehículos tanto en la carretera principal como en la carretera secundaria, se les permite pasar alternativamente. La carretera principal puede pasar durante 45 segundos cada vez y la carretera secundaria está permitida. para pasar durante 25 segundos cada vez. La luz cambia de verde a rojo cada vez Durante el proceso de conversión, la luz amarilla debe estar encendida durante 5 segundos como transición y se debe mostrar el temporizador de cuenta regresiva.
2. Diseño y programación del sistema
1. Diseño del sistema
2. Programación VHDL
El módulo de control de semáforo jtdkz puede utilizar el máquina de estado para realizar de manera muy concisa el control de las luces indicadoras principales y secundarias y el control de habilitación de los circuitos de la unidad relacionados. El programa es el siguiente:
biblioteca ieee;
use ieee. .std_logic_1164.all;
entidad jtdkz es
puerto(clk, sm, sb: en std_logic;
mr, my, mg, br, by, bg:out std_logic);
entidad final jtdkz;
el arte arquitectónico de jtdkz es
tipo state_type es (a, b, c, d); /p>
estado de la señal: tipo_estado;
comenzar
cnt: proceso(clk) es
variable s: rango de enteros 0 a 45; /p>
variable clr, en: bit;
comenzar
if(clk'event y clk='1')entonces
if clr ='0' entonces s:=s;
else s:=s 1;
finalizar si;
el estado del caso es
cuando a=gt;mrlt;='0';mylt;='0';mglt;='1';
brlt;='1';bylt;='0';bglt; ='0';
if(sb and sm)='1' entonces
si s=45 entonces
statelt;=b;clr:= '0'; en: = '0';
else
statelt; = a; p> end if;
elsif(sb y (no sm))='1'entonces
statelt;=b;clr:='0';en:='0 ';
else
statelt;=a; clr:='1';en:='1';
fin si;
cuando b=gt;mrlt;='0';mylt;='1';mglt;='0';
brlt;='1';bylt;='0'; bglt;='0';
si s=5 entonces
statelt;=c; clr:='0'; en:='0';
else
statelt;=b;clr:='1';en:='1';
terminar si;
cuando c=gt ;mrlt;='1';mylt;='0';mglt;='0';
<p> brlt;='0';bylt;='0';bglt;='1';
si(sb y sm)='1' entonces
si s =25 entonces
statelt;=d;clr:='0';en:='0';
else
statelt;=c;clr :='1';es:='1';
end if;
elsif sb='0'then
statelt;=d;clr :='0'; en:='0';
else
statelt;=c; >
terminar si;
cuando d=gt;mrlt;='1';mylt;='0';mglt;='0';
brlt;= '0';bylt;='1';bglt;='0';
si s=5 entonces
statelt;=a;clr:='0';en :='0';
else
statelt;=d; clr:='1'; en:='1';
end if;
finalizar caso;
finalizar si;
finalizar proceso cnt;
finalizar arte de arquitectura