📄 a.txt
字号:
ctrlift:PROCESS(reset,liftclk)
VARIABLE pos: INTEGER RANGE 12 DOWNTO 1;
BEGIN
IF reset='1' THEN
mylift<=stopon1;
clearup<='0';
cleardn<='0';
ELSE
IF liftclk'EVENT AND liftclk='1' THEN
CASE mylift IS
WHEN stopon1=>
doorlight<='1';
position<=1; pos:=1;
mylift<=doorwait1;
WHEN doorwait1=>
mylift<=doorwait2;
WHEN doorwait2=>
clearup<='0';
cleardn<='0';
mylift<=doorwait3;
WHEN doorwait3=>
mylift<=doorwait4;
WHEN doorwait4=>
mylift<= doorclose;
WHEN doorclose=>
doorlight<='0';
IF udsig='0'THEN
IF position=12 THEN
IF stoplight="000000000000" AND fuplight="000000000000" AND fdnlight="000000000000" THEN
udsig<='1';mylift<=doorclose;
ELSE udsig<='1';mylift<=down;
END IF;
ELSIF position=11 THEN
IF stoplight="00000000000" AND fuplight="000000000000" AND fdnlight="000000000000" THEN
udsig<='0';mylift<=doorclose;
ELSIF
stoplight(12)='1' OR (stoplight(12)='0' AND fdnlight(12)='1')THEN
udsig<='0';mylift<=up;
ELSE udsig<='1';mylift<=down;
END IF;
ELSIF position=10 THEN
IF stoplight="000000000000" AND fuplight="000000000000" AND fdnlight="000000000000" THEN
udsig<='0';mylift<=doorclose;
ELSIF stoplight(12 DOWNTO 11)>"00" OR fdnlight(12 DOWNTO 11)>"00" OR fuplight(11)>'0' THEN
udsig<='0';mylift<=up;
ELSE udsig<='1';mylift<=down;
END IF;
ELSIF position=9 THEN
IF stoplight="000000000000" AND fuplight="000000000000" AND fdnlight="000000000000" THEN
udsig<='0';
mylift<=doorclose;
ELSIF stoplight(12 DOWNTO 10)>"000" OR fdnlight(12 DOWNTO 10)>"000" OR fuplight(11 DOWNTO 10)>"00" THEN
udsig<='0'; mylift<=up;
ELSE udsig<='1';mylift<=down;
END IF;
ELSIF position=8 THEN
IF stoplight="000000000000" AND fuplight="000000000000" AND fdnlight="000000000000" THEN
udsig<='0';mylift<=doorclose;
ELSIF stoplight(12 DOWNTO 9)>"0000" OR fdnlight(12 DOWNTO 9)>"0000" OR fuplight(11 DOWNTO 9)>"000" THEN
udsig<='0';mylift<=up;
ELSE udsig<='1';mylift<=down;
END IF;
ELSIF position=7 THEN
IF stoplight="000000000000" AND fuplight="000000000000" AND fdnlight="000000000000" THEN
udsig<='0';mylift<=doorclose;
ELSIF stoplight(12 DOWNTO 8)>"00000" OR fdnlight(12 DOWNTO 8)>"00000" OR fuplight(11 DOWNTO 8)>"0000" THEN
udsig<='0';mylift<=up;
ELSE udsig<='1';mylift<=down;
END IF;
ELSIF position=6 THEN
IF stoplight="000000000000" AND fuplight="000000000000" AND fdnlight="000000000000" THEN
udsig<='0';mylift<=doorclose;
ELSIF stoplight(12 DOWNTO 7)>"000000" OR fdnlight(12 DOWNTO 7)>"000000" OR fuplight(11 DOWNTO 7)>"00000" THEN
udsig<='0';mylift<=up;
ELSE udsig<='1';mylift<=down;
END IF;
ELSIF position=5 THEN
IF stoplight="000000000000" AND fuplight="000000000000" AND fdnlight="000000000000" THEN
udsig<='0';mylift<=doorclose;
ELSIF
stoplight(12 DOWNTO 6)>"0000000" OR fdnlight(12 DOWNTO 6)>"0000000" OR fuplight(11 DOWNTO 6)>"000000" THEN
udsig<='0';mylift<=up;
ELSE udsig<='1';mylift<=down;
END IF;
ELSIF position=4 THEN
IF stoplight="000000000000" AND fuplight="000000000000" AND fdnlight="000000000000" THEN
udsig<='0';mylift<=doorclose;
ELSIF stoplight(12 DOWNTO 5)>"00000000" OR fdnlight(12 DOWNTO 5)>"00000000" OR fuplight(11 DOWNTO 5)>"0000000" THEN
udsig<='0';mylift<=up;
ELSE udsig<='1';mylift<=down;
END IF;
ELSIF position=3 THEN
IF stoplight="000000000000" AND fuplight="000000000000" AND fdnlight="000000000000" THEN
udsig<='0'; mylift<=doorclose;
ELSIF stoplight(12 DOWNTO 4)>"000000000" OR fdnlight(12 DOWNTO 4)>"000000000" OR fuplight(11 DOWNTO 4)>"00000000" THEN
udsig<='0'; mylift<=up;
ELSE udsig<='1';mylift<=down;
END IF;
ELSIF position=2 THEN
IF stoplight="000000000000" AND fuplight="000000000000" AND fdnlight="000000000000" THEN
udsig<='0'; mylift<=doorclose;
ELSIF stoplight(12 DOWNTO 3)>"0000000000" OR fdnlight(12 DOWNTO 3)>"0000000000" OR fuplight(11 DOWNTO 3)>"000000000" THEN
udsig<='0';mylift<=up;
ELSE udsig<='1';mylift<=down;
END IF;
ELSIF position= 1 THEN
IF stoplight="000000000000" AND fuplight="000000000000" AND fdnlight="000000000000" THEN
udsig<='0';mylift<=doorclose;
ELSE udsig<='0';mylift<=up;
END IF;
END IF;
ELSIF udsig='1' THEN
IF position=1 THEN
IF stoplight="000000000000"AND fuplight="000000000000" AND fdnlight ="000000000000" THEN
udsig<='0';mylift<=doorclose;
ELSE udsig<='0'; mylift<=up;
END IF;
ELSIF position= 2 THEN
IF stoplight="000000000000" AND fuplight="000000000000" AND fdnlight="000000000000" THEN
udsig<='1';mylift<=doorclose;
ELSIF stoplight(1)='1' OR (stoplight(1)='0' AND fuplight(1)='1') THEN
udsig<='1';mylift<=down;
ELSE udsig<='0'; mylift<=up;
END IF;
ELSIF position=3 THEN
IF stoplight="000000000000"AND fuplight="000000000000" AND fdnlight ="000000000000" THEN
udsig<='1';mylift<=doorclose;
ELSIF
stoplight(2 DOWNTO 1)>"00" OR (stoplight(2 DOWNTO 1)="00" AND fuplight(2 DOWNTO 1)>"00")THEN
udsig<='1';mylift<=down;
ELSE udsig<='0'; mylift<=up;
END IF;
ELSIF position=4 THEN
IF stoplight="000000000000"AND fuplight="000000000000" AND fdnlight ="000000000000" THEN
udsig<='1';mylift<=doorclose;
ELSIF
stoplight(3 DOWNTO 1)>"000" OR (stoplight(3 DOWNTO 1)="000" AND fuplight(3 DOWNTO 1)>"000")
THEN
udsig<='1';mylift<=down;
ELSE udsig<='0'; mylift<=up;
END IF;
ELSIF position=5 THEN
IF stoplight="000000000000"AND fuplight="000000000000" AND fdnlight ="000000000000" THEN
udsig<='1';mylift<=doorclose;
ELSIF
stoplight(4 DOWNTO 1)>"0000" OR (stoplight(4 DOWNTO 1)="0000" AND fuplight(4 DOWNTO 1)>"0000") THEN
udsig<='1';mylift<=down;
ELSE udsig<='0'; mylift<=up;
END IF;
ELSIF position=6 THEN
IF stoplight="000000000000"AND fuplight="000000000000" AND fdnlight ="000000000000" THEN
udsig<='1';mylift<=doorclose;
ELSIF
stoplight(5 DOWNTO 1)>"00000" OR (stoplight(5 DOWNTO 1)="00000" AND fuplight(5 DOWNTO 1)>"00000") THEN
udsig<='1';mylift<=down;
ELSE udsig<='0'; mylift<=up;
END IF;
ELSIF position=7 THEN
IF stoplight="000000000000"AND fuplight="000000000000" AND fdnlight ="000000000000" THEN
udsig<='1';mylift<=doorclose;
ELSIF
stoplight(6 DOWNTO 1)>"000000" OR (stoplight(6 DOWNTO 1)="000000" AND fuplight(6 DOWNTO 1)>"000000") THEN
udsig<='1';mylift<=down;
ELSE udsig<='0'; mylift<=up;
END IF;
ELSIF position=8 THEN
IF stoplight="000000000000"AND fuplight="000000000000" AND fdnlight ="000000000000" THEN
udsig<='1';mylift<=doorclose;
ELSIF
stoplight(7 DOWNTO 1)>"0000000" OR (stoplight(7 DOWNTO 1)="0000000" AND fuplight(7 DOWNTO 1)>"0000000")THEN
udsig<='1';mylift<=down;
ELSE udsig<='0'; mylift<=up;
END IF;
ELSIF position=9 THEN
IF stoplight="000000000000"AND fuplight="000000000000" AND fdnlight ="000000000000" THEN
udsig<='1';mylift<=doorclose;
ELSIF
stoplight(8 DOWNTO 1)>"00000000" OR (stoplight(8 DOWNTO 1)="00000000" AND fuplight(8 DOWNTO 1)>"00000000") THEN
udsig<='1';mylift<=down;
ELSE udsig<='0'; mylift<=up;
END IF;
ELSIF position=10 THEN
IF stoplight="000000000000"AND fuplight="000000000000" AND fdnlight ="000000000000" THEN
udsig<='1';mylift<=doorclose;
ELSIF
stoplight(9 DOWNTO 1)>"000000000" OR (stoplight(9 DOWNTO 1)="000000000" AND fuplight(9 DOWNTO 1)>"000000000") THEN
udsig<='1';mylift<=down;
ELSE udsig<='0'; mylift<=up;
END IF;
ELSIF position=11 THEN
IF stoplight="000000000000"AND fuplight="000000000000" AND fdnlight ="000000000000" THEN
udsig<='1';mylift<=doorclose;
ELSIF
stoplight(10 DOWNTO 1)>"0000000000" OR (stoplight(10 DOWNTO 1)="0000000000" AND fuplight(10 DOWNTO 1)>"0000000000")THEN
udsig<='1';mylift<=down;
ELSE udsig<='0'; mylift<=up;
END IF;
ELSIF position=12 THEN
IF stoplight="000000000000"AND fuplight="000000000000" AND fdnlight ="000000000000" THEN
udsig<='1';
mylift<=doorclose;
ELSE
udsig<='1';mylift<=down;
END IF;
END IF;
END IF;
WHEN up =>
position<=position+1;
pos:=pos+1;
IF pos<12 AND (stoplight(pos)='1' OR fdnlight(pos)='1')
THEN mylift<= stop;
ELSIF pos=12 and (stoplight(pos)='1' OR fdnlight(pos)='1')
THEN mylift<= stop;
ELSE mylift<=doorclose;
END IF;
WHEN down =>
position<=position-1;
pos:=pos-1;
IF pos>1 AND (stoplight(pos)='1' OR fdnlight(pos)='1')
THEN mylift<=stop;
ELSIF pos=1 AND (stoplight(pos)='1' OR fuplight(pos)='1') THEN mylift<=stop;
ELSE mylift<=doorclose;
END IF;
WHEN stop=>
mylift<=dooropen;
WHEN dooropen=>
doorlight<='1';
IF udsig='0' THEN
IF position<=11 AND(stoplight(position)='1' OR fuplight(position)='1') THEN
clearup<='1';
ELSE clearup<='1'; cleardn<='1';
END IF;
ELSIF udsig='1' THEN
IF position>=2 AND (stoplight(position)='1' OR fdnlight(position)='1') THEN
cleardn<='1';
ELSE clearup<='1'; cleardn<='1';
END IF;
END IF;
mylift<=doorwait1;
END CASE;
END IF;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -