

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> EDA課程設(shè)計(jì)報(bào)告</b></p><p> 設(shè)計(jì)題目:交通信號(hào)控制器的VHDL設(shè)計(jì)</p><p> 班 級(jí):09通信工程一班</p><p><b> 學(xué) 號(hào): </b></p><p><b> 姓 名: </b>&
2、lt;/p><p><b> 指導(dǎo)老師: </b></p><p> 日 期:2012.3.9</p><p> 交通信號(hào)控制器的VHDL設(shè)計(jì)</p><p> 1、設(shè)計(jì)任務(wù)及要求:</p><p> 設(shè)計(jì)任務(wù):模擬十字路口交通信號(hào)燈的工作過(guò)程,利用實(shí)驗(yàn)板上的兩組紅、黃、綠LED作為交
3、通信號(hào)燈,設(shè)計(jì)一個(gè)交通信號(hào)燈控制器。要求:</p><p> 交通燈從綠變紅時(shí),有4秒黃燈亮的間隔時(shí)間;</p><p> 交通燈紅變綠是直接進(jìn)行的,沒(méi)有間隔時(shí)間;</p><p> 主干道上的綠燈時(shí)間為40秒,支干道的綠燈時(shí)間為20秒;</p><p> 在任意時(shí)間,顯示每個(gè)狀態(tài)到該狀態(tài)結(jié)束所需的時(shí)間。</p><
4、;p><b> 支干道</b></p><p><b> 主干道</b></p><p> 圖1 路口交通管理示意圖</p><p> 表1 交通信號(hào)燈的4種狀態(tài)</p><p><b> 設(shè)計(jì)要求:</b></p><p> 采用VH
5、DL語(yǔ)言編寫(xiě)程序,并在QUARTUSII工具平臺(tái)中進(jìn)行仿真,下載到EDA實(shí)驗(yàn)箱進(jìn)行驗(yàn)證。</p><p> 編寫(xiě)設(shè)計(jì)報(bào)告,要求包括方案選擇、程序清單、調(diào)試過(guò)程、測(cè)試結(jié)果及心得體會(huì)。</p><p> 設(shè)計(jì)時(shí)間和地點(diǎn):兩個(gè)星期,信息樓4樓EDA實(shí)驗(yàn)室。</p><p><b> 2、參考設(shè)計(jì)方案</b></p><p&g
6、t;<b> 時(shí)間顯示數(shù)據(jù)輸出</b></p><p><b> 紅黃綠燈信號(hào)輸出</b></p><p> 圖2 交通信號(hào)燈控制器的原理框圖</p><p> 3、采用VHDL語(yǔ)言輸入的方式實(shí)現(xiàn)交通信號(hào)燈控制器</p><p><b> CLK</b></p&
7、gt;<p><b> 時(shí)間顯示數(shù)據(jù)輸出</b></p><p><b> 信號(hào)燈輸出</b></p><p> 圖3 交通信號(hào)燈控制器程序原理框圖</p><p> 該程序由7個(gè)進(jìn)程組成,進(jìn)程P1和P2將CLK信號(hào)分頻后產(chǎn)生1秒信號(hào),進(jìn)程P3、P4、P5構(gòu)成兩個(gè)帶有預(yù)置數(shù)功能的十進(jìn)制計(jì)數(shù)器,其中P4
8、產(chǎn)生允許十位計(jì)數(shù)器計(jì)數(shù)的控制信號(hào)。進(jìn)程P6實(shí)現(xiàn)狀態(tài)轉(zhuǎn)換和產(chǎn)生狀態(tài)轉(zhuǎn)換的控制信號(hào),進(jìn)程P7產(chǎn)生次態(tài)信號(hào)和信號(hào)燈輸出信號(hào),以及每一個(gè)狀態(tài)的時(shí)間值。</p><p> 原功能(40+20)實(shí)現(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)控制第一個(gè)七段數(shù)碼管;</p><p> le
10、d7s2:out std_logic_vector(6 downto 0);控制第二個(gè)七段數(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位代表十進(jìn)制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)部計(jì)時(shí)器</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è)計(jì)秒表的走時(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)置秒表最大計(jì)時(shí)這里是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)換時(shí)間 共S0,S1,S2,S3,S4 5個(gè)狀態(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ù)碼管顯示時(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ū)嵤┻^(guò)程及原理解析</p><p> 本程序首先通過(guò)秒脈沖發(fā)生電路將從信號(hào)發(fā)生器產(chǎn)生的CLK脈沖轉(zhuǎn)換為full信號(hào),且full信號(hào)每秒鐘產(chǎn)生一個(gè)脈沖信號(hào),再通過(guò)內(nèi)部計(jì)時(shí)電路產(chǎn)生tm,tl,th三個(gè)信號(hào),其中tm位內(nèi)部計(jì)時(shí)器,tl,th分別為輸出到外部倒計(jì)時(shí)表的低高位,然后就是紅綠燈狀態(tài)轉(zhuǎn)換模塊,在程序的最開(kāi)始設(shè)置一個(gè)二進(jìn)制位矢響亮comb-out來(lái)控制紅綠燈的狀態(tài),再通過(guò)要求的參數(shù)設(shè)
62、計(jì)來(lái)設(shè)置各燈的亮與滅,這樣紅綠燈的基本功能就實(shí)現(xiàn)了,最后再在程序后面添加一個(gè)時(shí)間顯示電路,來(lái)控制倒計(jì)時(shí)秒表,通過(guò)tl和th的參量即可設(shè)置好七段數(shù)碼管顯示電路</p><p><b> ?。?lt;/b></p><p><b> 心得感想:</b></p><p> 這次EDA的程序設(shè)計(jì)由于放在學(xué)期的第二周,是一進(jìn)學(xué)校就要著
63、手準(zhǔn)備得,但由于剛進(jìn)學(xué)校各種事務(wù)導(dǎo)致對(duì)這次的課程設(shè)計(jì)的疏忽,是很不應(yīng)該的,一開(kāi)始聽(tīng)安排只要寫(xiě)一段程序,便以為很簡(jiǎn)單,沒(méi)有引起重視,看了題目之后便覺(jué)得有點(diǎn)慌神,因?yàn)樯蠈W(xué)期的EDA課程并沒(méi)有要求編寫(xiě)理解這么面向應(yīng)用的程序,最多七段數(shù)碼管和計(jì)時(shí)器。便在網(wǎng)上找出了一段程序也沒(méi)有過(guò)于鉆研程序,在驗(yàn)收的時(shí)候還算順利,老師只要求改幾個(gè)參數(shù),于是便看了一遍程序,感覺(jué)也不是很難,但在今天寫(xiě)課程設(shè)計(jì)報(bào)告的時(shí)候變仔細(xì)的看了幾遍程序,發(fā)現(xiàn)程序的結(jié)構(gòu)其實(shí)很簡(jiǎn)單,
64、不是所謂的什么面向?qū)ο蟮某绦蚓帉?xiě)只是將我們平時(shí)練習(xí)和實(shí)驗(yàn)的的程序模塊的一個(gè)小小結(jié)合便可以設(shè)計(jì)出一個(gè)不同功能不同內(nèi)容的電路的VHDL程序 ,在程序下載運(yùn)行方面也與平時(shí)做的實(shí)驗(yàn)大同小異,所以總結(jié)了一下自己,發(fā)現(xiàn)自己雖然在理論上沒(méi)有太大問(wèn)題,但當(dāng)實(shí)踐的時(shí)候便遇到了問(wèn)題,自己在看到一個(gè)課題是先是去找程序,再去理解程序。這樣的思路并不正確,應(yīng)該要自己先思考方法,在自己對(duì)照現(xiàn)有的資料自己去完成設(shè)計(jì),所以自己的實(shí)踐能力還是遠(yuǎn)遠(yuǎn)的不足,不管是在EDA課
溫馨提示
- 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ì)---交通信號(hào)控制器的vhdl設(shè)計(jì)
- eda課程設(shè)計(jì)---交通信號(hào)燈控制器設(shè)計(jì)
- eda課程設(shè)計(jì)--交通信號(hào)燈控制器
- 數(shù)電eda交通信號(hào)燈的課程設(shè)計(jì)--交通信號(hào)燈控制器
- eda課程設(shè)計(jì)報(bào)告交通信號(hào)燈控制
- eda課程設(shè)計(jì)報(bào)告--交通信號(hào)燈控制
- 交通信號(hào)燈控制器課程設(shè)計(jì)報(bào)告
- 數(shù)字邏輯課程設(shè)計(jì)-- 交通信號(hào)控制器
- 課程設(shè)計(jì)---交通信號(hào)燈控制器
- 課程設(shè)計(jì)---交通信號(hào)燈控制器
- 課程設(shè)計(jì)---交通信號(hào)燈控制器的設(shè)計(jì)
- 交通信號(hào)燈控制器課程設(shè)計(jì)
- 課程設(shè)計(jì)---交通信號(hào)燈控制器
- eda使用vhdl設(shè)計(jì)交通信號(hào)燈
- eda使用vhdl設(shè)計(jì)交通信號(hào)燈
- 課程設(shè)計(jì)---交通信號(hào)燈控制器設(shè)置
- 課程設(shè)計(jì)-- 簡(jiǎn)易交通信號(hào)燈控制器
- 課程設(shè)計(jì)--簡(jiǎn)易交通信號(hào)燈控制器
- 簡(jiǎn)易交通信號(hào)燈控制器課程設(shè)計(jì)
- 課程設(shè)計(jì)---交通信號(hào)燈控制器.doc
評(píng)論
0/150
提交評(píng)論