EDA課程設(shè)計:基于CPLD的汽車尾燈控制系統(tǒng)_第1頁
EDA課程設(shè)計:基于CPLD的汽車尾燈控制系統(tǒng)_第2頁
EDA課程設(shè)計:基于CPLD的汽車尾燈控制系統(tǒng)_第3頁
EDA課程設(shè)計:基于CPLD的汽車尾燈控制系統(tǒng)_第4頁
EDA課程設(shè)計:基于CPLD的汽車尾燈控制系統(tǒng)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

EDA課程設(shè)計:基于CPLD的汽車尾燈控制系統(tǒng) 1 設(shè)計要求及其分析1.1 設(shè)計要求汽車尾燈左、右各有3個,從中間開始編號,分別用L1、L2、L3,R1、R2、R3表示。當(dāng)汽車轉(zhuǎn)向時,按L1L1L2L1L2L3全滅L1(或R1R1R2R1R2R3全滅R1)次序循環(huán)亮,亮持續(xù)為2秒;當(dāng)汽車剎車時,所有尾燈同時以2Hz的頻率閃爍;正常行駛時,所有尾燈滅。輸入信號有左、右轉(zhuǎn)向和剎車。1.2 功能分析從以上設(shè)計要求,將本系統(tǒng)分成四個功能設(shè)計模塊:汽車狀態(tài)模塊:該模塊接收左轉(zhuǎn)、右轉(zhuǎn)、剎車和正常行駛的控制信號,根據(jù)所接受的信號控制左尾燈控制模塊和右尾燈控制模塊。左尾燈控制模塊:接受汽車狀態(tài)模塊的控制信號對左邊三個尾燈的亮與滅進行控制。右尾燈控制模塊:接受汽車狀態(tài)模塊的控制信號對右邊三個尾燈的亮與滅進行控制。時鐘模塊:由于當(dāng)汽車轉(zhuǎn)彎時尾燈按照一定順序循環(huán)亮滅,亮持續(xù)時間為2s,而剎車時尾燈又以2Hz的頻率閃爍,故該模塊提供周期為2s和500ms的時鐘信號供左尾燈控制模塊和右尾燈控制模塊控制尾燈的亮滅。2 功能模塊的設(shè)計與實現(xiàn)2.1 汽車狀態(tài)模塊設(shè)計的汽車狀態(tài)模塊如圖2.1.1所示,源程序見附錄:汽車狀態(tài)模塊PRECONTROL。圖2.1.1 汽車狀態(tài)模塊PRECONTROL其中LEFT、RIGHT、STOP分別表示左轉(zhuǎn)、右轉(zhuǎn)和剎車信號,對應(yīng)的輸出引腳LFT、RIT、LR分別表示左有效、右有效和剎車有效。真值表如表2.1.1所示:信號LEFTRIGHTSTOPLFTRITLR意義邏輯狀態(tài)000000正常行駛100100左轉(zhuǎn)彎010010右轉(zhuǎn)彎001001剎車表2.1.1 汽車狀態(tài)控制信號與輸出信號真值表2.2 左尾燈控制模塊與右尾燈控制模塊設(shè)計的左尾燈控制模塊如圖2.2.1所示,源程序見附錄:左尾燈控制模塊LEFTCONTROL。圖2.2.1 左尾燈控制模塊LEFTCONTROL對各輸入與輸出引腳的說明如下:CLK:接受時鐘信號,用于尾燈的順序循環(huán)亮滅。CLK將接收兩種不同頻率的時鐘信號即周期為2s和500ms中的一種,具體接收哪一種由該模塊的時鐘使能輸出信號CLK2SEN和CLK500MSEN決定。EN:與汽車狀態(tài)模塊PRECONTROL的LFT引腳連接,用于使能該左尾燈控制模塊。LR:汽車剎車輸入信號,與汽車狀態(tài)控制模塊PRECONTROL的LR引腳相連。由于當(dāng)汽車右轉(zhuǎn)彎、正常行駛和剎車時,該模塊EN引腳都將接收到低電平,故而需要通過判斷LR和EN的引腳電平才能判斷汽車當(dāng)前是處于剎車狀態(tài)還是右轉(zhuǎn)彎或正常行駛狀態(tài)。L2、L1、L0:汽車左邊的三個尾燈控制信號。CLK2SEN、CLK500MSEN:時鐘的選擇信號。這兩個引腳將根據(jù)汽車當(dāng)前所處的狀態(tài)使能相應(yīng)的時鐘。當(dāng)汽車出處于左轉(zhuǎn)彎時,CLK2SEN輸出高電平,CLK500MSEN輸出低電平,此時CLK將接收到周期為2s的時鐘信號以滿足按L1L1L2L1L2L3全滅L1次序循環(huán)亮,亮持續(xù)為2s對時鐘的需要;當(dāng)汽車處于剎車狀態(tài)時,CLK2SEN輸出低電平,CLK500MSEN輸出高電平,此時CLK將接收到周期為500ms的時鐘信號以滿足汽車剎車是所有尾燈以2Hz的頻率閃爍的設(shè)計要求。設(shè)計的右尾燈控制模塊如圖2.2.2所示,源程序見附錄:左尾燈控制模塊RIGHTCONTROL。 圖2.2.2 右尾燈控制模塊RIGHTCONTROL右尾燈控制模塊RIGHTCONTROL各引腳功能與左尾燈控制模塊LEFTCONTROL各引腳功能相似,這里不再詳述。2.3 時鐘模塊2s時鐘模塊和500ms時鐘模塊分別如圖2.3.1和圖2.3.2所示: 圖2.3.1 2s時鐘模TIMER2S 圖2.3.2 500ms時鐘模塊TIMER500MS左尾燈控制模塊LEFT通過CLK2SEN和CLK500MSEN來控制該模塊CLK接收到的時鐘信號的實現(xiàn)原理如下圖2.3.3所示:圖2.3.3 時鐘選擇實現(xiàn)原理圖當(dāng)汽車左轉(zhuǎn)彎時,左尾燈控制模塊LEFTCONTROL使能,此時該模塊CLK2SEN輸出高電平,CLK500MSEN輸出低電平,并分別與TIMER2S和TIMER500MS相與,則TIMER500MS相當(dāng)于被禁止,后經(jīng)或門連接至該LEFTCONTROL模塊的CLK引腳,故而CLK將接收到TIMER2S發(fā)出的周期為2s的時鐘信號。當(dāng)汽車剎車時,左尾燈控制模塊LEFTCONTROL也使能,此時該模塊CLK2SEN輸出低電平,CLK500MSEN輸出高電平,并分別與TIMER2S和TIMER500MS相與,則TIMER2S相當(dāng)于被禁止,后經(jīng)或門連接至該LEFTCONTROL模塊的CLK引腳,故而CLK將接收到TIMER500MS發(fā)出的周期為500ms的時鐘信號。當(dāng)汽車正常行駛時尾燈均滅,此時不需要時鐘參與,左尾燈控制模塊LEFTCONTROL的CLK2SEN和CLK500MSEN處于任意狀態(tài)。同樣,右尾燈控制模塊RIGHTCONTROL的CLK時鐘信號的接收與左尾燈控制模塊LEFTCONTROL的實現(xiàn)原理一樣,它們共用TIMER2S和TIMER500MS這兩個時鐘模塊,這里不再詳述其實現(xiàn)原理。3 頂層文件設(shè)計與軟件流程圖3.1 頂層文件的設(shè)計頂層文件如圖3.1.1所示:圖3.1.1 頂層文件設(shè)計圖由上圖,頂層文件中包含了左尾燈控制模塊LEFTCONTROL和右尾燈控制模塊RIGHTCONTROL的時鐘選擇邏輯圖,另外由于LEFTCONTROL和RIGHTCONTROL的軟件設(shè)計所限,兩模塊均不能控制在汽車正常行駛時所有尾燈的熄滅,在汽車正常行駛時所有尾燈均熄滅是通過如圖3.1.1所示的由或門和與門組成的外圍邏輯電路實現(xiàn)的。下面來說明該設(shè)計的可行性:如圖3.1.1所示,當(dāng)汽車正常行駛時,汽車狀態(tài)控制模塊PRECONTROL的LFT、RIT、LR均輸出低電平。針對于左尾燈來說,LR與LFT相或后結(jié)果為低電平再與LEFTCONTROL的L2、L1、L0相與后(不論L2、L1、L0原先為何種電平)結(jié)果均為低電平故而左邊三個尾燈全部熄滅,右尾燈亦是如此;當(dāng)汽車左轉(zhuǎn)時,RIT、LR輸出低電平,LFT輸出高電平。這時,左尾燈控制模塊LEFTCONTROL使能并按照其軟件設(shè)計功能工作,LFT與LR相或時為高電平再與L2、L1、L0相與后結(jié)果與L2、L1、L0原先電平一致即相當(dāng)于左邊三尾燈的亮滅只受LEFTCONTROL的控制。而右尾燈應(yīng)該處于全部熄滅狀態(tài),它的實現(xiàn)思路為:LR與RIT相或后為低電平再與R2、R1、R0相與后仍為低電平故而三個右尾燈均熄滅。當(dāng)汽車右轉(zhuǎn)彎的工作原理與左轉(zhuǎn)彎時相同這里不再詳述;當(dāng)汽車剎車時,LFT、RIT輸出低電平,LR輸出高電平。LFT與LR,RIT與LR相或均為高電平再與L2、L1、L0、R2、R1、R0相與時其結(jié)果為原先L2、L1、L0、R2、R1、R0各自的電平故而此時尾燈的亮滅只受左尾燈控制模塊LEFTCONTROL和右尾燈控制模塊RIGHTCONTROL的控制。汽車狀態(tài)信號輸入左轉(zhuǎn)彎右轉(zhuǎn)彎剎車正常行駛3.2 軟件流程圖汽車狀態(tài)模塊PRECONTROL狀態(tài)判斷正常行駛剎車右轉(zhuǎn)彎左轉(zhuǎn)彎外圍或門和與門邏輯電路左尾燈與右尾燈控制模塊均使能左尾燈控制模塊LEFTCONTROL使能右尾燈控制模塊RIGHTCONTROL使能尾燈全部熄滅周期為500ms時鐘使能,左右尾燈均以2Hz頻率閃爍周期為2s時鐘使能,右尾燈每2s亮一盞燈周期為2s時鐘使能,左尾燈每2s亮一盞燈4 附錄:4.1 汽車狀態(tài)模塊PRECONTROL源碼:library ieee;use ieee.std_logic_1164.all;entity precontrol isport(left:in std_logic;right:in std_logic;stop:in std_logic;lft:out std_logic;rit:out std_logic;lr:out std_logic);end precontrol;architecture one of precontrol isbeginprocess(left,right,stop)variable condition:std_logic_vector(2 downto 0);begincondition:=left&right&stop;case condition iswhen 000=lft=0;rit=0;lrlft=1;rit=0;lrlft=0;rit=1;lrlft=0;rit=0;lrnull;end case;end process;end one;4.2 左尾燈控制模塊LEFTCONTROL源碼:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity leftcontrol isport(clk:in std_logic;en:in std_logic;-汽車左轉(zhuǎn)彎模塊使能信號輸入lr:in std_logic;-汽車剎車信號輸入,高有效l2,l1,l0:out std_logic;-三個左尾燈控制信號輸出clk2sen,clk500msen:out std_logic);-2s和500ms時鐘使能信號輸出end entity leftcontrol;architecture one of leftcontrol issignal clkop:std_logic;beginclkop=clk;com1:process(en,clk,lr)variable tmp:std_logic_vector(2 downto 0);variable clken:std_logic_vector(1 downto 0);beginif lr=1 then tmp:=clkop&clkop&clkop;clken:=01;-汽車剎車,周期為500ms的時鐘使能elsif clkevent and clk=1 then if en=1 then -汽車左轉(zhuǎn)彎if tmp=000 then tmp:=001;clken:=10;-周期為2s的時鐘使能elsif tmp=111 then tmp:=000;-在左轉(zhuǎn)彎時燈全亮后再全息滅else tmp:=tmp(1 downto 0)&1;-燈每隔2s亮一個end if; end if; end if;l2=tmp(2);l1=tmp(1);l0=tmp(0);clk2sen=clken(1);clk500msen=clken(0);end process;end one;4.3右尾燈控制模塊RIGHTCONTROL源碼:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity rightcontrol isport(clk:in std_logic;en:in std_logic; -汽車右轉(zhuǎn)彎模塊使能信號輸入lr:in std_logic; -汽車剎車信號輸入,高有效r2,r1,r0:out std_logic; -三個右尾燈控制信號輸出clk2sen,clk500msen:out std_logic); -2s和500ms時鐘使能信號輸出end entity rightcontrol;architecture one of rightcontrol issignal clkop:std_logic;beginclkop=clk;com1:process(en,clk,lr)variable tmp:std_logic_vector(2 downto 0);variable clken:std_logic_vector(1 downto 0);beginif lr=1 then tmp:=clkop&clkop&clkop;clken:=01;-汽車剎車,周期為500ms的時鐘使能elsif clkevent and clk=1 then if en=1 then -汽車右轉(zhuǎn)彎if tmp=000 then tmp:=001;clken:=10;-周期為2s的時鐘使能elsif tmp=111 then tmp:=000;-在右轉(zhuǎn)彎時燈全亮后再全息滅else tmp:=tmp(1 downto 0)&1; -燈每隔2s亮一個end if; end if; end if;r2=tmp(2);r1=tmp(1);r0=tmp(0);clk2sen=clken(1);clk500msen=clken(0);end process;end one;4.4 周期為2s的時鐘模塊TIMER2S源碼:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity timer2s isport(clk:in std_logic;clkout:out std_logic);end entity timer2s;architecture one of timer2s isbeginprocess(clk)variable counter:std_logic_vector(7 downto 0);variable qclkout:std_logic;begin if clkevent and clk=1 then -以128Hz為基本時鐘源,對其上升沿計數(shù)if counter= then -計數(shù)個數(shù)為256個即256128Hz2sqclkout:=not qclkout;clkout=qclkout;counter:=;-計數(shù)器滿則輸出反相計數(shù)器清零else counter:=counter+1;-每捕捉到一個基本時鐘源上升沿計數(shù)器加一 end if; end if; end process;end architecture one;4.5

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論