VHDL編程實(shí)現(xiàn)交通燈控制(數(shù)電實(shí)驗(yàn))解析_第1頁(yè)
VHDL編程實(shí)現(xiàn)交通燈控制(數(shù)電實(shí)驗(yàn))解析_第2頁(yè)
VHDL編程實(shí)現(xiàn)交通燈控制(數(shù)電實(shí)驗(yàn))解析_第3頁(yè)
VHDL編程實(shí)現(xiàn)交通燈控制(數(shù)電實(shí)驗(yàn))解析_第4頁(yè)
VHDL編程實(shí)現(xiàn)交通燈控制(數(shù)電實(shí)驗(yàn))解析_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

交通燈設(shè)計(jì)一、試驗(yàn)?zāi)康?.了解可編程規(guī)律器件設(shè)計(jì)的流程;2.把握數(shù)碼管動(dòng)態(tài)掃描顯示的實(shí)現(xiàn)方法;3.把握狀態(tài)機(jī)的設(shè)計(jì)方法;4.把握進(jìn)程的設(shè)計(jì)方法。長(zhǎng)江大學(xué)電工電子示范中心二、設(shè)計(jì)任務(wù)與要求長(zhǎng)江大學(xué)電工電子示范中心1.實(shí)現(xiàn)正常時(shí)序把握功能;2.實(shí)現(xiàn)特殊狀態(tài)把握功能;3.實(shí)現(xiàn)信號(hào)燈點(diǎn)亮?xí)r間預(yù)置功能;4.將東西方向、南北方向的燈亮?xí)r間分別用數(shù)碼管顯示;5.在MAXPLUS或QuartusII開(kāi)發(fā)平臺(tái)上,承受VHDL或Verilog編程設(shè)計(jì);6.對(duì)編寫的程序進(jìn)展編譯仿真、修改,使仿真結(jié)果到達(dá)設(shè)計(jì)要求;7.下載并測(cè)試電路的規(guī)律功能。2.1、問(wèn)題描述設(shè)計(jì)并實(shí)現(xiàn)一十字路口的紅、綠、黃三色交通燈把握與顯示電路,即每個(gè)路口設(shè)置一組紅、黃、綠交通燈,按圖1所示狀況變化,以保證車輛、行人通行安全。圖12,2、功能分析1.根本功能〔見(jiàn)前面圖〕2.?dāng)U展功能〔1〕特殊狀態(tài)把握功能特殊狀態(tài)如緊急車輛隨時(shí)通行功能受一開(kāi)關(guān)把握,無(wú)急車時(shí),信號(hào)燈按正常時(shí)序把握。有急車來(lái)時(shí),將特殊狀態(tài)開(kāi)關(guān)按下,不管原來(lái)信號(hào)燈的狀態(tài)如何,一律強(qiáng)制讓兩個(gè)方向的紅燈同時(shí)點(diǎn)亮,制止其它車輛通行,同時(shí)計(jì)時(shí)停頓;特殊狀態(tài)完畢后,恢復(fù)原來(lái)狀態(tài)連續(xù)運(yùn)行。〔2〕信號(hào)燈點(diǎn)亮?xí)r間預(yù)置功能把握電路在任何時(shí)候可依據(jù)實(shí)際狀況修改信號(hào)燈點(diǎn)亮?xí)r間。2.3、設(shè)計(jì)思路:1.參考圖1,定義交通燈的狀態(tài),確定狀態(tài)表;狀態(tài)東西方向南北方向時(shí)間(s)S0綠燈亮紅燈亮TeS1黃燈亮紅燈亮TyS2紅燈亮綠燈亮TsS3紅燈亮黃燈亮Ty三、程序設(shè)計(jì)思路1.狀態(tài)轉(zhuǎn)換的實(shí)現(xiàn)在進(jìn)程中利用自定義數(shù)據(jù)類型定義交通燈的4個(gè)狀態(tài),依據(jù)東西、南北方向的時(shí)間計(jì)數(shù)器的計(jì)數(shù)結(jié)果利用CASE語(yǔ)句實(shí)現(xiàn)4個(gè)狀態(tài)的轉(zhuǎn)換,在每一個(gè)狀態(tài)中利用內(nèi)部信號(hào)傳遞實(shí)現(xiàn)對(duì)紅黃綠燈的顯示把握。FSM設(shè)計(jì)方法分析把握器設(shè)計(jì)指標(biāo),建立系統(tǒng)算法模型,即狀態(tài)轉(zhuǎn)換圖;分析被控對(duì)象的時(shí)序,確定把握器的有限狀態(tài)機(jī)的各個(gè)狀態(tài)及輸入、輸出條件;應(yīng)用VHDL語(yǔ)言完成狀態(tài)機(jī)的描述。FSM分類Moore型:輸出信號(hào)僅與現(xiàn)態(tài)相關(guān)Mealy型:輸出信號(hào)與現(xiàn)態(tài)和輸入相關(guān)DFFsOutput

Comb.LogicFeedback

Comb.LogicDFFsOutput

Comb.LogicFeedback

Comb.LogicMooreMealy現(xiàn)態(tài)次態(tài)輸入輸出現(xiàn)態(tài)次態(tài)輸出輸入FSM構(gòu)成FSM用來(lái)解決一般時(shí)序規(guī)律電路問(wèn)題,包括同步/異步時(shí)序規(guī)律狀態(tài)存放器當(dāng)前狀態(tài)〔現(xiàn)態(tài)〕存放器組合規(guī)律電路下一狀態(tài)〔次態(tài)〕組合規(guī)律輸出組合規(guī)律Moore和Mealy狀態(tài)機(jī)描述的區(qū)分就在于輸出規(guī)律進(jìn)程vhdl語(yǔ)言描述FSM的建立過(guò)程定義狀態(tài)機(jī)的狀態(tài)定義狀態(tài)變量描述狀態(tài)機(jī)的進(jìn)程定義狀態(tài)機(jī)的狀態(tài)在使用狀態(tài)機(jī)之前應(yīng)當(dāng)定義狀態(tài)變量的枚舉類型,可以定義在狀態(tài)機(jī)描述的源文件中,或者是特地的程序包中。例子:TYPEstateIS〔state1,state2〕;交通燈typecoloris(greenred,yellowred,redgreen,redyellow);

定義狀態(tài)變量定義兩個(gè)狀態(tài)機(jī)變量:當(dāng)前狀態(tài)和次態(tài),其中當(dāng)前狀態(tài)描述的是一組存放器,而下?tīng)顟B(tài)描述的是組合規(guī)律。例:signalcurrent_state:state;signalnext_state:state;交通燈:signalcurrent_state:color:=redgreen;signalnext_state:color;描述狀態(tài)機(jī)的進(jìn)程狀態(tài)機(jī)的描述方式:三進(jìn)程、二進(jìn)程、單進(jìn)程(本試驗(yàn)承受)一般承受三個(gè)進(jìn)程來(lái)描述狀態(tài)機(jī)描述狀態(tài)機(jī)存放器的時(shí)序進(jìn)程描述次態(tài)產(chǎn)生規(guī)律的組合規(guī)律進(jìn)程描述輸出組合規(guī)律進(jìn)程狀態(tài)機(jī)存放器的時(shí)序進(jìn)程process(reset,clk)beginifreset=”1”thencurrent_state<=初始狀態(tài);elserising_edge(clk)thencurrent_state<=next_state;endif;endprocess;確定要有復(fù)位信號(hào),否則狀態(tài)機(jī)處于隨機(jī)狀態(tài),無(wú)法開(kāi)頭正常工作次態(tài)轉(zhuǎn)移規(guī)律進(jìn)程process(current_state,其他輸入信號(hào))beginnext_state<=current_state;casecurrent_stateiswhenstate1=>

.......next_state<=某個(gè)狀態(tài);..........whenstate2=>.......next_state<=某個(gè)狀態(tài);..........endcase;endprocess;狀態(tài)轉(zhuǎn)換的條件狀態(tài)的表現(xiàn)次態(tài)轉(zhuǎn)移規(guī)律進(jìn)程在case語(yǔ)句之前,給nenxt_state賦一個(gè)缺省值:next_state<=current_state;其意義在于:當(dāng)case語(yǔ)句中準(zhǔn)備下?tīng)顟B(tài)的規(guī)律比較簡(jiǎn)潔時(shí),就不用給全部的狀況賦值,不關(guān)心的狀況就保持原狀態(tài)。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityStageControlis port( clk:instd_logic;--時(shí)鐘 emergencykey:instd_logic;--緊急開(kāi)關(guān) time_h,time_l:outstd_logic_vector(3downto0);;--定時(shí) red,green,yellow:outstd_logic_vector(3downto0);--紅黃綠燈 );endStageControl;architecturebehavofStageControlistypecoloris(greenred,yellowred,redgreen,redyellow);--四種狀態(tài)beginprocess(clk,emergencykey) variabletempr,tempg,tempy:std_logic_vector(3downto0);--三組燈的中間變量 variabletemp_h,temp_l:std_logic_vector(3downto0);--定時(shí)的中間變量 variabletemp_color:color:=greenred;--initialstage--當(dāng)前狀態(tài)的中間變量begin if(clk”eventandclk=”1”)then caseemergencykeyiswhen”1”=>--thenormalstage casetemp_colorisStageControl.VHD狀態(tài)把握模塊本模塊是單進(jìn)程模式,可改寫為三進(jìn)程模式whengreenred=>--initialstage tempr<=“1100“; tempg<=“0011“; tempy<=“1111“; casestagechangeiswhen”0”=> temp_h<=“0000“; temp_l<=“1001“; stagechange<=”1”; whenothers=> casetemp_lis when“0000“=> temp_l<=“1001“; temp_h<=temp_h-1; when“0001“=> casetemp_his when“0000“=>temp_h<=“0000“; temp_l<=“0000“; stagechange<=”0”; temp_color<=yellowred; whenothers=>temp_l<=“0000“; endcase; whenothers=> temp_l<=temp_l-1; endcase; endcase;其中一個(gè)狀態(tài)的程序其他以此類推紅黃綠燈的亮滅紅黃綠燈亮滅的時(shí)間下一個(gè)狀態(tài)Case:處于保持狀態(tài)時(shí)時(shí)間的遞減Case:推斷狀態(tài)的轉(zhuǎn)換還是保持QuartusII設(shè)計(jì)及仿真狀態(tài)機(jī)查看2.時(shí)間顯示的實(shí)現(xiàn)東西、南北兩個(gè)方向共用8個(gè)數(shù)碼管顯示時(shí)間,為節(jié)省規(guī)律器件的I/O,時(shí)間顯示承受動(dòng)態(tài)掃描的方法。動(dòng)態(tài)掃描的根本原理是對(duì)于一組數(shù)碼管動(dòng)態(tài)掃描顯示需要由兩組信號(hào)來(lái)把握:一組是字段輸出口輸出的字形代碼,用來(lái)把握顯示的字形,稱為段碼;另一組是位輸出口輸出的把握信號(hào),用來(lái)選擇第幾位數(shù)碼管工作,稱為位碼。各位數(shù)碼管的段線并聯(lián),段碼的輸出對(duì)各位數(shù)碼管來(lái)說(shuō)都是一樣的。因此,在同一時(shí)刻假設(shè)各位數(shù)碼管的位選線都處于選通狀態(tài)的話,8位數(shù)碼管將顯示一樣的字符。假設(shè)要各位數(shù)碼管能夠顯示出與本位相應(yīng)的字符,就只讓這一位的位選線處于導(dǎo)通狀態(tài),而其它各位的位選線處于關(guān)閉狀態(tài)。同時(shí),段線上輸出相應(yīng)位要顯示字符的字型碼。這樣在同一時(shí)刻,只有選通的那一位顯示出字符,而其它各位則是熄滅的,如此循環(huán)下去,就可以使各位數(shù)碼管顯示出將要顯示的字符。設(shè)計(jì)框圖:QuartusII設(shè)計(jì)及仿真entityscandisplayisport(clk,emergencykey:instd_logic; catn:outstd_logic_vector(3downto0);timeh1,timel1:instd_logic_vector(3downto0);num_out:outstd_logic_vector(6downto0) );endscandisplay;architecturebehavofscandisplayissignalnum_in:std_logic_vector(3downto0);signalcounter:integerrange0to1;signalled_chioce:std_logic;Beginprocess(clk);--數(shù)碼管掃描beginif(clk”eventandclk=”1”)then counter<=counter+1; ifcounter=1then num_in<=timeh1; led_sel<=“101“; else num_in<=timel1; led_sel<=“100“; endif;endif;endprocess;process(num_in);--顯示譯碼〔共陰?共陽(yáng)〕begincasenum_iniswhen“0000“=>num_out<=?; 。。。。。 when“1001“=>num_out<=?;whenothers=>num_out<=?;endcase;endprocess;Endbehav掃描顯示模塊scandisplay.VHD分頻clk_demultiplier.vhdentityclk_demultiplierisgeneric(div_fre_1kHz:integer:=24999;div_fre_1Hz:integer:=499);port(clk:instd_logic;clk_1kHz,clk_1Hz:bufferstd_logic);endentity;signalfre_1kHz:integerrange0todiv_fre_1kHz;signalfre_1Hz:integerrange0todiv_fre_1Hz;

beginprocess(clk)--將clk_1kHz=clk/50000beginifrising_edge(clk)thenif(fre_1kHz>=div_fre_1kHz)thenfre_1kHz<=0;clk_1kHz<=notclk_1kHz;elsefre_1kHz<=fre_1kHz+1;endif;endif;endprocess;process(clk_1kHz)

--將clk_1Hz=clk_1kHz/1000beginifrising_edge(clk_1kHz)thenif(fre_1Hz>=div_fre_1Hz)thenfre_1Hz<=0;clk_1Hz<=notclk_1Hz;elsefre_1Hz<=fre_1Hz+1;endif;endif;endprocess;

endbehav;libraryieee;useieee.std_logic_1164.all;entitytraffic_light_controlisport( clk,emergencykey:instd_logic; red,green,yellow:outstd_logic_vector(3downto0); led_seg:outstd_logic_vector(7downto0); led_sel:outstd_logic_vector(2downto0) );endtraffic_light_control;architecturebehavoftraffic_light_controlissignalscan_clk,count_clk,temp_key,temp_show:std_logic;signaltemp_sel:std_logic;signaltemp_h,temp_l:std_logic_vector(3downto0);componentclk_demultiplierisgeneric(div_fre_1kHz:integer:=24999;div_fre_1Hz:integer:=499);port(clk:instd_logic;clk_1kHz,clk_1Hz:outstd_logic);endcomponent;componentscandisplayis port( clk:instd_logic; led_sel:outstd_logic_vector(2downto0); time_h,time_l:instd_logic_vector(3downto0); led_segcode:outstd_logic_vector(7downto0) );endcomponent;componentStageControlis port( clk:instd_logic; emergencykey:instd_logic; time_h,time_l:outstd_logic_vector(3downto0); red,green,yellow:outstd_logic_vector(3downto0) );endcomponent;beginu0:clk_demultiplierportmap(clk=>clk,clk_1kHz=>scan_clk,clk_1Hz=>count_clk); u1:StageControlportmap(clk=>count_clk,emergencykey=>emergencykey,red=>red,green=>green,yellow=>yellow,time_h=>temp_h,time_l=>temp_l); u2:scandisplayportmap(clk=>scan_clk,time_h=>temp_h,time_l=>temp_l,led_segcode=>led_seg,led_sel=>led_sel);end;頂層實(shí)體:traffic_light_control.vhd交通燈把握的RTL示意圖引腳鎖定:長(zhǎng)江大學(xué)電工電子示范中心三、提示數(shù)碼管:a(pin_171)b(pin_174)c(pin_176)

d(pin_181)

e(pin_183)f(pin_185)

g(pin_187)

DR(pin_189)

共陰極數(shù)碼管片選:

LED_SEL2(pin_199)

LED_SEL1(pin_197)LED_SEL0(pin_195)

芯片:

CycloneIII,EP3C16Q240C8試驗(yàn)箱數(shù)碼管電路圖數(shù)碼管是4位8段共陰極型,引腳6、8、9、12為位選端,對(duì)應(yīng)從右至左的4位數(shù)碼管的共陰極,低電平有效;引腳11、7、4、2、1、10、5、3對(duì)應(yīng)數(shù)碼管的a~g、DR等8段LED燈,高電平發(fā)亮。LED東西南北方向:紅色r

L11(pin_214)

紅色rL5(pin_186)

紅色rL6(pin_188)紅色r

L0(pin_173)

黃色y

L10(pin_203)黃色y

L4(pin_184)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論