?? carslight.txt
字號(hào):
汽車(chē)尾燈控制系統(tǒng)
設(shè)計(jì)任務(wù):汽車(chē)尾燈控制系統(tǒng)
(一)頂層系統(tǒng)方案構(gòu)思
圖9-21表示汽車(chē)尾燈控制系統(tǒng)的頂層符號(hào)圖。汽車(chē)尾燈控制器命名為QWK。
輸入信號(hào):左轉(zhuǎn)彎傳感器LH,右轉(zhuǎn)彎傳感器RH和緊急制動(dòng)或慢行傳感器JMH,另外,汽車(chē)尾燈主要是給后面行使汽車(chē)的司機(jī)注意。為了使尾燈的光信號(hào)更明顯,采用亮滅交替的閃爍信號(hào),其閃爍周期為2秒,即尾燈亮1秒,滅1秒,再亮1秒…。在圖9-21中設(shè)置了一個(gè)1秒時(shí)鐘的輸入信號(hào)CP。
輸出信號(hào):輸出共設(shè)兩個(gè),左面一個(gè)尾燈,右面一個(gè)尾燈,既左轉(zhuǎn)彎時(shí)指示燈LD和右轉(zhuǎn)彎時(shí)指示燈RD。
(二)控制器設(shè)計(jì)
從上至下的設(shè)計(jì)方法首先是從系統(tǒng)級(jí)分析,然后進(jìn)行模塊劃分,分為受控部分和控制器部分。此尾燈控制系統(tǒng)的受控部分是傳感器和指示燈,僅用幾個(gè)二進(jìn)制信號(hào)就可以完成,所以我們把精力放在設(shè)計(jì)控制器模塊上。
汽車(chē)尾燈控制系統(tǒng)設(shè)置為四個(gè)狀態(tài),它們有以下定義:
A狀態(tài):傳感器LH、RH、JMH信號(hào)無(wú)效,皆為0,表示汽車(chē)保持一定速度的直行或靜止不動(dòng),左尾燈LD和右尾燈RD不閃爍發(fā)光。
B狀態(tài):傳感器LH有效,RH、JMH無(wú)效,此時(shí)LH、RH、JMH狀態(tài)為100,表示汽車(chē)向左轉(zhuǎn),左尾燈交替閃爍,右尾燈滅。
C狀態(tài):傳感器RH有效,LH、JMH無(wú)效,此時(shí)LH、RH、JMH狀態(tài)為010,表示汽車(chē)向右轉(zhuǎn),右尾燈交替閃爍,左尾燈滅。
D狀態(tài):傳感器JMH有效,LH、RH無(wú)效,此時(shí)LH、RH、JMH狀態(tài)為001,表示汽車(chē)慢行或緊急情況發(fā)生采取緊急制動(dòng),左右尾燈同時(shí)交替閃爍。
根據(jù)上述情況可以初步畫(huà)出汽車(chē)尾燈控制系統(tǒng)的MDS圖,如圖9-22所示。
但是,圖9-22的MDS圖還存在以下幾個(gè)問(wèn)題。
1. 汽車(chē)在左轉(zhuǎn)彎或右轉(zhuǎn)彎時(shí),相對(duì)應(yīng)的左側(cè)燈或右側(cè)燈閃爍,但汽車(chē)同時(shí)有可能要放慢速度,JMH傳感器有效;或者汽車(chē)已經(jīng)放慢速度,JMH傳感器生效,使左側(cè)燈和右側(cè)燈閃爍,同時(shí)又要左轉(zhuǎn)彎或右轉(zhuǎn)彎,使得LH或RH有效。此時(shí)LH、RH、JMH狀態(tài)為101或011,尾燈控制器同時(shí)進(jìn)入B和D狀態(tài)或C和D狀態(tài),這是不可能的,因?yàn)閷?duì)于LH和JMH(或RH和JMH)同時(shí)為1,即LH·JMH(RH·JMH)=1這樣的轉(zhuǎn)換條件,只能有一個(gè)狀態(tài),使上述兩個(gè)狀態(tài)的次態(tài)規(guī)定為D狀態(tài)。
2. 圖9-22的MDS圖不滿足全包含性,如LH、RH、JMH的組合狀態(tài)為111和110。當(dāng)然,一般不會(huì)發(fā)生這種情況,除非傳感器失靈。不過(guò)我們也可以把這種情況的次態(tài)定義為D態(tài)。后面行駛汽車(chē)的司機(jī)看到前面汽車(chē)不斷閃爍的左右尾燈信號(hào),認(rèn)為前面汽車(chē)要減速,故為了安全也要減速,就不會(huì)撞上前面?zhèn)鞲衅魇ъ`的汽車(chē)了。故把A至D狀態(tài)的轉(zhuǎn)換條件改寫(xiě)成JMH+LH·RH;把狀態(tài)A至狀態(tài)B的轉(zhuǎn)換條件改寫(xiě)成 ;把狀態(tài)A至狀態(tài)C的轉(zhuǎn)換條件改寫(xiě)成 。
綜合上述考慮,轉(zhuǎn)換條件的邏輯和為:
由轉(zhuǎn)換條件重新畫(huà)出圖9-22汽車(chē)尾燈控制器的全狀態(tài)MDS圖,如圖9-23所示。圖9-23滿足了全包含性的要求。圖9-24畫(huà)出了汽車(chē)尾燈控制器的MDS圖。
(三)汽車(chē)尾燈控制器的VHDL程序?qū)崿F(xiàn)
1. 汽車(chē)尾燈控制器實(shí)體設(shè)計(jì)程序
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY QWK IS
PORT(LH, RH,JMH,CP:IN std_logic;
LD,RD:OUT std_logic);
END QWK;
2. 汽車(chē)尾燈控制器結(jié)構(gòu)體設(shè)計(jì)程序
ARCHITECTURE QWK_arc OF QWK IS
type state_TYPE is (QA,QB,QC,QD);
SIGNAL current_state:state_TYPE:=QA;
BEGIN
PROCESS(LH,RH,JMH)
BEGIN
WAIT UNTIL CP'EVENT AND CP=‘1';
CASE current_state IS
WHEN QA=>
IF LH='1' AND RH='0' AND JMH='0' THEN
current_state<=QB;
ELSIF LH='0' AND RH='1' AND JMH='0' THEN
current_state<=QC;
ELSIF LH='0' AND RH='0' AND JMH='0' THEN
current_state<=QA; RD<='1'; LD<='1';
ELSE current_state<=QD;
END IF ;
WHEN QB=>
IF LH='1' AND RH='0' AND JMH='0' THEN
current_state<=QB; RD<='1'; LD<=CP;
ELSE
current_state<=QA;
END IF ;
WHEN QC=>
IF LH='0' AND RH='1' AND JMH='0' THEN
current_state<=QC; RD<=CP; LD<='1';
ELSE
current_state<=QA;
END IF ;
WHEN QD=>
IF JMH='1' OR ((LH='1') AND (RH='1')) THEN
current_state<=QD; LD<=CP; RD<=CP;
ELSE
current_state<=QA;
END IF ;
END CASE;
END PROCESS ;
END QWK_arc;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -