+ 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;
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