版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> EDA課程設(shè)計報告</b></p><p> 設(shè)計題目:交通信號控制器的VHDL設(shè)計</p><p> 班 級:09通信工程一班</p><p><b> 學(xué) 號: </b></p><p><b> 姓 名: </b>&
2、lt;/p><p><b> 指導(dǎo)老師: </b></p><p> 日 期:2012.3.9</p><p> 交通信號控制器的VHDL設(shè)計</p><p> 1、設(shè)計任務(wù)及要求:</p><p> 設(shè)計任務(wù):模擬十字路口交通信號燈的工作過程,利用實驗板上的兩組紅、黃、綠LED作為交
3、通信號燈,設(shè)計一個交通信號燈控制器。要求:</p><p> 交通燈從綠變紅時,有4秒黃燈亮的間隔時間;</p><p> 交通燈紅變綠是直接進行的,沒有間隔時間;</p><p> 主干道上的綠燈時間為40秒,支干道的綠燈時間為20秒;</p><p> 在任意時間,顯示每個狀態(tài)到該狀態(tài)結(jié)束所需的時間。</p><
4、;p><b> 支干道</b></p><p><b> 主干道</b></p><p> 圖1 路口交通管理示意圖</p><p> 表1 交通信號燈的4種狀態(tài)</p><p><b> 設(shè)計要求:</b></p><p> 采用VH
5、DL語言編寫程序,并在QUARTUSII工具平臺中進行仿真,下載到EDA實驗箱進行驗證。</p><p> 編寫設(shè)計報告,要求包括方案選擇、程序清單、調(diào)試過程、測試結(jié)果及心得體會。</p><p> 設(shè)計時間和地點:兩個星期,信息樓4樓EDA實驗室。</p><p><b> 2、參考設(shè)計方案</b></p><p&g
6、t;<b> 時間顯示數(shù)據(jù)輸出</b></p><p><b> 紅黃綠燈信號輸出</b></p><p> 圖2 交通信號燈控制器的原理框圖</p><p> 3、采用VHDL語言輸入的方式實現(xiàn)交通信號燈控制器</p><p><b> CLK</b></p&
7、gt;<p><b> 時間顯示數(shù)據(jù)輸出</b></p><p><b> 信號燈輸出</b></p><p> 圖3 交通信號燈控制器程序原理框圖</p><p> 該程序由7個進程組成,進程P1和P2將CLK信號分頻后產(chǎn)生1秒信號,進程P3、P4、P5構(gòu)成兩個帶有預(yù)置數(shù)功能的十進制計數(shù)器,其中P4
8、產(chǎn)生允許十位計數(shù)器計數(shù)的控制信號。進程P6實現(xiàn)狀態(tài)轉(zhuǎn)換和產(chǎn)生狀態(tài)轉(zhuǎn)換的控制信號,進程P7產(chǎn)生次態(tài)信號和信號燈輸出信號,以及每一個狀態(tài)的時間值。</p><p> 原功能(40+20)實現(xiàn)的程序代碼 </p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p>
9、; USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY traffic IS </p><p> PORT (clk:in std_logic;</p><p> led7s1:out std_logic_vector(6 downto 0)控制第一個七段數(shù)碼管;</p><p> le
10、d7s2:out std_logic_vector(6 downto 0);控制第二個七段數(shù)碼管</p><p> comb_out:out std_logic_vector(5 downto 0));控制交通燈的兩與滅</p><p><b> END;</b></p><p> ARCHITECTURE one OF traffic
11、IS</p><p> TYPE dm IS (s0,s1,s2,s3);</p><p> SIgnal current_state,next_state:dm;</p><p> SIGNAL FULL : STD_LOGIC;</p><p> SIGNAL tl :STD_LOGIC_VECTOR(6 DOWNTO 0);秒
12、表低位共7位代表十進制0到9</p><p> SIGNAL th:STD_LOGIC_VECTOR(1 DOWNTO 0);秒表高位最高數(shù)是3 故2位即可</p><p> SIGNAL tm :STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p> SIGNAL TIME :STD_LOGIC_VECTOR(6 DOWNTO
13、 0);內(nèi)部計時器</p><p><b> BEGIN</b></p><p> P_REG: PROCESS(CLK)</p><p> VARIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b> BEGIN</b></p>
14、;<p> IF CLK'EVENT AND CLK='1' THEN</p><p> IF CNT8 = "11111111" THEN 利用方波的頻率設(shè)計秒表的走時</p><p> CNT8:="01111111";</p><p> FULL<='1
15、39;;</p><p> ELSE CNT8 := CNT8+1;</p><p> FULL <= '0';</p><p> END IF; END IF;</p><p> END PROCESS P_REG;</p><p> PROCESS(full)</p&g
16、t;<p><b> BEGIN</b></p><p> IF full'EVENT AND full='1' THEN</p><p> IF TIME<"1000011" THEN 設(shè)定內(nèi)置秒表最大計時這里是40+20+4+4-1=67=1000011</p><p&
17、gt; TIME<=TIME+1;</p><p> ELSe TIME <="0000000"; </p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p&
18、gt;<p> REG:process( full,current_state)</p><p><b> BEGIN</b></p><p> IF full='1' AND full'EVENT THEN </p><p> current_state<=next_state;</p
19、><p><b> END IF;</b></p><p> END process;</p><p> COM:process(current_state, time)</p><p><b> begin</b></p><p> case current_stat
20、e is 設(shè)定狀態(tài)轉(zhuǎn)換時間 共S0,S1,S2,S3,S4 5個狀態(tài)</p><p> when s0=>comb_out<="001100";tm<=39-time;</p><p> if time=39 then next_state<=s1;</p><p> else next_state<=s
21、0;</p><p><b> end if;</b></p><p> when s1=>comb_out<="010100";tm<=43-time;</p><p> if time=43 then next_state<=s2;</p><p> else n
22、ext_state<=s1;</p><p><b> end if;</b></p><p> when s2=>comb_out<="100010";tm<=63-time;</p><p> if time=63 then next_state<=s3;</p>&l
23、t;p> else next_state<=s2;</p><p><b> end if;</b></p><p> when s3=>comb_out<="100001";tm<=67-time;</p><p> if time=67 then next_state<=s0
24、;</p><p> else next_state<=s3;</p><p><b> end if;</b></p><p><b> end case;</b></p><p> end process;</p><p> PROCESS(tm)<
25、/p><p><b> BEGIN </b></p><p> IF tm>=30 THEN th<="11";tl<=tm-30;</p><p> ELSIF tm>=20 THEN th<="10";tl<=tm-20;</p><p>
26、 ELSIF tm>=10 THEN th<="01";tl<=tm-10;</p><p> ELSE th<="00";tl<=tm;</p><p><b> END IF;</b></p><p> END PROCESS;</p><p
27、> process(th,tl)由秒表高低位控制七段數(shù)碼管顯示時間</p><p><b> begin</b></p><p> case th is</p><p> when"00"=>led7s1<="0111111";</p><p> whe
28、n"01"=>led7s1<="0000110";</p><p> when"10"=>led7s1<="1011011";</p><p> when"11"=>led7s1<="1001111";</p><
29、;p> when others=>null;</p><p><b> end case;</b></p><p> case tl is </p><p> when "0000000"=>led7s2<="0111111";</p><p>
30、when"0000001"=>led7s2<="0000110";</p><p> when "0000010"=>led7s2<="1011011";</p><p> when"0000011"=>led7s2<="1001111&qu
31、ot;;</p><p> when"0000100"=>led7s2<="1100110";</p><p> when "0000101"=>led7s2<="1101101";</p><p> when "0000110"=>
32、;led7s2<="1111101";</p><p> when"0000111"=>led7s2<="0000111";</p><p> when "0001000"=>led7s2<="1111111";</p><p>
33、when "0001001"=>led7s2<="1101111";</p><p> when others=>null;</p><p><b> end case;</b></p><p> end process;</p><p><b>
34、 end;</b></p><p> 老師布置功能(56+36)代碼</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> E
35、NTITY traffic IS </p><p> PORT (clk:in std_logic;</p><p> led7s1:out std_logic_vector(6 downto 0);</p><p> led7s2:out std_logic_vector(6 downto 0);</p><p> comb_out
36、:out std_logic_vector(5 downto 0));</p><p><b> END;</b></p><p> ARCHITECTURE one OF traffic IS</p><p> TYPE dm IS (s0,s1,s2,s3);</p><p> SIgnal current_
37、state,next_state:dm;</p><p> SIGNAL FULL : STD_LOGIC;</p><p> SIGNAL tl :STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p> SIGNAL th:STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p> SIG
38、NAL tm :STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p> SIGNAL TIME :STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p><b> BEGIN</b></p><p> P_REG: PROCESS(CLK)</p><p> VA
39、RIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b> BEGIN</b></p><p> IF CLK'EVENT AND CLK='1' THEN</p><p> IF CNT8 = "11111111" THEN</p>
40、<p> CNT8:="01111111";</p><p> FULL<='1';</p><p> ELSE CNT8 := CNT8+1;</p><p> FULL <= '0';</p><p> END IF; END IF;</
41、p><p> END PROCESS P_REG;</p><p> PROCESS(full)</p><p><b> BEGIN</b></p><p> IF full'EVENT AND full='1' THEN</p><p> IF TIME<&
42、quot;1100011" THEN </p><p> TIME<=TIME+1;</p><p> ELSe TIME <="0000000"; </p><p><b> END IF;</b></p><p><b> END IF;</b>
43、</p><p> END PROCESS;</p><p> REG:process( full,current_state)</p><p><b> BEGIN</b></p><p> IF full='1' AND full'EVENT THEN </p><
44、p> current_state<=next_state;</p><p><b> END IF;</b></p><p> END process;</p><p> COM:process(current_state, time)</p><p><b> begin</b&g
45、t;</p><p> case current_state is</p><p> when s0=>comb_out<="001100";tm<=55-time;</p><p> if time=55 then next_state<=s1;</p><p> else next_
46、state<=s0;</p><p><b> end if;</b></p><p> when s1=>comb_out<="010100";tm<=59-time;</p><p> if time=59 then next_state<=s2;</p><p&
47、gt; else next_state<=s1;</p><p><b> end if;</b></p><p> when s2=>comb_out<="100010";tm<=95-time;</p><p> if time=95 then next_state<=s3;<
48、;/p><p> else next_state<=s2;</p><p><b> end if;</b></p><p> when s3=>comb_out<="100001";tm<=99-time;</p><p> if time=99 then next_s
49、tate<=s0;</p><p> else next_state<=s3;</p><p><b> end if;</b></p><p><b> end case;</b></p><p> end process;</p><p> PROC
50、ESS(tm)</p><p><b> BEGIN </b></p><p> IF tm>=50 THEN th<="101";tl<=tm-50;</p><p> ELSIF tm>=40 THEN th<="100";tl<=tm-40;</p&g
51、t;<p> ELSIF tm>=30 THEN th<="011";tl<=tm-30;</p><p> ELSIF tm>=20 THEN th<="010";tl<=tm-20;</p><p> ELSIF tm>=10 THEN th<="001";t
52、l<=tm-10;</p><p> ELSE th<="000";tl<=tm;</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> process(th,tl)</p><p><
53、b> begin</b></p><p> case th is</p><p> when"000"=>led7s1<="0111111";</p><p> when"001"=>led7s1<="0000110";</p>
54、;<p> when"010"=>led7s1<="1011011";</p><p> when"011"=>led7s1<="1001111";</p><p> when"100"=>led7s1<="1100110&q
55、uot;;</p><p> when"101"=>led7s1<="1101101";</p><p> when others=>null;</p><p><b> end case;</b></p><p> case tl is </p&g
56、t;<p> when "0000000"=>led7s2<="0111111";</p><p> when"0000001"=>led7s2<="0000110";</p><p> when "0000010"=>led7s2<=
57、"1011011";</p><p> when"0000011"=>led7s2<="1001111";</p><p> when"0000100"=>led7s2<="1100110";</p><p> when "00
58、00101"=>led7s2<="1101101";</p><p> when "0000110"=>led7s2<="1111101";</p><p> when"0000111"=>led7s2<="0000111";</p&g
59、t;<p> when "0001000"=>led7s2<="1111111";</p><p> when "0001001"=>led7s2<="1101111";</p><p> when others=>null;</p><p&
60、gt;<b> end case;</b></p><p> end process;</p><p><b> end;</b></p><p><b> 仿真波形圖: </b></p><p><b> 引腳設(shè)置</b></p>
61、<p> 程序?qū)嵤┻^程及原理解析</p><p> 本程序首先通過秒脈沖發(fā)生電路將從信號發(fā)生器產(chǎn)生的CLK脈沖轉(zhuǎn)換為full信號,且full信號每秒鐘產(chǎn)生一個脈沖信號,再通過內(nèi)部計時電路產(chǎn)生tm,tl,th三個信號,其中tm位內(nèi)部計時器,tl,th分別為輸出到外部倒計時表的低高位,然后就是紅綠燈狀態(tài)轉(zhuǎn)換模塊,在程序的最開始設(shè)置一個二進制位矢響亮comb-out來控制紅綠燈的狀態(tài),再通過要求的參數(shù)設(shè)
62、計來設(shè)置各燈的亮與滅,這樣紅綠燈的基本功能就實現(xiàn)了,最后再在程序后面添加一個時間顯示電路,來控制倒計時秒表,通過tl和th的參量即可設(shè)置好七段數(shù)碼管顯示電路</p><p><b> ?。?lt;/b></p><p><b> 心得感想:</b></p><p> 這次EDA的程序設(shè)計由于放在學(xué)期的第二周,是一進學(xué)校就要著
63、手準(zhǔn)備得,但由于剛進學(xué)校各種事務(wù)導(dǎo)致對這次的課程設(shè)計的疏忽,是很不應(yīng)該的,一開始聽安排只要寫一段程序,便以為很簡單,沒有引起重視,看了題目之后便覺得有點慌神,因為上學(xué)期的EDA課程并沒有要求編寫理解這么面向應(yīng)用的程序,最多七段數(shù)碼管和計時器。便在網(wǎng)上找出了一段程序也沒有過于鉆研程序,在驗收的時候還算順利,老師只要求改幾個參數(shù),于是便看了一遍程序,感覺也不是很難,但在今天寫課程設(shè)計報告的時候變仔細(xì)的看了幾遍程序,發(fā)現(xiàn)程序的結(jié)構(gòu)其實很簡單,
64、不是所謂的什么面向?qū)ο蟮某绦蚓帉懼皇菍⑽覀兤綍r練習(xí)和實驗的的程序模塊的一個小小結(jié)合便可以設(shè)計出一個不同功能不同內(nèi)容的電路的VHDL程序 ,在程序下載運行方面也與平時做的實驗大同小異,所以總結(jié)了一下自己,發(fā)現(xiàn)自己雖然在理論上沒有太大問題,但當(dāng)實踐的時候便遇到了問題,自己在看到一個課題是先是去找程序,再去理解程序。這樣的思路并不正確,應(yīng)該要自己先思考方法,在自己對照現(xiàn)有的資料自己去完成設(shè)計,所以自己的實踐能力還是遠(yuǎn)遠(yuǎn)的不足,不管是在EDA課
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda交通燈課程設(shè)計---交通信號控制器的vhdl設(shè)計
- eda課程設(shè)計---交通信號燈控制器設(shè)計
- eda課程設(shè)計--交通信號燈控制器
- 數(shù)電eda交通信號燈的課程設(shè)計--交通信號燈控制器
- eda課程設(shè)計報告交通信號燈控制
- eda課程設(shè)計報告--交通信號燈控制
- 交通信號燈控制器課程設(shè)計報告
- 數(shù)字邏輯課程設(shè)計-- 交通信號控制器
- 課程設(shè)計---交通信號燈控制器
- 課程設(shè)計---交通信號燈控制器
- 課程設(shè)計---交通信號燈控制器的設(shè)計
- 交通信號燈控制器課程設(shè)計
- 課程設(shè)計---交通信號燈控制器
- eda使用vhdl設(shè)計交通信號燈
- eda使用vhdl設(shè)計交通信號燈
- 課程設(shè)計---交通信號燈控制器設(shè)置
- 課程設(shè)計-- 簡易交通信號燈控制器
- 課程設(shè)計--簡易交通信號燈控制器
- 簡易交通信號燈控制器課程設(shè)計
- 課程設(shè)計---交通信號燈控制器.doc
評論
0/150
提交評論