Bộ điều khiển đèn giao thông (TLC)

Một phần của tài liệu Nghiên cứu tìm hiểu công nghệ FPGA trong thiết kế mạch điện tử (Trang 84 - 88)

+ Chế độ bình th−ờng: ở chế độ này, mạch có 4 trạng thái, mỗi trạng thái là độc lập, thời gian lập trình ….?

+ Chế độ kiểm tra: Cho phép tất cả thời gian đ−ợc lập trình tr−ớc đ−ợc viết lên với 1 giá trị nhỏ, do vậy hệ thống có thể dễ dàng đ−ợc kiểm tra trong suốt quá trình baỏ d−ỡng. + Chế độ Standby: Nếu thiết lập hệ thống sẽ kích hoạt đèn vàng trong khi tín hiệu standby đ−ợc kích hoạt.

Đồng thời 1 đông hồ tần số 60 HZ luôn hoạt động. Mã thiết kế: --- library IEEE; use IEEE.STD_LOGIC_1164.all; ENTITY Bodk_den_giao_thong IS PORT ( clk, stby, test: IN STD_LOGIC; r1, r2, y1, y2, g1, g2: OUT STD_LOGIC); END Bodk_den_giao_thong;

---

ARCHITECTURE state_machine_be OF Bodk_den_giao_thong IS CONSTANT timeMAX : INTEGER := 2700;

CONSTANT timeRG : INTEGER := 1800; CONSTANT timeRY : INTEGER := 300; CONSTANT timeGR : INTEGER := 2700; CONSTANT timeYR : INTEGER := 300; CONSTANT timeTEST : INTEGER := 60; TYPE state IS (RG, RY, GR, YR, YY); SIGNAL pr_state, nx_state: state;

SIGNAL time : INTEGER RANGE 0 TO timeMAX; BEGIN

---Phan mach day: ---- PROCESS (clk, stby)

VARIABLE count : INTEGER RANGE 0 TO timeMAX; BEGIN

IF (stby='1') THEN

pr_state <= YY;

count := 0;

ELSIF (clk'EVENT AND clk='1') THEN count := count + 1;

IF (count = time) THEN

pr_state <= nx_state;

count := 0;

END IF;

END IF;

END PROCESS;

--- Phan mach to hop: ---- PROCESS (pr_state, test)

BEGIN

WHEN RG =>

r1<='1';r2<='0';y1<='0'; y2<='0'; g1<='0'; g2<='1';

nx_state <= RY;

IF (test='0') THEN time <= timeRG;

ELSE time <= timeTEST;

END IF;

WHEN RY =>

r1<='1';r2<='0';y1<='0';y2<='1';g1<='0'; g2<='0';

nx_state <= GR;

IF (test='0') THEN time <= timeRY; (adsbygoogle = window.adsbygoogle || []).push({});

ELSE time <= timeTEST;

END IF;

WHEN GR =>

r1<='0';r2<='1';y1<='0';y2<='0';g1<='1'; g2<='0';

nx_state <= YR;

IF (test='0') THEN time <= timeGR;

ELSE time <= timeTEST;

END IF;

WHEN YR =>

r1<='0';r2<='1';y1<='1'; y2<='0'; g1<='0'; g2<='0';

nx_state <= RG;

IF (test='0') THEN time <= timeYR;

ELSE time <= timeTEST;

END IF; WHEN YY => r1<='0';r2<='0';y1<='1'; y2<='1'; g1<='0'; g2<='0'; nx_state <= RY; END CASE; END PROCESS; END state_machine_be; ---

Để có thể dễ dàng thấy kết quả mô phỏng, ở đây ta thực hiện giảm thời gian thực tế đi 100 lần.

Kết quả mô phỏng đ−ợc chỉ ra trong hình d−ới đây: + ở chế độ hoạt động bình th−ờng (stby = 0, test = 0):

+ ở chế độ kiểm tra:

Hình 4.14. Kết quả mô phỏng TCL ở chế độ hoạt động bình th−ờng

Một phần của tài liệu Nghiên cứu tìm hiểu công nghệ FPGA trong thiết kế mạch điện tử (Trang 84 - 88)