版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 嵌入式課程設(shè)計報告</b></p><p> 設(shè)計題目:交通信號燈的設(shè)計</p><p><b> 指導(dǎo)老師: </b></p><p> 姓名:*** 學(xué)號:***</p><p> 目 錄</p><p> 1 課程
2、設(shè)計任務(wù)、內(nèi)容與要求 …………………………………3頁</p><p> 1.1 設(shè)計任務(wù)…………………………………………………3頁</p><p> 1.2 設(shè)計內(nèi)容…………………………………………………3頁</p><p> 1.3 具體要求…………………………………………………3頁</p><p> 2 系統(tǒng)設(shè)計方案 ………………
3、…………………………………4頁</p><p> 2.1 設(shè)計思路…………………………………………………4頁</p><p> 2.2 系統(tǒng)原理…………………………………………………4頁</p><p> 3 功能模塊及仿真………………………………………………5頁</p><p> 3.1分頻模塊…………………………………………………
4、5頁</p><p> 3.2 交通信號控制模塊………………………………………5頁</p><p> 3.3 顯示控制模塊……………………………………………8頁</p><p> 4 總體設(shè)計電路圖 ………………………………………………13頁</p><p> 5硬件驗證………………………………………………………14頁</p&
5、gt;<p> 6總結(jié) …………………………………………………………14頁</p><p> 7 參考書目 ……………………………………………………15頁</p><p><b> 一、任務(wù)與要求</b></p><p> 基于嵌入式技術(shù)利用VHDL 等硬件描述交通信號燈的系統(tǒng)組成。</p><p&
6、gt;<b> ?。?)基本要求:</b></p><p> a. 設(shè)計一個南北方向為主干道,東西方向為支干道的;</p><p> b. 選擇一個標(biāo)準(zhǔn)時鐘發(fā)生電路,為電路提供一個標(biāo)準(zhǔn)1HZ 信號;</p><p> c.(1)交通燈從綠變紅時,有5 秒黃燈亮的間隔時間;</p><p> ?。?)交通燈從紅變綠時
7、,有6 秒間隔時間;</p><p> ?。?)主干道上的綠燈時間為60 秒,支干道的綠燈時間為35 秒;</p><p> d.在DE2 開發(fā)板上演示其狀態(tài)變化過程。</p><p><b> ?。?)發(fā)揮部分:</b></p><p> a.在Signal Tap 中顯示指示燈變化的輸出結(jié)果仿真波形圖。</
8、p><p> b. 在任意時間顯示每個狀態(tài)到該狀態(tài)結(jié)束所需的時間。</p><p><b> 交通燈控制系統(tǒng)框圖</b></p><p><b> 二、設(shè)計方案</b></p><p> 用VHDL編寫程序?qū)崿F(xiàn)交通信號控制器的端口控制信號。其中, clk為標(biāo)準(zhǔn)的1HZ的時鐘信號;R為復(fù)位信號;S
9、PC為緊急情況信號,負(fù)責(zé)緊急情況的處理,當(dāng)緊急情況發(fā)生時,南北主干道和東西支干道均顯示紅燈。</p><p> 該程序定義了4個狀態(tài)S0,S1,S2,S3。當(dāng)狀態(tài)為S0時,南北方向亮綠燈,東西方向亮紅燈60s;當(dāng)為狀態(tài)為S1時,南北方向亮黃燈,東西方向亮紅5s ;當(dāng)狀態(tài)為S2時,南北方向亮紅燈,東西方向綠燈35s;當(dāng)狀態(tài)為S3時,南北方向亮滅燈,東西方向滅燈6s;程序還設(shè)計了一個緊急信號情況,當(dāng)遭遇緊急情況時,
10、主干道和支干道都亮紅燈。</p><p> 狀態(tài)一:主道綠燈次道綠燈持續(xù)時間小于65s時,狀態(tài)保持不變,若持續(xù)時間等于65s時,轉(zhuǎn)換到下一狀態(tài)黃燈。</p><p> 狀態(tài)二:主道黃燈持續(xù)時間小于5s時,狀態(tài)保持不變,若持續(xù)時間等于5s時,轉(zhuǎn)換到下一狀態(tài)紅燈。</p><p> 狀態(tài)三:主道黃燈次道紅燈持續(xù)時間小于35s時,狀態(tài)保持不變,若持續(xù)時間等于35s時
11、,轉(zhuǎn)換到下一狀態(tài)滅燈。</p><p> 狀態(tài)四:主道滅燈持續(xù)時間小于46s時,狀態(tài)保持不變,若持續(xù)時間等于6s時,轉(zhuǎn)換到下一狀態(tài)綠燈。</p><p> 狀態(tài)五:緊急情況都亮紅燈。 </p><p><b> 三、功能模塊</b></p><p><b> 模塊一 :分頻器</b><
12、/p><p> 分頻器實現(xiàn)的是將高頻時鐘信號轉(zhuǎn)換成低頻時鐘信號,clk信號經(jīng)分頻器將50MHz經(jīng)過PLL分頻為25MHz在經(jīng)過計數(shù)器分為1HZ. </p><p> 分頻器模塊(div)</p><p><b> VHDL源程序:</b></p><p> library ieee;</p><p
13、> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity div is</p><p> port(clk3:IN std_logic;</p><p> clkout1:OUT std_logic);<
14、;/p><p><b> end div;</b></p><p> architecture one of div is</p><p><b> begin</b></p><p> process(clk3)</p><p> variable cnt:integ
15、er range 0 to 1250;</p><p> variable tmp:std_logic;</p><p><b> begin</b></p><p> if(clk3'event and clk3='1')then</p><p> if cnt>=1249 the
16、n</p><p><b> cnt:=0;</b></p><p> tmp:=not tmp;</p><p> else cnt:=cnt+1;</p><p><b> end if;</b></p><p><b> end if;</b&
17、gt;</p><p> clkout1<=tmp;</p><p> end process;</p><p><b> end one;</b></p><p><b> 時序仿真圖:</b></p><p><b> 模塊二: 控制器</
18、b></p><p> 控制器的作用是根據(jù)計數(shù)器計數(shù)的值確定狀態(tài)轉(zhuǎn)換。本控制器的設(shè)計方法是利用時鐘沿的上升沿讀取前級計數(shù)器的計數(shù)值,然后做出反應(yīng)。主要控制紅、綠、黃燈的亮、滅。</p><p><b> VHDL源程序:</b></p><p> LIBRARY IEEE;</p><p> USE IEE
19、E.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH;</p><p> ENTITY jiaotongd1 IS</p><p> PORT (CLK,R,SPC: IN STD_LOGIC;
20、 --時鐘、復(fù)位、特殊情況</p><p> LIGHT: OUT STD_LOGIC_VECTOR(5 DOWNTO 0); --light:G1,R1,Y1,G2,R2,Y2;</p><p> Q1,Q2 : OUT INTEGER RANGE 0 TO 65);</p><p> END jiaotongd1 ;</p>
21、<p> ARCHITECTURE behav OF jiaotongd1 IS</p><p> TYPE STATES IS (S0,S1,S2,S3); --定義枚舉</p><p> SIGNAL STATE : STATES ;</p><p> SIGNAL T1,T2: INTEGER RANGE 0 TO 65;</p
22、><p><b> BEGIN </b></p><p> P1: PROCESS (CLK,STATE)</p><p><b> BEGIN</b></p><p> IF R='1'THEN STATE<=S0;T1<=60;T2<=65; --復(fù)位
23、</p><p> ELSIF SPC='1' THEN LIGHT<="010010"; --特殊情況亮紅燈</p><p> ELSIF CLK'EVENT AND CLK='1' THEN </p><p> CASE STATE IS</p>
24、;<p> --states為s0時,南北方向亮綠燈,東西方向亮紅燈,60s</p><p> WHEN S0=> LIGHT<="100010"; </p><p> T1<=T1-1;T2<=T2-1; </p><p> Q1<=T1;Q2<=T2;</p>&l
25、t;p> IF T1=0 THEN</p><p> STATE<=S1;T1<=4;T2<=4;</p><p><b> END IF;</b></p><p> --states為s1時,南北方向亮黃燈,東西方向亮紅,5s </p><p> WHEN S1=> LIGHT&
26、lt;="001010"; </p><p> T1<=T1-1;T2<=T2-1; </p><p> Q1<=T1;Q2<=T2;</p><p> IF T1=0 THEN</p><p> STATE<=S2;T1<=35;T2<=35;</p>&
27、lt;p><b> END IF; </b></p><p> --states為s2時,南北方向亮紅燈,東西方向綠燈,35s </p><p> WHEN S2=> LIGHT<="010100"; </p><p> T1<=T1-1;T2<=T2
28、-1; </p><p> Q1<=T1;Q2<=T2;</p><p> IF T2=0 THEN</p><p> STATE<=S3;T1<=6;T2<=6;</p><p> END IF; </p><p> --南北方向同時滅燈6s
29、 </p><p> WHEN S3=> LIGHT<="000000"; </p><p> T1<=T1-1;T2<=T2-1; </p><p> Q1<=T1;Q2<=T2;</p><p> IF T1=0 THEN</p><
30、;p> STATE<=S0;T1<=60;T2<=65;</p><p><b> END IF;</b></p><p> WHEN OTHERS=>STATE<=S0;T1<=60;T2<=65;--主干道</p><p><b> END CASE;</b>&l
31、t;/p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END behav;</p><p><b> 時序仿真圖:</b></p><p> 模塊三: 顯示控制電路</p><p>
32、 譯碼首先是將二進(jìn)制無符號數(shù)轉(zhuǎn)化為BCD碼,在把BCD碼經(jīng)過譯碼電路轉(zhuǎn)換數(shù)碼管顯示:</p><p><b> VHDL源程序:</b></p><p><b> 二進(jìn)制轉(zhuǎn)化BCD:</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC
33、_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.all;</p><p> ENTITY yima2 IS</p><p> PORT (datain: IN STD_LOGIC_VECTOR(6 DOWNTO
34、 0); --時鐘、復(fù)位、特殊情況</p><p> --light:G1,R1,Y1,G2,R2,Y2;</p><p> daout: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p> END yima2 ;</p><p> ARCHITECTURE behav OF yima2 I
35、S</p><p><b> begin</b></p><p> PROCESS(datain)</p><p><b> BEGIN</b></p><p> case datain is</p><p> when "0000000"=&g
36、t;daout<="00000000";</p><p> when "0000001"=>daout<="00000001";</p><p> when "0000010"=>daout<="00000010";</p><p>
37、 when "0000011"=>daout<="00000011";</p><p> when "0000100"=>daout<="00000100";</p><p> when "0000101"=>daout<="0000010
38、1";</p><p> when "0000110"=>daout<="00000110";</p><p> when "0000111"=>daout<="00000111";</p><p> when "0001000"
39、;=>daout<="00001000";</p><p> when "0001001"=>daout<="00001001";--9</p><p> when "0001010"=>daout<="00010000";</p>&l
40、t;p> when "0001011"=>daout<="00010001";</p><p> when "0001100"=>daout<="00010010";</p><p> when "0001101"=>daout<="
41、00010011";</p><p> when "0001110"=>daout<="00010100";</p><p> when "0001111"=>daout<="00010101";</p><p> when "00100
42、00"=>daout<="00010110";</p><p> when "0010001"=>daout<="00010111";</p><p> when "0010010"=>daout<="00011000";</p>
43、<p> when "0010011"=>daout<="00011001";--19</p><p> when "0010100"=>daout<="00100000";</p><p> when "0010101"=>daout<
44、;="00100001";</p><p> when "0010110"=>daout<="00100010";</p><p> when "0010111"=>daout<="00100011";</p><p> when &qu
45、ot;0011000"=>daout<="00100100";</p><p> when "0011001"=>daout<="00100101";</p><p> when "0011010"=>daout<="00100110";&l
46、t;/p><p> when "0011011"=>daout<="00100111";</p><p> when "0011100"=>daout<="00101000";</p><p> when "0011101"=>daou
47、t<="00101001";--29</p><p> when "0011110"=>daout<="00110000";--30</p><p> when "0011111"=>daout<="00110001";</p><p&g
48、t; when "0100000"=>daout<="00110010";</p><p> when "0100001"=>daout<="00110011";</p><p> when "0100010"=>daout<="00110
49、100";</p><p> when "0100011"=>daout<="00110101";</p><p> when "0100100"=>daout<="00110110";</p><p> when "0100101&qu
50、ot;=>daout<="00110111";</p><p> when "0100110"=>daout<="00111000";</p><p> when "0100111"=>daout<="00111001";--39</p>
51、<p> when "0101000"=>daout<="01000000";</p><p> when "0101001"=>daout<="01000001";</p><p> when "0101010"=>daout<=&qu
52、ot;01000010";</p><p> when "0101011"=>daout<="01000011";</p><p> when "0101100"=>daout<="01000100";</p><p> when "01
53、01101"=>daout<="01000101";</p><p> when "0101110"=>daout<="01000110";</p><p> when "0101111"=>daout<="01000111";</p&
54、gt;<p> when "0110000"=>daout<="01001000";</p><p> when "0110001"=>daout<="01001001";--49</p><p> when "0110010"=>daout
55、<="01010000";</p><p> when "0110011"=>daout<="01010001";</p><p> when "0110100"=>daout<="01010010";</p><p> when
56、"0110101"=>daout<="01010011";</p><p> when "0110110"=>daout<="01010100";</p><p> when "0110111"=>daout<="01010101"
57、;</p><p> when "0111000"=>daout<="01010110";</p><p> when "0111001"=>daout<="01010111";</p><p> when "0111010"=>d
58、aout<="01011000";</p><p> when "0111011"=>daout<="01011001";--59</p><p> when "0111100"=>daout<="01100000";--60</p><
59、p> when "0111101"=>daout<="01100001";</p><p> when "0111110"=>daout<="01100010";</p><p> when "0111111"=>daout<="01
60、100011";</p><p> when "1000000"=>daout<="01100100";</p><p> when "1000001"=>daout<="01100101";--65</p><p> when others=&g
61、t;daout<="11111111";</p><p><b> END CASE;</b></p><p> END PROCESS;</p><p> END behav;</p><p><b> BCD譯碼顯示:</b></p><p&
62、gt; LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.all;</p><p> ENTITY yima IS</p&
63、gt;<p> PORT (datain: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --時鐘、復(fù)位、特殊情況</p><p> --datain2: IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> daout1: OUT STD_LOGIC_VECTOR( 6 DOWNTO 0); --lig
64、ht:G1,R1,Y1,G2,R2,Y2;</p><p> daout2: OUT STD_LOGIC_VECTOR( 6 DOWNTO 0));</p><p> END yima ;</p><p> ARCHITECTURE behav OF yima IS</p><p><b> begin</b>&
65、lt;/p><p> PROCESS(datain)</p><p><b> BEGIN</b></p><p> case datain(7 downto 4) is</p><p> when "0000"=>daout1<="1000000";</p&
66、gt;<p> when "0001"=>daout1<="1111001";</p><p> when "0010"=>daout1<="0100100";</p><p> when "0011"=>daout1<="0
67、110000";</p><p> when "0100"=>daout1<="0011001";</p><p> when "0101"=>daout1<="0010010";</p><p> when "0110"=&g
68、t;daout1<="0000010";</p><p> when "0111"=>daout1<="1111000";</p><p> when "1000"=>daout1<="0000000";</p><p> when
69、 "1001"=>daout1<="0010000";</p><p> when others=>daout1<="0000000";</p><p><b> END CASE;</b></p><p> case datain(3 downto 0)
70、 is</p><p> when "0000"=>daout2<="1000000";</p><p> when "0001"=>daout2<="1111001";</p><p> when "0010"=>daout2&l
71、t;="0100100";</p><p> when "0011"=>daout2<="0110000";</p><p> when "0100"=>daout2<="0011001";</p><p> when "010
72、1"=>daout2<="0010010";</p><p> when "0110"=>daout2<="0000010";</p><p> when "0111"=>daout2<="1111000";</p><p
73、> when "1000"=>daout2<="0000000";</p><p> when "1001"=>daout2<="0010000";</p><p> when others=>daout2<="0000000";</p&
74、gt;<p><b> END CASE;</b></p><p> END PROCESS;</p><p> END behav;</p><p><b> 四、總體設(shè)計電路圖</b></p><p> 交通燈控制系統(tǒng)總體電路圖</p><p>&
75、lt;b> 部分管腳分配圖</b></p><p><b> 五、硬件驗證:</b></p><p> 輸入CLK接50MHZ的晶振,輸出G1、Y1、R1、G2、Y2、R2分別接到6個發(fā)光二極管上,從而可以顯示主道以及次道之間的紅綠燈亮滅的狀態(tài)。數(shù)碼管依次顯示倒計時時間;結(jié)果正確,滿足要求。</p><p><b&
76、gt; 六、總結(jié)</b></p><p> 通過這次實訓(xùn),我們在程序的功能,源程序修改以及最后的硬件調(diào)試波形仿真中取得了更深一步的成就,通過理論結(jié)合實際進(jìn)行不斷地修改、討論。填補(bǔ)了我們在這一方面的不足,當(dāng)最后結(jié)果出來的時候,我們心比蜜甜,通過這次實訓(xùn),我們在實踐中學(xué)會了很多在平時的實驗中無法學(xué)到得東西。將使我們在以后的工作中受益匪淺。</p><p><b>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通燈課程設(shè)計--簡易交通信號燈
- 交通燈課程設(shè)計--交通信號燈的設(shè)計
- 交通燈課程設(shè)計---交通信號燈的設(shè)計
- 交通燈課程設(shè)計-- 交通信號燈系統(tǒng)設(shè)計
- 交通燈課程設(shè)計--- 交通信號燈控制的設(shè)計
- 微機(jī)原理交通燈課程設(shè)計---交通信號燈的設(shè)計
- 交通信號燈課程設(shè)計---交通信號燈系統(tǒng)設(shè)計
- 交通燈課程設(shè)計--交通信號燈控制器的設(shè)計
- eda交通燈課程設(shè)計--交通信號燈控制電路
- 交通信號燈課程設(shè)計--基于單片機(jī)的交通燈設(shè)計
- plc交通燈課程設(shè)計--交通信號燈控制系統(tǒng)的設(shè)計
- 數(shù)電交通燈課程設(shè)計---交通信號燈控制器設(shè)計
- 交通信號燈課程設(shè)計--交通信號燈控制電路的設(shè)計
- 課程設(shè)計交通信號燈
- 交通信號燈課程設(shè)計
- 交通信號燈課程設(shè)計
- 交通信號燈課程設(shè)計
- 數(shù)電交通燈課程設(shè)計--交通信號燈控制器的設(shè)計
- 交通信號燈課程設(shè)計
- 交通信號燈課程設(shè)計7
評論
0/150
提交評論