版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> EDA技術(shù)與應(yīng)用論文</p><p> 論文題目:交通燈設(shè)計(jì) </p><p> 姓 名: 王 五 </p><p> 專(zhuān) 業(yè): 電子信息工程 </p><p> 班 級(jí): XXXXXX</p><p> 學(xué) 號(hào):
2、 XXXX </p><p> 指導(dǎo)老師: </p><p> 摘 要:本文提出了一個(gè)交通燈控制方案, 并介紹了用EDA技術(shù)、VHDL硬件描述語(yǔ)言和可編程器件CPLD實(shí)現(xiàn)該方案的系統(tǒng)設(shè)計(jì)。關(guān)鍵詞:交通燈, ,EDA,VHDL,CPLD</p><p><b> 目錄</b></p><p&
3、gt; 方案分析與對(duì)比································2</p><
4、;p> 1.1方案分析··································&
5、#183;···2</p><p> 1.2方案對(duì)比···························
6、3;··········2</p><p> 整體設(shè)計(jì)論述·····················
7、183;············3</p><p> 單元模塊設(shè)計(jì)與仿真··················
8、83;·········6</p><p> 3.1時(shí)鐘分頻模塊·····················
9、3;···········6</p><p> 3.2交通燈控制及計(jì)時(shí)模塊···················&
10、#183;······7</p><p> 3.3掃描顯示譯碼模塊························
11、······9</p><p> 3.4頂層文件的編寫(xiě)·························
12、······10</p><p> 硬件實(shí)驗(yàn)方案及實(shí)驗(yàn)結(jié)果·······················13</p&g
13、t;<p> 4.1硬件實(shí)驗(yàn)方案································
14、3;13</p><p> 4.2實(shí)驗(yàn)結(jié)果·······························
15、······15</p><p> 收獲和體會(huì)·························
16、3;·········15</p><p> 交通燈編碼······················
17、183;············16</p><p> 參考文獻(xiàn)···················&
18、#183;·················23</p><p><b> 方案分析與對(duì)比</b></p><p><b> §1.1方案分析</b></p&
19、gt;<p> 通過(guò)分析可以知道,所要設(shè)計(jì)的交通信號(hào)燈控制電路要能夠適用于由一條主干道和一條支干道的匯合點(diǎn)形成的十字交叉路口。能夠做到主、支干道的紅綠燈閃亮的時(shí)間不完全相同,在綠燈跳變紅燈的過(guò)程中能夠用黃燈進(jìn)行過(guò)渡,使得行駛過(guò)程中的車(chē)輛有足夠的時(shí)間停下來(lái)。還要求在主、支干道各設(shè)立一組計(jì)時(shí)顯示器,能夠顯示相應(yīng)的紅、黃、綠倒計(jì)時(shí)。可以利用VHDL語(yǔ)言合理設(shè)計(jì)系統(tǒng)功能,使紅黃綠燈的轉(zhuǎn)換有一個(gè)準(zhǔn)確的時(shí)間間隔和轉(zhuǎn)換順序。</
20、p><p><b> §1.2方案對(duì)比</b></p><p> 實(shí)現(xiàn)路口交通燈系統(tǒng)的控制方法很多,可以用標(biāo)準(zhǔn)邏輯器件、可編程序控制器和單片機(jī)等方案來(lái)實(shí)現(xiàn)。</p><p> 若用單片機(jī)方案來(lái)實(shí)現(xiàn)的話,模型可以由電源電路、單片機(jī)主控電路、無(wú)線收發(fā)控制電路和顯示電路四部分組成。在電源電路中,需要用到+5V的直流穩(wěn)壓電源,無(wú)線收發(fā)控制電
21、路和顯示電路應(yīng)由編碼芯片和數(shù)據(jù)發(fā)射模塊兩部分組成,主控電路的主要元件為AT89C51。硬件設(shè)計(jì)完成后還要利用計(jì)算機(jī)軟件經(jīng)行軟件部分的設(shè)計(jì)才能夠?qū)崿F(xiàn)相應(yīng)的功能。</p><p> 雖然利用單片機(jī)系統(tǒng)設(shè)計(jì)的交通燈控制器相對(duì)來(lái)說(shuō)較穩(wěn)定,能夠完成較多功能的實(shí)現(xiàn),但這些控制方法的功能修改及調(diào)試都需要硬件電路的支持,在一定程度上增加了功能修改及系統(tǒng)設(shè)計(jì)與調(diào)試的困難。</p><p> 相反,使用基
22、于FPGA的設(shè)計(jì)方法具有周期短,設(shè)計(jì)靈活,易于修改等明顯的的優(yōu)點(diǎn)。而且,隨著FPGA器件、設(shè)計(jì)語(yǔ)言和電子設(shè)計(jì)自動(dòng)化工具的發(fā)展和改進(jìn),越來(lái)越多的電子系統(tǒng)采用FPGA來(lái)設(shè)計(jì)。未來(lái),使用FPGA器件設(shè)計(jì)的產(chǎn)品將出現(xiàn)在各個(gè)領(lǐng)域里。因此,此次的交通信號(hào)燈控制器的設(shè)計(jì)將采用基于FPGA的設(shè)計(jì)方案來(lái)實(shí)現(xiàn)所要求的功能。</p><p><b> 整體設(shè)計(jì)論述</b></p><p>
23、; 根據(jù)設(shè)計(jì)要求和系統(tǒng)所具有的功能,并參考相關(guān)的文獻(xiàn)資料,經(jīng)行方案設(shè)計(jì),可以畫(huà)出如下圖所示的交通信號(hào)燈控制器的系統(tǒng)框圖。 </p><p> 1kHZ </p><p> 1kHZ 1HZ </p><p> 支干道車(chē)輛檢測(cè)
24、 </p><p> 1kHZ 數(shù)碼管及LED信號(hào) </p><p> 系統(tǒng)的狀態(tài)圖如下所示</p><p><b> CAR='0'</b></p><p> CAR='1' c=&qu
25、ot;1001111" </p><p><b> CAR='0'</b></p><p> c="1001111" CAR='1' </p><p> c="0101100" c="
26、;1001010"</p><p> c="0110001"</p><p> S0:支干道沒(méi)有車(chē)輛行駛,支干道綠燈,支干道紅燈</p><p> S1:支干道有車(chē)輛行駛,支干道綠燈,支干道紅燈</p><p> S2:主干道黃燈,支干道綠燈</p><p> S3:主干道紅燈,
27、支干道綠燈</p><p> S4:主干道紅燈,支干道黃燈</p><p> 根據(jù)以上設(shè)計(jì)思路,可以得到如下的頂層文件原理圖</p><p><b> 頂層文件的實(shí)體圖:</b></p><p><b> 單元模塊設(shè)計(jì)與仿真</b></p><p> §3
28、.1時(shí)鐘分頻模塊</p><p> 系統(tǒng)的動(dòng)態(tài)掃描需要1HZ的脈沖,而系統(tǒng)時(shí)鐘計(jì)時(shí)模塊需要1HZ的脈沖。分頻模塊主要為系統(tǒng)提供所需的時(shí)鐘計(jì)時(shí)脈沖。該模塊將1kHZ的脈沖信號(hào)進(jìn)行分頻,產(chǎn)生1S的方波,作為系統(tǒng)時(shí)鐘計(jì)時(shí)信號(hào)。其實(shí)體模塊如下:</p><p> 將END TIME改為5S</p><p> CLK采用系統(tǒng)的1KHZ的時(shí)鐘脈沖</p>&
29、lt;p><b> 仿真波形如下: </b></p><p> 可以看到能夠得到1s的時(shí)鐘脈沖</p><p> §3.2交通燈控制及計(jì)時(shí)模塊</p><p> 控制模塊根據(jù)外部輸入信號(hào)和計(jì)時(shí)模塊產(chǎn)生的輸出信號(hào),產(chǎn)生系統(tǒng)的狀態(tài)機(jī),控制其他部分協(xié)調(diào)工作。計(jì)時(shí)模塊用來(lái)設(shè)定主干道和支干道計(jì)時(shí)器的初值,并為掃描顯示譯碼模塊提供倒
30、計(jì)時(shí)時(shí)間。</p><p> 控制及計(jì)時(shí)模塊采用狀態(tài)機(jī)進(jìn)行設(shè)計(jì),可以定義出5種狀態(tài),分別為S0:主干道綠燈,支干道紅燈且沒(méi)有車(chē)輛行駛;S1:主干道綠燈,支干道紅燈或支干道有車(chē)輛駛?cè)?;S2:主干道黃燈,支干道紅燈;S3:主干道紅燈,支干道綠燈;S4:主干道紅燈,支干道黃燈。利用CASE語(yǔ)句定義狀態(tài)的轉(zhuǎn)換方式及時(shí)間的變換方式,達(dá)到主干道綠燈亮45秒,支干道綠燈亮25秒,黃燈亮5秒的設(shè)計(jì)要求。</p>
31、<p><b> 其實(shí)體模塊如下:</b></p><p> CAR為支干道車(chē)輛檢測(cè)開(kāi)關(guān)</p><p> 在支干道有車(chē)的情況下,模塊可以進(jìn)行減計(jì)時(shí)</p><p> CLK1S為1S的時(shí)鐘脈沖</p><p> TIME1H、TIME1L、TIME2H、TIME2L分別為主干道時(shí)鐘高位、主干道時(shí)鐘低
32、位、支干道時(shí)鐘高位、支干道時(shí)鐘低位</p><p> LED為L(zhǎng)ED燈發(fā)光情況,分別為主干道綠燈、主干道黃燈、主干道紅燈、支干道綠燈、主干道黃燈、主干道紅燈</p><p> Count的總的系統(tǒng)時(shí)間,用來(lái)改變系統(tǒng)的狀態(tài)</p><p><b> 仿真波形如下:</b></p><p><b> 通過(guò)仿
33、真可以看到:</b></p><p> 當(dāng)主干道綠燈,支干道紅燈時(shí),主干道倒計(jì)時(shí)高位置數(shù)0100,低位置數(shù)0101;支干道高位置數(shù)0101,低位置數(shù)0000;</p><p> 當(dāng)主干道黃燈,支干道紅燈時(shí),主干道黃燈倒計(jì)時(shí)置數(shù)0101;支干道繼續(xù)剛才的減計(jì)數(shù);</p><p> 當(dāng)主干道紅燈,支干道綠燈時(shí),主干道倒計(jì)時(shí)高位置數(shù)0011,低位置數(shù)00
34、00;支干道高位置數(shù)0010,低位置數(shù)0101;</p><p> 當(dāng)主干道紅燈,支干道黃燈時(shí),支干道黃燈倒計(jì)時(shí)置數(shù)0101;主干道繼續(xù)剛才的減計(jì)數(shù)。</p><p> 在S4狀態(tài)結(jié)束后,自動(dòng)跳回到S0狀態(tài),繼續(xù)判斷支干道是否有車(chē)行駛,若有車(chē)行駛,則跳轉(zhuǎn)到S1狀態(tài),給高、低位置數(shù),繼續(xù)進(jìn)行減計(jì)時(shí)。</p><p> 系統(tǒng)根據(jù)COUNT的變化自動(dòng)在各狀態(tài)下跳變,
35、當(dāng)count為45時(shí),跳變到S2狀態(tài);當(dāng)count為50時(shí),跳變到S3狀態(tài);當(dāng)count為75時(shí),跳變到S4狀態(tài);當(dāng)count為80時(shí),若支干道沒(méi)有車(chē)跳變到S0狀態(tài),有車(chē)則跳變到S1狀態(tài)。</p><p> §3.3掃描顯示譯碼模塊</p><p> 掃描顯示譯碼模塊可以根據(jù)控制信號(hào),驅(qū)動(dòng)交通信號(hào)燈以及倒計(jì)時(shí)數(shù)碼管的顯示,其中數(shù)碼管的顯示采用動(dòng)態(tài)掃描顯示。其實(shí)體模塊如下:&l
36、t;/p><p> CLK為1KHZ的系統(tǒng)時(shí)鐘脈沖</p><p> CLK1S為1S時(shí)鐘脈沖</p><p> CAR為支干道車(chē)輛檢測(cè)開(kāi)關(guān)</p><p> SEL為數(shù)碼管位碼掃描</p><p><b> SEG為數(shù)碼管段碼</b></p><p> TIME1
37、H、TIME1L、TIME2H、TIME2L為數(shù)碼管計(jì)時(shí)的時(shí)間,由控制及計(jì)時(shí)模塊為其賦值</p><p><b> 仿真波形如下:</b></p><p><b> 通過(guò)仿真可以看到:</b></p><p> 給CLK一個(gè)時(shí)鐘脈沖,數(shù)碼管的位碼隨CLK時(shí)鐘的變化而進(jìn)行掃描,由于CLK的頻率較高,人的眼睛會(huì)有短暫的視
38、覺(jué)停留,所以會(huì)看到4個(gè)數(shù)碼管都在顯示時(shí)間。</p><p> §3.4頂層文件的編寫(xiě)</p><p> 將以上各個(gè)單元模塊仿真成功后,再進(jìn)行頂層文件的編寫(xiě)。將各個(gè)單元模塊的變量賦值給頂層文件,從而將各個(gè)單元模塊連接起來(lái),統(tǒng)一調(diào)配。得到頂層文件的實(shí)體模塊:</p><p> CLK為1KHZ系統(tǒng)時(shí)鐘脈沖</p><p> CA
39、R為支干道車(chē)輛行駛情況,高電平為有車(chē)行駛,低電平為無(wú)車(chē)行駛</p><p> LED為交通燈發(fā)光情況</p><p> SEL為數(shù)碼管位碼掃描</p><p><b> SEG為數(shù)碼管段碼</b></p><p><b> 仿真波形如下:</b></p><p>
40、仿真后可以得到最終的結(jié)果:</p><p> 開(kāi)始時(shí),支干道沒(méi)有車(chē)輛行駛。主干道處于常通行狀態(tài),支干道處于禁止?fàn)顟B(tài);當(dāng)支干道有車(chē)來(lái)時(shí),主干道亮綠燈,經(jīng)行45秒倒計(jì)時(shí),支干道亮紅燈,經(jīng)行50秒倒計(jì)時(shí);</p><p> 主干道45秒倒計(jì)時(shí)結(jié)束后跳變到黃燈,進(jìn)行5秒倒計(jì)時(shí),支干道繼續(xù)亮紅燈,進(jìn)行倒計(jì)時(shí);</p><p> 主干道5秒倒計(jì)時(shí)結(jié)束后跳變到紅燈,經(jīng)行30
41、秒倒計(jì)時(shí),支干道跳變到綠燈,進(jìn)行25秒倒計(jì)時(shí);</p><p> 支干道25秒倒計(jì)時(shí)結(jié)束后跳變到黃燈,進(jìn)行5秒倒計(jì)時(shí),主干道繼續(xù)亮紅燈,進(jìn)行倒計(jì)時(shí);</p><p> 支干道5秒倒計(jì)時(shí)結(jié)束后,判斷支干道是否有車(chē),若有車(chē)跳變到S1狀態(tài),沒(méi)有車(chē)跳變到S0狀態(tài)</p><p> 硬件實(shí)驗(yàn)方案及實(shí)驗(yàn)結(jié)果</p><p> 將程序進(jìn)行編譯后,就
42、可以把管腳綁定后把程序下載到實(shí)驗(yàn)板上進(jìn)行調(diào)試了。</p><p> §4.1硬件實(shí)驗(yàn)方案</p><p><b> 管腳綁定如下所示</b></p><p><b> 注:</b></p><p> CLK綁定時(shí)鐘1KHZ</p><p><b>
43、 CAR綁定DK4</b></p><p> LED[0]綁定LED6;--支干道紅燈</p><p> LED[1]綁定LED7;--支干道黃燈</p><p> LED[2]綁定LED8;--支干道綠燈</p><p> LED[3]綁定LED1;--主干道紅燈</p><p> LED[4
44、]綁定LED2;--主干道黃燈</p><p> LED[5]綁定LED3;--主干道綠燈</p><p> SEL[0]綁定LI0;</p><p> SEL[1]綁定LI1;</p><p> SEL[2]綁定LI2。</p><p> SEG[0]綁定G8;</p><p>
45、SEG[1]綁定F8;</p><p> SEG[2]綁定E8;</p><p> SEG[3]綁定D8;</p><p> SEG[4]綁定C8;</p><p> SEG[5]綁定B8;</p><p> SEG[6]綁定A8;</p><p> 將管腳按上圖綁定后就可以下載到實(shí)
46、驗(yàn)板上進(jìn)行調(diào)試了</p><p><b> §4.2實(shí)驗(yàn)結(jié)果</b></p><p> 將程序下載到實(shí)驗(yàn)板后,CAR置于低電平后,可以看到LED燈的顯示情況為主干道亮綠燈,支干道亮紅燈,主干道數(shù)碼管顯示45秒,支干道數(shù)碼管顯示50秒。但支干道有車(chē)時(shí),把CAR置于高電平,可以看到主、支干道的數(shù)碼管開(kāi)始倒計(jì)時(shí);主干道倒計(jì)時(shí)結(jié)束后再進(jìn)行5秒倒計(jì)時(shí),并且交通燈變
47、為黃燈;當(dāng)主干道倒計(jì)時(shí)結(jié)束后,主干道數(shù)碼管顯示30,支干道數(shù)碼管顯示25,主干道變?yōu)榧t燈,支干道變?yōu)榫G燈,繼續(xù)進(jìn)行倒計(jì)時(shí);支干道倒計(jì)時(shí)結(jié)束后再經(jīng)行5秒倒計(jì)時(shí),交通燈變?yōu)辄S燈;支干道倒計(jì)時(shí)結(jié)束后再回到初始狀態(tài)。</p><p> 從實(shí)驗(yàn)板上可以看出硬件測(cè)試下的效果達(dá)到了設(shè)計(jì)的要求,能夠?qū)崿F(xiàn)交通信號(hào)燈控制器的基本功能。但是,由于實(shí)驗(yàn)板的系統(tǒng)時(shí)鐘不穩(wěn)定,導(dǎo)致數(shù)碼管的掃描有時(shí)會(huì)出現(xiàn)閃動(dòng)的現(xiàn)象,在更換了實(shí)驗(yàn)板后可以看出,
48、數(shù)碼管的掃描基本穩(wěn)定,在視覺(jué)上不會(huì)出現(xiàn)閃動(dòng)的情況?;蛘呖梢詫⑾到y(tǒng)的時(shí)鐘頻率改為2KHZ,更改分頻模塊后再進(jìn)行編譯下載,這樣可以加快數(shù)碼管掃描的速度,從而達(dá)到消除視覺(jué)上閃動(dòng)的現(xiàn)象。</p><p><b> 收獲和體會(huì)</b></p><p> EDA課程設(shè)計(jì)很快就結(jié)束了,雖然在之前的學(xué)習(xí)過(guò)程中還存在著沒(méi)有弄懂的問(wèn)題,但是通過(guò)這次設(shè)計(jì),進(jìn)一步加深了對(duì)EDA的了解,讓
49、我對(duì)它有了更加濃厚的興趣。</p><p> 在拿到題目后,首先進(jìn)行了單元模塊的設(shè)計(jì),將每一個(gè)單元模塊設(shè)計(jì)完成后再經(jīng)行仿真,仿真成功后就可以進(jìn)行頂層文件的編寫(xiě)了,在頂層文件的編寫(xiě)過(guò)程中遇到了一些問(wèn)題,特別是各模塊之間的連接,以及信號(hào)的定義,總是有錯(cuò)誤。有的時(shí)候信號(hào)的定義容易出現(xiàn)混淆,在反復(fù)的修改過(guò)后,頂層文件終于能夠編譯成功了。</p><p> 在波形仿真的過(guò)程中,同樣遇到了困難,有
50、的時(shí)候,由于END TIME的時(shí)間修改的太大,會(huì)出現(xiàn)仿真時(shí)間過(guò)長(zhǎng)的問(wèn)題,這個(gè)時(shí)候應(yīng)該要把END TIME的時(shí)間相應(yīng)的改小,或是修改系統(tǒng)時(shí)鐘的頻率。</p><p> 在設(shè)計(jì)的過(guò)程中還應(yīng)該多聯(lián)系下實(shí)際情況,要了解實(shí)際情況下交通信號(hào)燈的工作情況,才能更好的完成此次的課程設(shè)計(jì)。在今后的工作和學(xué)習(xí)中,我們不能僅僅把目光停留在課本上,要多理論聯(lián)系實(shí)際。有的時(shí)候,理論上是正確的東西放到現(xiàn)實(shí)中去,可能由于種種因素的制約,并不
51、能達(dá)到實(shí)際的效果,還需要我們進(jìn)行相應(yīng)的修改才能完成要求。這次的課程設(shè)計(jì)使我鞏固了以前學(xué)習(xí)到的知識(shí),還使我掌握了以前沒(méi)有掌握的知識(shí),同時(shí)鍛煉了自己的能力。</p><p><b> 交通燈總代碼:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p&g
52、t;<p> use work.all;</p><p> entity head is</p><p> port(color_A:buffer std_logic_vector(2 downto 0);</p><p> color_B:buffer std_logic_vector(2 downto 0);</p><
53、p> Aode_out_high,Acode_out_low:out std_logic_vector(6 downto 0);</p><p> Bcode_out_high,Bcode_out_low:out std_logic_vector(6 downto 0);</p><p> res,clk,key:in std_logic);</p><p&
54、gt;<b> end head;</b></p><p> architecture main_str of head is</p><p> signal put_a,put_b,flag_a,flag_b,load_a,load_b:std_logic;</p><p> signal data_a,data_b,value_co
55、u_a,value_cou_b:std_logic_vector(7 downto 0);</p><p> signal Acode_in_high,Acode_in_low,Bcode_in_high,Bcode_in_low:std_logic_vector(3 downto 0);</p><p> signal data_bcd_a,data_bcd_b:std_logic_
56、vector(7 downto 0);</p><p> component put_numb is --定義置數(shù)器</p><p> port(res_s,put_a,put_b,clk_s:in std_logic;</p><p> out_sto_a:buffer std_logic_vector(7 downto 0);</p>
57、<p> out_sto_b:buffer std_logic_vector(7 downto 0));</p><p> end component;</p><p> component counter is --定義計(jì)數(shù)器</p><p> port(res_c,clk_h,com_load,hold:in std_logic;
58、</p><p> in_data:in std_logic_vector(7 downto 0);</p><p> vec_out:buffer std_logic_vector(7 downto 0);</p><p> flag:out std_logic);</p><p> end component;</p>
59、<p> component mux_bcd is --定義BCD碼轉(zhuǎn)換器</p><p> port(data_1:in std_logic_vector(7 downto 0);</p><p> res_m,hold_s,clk_m:in std_logic;</p><p> data_bcd:out std_logic_
60、vector(7 downto 0));</p><p> end component;</p><p> component main_col is --定義主控制器</p><p> port(hold_1,clk_r,flag_froma,flag_fromb,res_r:in std_logic;</p><p>
61、 color_vec_A:buffer std_logic_vector(2 downto 0);</p><p> color_vec_B:buffer std_logic_vector(2 downto 0);</p><p> puta,putb,loada,loadb:buffer std_logic);</p><p> end component;
62、</p><p> component code_sev is --定義七段字型譯碼器</p><p> port(code_in:in std_logic_vector(3 downto 0);</p><p> code_out:out std_logic_vector(6 downto 0));</p><p> end
63、component;</p><p><b> begin</b></p><p> u1:put_numb port map(res,put_a,put_b,clk,data_a,data_b);</p><p> u2:counter port map(res,clk,load_a,key,data_a,value_cou_a,fla
64、g_a);</p><p> u3:counter port map(res,clk,load_b,key,data_b,value_cou_b,flag_b);</p><p> u4:mux_bcd port map(value_cou_a,res,key,clk,data_bcd_a);</p><p> u5:mux_bcd port map(valu
65、e_cou_b,res,key,clk,data_bcd_b);</p><p> u6:main_col port map(key,clk,flag_a,flag_b,res,color_A,color_B,put_a,put_b,load_a,load_b);</p><p> u7:code_sev port map(Acode_in_high,Acode_out_high);&
66、lt;/p><p> u8:code_sev port map(Acode_in_low,Acode_out_low);</p><p> u9:code_sev port map(Bcode_in_high,Bcode_out_high);</p><p> u10:code_sev port map(Bcode_in_low,Bcode_out_low);&l
67、t;/p><p> Acode_in_high<=data_bcd_a(7 downto 4);</p><p> Acode_in_low<=data_bcd_a(3 downto 0);</p><p> Bcode_in_high<=data_bcd_b(7 downto 4);</p><p> Bcode_in
68、_high<=data_bcd_b(3 downto 0);</p><p> end main_str;</p><p> library ieee; --置數(shù)器</p><p> use ieee.std_logic_1164.all;</p><p> entity put_numb is</p>&
69、lt;p> port(res_s,put_a,put_b,clk_s:in std_logic;</p><p> out_sto_a:buffer std_logic_vector(7 downto 0);</p><p> out_sto_b:buffer std_logic_vector(7 downto 0));</p><p> end pu
70、t_numb;</p><p> architecture rtl_sto of put_numb is</p><p><b> begin</b></p><p> process(res_s,put_a,clk_s)</p><p> variable in_var:std_logic_vector(7 d
71、ownto 0);</p><p><b> begin </b></p><p> in_var:=out_sto_a;</p><p> if(res_s='0')then</p><p> out_sto_a<="00110110";</p>&l
72、t;p> elsif(clk_s'event and clk_s='0')then</p><p> if(put_a='0')then</p><p> case in_var is</p><p> when"00110110"=>out_sto_a<="001100
73、01"; --55秒后裝入50秒</p><p> when"00110001"=>out_sto_a<="00000100"; --50秒后裝入05秒</p><p> when"00000100"=>out_sto_a<="00110110"; --0
74、5秒后再次裝入55秒</p><p> when others =>out_sto_a<="XXXXXXXX";</p><p><b> end case;</b></p><p><b> end if;</b></p><p><b>
75、end if;</b></p><p> end process;</p><p> process(res_s,put_b,clk_s) --B組計(jì)時(shí)時(shí)間狀態(tài)機(jī)</p><p> variable in_var:std_logic_vector(7 downto 0);</p><p><b>
76、begin</b></p><p> in_var:=out_sto_b;</p><p> if(res_s='0')then</p><p> out_sto_b<="00110001"; --復(fù)位時(shí)A組輸出31H(49D),即50秒</p><p> elsi
77、f(clk_s'event and clk_s='0')then</p><p> if(put_b='0')then</p><p> case in_var is</p><p> when"00110001"=>out_sto_b<="00110001";
78、--50秒后裝入05秒</p><p> when"00110001"=>out_sto_b<="00110110"; --05秒后裝入55秒</p><p> when"00110110"=>out_sto_b<="00110001"; --55秒后再次裝入50秒<
79、;/p><p> when others =>out_sto_b<="XXXXXXXX";</p><p><b> end case;</b></p><p><b> end if;</b></p><p><b> end if;</b&
80、gt;</p><p> end process;</p><p> end rtl_sto;</p><p> library ieee; --計(jì)數(shù)器</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_ari
81、th.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity counter is</p><p> port(res_c,clk_h,com_load,hold:in std_logic;</p><p> in_data:in std_logic_vector(
82、7 downto 0);</p><p> vec_out:buffer std_logic_vector(7 downto 0);</p><p> flag:out std_logic);</p><p> end counter;</p><p> architecture rtl of counter is</p>
83、<p> signal clk_c:std_logic;</p><p><b> begin</b></p><p> clk_c<=hold and clk_h;</p><p> process(clk_c)</p><p><b> begin</b></
84、p><p> if(clk_c'event and clk_c='1')then</p><p> flag<=(not vec_out(0))or vec_out(1) or vec_out(2) or vec_out(3) or vec_out(4)</p><p> or vec_out(5) or vec_out(6) or
85、vec_out(7);</p><p> --計(jì)時(shí)時(shí)間到信號(hào)的獲取,在0秒輸出寬1秒的負(fù)脈沖</p><p><b> end if;</b></p><p> end process;</p><p> process(res_c,clk_c)</p><p> variable c
86、ount:integer range 0 to 255;</p><p> begin --復(fù)位時(shí)計(jì)數(shù)器重新加載端口計(jì)時(shí)初始值</p><p> if(res_c='0')then</p><p> count:=conv_integer(in_data);</p><p> elsi
87、f(clk_c'event and clk_c='1')then</p><p> if(com_load='0')then --load命令讓計(jì)數(shù)器加載端口計(jì)時(shí)初值</p><p> count:=conv_integer(in_data);</p><p><b> else</b>
88、</p><p> count:=count-1; --減1計(jì)數(shù)</p><p><b> end if;</b></p><p><b> end if;</b></p><p> vec_out<=conv_std_logic_vector(count,8);
89、 --將整型值轉(zhuǎn)換為8位寬的矢量信號(hào)</p><p> end process;</p><p><b> end rtl;</b></p><p> library ieee; --BCD碼轉(zhuǎn)換器</p><p> use ieee.std_logic_1164.all;</p><
90、p> use ieee.std_logic_arith.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity mux_bcd is</p><p> port(data_1:in std_logic_vector(7 downto 0);</p><p>
91、 res_m,hold_s,clk_m:in std_logic;</p><p> data_bcd:out std_logic_vector(7 downto 0));</p><p> end mux_bcd;</p><p> architecture mu of mux_bcd is</p><p> signal data
92、_in:std_logic_vector(7 downto 0);</p><p> signal data_2:std_logic_vector(7 downto 0);</p><p> signal sel:std_logic;</p><p><b> begin</b></p><p> data_2&
93、lt;="11111111" ; --此碼用作關(guān)斷數(shù)碼管</p><p> process(sel,res_m,data_1,data_2)</p><p><b> begin</b></p><p> if(res_m='0')then</p><p> da
94、ta_in<="10011001"; --復(fù)位時(shí)將能顯示的最大值給數(shù)碼管,99s</p><p> elsif(sel='1')then</p><p> data_in<=data_1;</p><p><b> else</b></p><p&
95、gt; data_in<=data_2;</p><p><b> end if;</b></p><p> end process;</p><p> process(data_in) --對(duì)數(shù)據(jù)進(jìn)行BCD調(diào)整</p><p> variable temp:integer range 0 to
96、 255;</p><p><b> begin</b></p><p> temp:=conv_integer(data_in); </p><p> case temp is</p><p> when 0 to 9 =>temp:=temp;</p><p> when 1
97、0 to 19=>temp:=temp+6;</p><p> when 20 to 29=>temp:=temp+12;</p><p> when 30 to 39=>temp:=temp+18;</p><p> when 40 to 49=>temp:=temp+24;</p><p> when 50
98、 to 59=>temp:=temp+30;</p><p> when 60 to 69=>temp:=temp+36;</p><p> when 70 to 79=>temp:=temp+42;</p><p> when 80 to 89=>temp:=temp+48;</p><p> when 90
99、 to 99=>temp:=temp+54;</p><p> when others =>temp:=255;</p><p><b> end case;</b></p><p> data_bcd<=conv_std_logic_vector(temp,8); --將整型值轉(zhuǎn)換為8位寬的矢量信號(hào)</p&g
100、t;<p> end process;</p><p> process(hold_s,clk_m) --對(duì)保持信號(hào)進(jìn)行處理</p><p> variable temp:std_logic;</p><p><b> begin</b></p><p> if(hold_s='0
101、39;)then</p><p> temp:=clk_m;</p><p><b> else</b></p><p> temp:='1';</p><p><b> end if;</b></p><p> sel<=temp;</
102、p><p> end process;</p><p><b> end mu;</b></p><p> library ieee; --主控制器</p><p> use ieee.std_logic_1164.all;</p><p> entity main_col is&l
103、t;/p><p> port(hold_1,clk_r,flag_froma,flag_fromb,res_r:in std_logic;</p><p> color_vec_A:buffer std_logic_vector(2 downto 0);</p><p> color_vec_B:buffer std_logic_vector(2 downto 0
104、);</p><p> puta,putb,loada,loadb:buffer std_logic);</p><p> end main_col;</p><p> architecture rtl of main_col is</p><p> signal color_vec:std_logic_vector(5 downto
105、 0); --兩組登顏色信號(hào)矢量并為一組(6位)</p><p> signal color_vec_out:std_logic_vector(5 downto 0); --高3位為A組,低3位為B組</p><p><b> begin</b></p><p> puta<=flag_froma; --來(lái)自A組
106、計(jì)數(shù)器0秒信號(hào)送A組置數(shù)器</p><p> putb<=flag_fromb; --來(lái)自B組計(jì)數(shù)器0秒信號(hào)送B組置數(shù)器</p><p> color_vec_A<=color_vec_out(5 downto 3);</p><p> color_vec_B<=color_vec_out(2 downto 0);<
107、/p><p> process(clk_r)</p><p><b> begin</b></p><p> if(clk_r'event and clk_r='0')then</p><p> loada<=flag_froma; --來(lái)自計(jì)數(shù)器的0秒信號(hào)延遲半個(gè)節(jié)拍后再送回計(jì)數(shù)
108、器</p><p> loadb<=flag_fromb;--加載已在半個(gè)節(jié)前置數(shù)器放置在其端口上的初始數(shù)據(jù)</p><p> --確保數(shù)據(jù)準(zhǔn)確無(wú)誤</p><p><b> end if;</b></p><p> end process;</p><p> process(cl
109、k_r,res_r,loada,loadb)</p><p> variable temp:std_logic;</p><p> variable temp_vec:std_logic_vector(5 downto 0);</p><p><b> begin</b></p><p> temp_vec:=c
110、olor_vec;</p><p> if(res_r='0')then</p><p> color_vec<="100001";</p><p> elsif(clk_r'event and clk_r='1')then --復(fù)位時(shí)A組亮紅燈,B組亮綠燈</p>
111、<p> if((loada and loadb)='0')then</p><p> case temp_vec is</p><p> when "100001"=>color_vec<="100010"; --A紅B綠后下一狀態(tài)為A紅B黃</p><p> when &q
112、uot;100010"=>color_vec<="001100"; --A紅B黃后下一狀態(tài)為A綠B紅</p><p> when "001100"=>color_vec<="010100"; --A綠B紅后下一狀態(tài)為A黃B紅</p><p> when "010100&quo
113、t;=>color_vec<="100001"; --A黃B紅后下一狀態(tài)為A紅B黃</p><p> when others => color_vec<="XXXXXX";</p><p><b> end case;</b></p><p><b> end
114、if;</b></p><p><b> end if;</b></p><p> end process;</p><p> process(hold_1,clk_r) --對(duì)特殊狀態(tài)時(shí)紅燈全亮的處理</p><p> variable temp:std_logic_vector(5
115、 downto 0);</p><p><b> begin</b></p><p> if(hold_1='1')then</p><p> temp:=color_vec;</p><p><b> else</b></p><p> temp:
116、="100100";</p><p><b> end if;</b></p><p> color_vec_out<=temp;</p><p> end process;</p><p><b> end rtl;</b></p><p>
117、; library ieee; --七段字型譯碼器</p><p> use ieee.std_logic_1164.all;</p><p> entity code_sev is</p><p> port(code_in:in std_logic_vector(3 downto 0);</p><p>
118、 code_out:out std_logic_vector(6 downto 0));</p><p> end code_sev;</p><p> architecture rtl of code_sev is</p><p><b> begin</b></p><p> process(code_in)
119、</p><p><b> begin</b></p><p> case code_in is</p><p> when "0000"=>code_out<="1111110";</p><p> when "0001"=>code
120、_out<="0110000";</p><p> when "0011"=>code_out<="1101101";</p><p> when "0100"=>code_out<="1111001";</p><p> when
121、 "0101"=>code_out<="0110011";</p><p> when "0101"=>code_out<="1011011";</p><p> when "0110"=>code_out<="0011111";&
122、lt;/p><p> when "0111"=>code_out<="1110000";</p><p> when "1000"=>code_out<="1111111";</p><p> when "1001"=>code_out
123、<="1110011";</p><p> when others=>code_out<="0000000"; --若不是以上10種情況則將數(shù)碼管關(guān)斷</p><p><b> end case;</b></p><p> end process;</p><
124、;p><b> end rtl;</b></p><p><b> 參考文獻(xiàn):</b></p><p> 潘松著 EDA技術(shù)實(shí)用教程(第二版) 北京科學(xué)出版社.2005</p><p> 康華光主編 電子技術(shù)實(shí)驗(yàn)基礎(chǔ) 模擬部分 北京高教出版社.2006</p><p> 閆石主編 數(shù)
125、字電子技術(shù)基礎(chǔ) 北京高教出版社.2003</p><p> 馮濤,王程.可編程邏輯器件開(kāi)發(fā)技術(shù)—MAX plus II入門(mén)與提高[M].北京:人民郵電出版社,2OO2]</p><p> 房德君.智能交通燈控制裝置[J].山東工程學(xué)院學(xué)報(bào),1998,12(4):27~30]</p><p> 李國(guó)麗. 用PLD芯片和AHDL語(yǔ)言進(jìn)行交通燈控制器設(shè)計(jì)[J].合肥
126、工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2002,25(4):545~548</p><p> 張文潔,葉紫.交通燈控制器設(shè)計(jì):FPGA/CPLD實(shí)現(xiàn)小型數(shù)字系統(tǒng)的應(yīng)用分析[J]。電子技術(shù)應(yīng)用,2001,27,27(11):52~54</p><p> 余華,岳秋琴 電子設(shè)計(jì)自動(dòng)化技術(shù)的發(fā)展及在現(xiàn)代數(shù)字電子系統(tǒng)設(shè)計(jì)中的應(yīng)用;現(xiàn)代電子技術(shù);2001年05期</p><p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda交通燈課程設(shè)計(jì)論文
- eda交通燈課程設(shè)計(jì)
- eda交通燈課程設(shè)計(jì)
- eda交通燈課程設(shè)計(jì)報(bào)告(eda)
- eda課程設(shè)計(jì)--交通燈控制
- eda交通燈課程設(shè)計(jì)---交通燈控制系統(tǒng)
- eda交通燈課程設(shè)計(jì)---交通燈控制系統(tǒng)的設(shè)計(jì)
- eda交通燈課程設(shè)計(jì)--cpld實(shí)現(xiàn)交通燈控制系統(tǒng)
- 基于sopc交通燈的eda課程設(shè)計(jì)
- eda課程設(shè)計(jì)--交通燈控制器
- eda課程設(shè)計(jì)(交通燈控制器)
- eda課程設(shè)計(jì)---交通燈控制器
- eda課程設(shè)計(jì)交通燈帶左拐
- eda技術(shù)及應(yīng)用課程設(shè)計(jì)---交通燈
- eda課程設(shè)計(jì)交通燈控制器
- eda課程設(shè)計(jì)交通燈控制器
- 交通燈課程設(shè)計(jì)論文
- eda課程設(shè)計(jì)--交通燈控制器設(shè)計(jì)
- eda課程設(shè)計(jì)--交通燈控制系統(tǒng)設(shè)計(jì)
- eda課程設(shè)計(jì)報(bào)告-- 交通燈控制器
評(píng)論
0/150
提交評(píng)論