світла

L

leoren_tm

Guest
Я світло Код руху, але ще є проблеми на скидання і пауза ..
PLS допоможіть мені дюйма.
Код:БІБЛІОТЕКА IEEE;

ВИКОРИСТАННЯ IEEE.std_logic_1164.all;

ENTITY trafficlight IS

PORT (

запускати, зупиняти, скидання, годинники: в std_logic;

seven_segment: OUT std_logic_vector (10 DOWNTO 0);

led_display: OUT std_logic_vector (7 DOWNTO 0));

КІНЕЦЬ trafficlight;АРХІТЕКТУРА А trafficlight IS

Тип STATE_TYPE IS (S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12);

Тип STATE_TYPE2 IS (P1, P2, P3, P4);

СИГНАЛ держави: STATE_TYPE;

СИГНАЛ State2: STATE_TYPE2;

Сигнал clock_delay, clock_seconds: std_logic;BEGINПРОЦЕС (години)

VARIABLE Cnt: integer діапазоні від 0 до 4096;

BEGINЯКЩО (clock'EVENT та години = '1 ') THEN

Cnt: = Cnt 1;

IF (CNT> = 2048 і Центр <4096) THEN

clock_delay <= '1 ';ELSIF (CNT> = 4096), то

Cnt: = 0;

ELSIF (CNT <= 2047), то

clock_delay <= '0 ';

END IF;

END IF;

Завершити процес;

ПРОЦЕС (години)

VARIABLE count_to_second: INTEGER діапазоні від 0 до 50000000;

BEGINЯКЩО (clock'EVENT та години = '1 ') THEN

count_to_second: = count_to_second 1;

ЯКЩО (count_to_second> = 25000000 і count_to_second <50000000) THEN

clock_seconds <= '1 ';ELSIF (count_to_second> = 50000000), то

count_to_second: = 0;

ELSIF (count_to_second <= 25000000), то

clock_seconds <= '0 ';

END IF;

END IF;

Завершити процес;

процес (clock_delay, clock_seconds)

починати

якщо clock_seconds'event і clock_seconds = '1 ', то

справи держави

при S1 =>

Держава <= S2;

led_display <= "00100001";

якщо clock_delay'event і clock_delay = '1 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01000000111"; - G

коли P2 =>

State2 <= P3;

seven_segment <= "00000011011"; - O

коли P3 =>

State2 <= 4;

seven_segment <= "01001001101"; - S

коли P4 =>

State2 <= P1;

seven_segment <= "11100001110"; - T

кінець справі;

End If;

коли S2 =>

Держава <= S3;

led_display <= "00100001";

якщо clock_delay'event і clock_delay = '1 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01000000111"; - G

коли P2 =>

State2 <= P3;

seven_segment <= "00000011011"; - O

коли P3 =>

State2 <= 4;

seven_segment <= "01001001101"; - S

коли P4 =>

State2 <= P1;

seven_segment <= "11100001110"; - T

кінець справі;

End If;

коли S3 =>

Держава <= S4;

led_display <= "00100001";

якщо clock_delay'event і clock_delay = '1 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01000000111"; - G

коли P2 =>

State2 <= P3;

seven_segment <= "00000011011"; - O

коли P3 =>

State2 <= 4;

seven_segment <= "01001001101"; - S

коли P4 =>

State2 <= P1;

seven_segment <= "11100001110"; - T

кінець справі;

End If;

коли S4 =>

Держава <= S5;

led_display <= "00100001";

якщо clock_delay'event і clock_delay = '1 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01000000111"; - G

коли P2 =>

State2 <= P3;

seven_segment <= "00000011011"; - O

коли P3 =>

State2 <= 4;

seven_segment <= "01001001101"; - S

коли P4 =>

State2 <= P1;

seven_segment <= "11100001110"; - T

кінець справі;

End If;

коли S5 =>

Держава <= S6;

led_display <= "00100001";

якщо clock_delay'event і clock_delay = '1 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01000000111"; - G

коли P2 =>

State2 <= P3;

seven_segment <= "00000011011"; - O

коли P3 =>

State2 <= 4;

seven_segment <= "01001001101"; - S

коли P4 =>

State2 <= P1;

seven_segment <= "11100001110"; - T

кінець справі;

End If;

коли S6 =>

Держава <= S7;

led_display <= "00100010";

якщо clock_delay'event і clock_delay = '1 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01000000111"; - G

коли P2 =>

State2 <= P3;

seven_segment <= "00000011011"; - O

коли P3 =>

State2 <= 4;

seven_segment <= "01001001101"; - S

коли P4 =>

State2 <= P1;

seven_segment <= "11100001110"; - T

кінець справі;

End If;

коли S7 =>

Держава <= S8;

led_display <= "00001100";

якщо clock_delay'event і clock_delay = '1 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01001000111"; - S

коли P2 =>

State2 <= P3;

seven_segment <= "11100001011"; - T

коли P3 =>

State2 <= 4;

seven_segment <= "01000001101"; - G

коли P4 =>

State2 <= P1;

seven_segment <= "00000011110"; - O

кінець справі;

End If;

коли s8 =>

Держава <= S9;

led_display <= "00001100";

якщо clock_delay'event і clock_delay = '1 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01001000111"; - S

коли P2 =>

State2 <= P3;

seven_segment <= "11100001011"; - T

коли P3 =>

State2 <= 4;

seven_segment <= "01000001101"; - G

коли P4 =>

State2 <= P1;

seven_segment <= "00000011110"; - O

кінець справі;

End If;

коли S9 =>

Держава <= S10;

led_display <= "00001100";

якщо clock_delay'event і clock_delay = '1 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01001000111"; - S

коли P2 =>

State2 <= P3;

seven_segment <= "11100001011"; - T

коли P3 =>

State2 <= 4;

seven_segment <= "01000001101"; - G

коли P4 =>

State2 <= P1;

seven_segment <= "00000011110"; - O

кінець справі;

End If;

при S10 =>

Держава <= S11;

led_display <= "00001100";

якщо clock_delay'event і clock_delay = '1 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01001000111"; - S

коли P2 =>

State2 <= P3;

seven_segment <= "11100001011"; - T

коли P3 =>

State2 <= 4;

seven_segment <= "01000001101"; - G

коли P4 =>

State2 <= P1;

seven_segment <= "00000011110"; - O

кінець справі;

End If;

при S11 =>

Держава <= S12;

led_display <= "00001100";

якщо clock_delay'event і clock_delay = '1 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01001000111"; - S

коли P2 =>

State2 <= P3;

seven_segment <= "11100001011"; - T

коли P3 =>

State2 <= 4;

seven_segment <= "01000001101"; - G

коли P4 =>

State2 <= P1;

seven_segment <= "00000011110"; - O

кінець справі;

End If;

при S12 =>

Держава <= S1;

led_display <= "00010100";

якщо clock_delay'event і clock_delay = '1 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01001000111"; - S

коли P2 =>

State2 <= P3;

seven_segment <= "11100001011"; - T

коли P3 =>

State2 <= 4;

seven_segment <= "01000001101"; - G

коли P4 =>

State2 <= P1;

seven_segment <= "00000011110"; - O

кінець справі;

End If;

кінець справі;

End If;

Наприкінці процесу;

END;
 
я відредагував деякі з них ..
Зараз я отримав повідомлення про помилку, Cant запустити ..
"Держава має більш ніж 1 вхідний .."
Hir мій код .. якщо хтось Xilinx Spartan3, ви могли його запустити?
Код:БІБЛІОТЕКА IEEE;

ВИКОРИСТАННЯ IEEE.std_logic_1164.all;

ENTITY trafficlight_led IS

PORT (

запускати, зупиняти, скидання, годинники: в std_logic;

seven_segment: OUT std_logic_vector (10 DOWNTO 0);

led_display: OUT std_logic_vector (7 DOWNTO 0));

КІНЕЦЬ trafficlight_led;АРХІТЕКТУРА А trafficlight_led IS

Тип STATE_TYPE IS (S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12);

СИГНАЛ держави: STATE_TYPE;

Сигнал clock_seconds, pause_state, sevensegment, clock_delay: std_logic;

Тип STATE_TYPE2 IS (P1, P2, P3, P4);

СИГНАЛ State2: STATE_TYPE2;BEGIN

CLOCK_IN_SECOND: Process (години)

VARIABLE count_to_second: INTEGER діапазоні від 0 до 50000000;

BEGINЯКЩО (clock'EVENT та години = '1 ') THEN

count_to_second: = count_to_second 1;

ЯКЩО (count_to_second> = 25000000 і count_to_second <50000000) THEN

clock_seconds <= '1 ';ELSIF (count_to_second> = 50000000), то

count_to_second: = 0;

ELSIF (count_to_second <= 25000000), то

clock_seconds <= '0 ';

END IF;

END IF;

Завершити процес CLOCK_IN_SECOND;

MAIN_CONTROL: процес (пауза, запуск, скидання)

починати

якщо start'event і почати = '1 ', то

pause_state <= '0 ';

End If;

якщо pause'event і пауза = '1 ', то

pause_state <= '1 ';

End If;

якщо reset'event і скидання = '1 ', то

Держава <= S1;

pause_state <= '0 ';

End If;Завершити процес MAIN_CONTROL;

LED_DISPLAY_TRAFFIC: процес (clock_seconds)

починати

якщо start'event і почати = '1 ', то

якщо clock_seconds'event і clock_seconds = '1 ', то

справи держави

при S1 => Якщо pause_state = '1 ', то

Держава <= S1;

ELSIF pause_state = '0 ', то

Держава <= S2;

End If;

led_display <= "00100001";

sevensegment <= '0 '; - ГОСТ

коли S2 => Якщо pause_state = '1 ', то

Держава <= S2;

ELSIF pause_state = '0 ', то

Держава <= S3;

End If;

sevensegment <= '0 '; - ГОСТ

led_display <= "00100001";

коли S3 => Якщо pause_state = '1 ', то

Держава <= S3;

ELSIF pause_state = '0 ', то

Держава <= S4;

End If;

sevensegment <= '0 '; - ГОСТ

led_display <= "00100001";

коли s4 => Якщо pause_state = '1 ', то

Держава <= S4;

ELSIF pause_state = '0 ', то

Держава <= S5;

End If;

led_display <= "00100001";

sevensegment <= '0 '; - ГОСТ

коли S5 => Якщо pause_state = '1 ', то

Держава <= S5;

ELSIF pause_state = '0 ', то

Держава <= S6;

End If;

led_display <= "00100001";

sevensegment <= '0 '; - ГОСТ

коли S6 => Якщо pause_state = '1 ', то

Держава <= S6;

ELSIF pause_state = '0 ', то

Держава <= S7;

End If;

led_display <= "00100010";

sevensegment <= '0 '; - ГОСТ

коли S7 => Якщо pause_state = '1 ', то

Держава <= S7;

ELSIF pause_state = '0 ', то

Держава <= S8;

End If;

led_display <= "00001100";

sevensegment <= '1 '; - StGO

коли s8 => Якщо pause_state = '1 ', то

Держава <= S8;

ELSIF pause_state = '0 ', то

Держава <= S9;

End If;

led_display <= "00001100";

sevensegment <= '1 '; - StGO

коли S9 => Якщо pause_state = '1 ', то

Держава <= S9;

ELSIF pause_state = '0 ', то

Держава <= S10;

End If;

led_display <= "00001100";

sevensegment <= '1 '; - StGO

при S10 => Якщо pause_state = '1 ', то

Держава <= S10;

ELSIF pause_state = '0 ', то

Держава <= S11;

End If;

led_display <= "00001100";

sevensegment <= '1 '; - StGO

при S11 => Якщо pause_state = '1 ', то

Держава <= S11;

ELSIF pause_state = '0 ', то

Держава <= S12;

End If;

led_display <= "00001100";

sevensegment <= '1 '; - StGO

коли s12 => Якщо pause_state = '1 ', то

Держава <= S12;

ELSIF pause_state = '0 ', то

Держава <= S1;

End If;

led_display <= "00010100";

sevensegment <= '1 '; - StGOкінець справі;

End If;

End If;

Завершити процес LED_DISPLAY_TRAFFIC;

CLOCK_DELAY_FOR_7SEGMENT: Process (години)

VARIABLE Count: Integer діапазоні від 0 до 4096;

BEGINЯКЩО (clock'EVENT та години = '1 ') THEN

Count: = Count 1;

ЯКЩО (кол-во> = 2048 і кол-во <4096) THEN

clock_delay <= '1 ';ELSIF (кол-во> = 4096), то

Count: = 0;

ELSIF (кол-во <= 2047), то

clock_delay <= '0 ';

END IF;

END IF;

Завершити процес CLOCK_DELAY_FOR_7SEGMENT;

SEVEN_SEGMENT_DISPLAY: процес (clock_delay)

починати

якщо clock_delay'event і clock_delay = '1 ', то

якщо sevensegment = '0 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01000000111"; - G

коли P2 =>

State2 <= P3;

seven_segment <= "00000011011"; - O

коли P3 =>

State2 <= 4;

seven_segment <= "01001001101"; - S

коли P4 =>

State2 <= P1;

seven_segment <= "11100001110"; - T

кінець справі;

ELSIF sevensegment = '1 ', то

State2 випадку є

при P1 =>

State2 <= P2; - АВСОЕРО --

seven_segment <= "01001000111"; - S

коли P2 =>

State2 <= P3;

seven_segment <= "11100001011"; - T

коли P3 =>

State2 <= 4;

seven_segment <= "01000001101"; - G

коли P4 =>

State2 <= P1;

seven_segment <= "00000011110"; - O

кінець справі;

End If;

End If;

SEVEN_SEGMENT_DISPLAY кінці процесу;

END;
 

Welcome to EDABoard.com

Sponsor

Back
Top