




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 北華航天工業(yè)學(xué)院EDA技術(shù)綜合設(shè)計課程設(shè)計報告報 告 題 目 : 交通信號燈控制電路設(shè)計 作者所在系部: 電子工程系 作者所在專業(yè): 通信工程 作者所在班級: B10231 作 者 姓 名 : 指導(dǎo)教師姓名: 陳剛、褚越強 完 成 時 間 : 2012.11.29 內(nèi) 容 摘 要EDA技術(shù)是現(xiàn)代電子信息工程領(lǐng)域的一門新技術(shù),它是在先進的計算機平臺上開發(fā)出來的一整套電子系統(tǒng)設(shè)計的軟硬件工具,并提供了先進電子系統(tǒng)設(shè)計方法。當今的技術(shù),開發(fā)人員完全可以通過自己的電子系統(tǒng)設(shè)計來制定芯片內(nèi)部的電路功能,使之成為設(shè)計者自己的專用集成電路芯片。這種技術(shù)中常用軟件有maxplusII和quartusII,而
2、程序的編輯是用VHDL語言實現(xiàn)邏輯功能的。本實驗試驗系統(tǒng)中可用可編程邏輯器件為FPGA,本實驗的交通信號燈的設(shè)計:首先在quartusII軟件當中編輯程序,編譯完成之后仿真,當仿真結(jié)果正確時下載到試驗箱的系統(tǒng)中。最終的目的要在實驗板上用紅路燈表示出來,并且同時要用數(shù)碼管顯示出人們的等待時間,交通燈的狀態(tài)變化和顯示時間同步 關(guān)鍵詞: EDA、VHDL、交通燈、控制電路目 錄一、 設(shè)計任務(wù)5二、 設(shè)計結(jié)構(gòu)51、 clk時鐘秒脈沖發(fā)生電路或分頻器 62、 六十進制計數(shù)器63、 次態(tài)發(fā)生器 64、 狀態(tài)寄存器及等待時間輸出 65、 時間顯示電路66、 時鐘掃描電路6三、 原理圖6四、 程序7五、 心得
3、體會 10課程設(shè)計任務(wù)書課題名稱交通信號燈的控制電路設(shè)計完成時間12/11/29指導(dǎo)教師陳剛職稱教授學(xué)生姓名班 級B10231總體設(shè)計要求和技術(shù)要點設(shè)計一個交通信號燈控制電路。要求:1、主干道和支干道交替放行,主干道每次放行30秒,支干道每次放行20秒; 2、每次綠燈變紅燈時,黃燈先亮5秒鐘,此時原紅燈不變;3、用十進制數(shù)字(遞增計數(shù))顯示放行和等待時間。技術(shù)要點:1、主(支)干道紅燈時間等于支(主)干道紅綠黃燈時間之和;2、用時鐘數(shù)據(jù)掃描通過視覺暫留來數(shù)碼管顯示等待時間;3、狀態(tài)寄存器和狀態(tài)寄存器的結(jié)合靈活運用;4、計數(shù)時間值要譯成七段譯碼值。工作內(nèi)容及時間進度安排工作內(nèi)容:在軟件上編輯、編
4、譯程序,并仿真到達實驗要求。進度安排;周一到周四編寫程序,并要求程序能通過編譯仿真;周四下午在實驗板上下載調(diào)試程序;周五周六驗收。課程設(shè)計成果1與設(shè)計內(nèi)容對應(yīng)的軟件程序2課程設(shè)計報告書3成果使用說明書4設(shè)計工作量要求交通信號控制器的VHDL的設(shè)計一、設(shè)計任務(wù)模擬十字路口交通信號燈的工作過程,利用實驗板上的兩組紅、黃、綠LED作為交通信號燈,用數(shù)碼管顯示等待時間。設(shè)計一個交通信號燈控制器。能達到的要求:(1) 交通燈從綠變紅時,有5秒黃燈亮的間隔時間;(2) 交通燈紅變綠是直接進行的,沒有間隔時間;(3) 主干道上的綠燈時間為30秒,支干道的綠燈時間為20秒;(4) 在任意時間,顯示等待時間。
5、支干道 主干道 圖1 路口交通管理示意圖S0S1S2S3主干道交通燈綠(30秒)黃(5秒)紅(20秒)紅(5秒)支干道交通燈紅紅綠黃表1 交通信號燈的4種狀態(tài) 二、設(shè)計結(jié)構(gòu)學(xué)習(xí)EDA開發(fā)軟件和QuartusII的使用方法,熟悉可編程邏輯器件的使用。通過制作來了解交通燈控制系統(tǒng),交通燈控制系統(tǒng)主要是實現(xiàn)城市十字交叉路口紅綠燈的控制。設(shè)計說明(1)第一模塊:clk時鐘秒脈沖發(fā)生電路 在紅綠燈交通信號系統(tǒng)中,大多數(shù)情況是通過自動控制的方式指揮交通的。因此 為了避免意外事件的發(fā)生,電路必須給一個穩(wěn)定的時鐘(clock)才能讓系統(tǒng)正常運作。 模塊說明: 系統(tǒng)輸入信號: Clk: 由外接信號發(fā)生器提供15
6、3的時鐘信號;系統(tǒng)輸出信號: CLK:產(chǎn)生每秒一個脈沖的信號;(2)第二模塊:計數(shù)秒數(shù)選擇電路計數(shù)電路最主要的功能就是記數(shù)負責顯示倒數(shù)的計數(shù)值,對下一個模塊提供狀態(tài)轉(zhuǎn)換 信號。 模塊說明: 系統(tǒng)輸入: CLK: 接收由clk電路的提供的1hz的時鐘脈沖信號;系統(tǒng)輸出信號: tm: 產(chǎn)生顯示電路狀態(tài)轉(zhuǎn)換信號 tl:倒計數(shù)值 秒數(shù)個位變化控制信號 th:倒計數(shù)值 秒數(shù)十位變化控制信號(3)第三模塊:紅綠燈狀態(tài)轉(zhuǎn)換電路 本電路負責紅綠燈的轉(zhuǎn)換。模塊說明:系統(tǒng)輸入信號: CLK: 接收由clk電路的提供的1hz的時鐘脈沖信號; tm: 接收計數(shù)秒數(shù)選擇電路狀態(tài)轉(zhuǎn)換信號;系統(tǒng)輸出信號: da_out:
7、負責紅綠燈的狀態(tài)顯示。 (4)第四模塊:時間顯示電路本電路負責紅綠燈的計數(shù)時間的顯示。 模塊說明:系統(tǒng)輸入信號: tl:倒計數(shù)值 秒數(shù)個位變化控制信號; th:倒計數(shù)值 秒數(shù)十位變化控制信號;系統(tǒng)輸出信號: led7s1: 負責紅綠燈的顯示秒數(shù)個位。 led7s2: 負責紅綠燈的顯示秒數(shù)十位。三 、原理圖信號燈輸出分頻計計數(shù)器時間顯示狀態(tài)寄存器 七段段碼數(shù)碼管片選次態(tài)發(fā)生器時鐘掃描四、實驗程序library ieee;use ieee. std_logic_1164.all; use ieee. std_logic_unsigned.all;entity traffic is port (cl
8、k_in:in std_logic; selout:out std_logic_vector(6 downto 0); -定義數(shù)碼管的七段顯示 sel:out std_logic_vector(1 downto 0); -數(shù)碼管個位十位選擇段 da_out:out std_logic_vector(5 downto 0);-定義主次干道的紅綠燈(主紅黃綠支紅黃綠) end traffic;architecture one of traffic is type dm is (s0,s1,s2,s3);-自定義狀態(tài)四種 signal current_state,next_state:dm;-當前狀
9、態(tài)與次態(tài)均在四種狀態(tài)之間變化 signal clk:std_logic;-一秒時鐘信號 signal count:std_logic_vector(1 downto 0);-個十位選擇端(sel) signal led7s1: std_logic_vector(6 downto 0);-十位數(shù)碼管控制端 signal led7s2: std_logic_vector(6 downto 0);-個位數(shù)碼管控制端 signal time0 : std_logic_vector (6 downto 0);-遞增計數(shù) signal tm : std_logic_vector (6 downto 0);
10、-剩余時間 倒計時 signal tl: std_logic_vector (6 downto 0);-個位數(shù)碼管顯示情況控制 signal th: std_logic_vector (1 downto 0);-十位數(shù)碼管顯示情況控制 begin sel<=count;fen:process(clk_in) variable cnt: std_logic_vector (16 downto 0);begin if clk_in' event and clk_in='1' then-產(chǎn)生153hz分頻,上升沿有效產(chǎn)生clk if cnt = "100110
11、00100101101" then cnt:="00000000000000000" clk<='1' else cnt:= cnt+1; clk <= '0' end if; end if;end process fen;a:process(clk_in,count) -不斷掃描出現(xiàn)count的00和01的選擇 begin if clk_in'event and clk_in='1' then if count="01"then count<="00"
12、; else count<=count+1; end if; end if; case count is when"00"=>selout<=led7s2; when"01"=>selout<=led7s1; when others=>null; end case;end process a;process (clk) begin if clk'event and clk='1'then -60秒的循環(huán)設(shè)計 if time0= "0111100" then time0 <
13、;="0000001" else time0<=time0+1; end if; end if;end process;reg:process( clk,current_state) -定義當前狀態(tài)與次態(tài)的關(guān)系 begin -產(chǎn)生上升沿時次態(tài)把自己的狀態(tài)賦予當前狀態(tài) if clk='1' and clk'event then current_state<=next_state; end if;end process reg;com:process(current_state, time0) begin case current_state
14、 is when s0=>da_out<="001100"tm<=30-time0; -主綠和支紅狀態(tài),當計時到29 if time0=29 then next_state<=s1; -秒時將s1狀態(tài)賦給次態(tài),此時 else next_state<=s0; -當前狀態(tài)還是s0,等到下一個 end if; -上升沿后次態(tài)將s1賦給當前狀 when s1=>da_out<="010100"tm<=35-time0; -態(tài) if time0=34 then next_state<=s2; else next
15、_state<=s1; end if; when s2=>da_out<="100001"tm<=55-time0; if time0=54 then next_state<=s3; else next_state<=s2; end if; when s3=>da_out<="100010"tm<=60-time0; if time0=59 then next_state<=s0; else next_state<=s3; end if; end case;end process com;
16、process (tm) begin if tm>=30 THEN th<="11"tl<="0000000" elsif tm>=20 THEN th<="10"tl<=tm-20; elsif tm>=10 THEN th<="01"tl<=tm-10; else th<="00"tl<=tm; end if;end process;process(th,tl) begin case th is when"00&qu
17、ot;=>led7s1<="1111110" when"01"=>led7s1<="0110000" when"10"=>led7s1<="1101101" when"11"=>led7s1<="1111001" when others=>null; end case; case tl is when "0000000"=>led7s2<="1111110&qu
18、ot; when"0000001"=>led7s2<= "0110000" when "0000010"=>led7s2<="1101101" when"0000011"=>led7s2<= "1111001" when"0000100"=>led7s2<= "0110011" when "0000101"=>led7s2<="1011011&qu
19、ot; when "0000110"=>led7s2<="1011111" when"0000111"=>led7s2<= "1110000" when "0001000"=>led7s2<="1111111" when "0001001"=>led7s2<="1111011" when others=>null; end case;end process;end one;LIBRA
20、RY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY traffic IS PORT (CLK:in std_logic; led7s:out std_logic_vector(6 downto 0); sel:out std_logic_vector(1 downto 0); comb_out:out std_logic_vector(5 downto 0); END traffic;ARCHITECTURE one OF traffic ISTYPE dm IS (s0,s1,s2,s3); S
21、Ignal current_state,next_state:dm; SIGNAL FULL : STD_LOGIC; Signal count: std_logic_vector(1 downto 0); Signal led7s1: std_logic_vector(6 downto 0); Signal led7s2: std_logic_vector(6 downto 0); SIGNAL tl :STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL th:STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL tm :STD_LOGIC_VECT
22、OR(6 DOWNTO 0); SIGNAL time1 :STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINSel<=count; P_REG: PROCESS(CLK) VARIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLK'EVENT AND CLK='1' THEN IF CNT8 = "11111111" THEN CNT8:="00000000" FULL<='1' ELSE CNT8 := CNT8+1; FULL
23、 <= '0' END IF; END IF; END PROCESS P_REG;A:process(CLK,count)BeginIf CLK'event and CLK='1'thenIf count="01" thenCount<="00"Else count<=count+1;End if;End if;Case count isWhen"00"=>led7s<=led7s2;When"01"=>led7s<=led7s1;
24、When others=>null;End case;End process A;PROCESS(full)BEGINIF full'EVENT AND full='1' THEN IF time1="0111100" THEN time1<="0000001" ELSe time1 <=time1+1; END IF;END IF;END PROCESS; REG:process( full,current_state) BEGIN IF full='1' AND full'EVENT
25、THEN current_state<=next_state; END IF; END process REG; COM:process(current_state, time1) begincase current_state iswhen s0=>comb_out<="001100"tm<=30-time1; if time1=29 then next_state<=s1; else next_state<=s0; end if;when s1=>comb_out<="010100"tm<=35-
26、time1;if time1=34 then next_state<=s2; else next_state<=s1; end if;when s2=>comb_out<="100001"tm<=55-time1; if time1=54 then next_state<=s3; else next_state<=s2; end if;when s3=>comb_out<="100010"tm<=60-time1;if time1=59 then next_state<=s0; else
27、next_state<=s3; end if; end case;end process COM;PROCESS(tm)BEGIN IF tm>=30 THEN th<="11"tl<=tm-30;ELSIF tm>=20 THEN th<="10"tl<=tm-20;ELSIF tm>=10 THEN th<="01"tl<=tm-10;ELSE th<="00"tl<=tm;END IF;END PROCESS;process(th,tl) begincase th is when"00"=>led7s1<="1111110" when"01"=>led7s1<="0110000" when"10"=>led7s1<="1101101&quo
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國瀝青去除劑行業(yè)市場全景分析及前景機遇研判報告
- 2024年度浙江省二級造價工程師之安裝工程建設(shè)工程計量與計價實務(wù)??寄M試題(全優(yōu))
- 2024年度浙江省二級注冊建筑師之法律法規(guī)經(jīng)濟與施工高分通關(guān)題庫A4可打印版
- 股權(quán)培訓(xùn)計劃方案
- 腫瘤患者飲食營養(yǎng)科學(xué)指南
- 幼兒園中層管理者培訓(xùn)課程
- 幼兒心理健康發(fā)展指導(dǎo)
- 關(guān)于創(chuàng)新的培訓(xùn)
- 華文老師面試題及答案
- 卓越青年領(lǐng)袖培訓(xùn)班
- 小學(xué)生匯報講課件
- 2025浙江嘉興市海寧市嘉睿人力招聘5人筆試參考題庫附帶答案詳解析版
- 2025年安徽蚌埠市龍子湖區(qū)東方人力資源有限公司招聘筆試參考題庫含答案解析
- 2025至2030中國云計算行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 黨課課件含講稿:《關(guān)于加強黨的作風建設(shè)論述摘編》輔導(dǎo)報告
- GB/T 19023-2025質(zhì)量管理體系成文信息指南
- 2025中考歷史高頻點速記大全
- 2025年特種設(shè)備作業(yè)人員氣瓶充裝P證考試題庫
- 《智能駕駛輔助系統(tǒng)ADAS》課件
- 2024年自然資源部所屬單位招聘筆試真題
- 多余物管理制度
評論
0/150
提交評論