華中科技大學(xué)電子技術(shù)課程設(shè)計(jì)報(bào)告——交通燈控制器設(shè)計(jì)doc_第1頁(yè)
華中科技大學(xué)電子技術(shù)課程設(shè)計(jì)報(bào)告——交通燈控制器設(shè)計(jì)doc_第2頁(yè)
華中科技大學(xué)電子技術(shù)課程設(shè)計(jì)報(bào)告——交通燈控制器設(shè)計(jì)doc_第3頁(yè)
華中科技大學(xué)電子技術(shù)課程設(shè)計(jì)報(bào)告——交通燈控制器設(shè)計(jì)doc_第4頁(yè)
華中科技大學(xué)電子技術(shù)課程設(shè)計(jì)報(bào)告——交通燈控制器設(shè)計(jì)doc_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、華中科技大學(xué)電子技術(shù)基礎(chǔ)課程設(shè)計(jì)2013-2014學(xué)年度第二學(xué)期電子技術(shù)基礎(chǔ)課程設(shè)計(jì)-交通燈控制器設(shè)計(jì)院 系: 自動(dòng)化學(xué)院 專 業(yè): 班 級(jí): 姓 名: 學(xué) 號(hào): 指導(dǎo)教師: 目錄一、 課程設(shè)計(jì)名稱3二、 課程設(shè)計(jì)要求3三、 系統(tǒng)設(shè)計(jì)31、 系統(tǒng)框圖與說(shuō)明.32、 狀態(tài)轉(zhuǎn)換圖.53、 輸入輸出設(shè)計(jì).6四、 系統(tǒng)仿真61、 各模塊仿真波形.62、 實(shí)測(cè).8五、 實(shí)驗(yàn)總結(jié)81、 心得體會(huì).82、 待改進(jìn)的問(wèn)題.103、 功能擴(kuò)展.10附錄.11一、課程設(shè)計(jì)名稱交通燈控制器的設(shè)計(jì)二、設(shè)計(jì)內(nèi)容及要求1、 設(shè)計(jì)一個(gè)十字路口交通信號(hào)燈的控制電路。要求紅、綠燈按一定的規(guī)律亮和滅,并在亮燈期間進(jìn)行倒計(jì)時(shí),且將

2、運(yùn)行時(shí)間用數(shù)碼管顯示出來(lái)。2、綠燈亮?xí)r,為該車道允許通行信號(hào),紅燈亮?xí)r,為該車道禁止通行信號(hào)。要求主干道每次通行時(shí)間為Tx秒,支干道每次通行時(shí)間為Ty秒。每次變換運(yùn)行車道前綠燈閃爍,持續(xù)時(shí)間為5秒。即車道要由X轉(zhuǎn)換為Y時(shí),X在通行時(shí)間只剩下5秒鐘時(shí),綠燈閃爍顯示,Y仍為紅燈。3、可以對(duì)X,Y車道上交通燈運(yùn)行的時(shí)間進(jìn)行重新設(shè)置,20Tx99 ,10Ty394、對(duì)器件進(jìn)行在系統(tǒng)編程和實(shí)驗(yàn)驗(yàn)證。5、寫出設(shè)計(jì)性實(shí)驗(yàn)報(bào)告,并打印各層次的源文件和仿真波形,然后作簡(jiǎn)要說(shuō)明。 三、系統(tǒng)設(shè)計(jì)1、系統(tǒng)框圖與說(shuō)明LED顯示狀態(tài)轉(zhuǎn)換數(shù)碼管顯示譯碼模塊時(shí)間計(jì)算置數(shù)模塊分頻模塊系統(tǒng)時(shí)鐘輸入 由上圖,我們可以清楚地將系統(tǒng)分

3、為六個(gè)模塊:分頻模塊,時(shí)間設(shè)置模塊,狀態(tài)轉(zhuǎn)換模塊,時(shí)間計(jì)算模塊,數(shù)碼管譯碼模塊,LED顯示模塊。下面設(shè)計(jì)者將對(duì)每個(gè)模塊進(jìn)行詳細(xì)的說(shuō)明。1)分頻模塊 分頻模塊其作用為:由于DE2板上能夠提供的時(shí)鐘信號(hào)為50MHz,而設(shè)計(jì)所需時(shí)鐘信號(hào)為1Hz,故使用分頻模塊將50MHz信號(hào)分頻為1Hz信號(hào)。2)時(shí)間設(shè)置模塊由于系統(tǒng)設(shè)計(jì)要求可以對(duì)主干道,支干道上左轉(zhuǎn)、綠燈運(yùn)行的時(shí)間進(jìn)行重新設(shè)置調(diào)整,所以要對(duì)系統(tǒng)進(jìn)行參數(shù)化設(shè)計(jì)。首先引入一組參數(shù),main_gh,main_gl,main_lh,main_ll,branch_gh,branch_gl,branch_lh,branch_ll(下劃線后面的字母分別取gree

4、n,left,high,low首字母).需要置數(shù)時(shí),首先選擇對(duì)主干道還是支干道時(shí)間置數(shù),這里設(shè)置一個(gè)main_or_branch參數(shù),當(dāng)main_or_branch為高時(shí)設(shè)置支干道時(shí)間,為低時(shí)設(shè)置主干道時(shí)間。置數(shù)時(shí),通過(guò)s_set_button,l_set_button對(duì)時(shí)間進(jìn)行設(shè)置,具體方法參見代碼。為了置數(shù)方便,引入一個(gè)add_or_decent參數(shù),低電平時(shí)按下button可以增計(jì)數(shù),高電平時(shí)按下可以減計(jì)數(shù)。而在程序設(shè)計(jì)上,可以運(yùn)用always語(yǔ)句進(jìn)行設(shè)計(jì),來(lái)判斷置數(shù)鍵的變化。因?yàn)樵赩erilog HDL 語(yǔ)言中always塊中begin end 在概念上順序執(zhí)行,實(shí)質(zhì)上是并行的,因?yàn)槊?/p>

5、條語(yǔ)句的執(zhí)行不占用具體時(shí)間,所有語(yǔ)句都是在一瞬間執(zhí)行的,沒(méi)有時(shí)間的先后,但有先后執(zhí)行之分。仿真時(shí)是逐條執(zhí)行的。但要弄清楚阻塞賦值和非阻塞賦值的區(qū)別。如果全部都是非阻塞的賦值的話,才相當(dāng)于并行的。而此程序設(shè)計(jì)剛好要求,主干道綠燈計(jì)時(shí)的置數(shù),主干道左轉(zhuǎn)計(jì)時(shí)的置數(shù),支干道綠燈計(jì)時(shí)的置數(shù),支干道左轉(zhuǎn)計(jì)時(shí)的置數(shù)并行進(jìn)行,所以選用always 語(yǔ)句很合適。3)狀態(tài)轉(zhuǎn)換模塊本設(shè)計(jì)將交通燈的整個(gè)過(guò)程劃分為四個(gè)基本狀態(tài):主干道綠燈、主干道左轉(zhuǎn)、支干道綠燈、支干道左轉(zhuǎn),用state、s_or_l為00、01、10、11來(lái)代表。每當(dāng)一個(gè)狀態(tài)的計(jì)數(shù)器為00時(shí),state、s_or_l發(fā)生改變,以實(shí)現(xiàn)狀態(tài)間的轉(zhuǎn)換。4)

6、時(shí)間計(jì)算模塊由于本設(shè)計(jì)中加入了左轉(zhuǎn)的時(shí)間,因此紅燈時(shí)間不僅僅是另一干道的直行時(shí)間,而是直行時(shí)間和左轉(zhuǎn)時(shí)間之和,由于在狀態(tài)轉(zhuǎn)換模塊中需要用到大量的時(shí)間判斷,因此將此模塊單獨(dú)劃分。 5)數(shù)碼管譯碼模塊由于DE2板上無(wú)數(shù)碼管譯碼電路,所以需要將4位的數(shù)碼管控制信號(hào)譯成7位控制信號(hào)。6)LED顯示模塊由輸入信號(hào)state、s_or_l、flash,分別取000,001,010,011,100,101,110,111所得到的main_green,main_left,main_red,branch_left,branch_green,branch_red的不同值,來(lái)控制主干道,支干道紅綠左轉(zhuǎn)燈的亮滅。其中

7、 1表示亮,0表示滅。如表3-1 所示。由上表可得到:main_green=state&s_or_l&(flash&clk);main_left=state&s_or_l&(flash&clk);main_red=state;branch_green=state&s_or_l&(flash&clk);branch_left=state&s_or_l&(flash&clk);branch_red=state;2、狀態(tài)轉(zhuǎn)換圖S0狀態(tài):主干道綠燈、支干道紅燈S1狀態(tài):主干道左轉(zhuǎn)、支干道紅燈S2狀態(tài):支干道

8、綠燈、主干道紅燈S3狀態(tài):支干道左轉(zhuǎn)、主干道紅燈3、輸入輸出設(shè)計(jì)本設(shè)計(jì)硬件基于DE0板,具體輸入輸出如下:1)輸入: 開關(guān):main_or_branch,EN,run_or_set,add_or_decent 按鍵:s_set_button,l_set_button 時(shí)鐘:clk2)輸出: 數(shù)碼管:OUT1L,OUT1H,OUT2L,OUT2H LED燈:main_green,main_red,main_left branch_left,branch_green,branch_red四、系統(tǒng)仿真 1、各模塊仿真波形1)分頻模塊2)時(shí)間設(shè)置模塊這里給s_set_button和l_set_butt

9、on分別設(shè)置持續(xù)的脈沖信號(hào),可以看到,當(dāng)main_or_branch為低時(shí)為主干道時(shí)間置數(shù),為高時(shí)支干道時(shí)間置數(shù),當(dāng)add_or_decent為低時(shí)加計(jì)數(shù),為高時(shí)減計(jì)數(shù),仿真結(jié)果符合預(yù)期效果。3)狀態(tài)轉(zhuǎn)換模塊首先仿真EN為高時(shí)的運(yùn)行狀態(tài),給主干道直行左轉(zhuǎn)分別賦值25,15,支干道直行左轉(zhuǎn)分別賦值15,10,主干道紅燈時(shí)間26,支干道紅燈時(shí)間41,從輸出的state和s_or_l可以清楚的看出狀態(tài)轉(zhuǎn)換和時(shí)間的關(guān)系,flash的仿真結(jié)果也符合預(yù)期。該圖為run_or_set為低時(shí)的仿真圖,可以看到,就算EN為高,此時(shí)數(shù)碼管顯示的也是賦值在counter_play3和counter_play4上的值

10、,即置數(shù)值,符合仿真預(yù)期。4)時(shí)間計(jì)算模塊給輸入的兩個(gè)變量分別置數(shù)12,34,得到輸出47,紅燈時(shí)間應(yīng)該等于直行加左轉(zhuǎn)時(shí)間再加1,符合預(yù)期。5)LED顯示模塊該模塊即為狀態(tài)轉(zhuǎn)換仿真,將state,s_or_l,flash賦予相應(yīng)的波形,可以看出,當(dāng)state為00時(shí),主干道直行燈亮,支干道紅燈亮;01時(shí),主干道左轉(zhuǎn)燈亮,支干道紅燈亮;10時(shí),主干道紅燈亮,支干道直行燈亮;11時(shí),主干道紅燈亮,支干道左轉(zhuǎn)燈亮。并且flash為高時(shí)LED燈出現(xiàn)閃爍,符合仿真結(jié)果。 2、實(shí)測(cè) 已經(jīng)現(xiàn)場(chǎng)驗(yàn)收通過(guò)。五、實(shí)驗(yàn)總結(jié) 1、心得體會(huì)看著手邊不斷變換的交通信號(hào)燈以及倒計(jì)時(shí)顯示的數(shù)碼管,回顧這5周以來(lái)為課設(shè)所做的所

11、有努力,感慨良多。只有親身去努力嘗試,才回收獲真正的知識(shí)和能力。為了找到切合實(shí)際的解決方案,我采用實(shí)地調(diào)查和網(wǎng)絡(luò)搜集;為了尋找可能存在的BUG,我反復(fù)測(cè)試下載后的DE0板子,盡量窮盡各種可能出現(xiàn)的特殊情況,發(fā)現(xiàn)問(wèn)題及時(shí)修改。值得欣慰的是,所有的努力沒(méi)有白費(fèi),到目前為止所做出的成果還是比較令我滿意的。在這里,要感謝龔軍老師的教誨,感謝學(xué)校開設(shè)這門課程設(shè)計(jì),給我們了一次充分鍛煉,將理論知識(shí)付諸實(shí)踐的機(jī)會(huì)。書上的知識(shí)再多,都是死的,即使你完全記住,也無(wú)法在實(shí)際使用中游刃有余地去利用它們,不能讓知識(shí)為我所用。同時(shí),在解決問(wèn)題的時(shí)候,會(huì)發(fā)現(xiàn)自己依舊欠缺的知識(shí),需要我們耐心地去查閱資料,不斷補(bǔ)充新的領(lǐng)域的

12、知識(shí)。這樣的一種鍛煉,可以幫助我們形成一種習(xí)慣,在今后工作學(xué)習(xí)中,自然地去運(yùn)用相同的方法解決不同的問(wèn)題。很多同學(xué)說(shuō),本科期間做項(xiàng)目找實(shí)習(xí)的機(jī)會(huì)太少,其實(shí)他們忽略了像課程設(shè)計(jì)這樣的寶貴機(jī)會(huì)。大學(xué)三年,我們學(xué)習(xí)了很多工程技術(shù)的知識(shí),但卻經(jīng)常性的忽視在這些課程中的課程設(shè)計(jì)這個(gè)關(guān)鍵環(huán)節(jié),認(rèn)為它們只不過(guò)是走過(guò)場(chǎng),抄抄代碼,寫寫報(bào)告就夠了。其實(shí)不然,課程設(shè)計(jì)本身就是一次做項(xiàng)目的經(jīng)歷,它要求你嚴(yán)格按照項(xiàng)目規(guī)程操作,在時(shí)間和進(jìn)度上,都要有項(xiàng)目意識(shí)。雖然我學(xué)習(xí)過(guò)信息系統(tǒng)等軟件開發(fā)的流程和方法,但是與實(shí)際運(yùn)用嚴(yán)重脫節(jié),沒(méi)有那種清晰而強(qiáng)烈的工程思想,而是沿用做一步看一步的原始想法。這次課程設(shè)計(jì)雖然系統(tǒng)架構(gòu)不是很復(fù)雜

13、,但還是需要一定的規(guī)劃和思考才能做得快做得好,我們班拿到題目之后,只有很少部分人做了詳細(xì)的開題報(bào)告,事實(shí)證明他們確實(shí)完成的質(zhì)量也很高,所以說(shuō)不能眼高手低,到最后卻碌碌無(wú)為。在調(diào)試的過(guò)程中,我也遇到了很多問(wèn)題,比如計(jì)數(shù)器工作不正常,LED燈非正常閃爍,也廢了很大的功夫才把BUG解決。這里我要感謝班上和我做一個(gè)題目的同學(xué)們,在我絞盡腦汁無(wú)法找出BUG的時(shí)候,是他們幫助我解決了問(wèn)題。這個(gè)事情也充分說(shuō)明了團(tuán)隊(duì)合作的重要性,每個(gè)人的想法都是極其寶貴的,汲取他人之所長(zhǎng)會(huì)對(duì)自己的工作產(chǎn)生事倍功半的效果。但是借鑒要有限度,要講究方式方法。很多同學(xué)容易走兩個(gè)極端,一種是埋頭編程,中途遇到很多困難其實(shí)前人也都遇到

14、并且很好地解決了,但是他們還要繼續(xù)重復(fù)地探尋解決途徑;另一種是照單全收,完全不明白作者的用意和初衷,只知道看結(jié)果對(duì)就拿來(lái)用,沒(méi)弄明白其所以然,顯然是荒廢了學(xué)習(xí)的機(jī)會(huì)。課程設(shè)計(jì)給了我們把知識(shí)轉(zhuǎn)化為能力的機(jī)會(huì),這次電子技術(shù)課程設(shè)計(jì)更是讓我受益良多,相信在我以后的求學(xué)過(guò)程中,這次課設(shè)給我?guī)?lái)的收獲一定會(huì)指引我前進(jìn)。 2、待改進(jìn)的問(wèn)題 由于技術(shù)手段有限,未能加入人行道紅綠燈提醒功能。并且由于對(duì)題目理解不是很深刻,在紅綠燈時(shí)間計(jì)算的時(shí)候出了一些問(wèn)題,這些都是以后學(xué)弟學(xué)妹們做課設(shè)時(shí)候需要注意的。 3、功能擴(kuò)展 加入了左轉(zhuǎn)功能,更加符合實(shí)際十字路口的情況,如果是DE2板,還可以用LCD屏顯示狀態(tài),但遺憾未能

15、實(shí)現(xiàn)。附錄:源代碼module jiaotongdeng(clk,main_or_branch,EN,run_or_set,add_or_decent, s_set_button,l_set_button,main_green,main_red,branch_green,branch_red,main_left,branch_left, OUT1L,OUT1H,OUT2L,OUT2H );input clk,main_or_branch,EN,run_or_set,add_or_decent;input s_set_button,l_set_button;output main_green,m

16、ain_red,main_left,branch_left,branch_green,branch_red;output 7:0 OUT1L,OUT1H,OUT2L,OUT2H;wire clk1;wire flash,state,s_or_l;wire3:0 counter_play1h,counter_play1l;wire3:0 counter_play2h,counter_play2l;wire7:0 counter_play3,counter_play4;wire3:0branch_rl,branch_rh,main_rh,main_rl;wire3:0 main_gh,main_g

17、l,main_lh,main_ll,branch_gh,branch_gl,branch_lh,branch_ll;fenpin f1(clk,clk1);/調(diào)用分頻模塊獲得1hz脈沖Rtime f2(main_rh,main_rl,branch_gh,branch_gl,branch_lh,branch_ll);/計(jì)算主干道紅燈時(shí)間Rtime f3(branch_rh,branch_rl,main_gh,main_gl,main_lh,main_ll);/計(jì)算支干道紅燈時(shí)間state_transformer f4(clk1,EN,flash,state,s_or_l,run_or_set,m

18、ain_gh,main_gl,main_lh,main_ll,branch_gh,branch_gl,branch_lh,branch_ll,main_rh,main_rl,branch_rh,branch_rl,counter_play3,counter_play4,counter_play1h,counter_play1l,counter_play2h,counter_play2l );/調(diào)用狀態(tài)轉(zhuǎn)換模塊timeset f5(clk,main_or_branch,add_or_decent, s_set_button,l_set_button, main_gh,main_gl,main_l

19、h,main_ll,branch_gh,branch_gl,branch_lh,branch_ll, counter_play3,counter_play4);/調(diào)用時(shí)間設(shè)置模塊LED_display f6(clk1,flash,state,s_or_l,main_green,main_left,main_red,branch_green,branch_left,branch_red);/調(diào)用LED顯示模塊yima f7(counter_play1h,counter_play1l,OUT1H,OUT1L);/譯碼顯示時(shí)間至數(shù)碼管yima f8(counter_play2h,counter_pl

20、ay2l,OUT2H,OUT2L);endmodulemodule fenpin(clk,clk1);input clk;output clk1;reg clk1;reg 24:0 counter;/定義計(jì)數(shù)器initial begin clk1=0; counter=0;endalways(posedge clk) begin if(counter=25'd25000000)/每25m個(gè)時(shí)鐘周期clk1反向,同時(shí)計(jì)數(shù)器清零 beginclk1<=clk1;counter<=0; end else counter<=counter+1'b1; end/end

21、alwaysendmodulemodule yima(Inh,Inl,Out_H,Out_L);input 3:0 Inh,Inl;output 7:0 Out_H,Out_L;reg 7:0 Out_H,Out_L;always (Inh) begin case(Inh) 0: Out_H=8'b11000000;/共陰極數(shù)碼管譯碼 1: Out_H=8'b11111001; 2: Out_H=8'b10100100; 3: Out_H=8'b10110000; 4: Out_H=8'b10011001; 5: Out_H=8'b1001001

22、0; 6: Out_H=8'b10000010; 7: Out_H=8'b11111000; 8: Out_H=8'b10000000; 9: Out_H=8'b10010000; default Out_H=8'bxxxxxxxx; endcase end always (Inl) begin case(Inl) 0: Out_L=8'b11000000; 1: Out_L=8'b11111001; 2: Out_L=8'b10100100; 3: Out_L=8'b10110000; 4: Out_L=8'b1

23、0011001; 5: Out_L=8'b10010010; 6: Out_L=8'b10000010; 7: Out_L=8'b11111000; 8: Out_L=8'b10000000; 9: Out_L=8'b10010000; default Out_L=8'bxxxxxxxx; endcase end endmodulemodule timeset(clk,main_or_branch,add_or_decent,s_set_button,l_set_button,main_gh,main_gl,main_lh,main_ll,bra

24、nch_gh,branch_gl,branch_lh,branch_ll,counter_play3,counter_play4);input s_set_button;input l_set_button;input clk;input main_or_branch;/用來(lái)控制counter_play3,counter_play4顯示主干道還是支干道設(shè)置的時(shí)間,0主1支input add_or_decent;/用于控制按鈕增減置數(shù)值,為0加,為1減output7:0 counter_play3,counter_play4;/分別顯示綠燈、左轉(zhuǎn)設(shè)置時(shí)間output3:0main_gh,main

25、_gl,main_lh,main_ll;output3:0branch_gh,branch_gl,branch_lh,branch_ll;reg7:0 counter_play3,counter_play4;reg3:0main_gh,main_gl,main_lh,main_ll;reg3:0branch_gh,branch_gl,branch_lh,branch_ll;always(posedge s_set_button)/直行時(shí)間設(shè)置if(add_or_decent=0)/增加時(shí)間 begin if(main_or_branch=0)/設(shè)置主干道 begin begin if(main

26、_gl=9) begin main_gl<=0; if(main_gh=9) main_gh<=0; else main_gh<=main_gh+1; end else main_gl<=main_gl+1; end end else/設(shè)置支干道 beginif(branch_gl=9) begin branch_gl<=0; if(branch_gh=9) branch_gh<=0; else branch_gh<=branch_gh+1; end else branch_gl<=branch_gl+1; end end/ end add se

27、telse /減少時(shí)間 begin if(main_or_branch=0) begin begin if(main_gl=0) begin main_gl<=9; if(main_gh=0) main_gh<=9; else main_gh<=main_gh-1; end else main_gl<=main_gl-1; end end else/設(shè)置支干道 begin if(branch_gl=0) begin branch_gl<=9; if(branch_gh=0) branch_gh<=9; else branch_gh<=branch_gh

28、-1; end else branch_gl<=branch_gl-1; end endalways(posedge l_set_button)/左轉(zhuǎn)時(shí)間設(shè)置if(add_or_decent=0) begin if (main_or_branch=0) beginbegin if(main_ll=9) begin main_ll<=0; if(main_lh=9) main_lh<=0; else main_lh<=main_lh+1; end else main_ll<=main_ll+1; endend else begin if(branch_ll=9) b

29、egin branch_ll<=0; if(branch_lh=9) branch_lh<=0; else branch_lh<=branch_lh+1; endelse branch_ll<=branch_ll+1; end end else begin if (main_or_branch=0)begin begin if(main_ll=0) beginmain_ll<=9;if(main_lh=0) main_lh<=9;else main_lh<=main_lh-1; end else main_ll<=main_ll-1; enden

30、d elsebegin if(branch_ll=0) begin branch_ll<=9; if(branch_lh=0) branch_lh<=9; else branch_lh<=branch_lh-1; end else branch_ll<=branch_ll-1;end endalways(posedge clk)begin if(main_or_branch=0)/顯示主干道設(shè)置的時(shí)間 begin counter_play3<=main_gh,main_gl; counter_play4<=main_lh,main_ll; end else

31、if(main_or_branch=1)/顯示支干道設(shè)置的時(shí)間 begin counter_play3<=branch_gh,branch_gl; counter_play4<=branch_lh,branch_ll; endendendmodulemodule state_transformer(clk,EN,flash,state,s_or_l,run_or_set,main_gh,main_gl,main_lh,main_ll,baranch_gh,baranch_gl,baranch_lh,baranch_ll,main_rh,main_rl,branch_rh,branc

32、h_rl,counter_play3,counter_play4,counter_play1h,counter_play1l,counter_play2h,counter_play2l );input clk;input EN,run_or_set;/run_or_set為1時(shí)顯示運(yùn)行時(shí)的時(shí)間,為0顯示設(shè)置時(shí)間input3:0main_gh,main_gl,main_lh,main_ll;input3:0baranch_gh,baranch_gl,baranch_lh,baranch_ll; input3:0main_rh,main_rl,branch_rh,branch_rl;input7:

33、0counter_play3,counter_play4;output3:0counter_play1h,counter_play1l;output3:0counter_play2h,counter_play2l;output flash,state,s_or_l;/輸出狀態(tài)變量reg flash;reg state;reg s_or_l;reg3:0main_rhtemp,main_rltemp,branch_rhtemp,branch_rltemp;reg3:0main_ghtemp,main_gltemp,main_lhtemp,main_lltemp;reg3:0baranch_ght

34、emp,baranch_gltemp,baranch_lhtemp,baranch_lltemp;reg3:0counter_play1h,counter_play1l,counter_play2h,counter_play2l;always(posedge clk)begin if(EN=0)/EN每置一次0對(duì)計(jì)數(shù)中間變量進(jìn)行一次初始化 begin main_ghtemp<=main_gh; main_gltemp<=main_gl; baranch_ghtemp<=baranch_gh; baranch_gltemp<=baranch_gl; main_rhtemp

35、<=main_rh; branch_rhtemp<=branch_rh; main_lhtemp<=main_lh; main_lltemp<=main_ll; baranch_lhtemp<=baranch_lh; baranch_lltemp<=baranch_ll; main_rltemp<=main_rl; branch_rltemp<=branch_rl; state<=0; s_or_l<=0; end else if(EN=1) begin if(state=1)/主干道紅燈 begin counter_play1h&l

36、t;=main_rhtemp;/主干道顯示紅燈計(jì)數(shù) counter_play1l<=main_rltemp;if(main_rltemp=0)&&(main_rhtemp>=1) begin main_rhtemp<=main_rhtemp-1; main_rltemp<=9; end else if(main_rltemp>=1)&&(main_rltemp<=9) begin main_rltemp<=main_rltemp-1; end else if(main_rhtemp=0)&&(main_r

37、ltemp=0) begin main_rhtemp<=main_rh; main_rltemp<=main_rl; end end if(state=0)/支干道紅燈 begin counter_play2h<=branch_rhtemp;/支干道顯示紅燈計(jì)數(shù) counter_play2l<=branch_rltemp; if(branch_rltemp=0)&&(branch_rhtemp>=1) begin branch_rhtemp<=branch_rhtemp-1; branch_rltemp<=9; end else if(

38、branch_rltemp>=1)&&(branch_rltemp<=9) begin branch_rltemp<=branch_rltemp-1; end else if(branch_rhtemp=0)&&(branch_rltemp=0) begin branch_rhtemp<=branch_rh; branch_rltemp<=branch_rl; end end if(state=0&&s_or_l=0)/主干道直行 begin counter_play1h<=main_ghtemp;/主干道顯示

39、直行時(shí)間 counter_play1l<=main_gltemp; if(main_gltemp=0)&&(main_ghtemp>=1) begin main_ghtemp<=main_ghtemp-1; main_gltemp<=9; end if(main_gltemp>=1)&&(main_gltemp<=9) begin if(main_ghtemp=0)&&(main_gltemp=5) begin flash<=1;/綠燈剩余五秒閃爍 main_gltemp<=main_gltemp-

40、1; end else main_gltemp<=main_gltemp-1; end else if(main_ghtemp=0)&&(main_gltemp=0) begin state<=0; s_or_l<=1;/狀態(tài)轉(zhuǎn)換為主干道左轉(zhuǎn) flash<=0; main_ghtemp<=main_gh; main_gltemp<=main_gl; end end if(state=0&&s_or_l=1)/主干道左轉(zhuǎn)燈 begin counter_play1h<=main_lhtemp;/主干道顯示左轉(zhuǎn)燈時(shí)間 coun

41、ter_play1l<=main_lltemp; if(main_lltemp=0)&&(main_lhtemp>=1) begin main_lhtemp<=main_lhtemp-1; main_lltemp<=9; end if(main_lltemp>=1)&&(main_lltemp<=9) begin if(main_lhtemp=0)&&(main_lltemp=5) begin flash<=1; main_lltemp<=main_lltemp-1; end else main_l

42、ltemp<=main_lltemp-1; end else if(main_lhtemp=0)&&(main_lltemp=0) begin state<=1;/狀態(tài)轉(zhuǎn)換為主干道紅燈 s_or_l<=0;/支干道直行 flash<=0; main_lhtemp<=main_lh; main_lltemp<=main_ll; end end if(state=1&&s_or_l=0)/支干道直行 begin counter_play2h<=baranch_ghtemp;/支干道顯示直行時(shí)間 counter_play2l&

43、lt;=baranch_gltemp; if(baranch_gltemp=0)&&(baranch_ghtemp>=1) begin baranch_ghtemp<=baranch_ghtemp-1; baranch_gltemp<=9; end if(baranch_gltemp>=1)&&(baranch_gltemp<=9) begin if(baranch_ghtemp=0)&&(baranch_gltemp=5) begin flash<=1; baranch_gltemp<=baranch_

44、gltemp-1; end else baranch_gltemp<=baranch_gltemp-1; end else if(baranch_ghtemp=0)&&(baranch_gltemp=0) begin state<=1; s_or_l<=1;/狀態(tài)轉(zhuǎn)換為支干道左轉(zhuǎn) flash<=0; baranch_ghtemp<=baranch_gh; baranch_gltemp<=baranch_gl; end endif(state=1&&s_or_l=1)/支干道左轉(zhuǎn)燈 begin counter_play2h<

45、;=baranch_lhtemp;/支干道顯示左轉(zhuǎn)燈時(shí)間 counter_play2l<=baranch_lltemp; if(baranch_lltemp=0)&&(baranch_lhtemp>=1) begin baranch_lhtemp<=baranch_lhtemp-1; baranch_lltemp<=9; end if(baranch_lltemp>=1)&&(baranch_lltemp<=9) begin if(baranch_lhtemp=0)&&(baranch_lltemp=5) begin flash<=1; baranch_lltemp<=baranch_lltemp-1; end else baranch_lltemp<=baranch_lltemp-1; end else if(baranch_lhtemp=0)&&(baranch_lltemp=0) begin state<=0; s_or_l<=0;/狀態(tài)轉(zhuǎn)換為主干道直行 flash<=0

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論