TRAFFIC ánh sáng

L

leoren_tm

Guest
tôi có đèn giao thông code nhưng vẫn có một vấn đề về thiết lập lại và tạm dừng ..
pls giúp tôi nhập.
Mã số:Thư viện IEEE;

SỬ DỤNG ieee.std_logic_1164.ALL;

PHẬN trafficlight IS

PORT (

bắt đầu, tạm dừng, thiết lập lại, đồng hồ: trong std_logic;

seven_segment: OUT STD_LOGIC_VECTOR (10 downto 0);

led_display: OUT STD_LOGIC_VECTOR (7 downto 0));

END trafficlight;KIẾN TRÚC một OF trafficlight IS

STATE_TYPE TYPE IS (s1, s2, s3, S4, S5, S6, S7, S8, S9, S10, s11, S12);

STATE_TYPE2 TYPE IS (p1, p2, p3, P4);

TÍNHIỆU nhà nước: STATE_TYPE;

TÍNHIỆU state2: STATE_TYPE2;

tín hiệu clock_delay, clock_seconds: std_logic;BEGINQUY TRÌNH (đồng hồ)

BIẾN CNT: INTEGER RANGE 0 TO 4.096;

BEGINIF (clock'EVENT và đồng hồ = '1 ') THEN

CNT: = CNT 1;

IF (CNT> = 2048 và CNT <4.096) THEN

clock_delay <= '1 ';elsif (CNT> = 4.096) sau đó

CNT: = 0;

ELSif (CNT <= 2047) sau đó

clock_delay <= "0";

END IF;

END IF;

QUY TRÌNH END;

QUY TRÌNH (đồng hồ)

BIẾN count_to_second: INTEGER RANGE 0 TO 50.000.000;

BEGINIF (clock'EVENT và đồng hồ = '1 ') THEN

count_to_second: = count_to_second 1;

IF (> count_to_second = 25.000.000 và count_to_second <50.000.000) THEN

clock_seconds <= '1 ';elsif (count_to_second> = 50.000.000) sau đó

count_to_second: = 0;

ELSif (count_to_second <= 25.000.000) sau đó

clock_seconds <= "0";

END IF;

END IF;

QUY TRÌNH END;

quá trình (clock_delay, clock_seconds)

bắt đầu

nếu clock_seconds'event và clock_seconds = "1" sau đó

trường hợp nhà nước là

khi s1 =>

nhà nước <= s2;

<Led_display = "00100001";

nếu clock_delay'event và clock_delay = "1" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01000000111"; - G

khi p2 =>

state2 <= p3;

seven_segment <= "00000011011"; - O

khi p3 =>

state2 <= P4;

seven_segment <= "01001001101"; - S

khi P4 =>

state2 <= p1;

<Seven_segment = "11100001110"; - t

kết thúc vụ án;

nếu kết thúc;

khi s2 =>

nhà nước <= s3;

<Led_display = "00100001";

nếu clock_delay'event và clock_delay = "1" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01000000111"; - G

khi p2 =>

state2 <= p3;

seven_segment <= "00000011011"; - O

khi p3 =>

state2 <= P4;

seven_segment <= "01001001101"; - S

khi P4 =>

state2 <= p1;

<Seven_segment = "11100001110"; - t

kết thúc vụ án;

nếu kết thúc;

khi s3 =>

nhà nước <= S4;

<Led_display = "00100001";

nếu clock_delay'event và clock_delay = "1" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01000000111"; - G

khi p2 =>

state2 <= p3;

seven_segment <= "00000011011"; - O

khi p3 =>

state2 <= P4;

seven_segment <= "01001001101"; - S

khi P4 =>

state2 <= p1;

<Seven_segment = "11100001110"; - t

kết thúc vụ án;

nếu kết thúc;

khi S4 =>

nhà nước <= S5;

<Led_display = "00100001";

nếu clock_delay'event và clock_delay = "1" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01000000111"; - G

khi p2 =>

state2 <= p3;

seven_segment <= "00000011011"; - O

khi p3 =>

state2 <= P4;

seven_segment <= "01001001101"; - S

khi P4 =>

state2 <= p1;

<Seven_segment = "11100001110"; - t

kết thúc vụ án;

nếu kết thúc;

khi S5 =>

nhà nước <= S6;

<Led_display = "00100001";

nếu clock_delay'event và clock_delay = "1" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01000000111"; - G

khi p2 =>

state2 <= p3;

seven_segment <= "00000011011"; - O

khi p3 =>

state2 <= P4;

seven_segment <= "01001001101"; - S

khi P4 =>

state2 <= p1;

<Seven_segment = "11100001110"; - t

kết thúc vụ án;

nếu kết thúc;

khi S6 =>

nhà nước <= S7;

<Led_display = "00100010";

nếu clock_delay'event và clock_delay = "1" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01000000111"; - G

khi p2 =>

state2 <= p3;

seven_segment <= "00000011011"; - O

khi p3 =>

state2 <= P4;

seven_segment <= "01001001101"; - S

khi P4 =>

state2 <= p1;

<Seven_segment = "11100001110"; - t

kết thúc vụ án;

nếu kết thúc;

khi S7 =>

nhà nước <= S8;

<Led_display = "00001100";

nếu clock_delay'event và clock_delay = "1" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01001000111"; - S

khi p2 =>

state2 <= p3;

<Seven_segment = "11100001011"; - t

khi p3 =>

state2 <= P4;

seven_segment <= "01000001101"; - G

khi P4 =>

state2 <= p1;

seven_segment <= "00000011110"; - O

kết thúc vụ án;

nếu kết thúc;

khi S8 =>

nhà nước <= S9;

<Led_display = "00001100";

nếu clock_delay'event và clock_delay = "1" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01001000111"; - S

khi p2 =>

state2 <= p3;

<Seven_segment = "11100001011"; - t

khi p3 =>

state2 <= P4;

seven_segment <= "01000001101"; - G

khi P4 =>

state2 <= p1;

seven_segment <= "00000011110"; - O

kết thúc vụ án;

nếu kết thúc;

khi S9 =>

nhà nước <= S10;

<Led_display = "00001100";

nếu clock_delay'event và clock_delay = "1" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01001000111"; - S

khi p2 =>

state2 <= p3;

<Seven_segment = "11100001011"; - t

khi p3 =>

state2 <= P4;

seven_segment <= "01000001101"; - G

khi P4 =>

state2 <= p1;

seven_segment <= "00000011110"; - O

kết thúc vụ án;

nếu kết thúc;

khi S10 =>

nhà nước <= s11;

<Led_display = "00001100";

nếu clock_delay'event và clock_delay = "1" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01001000111"; - S

khi p2 =>

state2 <= p3;

<Seven_segment = "11100001011"; - t

khi p3 =>

state2 <= P4;

seven_segment <= "01000001101"; - G

khi P4 =>

state2 <= p1;

seven_segment <= "00000011110"; - O

kết thúc vụ án;

nếu kết thúc;

khi s11 =>

nhà nước <= S12;

<Led_display = "00001100";

nếu clock_delay'event và clock_delay = "1" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01001000111"; - S

khi p2 =>

state2 <= p3;

<Seven_segment = "11100001011"; - t

khi p3 =>

state2 <= P4;

seven_segment <= "01000001101"; - G

khi P4 =>

state2 <= p1;

seven_segment <= "00000011110"; - O

kết thúc vụ án;

nếu kết thúc;

khi S12 =>

nhà nước <= s1;

<Led_display = "00010100";

nếu clock_delay'event và clock_delay = "1" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01001000111"; - S

khi p2 =>

state2 <= p3;

<Seven_segment = "11100001011"; - t

khi p3 =>

state2 <= P4;

seven_segment <= "01000001101"; - G

khi P4 =>

state2 <= p1;

seven_segment <= "00000011110"; - O

kết thúc vụ án;

nếu kết thúc;

kết thúc vụ án;

nếu kết thúc;

kết thúc quá trình;

END một;
 
i edited một số của nó ..
bây giờ tôi đã nhận một lỗi, không thể chạy nó ..
"Nhà nước có hơn 1 đầu vào .."
hir là code của tôi .. một nếu có ai đó có một Xilinx spartan3, bạn có thể chạy nó?
Mã số:Thư viện IEEE;

SỬ DỤNG ieee.std_logic_1164.ALL;

PHẬN trafficlight_led IS

PORT (

bắt đầu, tạm dừng, thiết lập lại, đồng hồ: trong std_logic;

seven_segment: OUT STD_LOGIC_VECTOR (10 downto 0);

led_display: OUT STD_LOGIC_VECTOR (7 downto 0));

END trafficlight_led;KIẾN TRÚC một OF trafficlight_led IS

STATE_TYPE TYPE IS (s1, s2, s3, S4, S5, S6, S7, S8, S9, S10, s11, S12);

TÍNHIỆU nhà nước: STATE_TYPE;

clock_seconds tín hiệu, pause_state, sevensegment, clock_delay: std_logic;

STATE_TYPE2 TYPE IS (p1, p2, p3, P4);

TÍNHIỆU state2: STATE_TYPE2;BEGIN

CLOCK_IN_SECOND: TRÌNH (đồng hồ)

BIẾN count_to_second: INTEGER RANGE 0 TO 50.000.000;

BEGINIF (clock'EVENT và đồng hồ = '1 ') THEN

count_to_second: = count_to_second 1;

IF (> count_to_second = 25.000.000 và count_to_second <50.000.000) THEN

clock_seconds <= '1 ';elsif (count_to_second> = 50.000.000) sau đó

count_to_second: = 0;

ELSif (count_to_second <= 25.000.000) sau đó

clock_seconds <= "0";

END IF;

END IF;

END TRÌNH CLOCK_IN_SECOND;

MAIN_CONTROL: TRÌNH (tạm dừng, bắt đầu, thiết lập lại)

bắt đầu

nếu start'event và bắt đầu = "1" sau đó

pause_state <= "0";

nếu kết thúc;

nếu pause'event và tạm dừng = "1" sau đó

pause_state <= '1 ';

nếu kết thúc;

nếu reset'event và đặt lại = "1" sau đó

nhà nước <= s1;

pause_state <= "0";

nếu kết thúc;kết thúc quá trình MAIN_CONTROL;

LED_DISPLAY_TRAFFIC: quá trình (clock_seconds)

bắt đầu

nếu start'event và bắt đầu = "1" sau đó

nếu clock_seconds'event và clock_seconds = "1" sau đó

trường hợp nhà nước là

khi s1 => nếu pause_state = "1" sau đó

nhà nước <= s1;

elsif pause_state = "0" sau đó

nhà nước <= s2;

nếu kết thúc;

<Led_display = "00100001";

sevensegment <= "0"; - GOST

khi s2 => nếu pause_state = "1" sau đó

nhà nước <= s2;

elsif pause_state = "0" sau đó

nhà nước <= s3;

nếu kết thúc;

sevensegment <= "0"; - GOST

<Led_display = "00100001";

khi s3 => nếu pause_state = "1" sau đó

nhà nước <= s3;

elsif pause_state = "0" sau đó

nhà nước <= S4;

nếu kết thúc;

sevensegment <= "0"; - GOST

<Led_display = "00100001";

khi S4 => nếu pause_state = "1" sau đó

nhà nước <= S4;

elsif pause_state = "0" sau đó

nhà nước <= S5;

nếu kết thúc;

<Led_display = "00100001";

sevensegment <= "0"; - GOST

khi S5 => nếu pause_state = "1" sau đó

nhà nước <= S5;

elsif pause_state = "0" sau đó

nhà nước <= S6;

nếu kết thúc;

<Led_display = "00100001";

sevensegment <= "0"; - GOST

khi S6 => nếu pause_state = "1" sau đó

nhà nước <= S6;

elsif pause_state = "0" sau đó

nhà nước <= S7;

nếu kết thúc;

<Led_display = "00100010";

sevensegment <= "0"; - GOST

khi S7 => nếu pause_state = "1" sau đó

nhà nước <= S7;

elsif pause_state = "0" sau đó

nhà nước <= S8;

nếu kết thúc;

<Led_display = "00001100";

sevensegment <= '1 '; - StGO

khi S8 => nếu pause_state = "1" sau đó

nhà nước <= S8;

elsif pause_state = "0" sau đó

nhà nước <= S9;

nếu kết thúc;

<Led_display = "00001100";

sevensegment <= '1 '; - StGO

khi S9 => nếu pause_state = "1" sau đó

nhà nước <= S9;

elsif pause_state = "0" sau đó

nhà nước <= S10;

nếu kết thúc;

<Led_display = "00001100";

sevensegment <= '1 '; - StGO

khi S10 => nếu pause_state = "1" sau đó

nhà nước <= S10;

elsif pause_state = "0" sau đó

nhà nước <= s11;

nếu kết thúc;

<Led_display = "00001100";

sevensegment <= '1 '; - StGO

khi s11 => nếu pause_state = "1" sau đó

nhà nước <= s11;

elsif pause_state = "0" sau đó

nhà nước <= S12;

nếu kết thúc;

<Led_display = "00001100";

sevensegment <= '1 '; - StGO

khi S12 => nếu pause_state = "1" sau đó

nhà nước <= S12;

elsif pause_state = "0" sau đó

nhà nước <= s1;

nếu kết thúc;

<Led_display = "00010100";

sevensegment <= '1 '; - StGOkết thúc vụ án;

nếu kết thúc;

nếu kết thúc;

kết thúc quá trình LED_DISPLAY_TRAFFIC;

CLOCK_DELAY_FOR_7SEGMENT: TRÌNH (đồng hồ)

BIẾN Số truy cập: INTEGER RANGE 0 TO 4.096;

BEGINIF (clock'EVENT và đồng hồ = '1 ') THEN

count: = count 1;

IF (> count = 2.048 và đếm <4.096) THEN

clock_delay <= '1 ';elsif (count> = 4.096) sau đó

Số truy cập: = 0;

ELSif (count <= 2047) sau đó

clock_delay <= "0";

END IF;

END IF;

END TRÌNH CLOCK_DELAY_FOR_7SEGMENT;

SEVEN_SEGMENT_DISPLAY: quá trình (clock_delay)

bắt đầu

nếu clock_delay'event và clock_delay = "1" sau đó

nếu sevensegment = "0" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01000000111"; - G

khi p2 =>

state2 <= p3;

seven_segment <= "00000011011"; - O

khi p3 =>

state2 <= P4;

seven_segment <= "01001001101"; - S

khi P4 =>

state2 <= p1;

<Seven_segment = "11100001110"; - t

kết thúc vụ án;

elsif sevensegment = "1" sau đó

state2 là trường hợp

khi p1 =>

state2 <= p2; - ABCDEFG -

seven_segment <= "01001000111"; - S

khi p2 =>

state2 <= p3;

<Seven_segment = "11100001011"; - t

khi p3 =>

state2 <= P4;

seven_segment <= "01000001101"; - G

khi P4 =>

state2 <= p1;

seven_segment <= "00000011110"; - O

kết thúc vụ án;

nếu kết thúc;

nếu kết thúc;

kết thúc quá trình SEVEN_SEGMENT_DISPLAY;

END một;
 

Welcome to EDABoard.com

Sponsor

Back
Top