【文章內(nèi)容簡介】
y1=39。039。 g1=39。139。 r2=39。139。 y2=39。039。 g2=39。039。支干道黃燈。 T1=T11。 T2=T21。 IF T1=0 THEN STATE=S1。 T1=4。T2=4。 END IF。 WHEN S5=r1=39。139。 y1=39。039。 g1=39。039。 r2=39。039。 y2=39。039。 g2=39。139。支干道黃燈。 T1=T11。 T2=T21。 IF T2=0 THEN STATE=S3。 T1=4。 T2=4。 END IF。 WHEN S6=r1=39。139。 y1=39。039。 g1=39。039。 r2=39。139。 y2=39。039。 g2=39。039。 T1=T11。 T2=T21。 IF T1=0 THEN STATE=S0。 T1=39。 T2=24。 END IF。 WHEN OTHERS=STATE=S0。 T1=39。 T2=34。 END CASE。 END IF。 END IF。 L1=T1/10。 L2=T1 REM 10。 L3=T2/10。 L4=T2 REM 10。 END PROCESS。P3:PROCESS(L1)顯示主干道十位 BEGIN CASE L1 IS WHEN 0=LED1=1111110。 WHEN 1=LED1=0110000。 WHEN 2=LED1=1101101。 WHEN 3=LED1=1111001。 WHEN 4=LED1=0110011。 WHEN 5=LED1=1011011。 WHEN 6=LED1=1011111。 WHEN 7=LED1=1110000。 WHEN 8=LED1=1111111。 WHEN 9=LED1=1111011。 WHEN OTHERS= LED1=0000000。 END CASE。 END PROCESS。... : 控制模塊的電路符號clk_1hz為分頻器產(chǎn)生的1hz時鐘脈沖。R為復(fù)位鍵,對交通燈控制器系統(tǒng)進(jìn)行復(fù)位后系統(tǒng)轉(zhuǎn)換為S0狀態(tài)。SPC為緊急控制信號,此時兩干道均禁止通行,狀態(tài)結(jié)束后系統(tǒng)轉(zhuǎn)換為S0狀態(tài)。WE、SN分別為主、支干道控制信號。其作用是根據(jù)兩干道的相對車輛數(shù)目來適當(dāng)延長通行時間,防止交通堵塞。gry1分別代表主干道的綠、黃、紅燈,gry2分別代表支干道的綠、黃、紅燈,其中綠燈亮表示允許通行,紅燈亮表示禁止通行。LED1[0..6]、LED2[0..6]、LED3[0..6]、LED4[0..6]分別代表主干道倒計時顯示十位、主干道倒計時顯示個位、支干道倒計時顯示十位、主干道倒計時顯示個位。: 沒有按鍵輸入時的仿真圖為了觀察清楚所有狀態(tài),在仿真之前將程序中各個狀態(tài)持續(xù)的時間縮短,其中S0、SSSSSS6狀態(tài)的持續(xù)時間分別為9s、2s、6s、2s、13s、9s、4s。從波形圖可以看出,在正常情況下首先開始的是S0狀態(tài),g1和r2為高電平。隨后是yr2為高電平,即為S1狀態(tài)。其次是S2狀態(tài),gr1為高電平。最后是S3狀態(tài),yr1為高電平。S3狀態(tài)結(jié)束后是S0狀態(tài),也即開始了新的循環(huán)。 R和SPC存在高電平時的仿真圖從 :在R為高電平之前,系統(tǒng)處于S0狀態(tài)。在R為高電平之后,系統(tǒng)重新進(jìn)入S0狀態(tài),開始了S0S1S2S3S0的循環(huán)。在SPC為高電平之后,rr2都變成高電平,即進(jìn)入了S6狀態(tài),在S6狀態(tài)之后控制器轉(zhuǎn)換為S0狀態(tài)。由圖可以看出SPC輸入高電平之后,系統(tǒng)遵循的是S6S0S1S2S3S0的狀態(tài)轉(zhuǎn)換原則。 WE和SN存在高電平時的仿真圖,WE置于高電平之后,gr2變成了高電平,但狀態(tài)持續(xù)時間比S0狀態(tài)更長,可知系統(tǒng)進(jìn)入了S4狀態(tài)。之后系統(tǒng)遵循S4 S1S2S3S0的狀態(tài)轉(zhuǎn)換原則。在SN置于高電平之后,r1和g2變成了高電平,由狀態(tài)持續(xù)時間可知控制器轉(zhuǎn)換為S5狀態(tài),之后系統(tǒng)遵循S5 S3S0S1的狀態(tài)轉(zhuǎn)換原則.顯示模塊可根據(jù)控制模塊的輸出信號和時鐘脈沖來實(shí)現(xiàn)倒計時數(shù)碼管的顯示。具體實(shí)現(xiàn)方式是將控制信號的輸出信號(如LED1【6..0】)的七位與數(shù)碼管的七段一一對應(yīng)。其控制程序如下所示:PROCESS (clk,datain)begin if clk39。event and clk=39。139。 then out0=not datain(0)。 out1=not datain(1)。 out2=not datain(2)。 out3=not datain(3)。 out4=not datain(4)。 out5=not datain(5)。 out6=not datain(6)。end if。end process。: 顯示模塊的電路符號clk為4MHZ的系統(tǒng)時鐘脈沖。datain[6..0]接控制和計時模塊的輸出信號。FPGA器件FLEX EPF10K10LC84上的數(shù)碼管為共陽極的,低電平有效。Out0、OutOutOutOutOutOut6分別代表數(shù)碼管的a、b、c、d、e、f、g端。將以上各個模塊仿真成功后,再編寫頂層文件,將各個單元模塊連接起來,統(tǒng)一調(diào)配,得到頂層文件的原理圖(): 頂層文件的原理圖因?yàn)樵贔PGA器件FLEX EPF10K10LC84下載時為低電平有效,程序?qū)⒏鱾€模塊的輸出變量取反后輸出。部分變量是在原程序中取反,部分變量是在原理圖中接了非門后輸出。,交通燈控制器分為三個模塊,分別是分頻模塊、控制和計時模塊、顯示模塊。其中四個譯碼顯示模塊的輸出分別接實(shí)驗(yàn)板上的四個LED數(shù)碼管,用來顯示主、支干道的倒計時。除clk外,圖中可見4個外部輸入信號,分別是R、SPC、WE和SN。交通燈控制器各模塊的源程序如附錄所示。長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(論文) 程序仿真與分析 5 程序仿真與分析 仿真結(jié)果利用Quartus II軟件對本程序進(jìn)行編譯,生成了可以進(jìn)行仿真定時分析以及下載到可編程器件的相關(guān)文件。: 仿真結(jié)果分析將程序下載到試驗(yàn)板后,將R置于高電平后,可以看見LED燈的顯示情況為主干道綠燈亮,支干道紅燈亮。主干道數(shù)碼管倒計時顯示為24s,支干道數(shù)碼管倒計時顯示為39s。在支干道數(shù)碼管倒計時顯示為0s后,可以看見LED燈的顯示情況變?yōu)橹鞲傻傈S燈亮,支干道紅燈亮。此時主、支兩干道的數(shù)碼管倒計時顯示均為5S。在支干道數(shù)碼管倒計時顯示為0s后,LED燈的顯示情況變?yōu)橹鞲傻兰t燈亮,支干道綠燈亮,主干道數(shù)碼管倒計時顯示為24s,支干道數(shù)碼管倒計時顯示為19s。在主干道數(shù)碼管倒計時顯示為0s后,可以看見LED燈的顯示情況變?yōu)橹鞲傻兰t燈亮,支干道黃燈亮,此時主、支兩干道的數(shù)碼管倒計時顯示均為5S。5S鐘之后,交通燈重新進(jìn)入主干道綠燈亮、支干道紅燈亮的狀態(tài)(即S0狀態(tài))。將spc置于高電平后,可以看見LED燈的顯示情況為兩干道均為紅燈亮,且數(shù)碼管均從29開始倒數(shù)計時。30s之后,控制器重新設(shè)置,轉(zhuǎn)換為S0狀態(tài)。將WE置于高電平后,可以看見LED燈的顯示情況為主干道綠燈亮,支干道紅燈亮。主干道數(shù)碼管倒計時顯示為64s,支干道數(shù)碼管倒計時顯示為59s。在支干道數(shù)碼管倒計時顯示為0s后,可以看見LED燈的顯示情況變?yōu)橹鞲傻傈S燈亮,支干道紅燈亮。此時主、支兩干道的數(shù)碼管倒計時顯示均為5S(即轉(zhuǎn)換為S1狀態(tài))。將SN置于高電平后,LED燈的顯示情況變?yōu)橹鞲傻兰t燈亮,支干道綠燈亮,主干道數(shù)碼管倒計時顯示為39s,支干道數(shù)碼管倒計時顯示為44s。在主干道數(shù)碼管倒計時顯示為0s后,可以看見LED燈的顯示情況變?yōu)橹鞲傻兰t燈亮,支干道黃燈亮,此時主、支兩干道的數(shù)碼管倒計時顯示均為5S(即轉(zhuǎn)換為S3狀態(tài))。長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(論文) 元器件清單 6 元器件清單元件名稱參數(shù)數(shù)量(個)電阻1K35電容30pF3FPGA芯片EPF10K10LC841LED紅綠黃各2數(shù)碼管共陽474HC041晶振12M1長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(論文) 心得體會 7 心得體會VHDL編程畢業(yè)設(shè)計就要結(jié)束了,這次畢業(yè)設(shè)計歷時近三個月,通過這個三個月的學(xué)習(xí),發(fā)現(xiàn)了自己的很多不足,發(fā)現(xiàn)了很多知識上的漏洞。同時也看到了自己的實(shí)踐經(jīng)驗(yàn)還是比較缺乏,理論聯(lián)系實(shí)際的能力還急需提高。這次畢業(yè)設(shè)計讓我學(xué)到了很多,不僅是鞏固了先前學(xué)的VHDL技術(shù)的理論知識,而且也培養(yǎng)了我的編程能力,更令我的創(chuàng)造性思維得到拓展。在畢業(yè)設(shè)計中一個人的力量是遠(yuǎn)遠(yuǎn)不夠的,真正的完成任務(wù)需要共同的智慧與勞動,團(tuán)結(jié)協(xié)作是我們成功的一項(xiàng)非常重要的保證。在這個過程中,我也曾經(jīng)因?yàn)閷?shí)踐經(jīng)