實(shí)驗(yàn)三:交通燈控制器設(shè)計(jì)win_第1頁
實(shí)驗(yàn)三:交通燈控制器設(shè)計(jì)win_第2頁
實(shí)驗(yàn)三:交通燈控制器設(shè)計(jì)win_第3頁
實(shí)驗(yàn)三:交通燈控制器設(shè)計(jì)win_第4頁
實(shí)驗(yàn)三:交通燈控制器設(shè)計(jì)win_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、實(shí)驗(yàn)三:交通燈控制器設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)采用狀態(tài)機(jī)方法設(shè)計(jì)時(shí)序邏輯電路。掌握isplever 軟件的使用方法。掌握用 vhdl 語言設(shè)計(jì)數(shù)字邏輯電路。掌握isp器件的使用。二、 實(shí)驗(yàn)所用器件和設(shè)備在系統(tǒng)可編程邏輯器件isp1032 一片示波器一臺(tái)萬用表或邏輯筆一只tec-5 實(shí)驗(yàn)系統(tǒng),或tds-2b 數(shù)字電路實(shí)驗(yàn)系統(tǒng)一臺(tái)三、實(shí)驗(yàn)內(nèi)容以實(shí)驗(yàn)臺(tái)上的 4個(gè)紅色電平指示燈, 4個(gè)綠色電平指示燈模仿路口的東南西北4 個(gè)方向的紅,綠,黃交通燈??刂七@些交通燈,使它們按下列規(guī)律亮,滅。(1)初始狀態(tài)為 4個(gè)方向的紅燈全亮,時(shí)間 1s。(2) 東,西方向綠燈亮,南,北方向紅燈亮。東,西方向通車,時(shí)間5s 。(

2、3) 東,西方向黃燈閃爍,南,北方向紅燈,時(shí)間 2s 。(4) 東,西方向紅燈亮,南,北方向綠燈亮。南,北方向通車,時(shí)間5s 。(5) 東,西方向紅燈閃爍,南,北方向黃燈閃爍,時(shí)間 2s 。(6) 返回 (2) ,繼續(xù)運(yùn)行。(7) 如果發(fā)生緊急事件,例如救護(hù)車,警車通過,則按下單脈沖按鈕,使得東,南,西,北四個(gè)方向紅燈亮。緊急事件結(jié)束后,松開單脈沖按鈕,將恢復(fù)到被打斷的狀態(tài)繼續(xù)運(yùn)行。四、設(shè)計(jì)思路(1)熟悉掌握使用枚舉類型數(shù)據(jù)格式結(jié)合case語句實(shí)現(xiàn)狀態(tài)機(jī)設(shè)計(jì)。(2) 這是一個(gè)典型的時(shí)序狀態(tài)機(jī),一共 6個(gè)大的狀態(tài)。由于各個(gè)狀態(tài)停留時(shí)間不同,但都是秒的倍數(shù)。可以考慮設(shè)計(jì)當(dāng)前狀態(tài)與下一狀態(tài)兩個(gè)枚舉型

3、數(shù)據(jù),每秒刷新舊狀態(tài)值,各個(gè)狀態(tài)的 timeout 時(shí)對(duì)下一狀態(tài)賦值。(3)黃燈閃爍可通過連續(xù)兩0.2s ,滅 0.2s 實(shí)現(xiàn)。(4) 選擇實(shí)驗(yàn)臺(tái)上的 5khz 頻率時(shí)鐘,作為設(shè)計(jì)中分頻的初始時(shí)鐘。(5) 緊急事件發(fā)生時(shí),要注意保存必要的信息,已被緊急事件結(jié)束后,恢復(fù)到原狀態(tài)繼續(xù)運(yùn)行使用。圖 3-1 交通燈控制框圖五、設(shè)計(jì)方案libraryieee;useieee.std_logic_1164 .all ;entitytralight isport (數(shù)字邏輯課程設(shè)計(jì)12restart,emergency,clk: in std_logic;-restart為復(fù)位信號(hào),emergency為緊急

4、事件信號(hào),clk為實(shí)驗(yàn)臺(tái)上的5khz頻率時(shí) 鐘,作為設(shè)計(jì)中分頻的初始時(shí)鐘light: out std_logic_vector(11 downto 0);-light 輸出到實(shí)驗(yàn)臺(tái)上 12個(gè)指示燈architectureartoftralight istype trafficstateis(s0,s1,s2,s3,s4);-交通燈狀態(tài)signal current_state,next_state:trafficstate;- 當(dāng)前狀態(tài) ,轉(zhuǎn)移狀態(tài) signal en1,en2,en3,en4,c,c1,c2,c3,c4:std_logic;-en為計(jì)數(shù)器使能控制信號(hào),c為計(jì)數(shù)器進(jìn)位信號(hào) sig

5、nal temp1:integer range 0to 49999;-產(chǎn)生 1s計(jì)數(shù)器時(shí)計(jì)數(shù)signal temp2:integer range 0to 99999;-產(chǎn)生2s計(jì)數(shù)器時(shí)計(jì)數(shù)signal temp3:integer range 0to 249999;-產(chǎn)生5s計(jì)數(shù)器時(shí)計(jì)數(shù) signal temp4:integer range 0to 9999;-產(chǎn)生 0.2s計(jì)數(shù)器時(shí)計(jì)數(shù) begin-1s計(jì)數(shù)器,對(duì)5khz原始信號(hào)進(jìn)行5000分頻,每秒產(chǎn)生一個(gè)進(jìn)位脈沖cl process (clk,en1)beginif (clkevent and clk=1) thenif (temp1=49

6、999 and en1=1 and emergency=0) thentemp1=0;c1=1;elsif (en1=1 and emergency=0) thentemp1=temp1+1;c1=0;endif ;endif ;if (en1=0) then c1=0;temp1=0;endif ;endprocess ;-2s計(jì)數(shù)器,對(duì)5khz原始信號(hào)進(jìn)行10000分頻,每兩秒產(chǎn)生一個(gè)進(jìn)位脈沖c2process (clk,en2)beginif (clkevent and clk=1) thenif (temp2=99999 and en2=1 and emergency=0) thent

7、emp2=0;c2=1;elsif (en2= 1and emergency=0) thentemp2=temp2+1;c2=0;數(shù)字邏輯課程設(shè)計(jì)13endif ;endif ;if (en2=0) thenc2=0;endif ;endprocess ;-5s計(jì)數(shù)器,對(duì)5khz原始信號(hào)進(jìn)行25000分頻,每五秒產(chǎn)生一個(gè)進(jìn)位脈沖c3process (clk,en3)beginif (clkevent and clk=1) thenif (temp3=249999 and en3=1 and emergency=0) thentemp3=0;c3=1;elsif (en3=1 and emerg

8、ency=0) thentemp3=temp3+1;c3=0;endif ;endif ;if (en3=0) thentemp3=0;c3=0;endif ;endprocess ;-0.2s計(jì)數(shù)器,對(duì)5khz原始信號(hào)進(jìn)行10000分頻,每0.2秒產(chǎn)生一個(gè)進(jìn)位脈沖c4process (clk,en4)beginif (clkevent and clk=1) thenif (temp4=9999 and en4=1) thentemp4=0;c4=notc4;elsif (en4=1) thentemp4=temp4+1;endif ;endif ;endprocess ;c=c1orc2or

9、c3;-進(jìn)位信號(hào)控制狀態(tài)轉(zhuǎn)移process (c,restart)- 狀態(tài)轉(zhuǎn)移進(jìn)程beginif(restart=1) then -復(fù)位信號(hào)使?fàn)顟B(tài)回到s0,即紅燈全亮1s current_state=s0;數(shù)字邏輯課程設(shè)計(jì)14elsif (cevent and c=0) then - 遇到計(jì)數(shù)器進(jìn)位轉(zhuǎn)移到下一狀態(tài)current_state=next_state;endif ;endprocess ;process (current_state,emergency)- 控制狀態(tài)轉(zhuǎn)移 ,信號(hào)燈亮滅beginif (emergency=1) then - 緊急狀態(tài)紅燈全亮light- 初始四個(gè)方向的

10、紅燈全亮 ,延時(shí) 1秒light=000000001111;en2=0;en3=0;en1=1;next_state- 東西方向綠燈亮,南北方向紅燈亮 ,延時(shí) 5秒en1=0;en2=0;light=010100001010;en3=1;next_state- 東西方向黃燈閃,南北方向紅燈亮 ,延時(shí) 2秒en3=0;en2=1;en4=1;light(11 downto 7)=00000;light(6)=c4;light(5)=0;iight(4)=c4;light(3 downto 0)=1010;next_state-東西方向紅燈亮,南北方向綠燈亮,延時(shí)5秒en2=0;en4=0;en3

11、=1;light=101000000101;next_state-東西方向紅燈閃,南北方向黃燈閃,延時(shí)2秒en3=0;en2=1;en4=1;light(11 downto 8)=0000;數(shù)字邏輯課程設(shè)計(jì)15light v=c4;light(6)=,0,;light v=c4;light(4 downto 0)=00101;next_state=s1;endcase ;endif ;endprocess ;end art;六、調(diào)試中出現(xiàn)的問題及解決方法這次實(shí)驗(yàn)總體思路比較清晰, 不需要太多的輸入, 只有復(fù)位和緊急狀態(tài)輸入,但是在具體實(shí)現(xiàn)上遇到了一些問題,有的地方有毛刺現(xiàn)象。對(duì)于實(shí)驗(yàn)中要求的四

12、個(gè)時(shí)間計(jì)數(shù)器,開始我們考慮的是只寫一個(gè)0.2s的計(jì)數(shù)器,放在例化元件里,狀態(tài)需要的時(shí)間可以多次調(diào)用該元件,但是實(shí)際操作中需要用控制信號(hào)控制計(jì)數(shù)器的運(yùn)行,在一個(gè)計(jì)數(shù)器里不好控制,最終我們采用四個(gè)計(jì)數(shù)器的進(jìn)程。在交通燈系統(tǒng)運(yùn)行過程中, 我們發(fā)現(xiàn)同一個(gè)狀態(tài)的時(shí)間是不穩(wěn)定的,如5s狀態(tài)可能只進(jìn)行了 2s就跳到下一個(gè)狀態(tài)。 這其實(shí)是一個(gè)很嚴(yán)重的問題, 也是我們最后才想明白的。解決方法是:控制信號(hào)使計(jì)數(shù)器停止工作時(shí)(既狀態(tài)轉(zhuǎn)移使en=0),將進(jìn)位信號(hào)c和計(jì)數(shù)temp 都清零。一開始我們將緊急情況單獨(dú)設(shè)置為一個(gè)狀態(tài), 再次狀態(tài)下所有計(jì)數(shù)器控制信號(hào)使計(jì)數(shù)器停止工作,但是由于問題 2 ,計(jì)數(shù)的 temp 清零,

13、無法保存現(xiàn)場。對(duì)于此問題,我們采用另一種方法,不轉(zhuǎn)移狀態(tài),只是單獨(dú)讓計(jì)數(shù)器停止工作,既讓計(jì)數(shù)器在emergency=1 的情況下,每當(dāng)來一個(gè)脈沖,計(jì)數(shù)器加 1 。對(duì)于黃燈閃的情況,我們發(fā)現(xiàn)light(11downto0)=0000&c4&0&c4&00101并不能使黃燈閃爍,改為light(11downto8)=0000;light(7)=c4;light(6)=0;light(5)=c4;light(4downto0)=00101; 問題即可解決。七、層次設(shè)計(jì)的體會(huì)實(shí)驗(yàn)思路比較簡單, 我們沒有采用元件例化的方法, 但是模塊劃分仍然很清晰。程序可分為計(jì)數(shù)器模塊,狀態(tài)轉(zhuǎn)移模塊,輸出模塊(控制燈亮滅) 。層次設(shè)計(jì)將大問題分解為較小的問題,可以提高效 率,使思路清晰。八、比較不同種描述方式的心得實(shí)驗(yàn)中結(jié)構(gòu)體的三種描述方式都用到了: 數(shù)據(jù)流描述、 結(jié)構(gòu)描述、行為描述。數(shù)據(jù)流描述邏輯清晰、描述簡單。結(jié)構(gòu)描述使程序模塊劃分清晰,便于從宏觀上把握程序功能,便于整體設(shè)計(jì)。行為描述更容易把握程序?qū)τ诓煌斎牖蛘咝盘?hào)所做的動(dòng)作。 根據(jù)不同情況選擇不同描述方法可以使程序得到優(yōu)化。九、本次設(shè)計(jì)的收獲和不足本次設(shè)計(jì)我們首次用到了枚舉類型數(shù)據(jù)格式結(jié)合case語句實(shí)現(xiàn)狀態(tài)機(jī)設(shè)計(jì),了解了狀態(tài)機(jī)設(shè)計(jì)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論