第一篇:基于FPGA的交通燈控制系統(tǒng)
基于FPGA的交通燈控制系統(tǒng)
摘 要:針對現(xiàn)實中越來越嚴(yán)重的城市交通擁堵現(xiàn)象,提出了一種城市十字路口 交通信號燈控制與FPGA實現(xiàn)的新方法。利用超高速硬件描述語言VHDL設(shè)計十字路口交通信號燈控制器,實現(xiàn)主干道和支干道的交通控制功能,實時監(jiān)測每個路口的車輛通行情況,以此更改主干道與支干道的交通燈狀態(tài),提高十字路口的車輛通行效率,最后通過硬件測試實現(xiàn)具體功能。
關(guān)鍵詞:VHDL FPGA 交通燈控制
一、概述 1.1 設(shè)計要求:
(1)設(shè)計一個交通信號燈控制器,由一條主干道和一條支干道匯合成十字路口,在每個入口處設(shè)置紅、綠、黃三色信號燈,紅燈亮禁止通行,綠燈亮允許通行,黃燈亮則給行駛中的車輛有時間停在禁行線外。(2)紅、綠、黃發(fā)光二極管作信號燈。
(3)主干道處于常允許通行的狀態(tài),支干道有車來時才允許通行。主干道亮綠燈時,支干道亮紅燈;支干道亮綠燈時,主干道亮紅燈。
(4)主、支干道均有車時,兩者交替允許通行,主干道每次放行45秒,支干道每次放行25秒,設(shè)立45秒、25秒計時、顯示電路。
(5)在每次由綠燈亮到紅燈亮的轉(zhuǎn)換過程中,要亮5秒黃燈作為過渡,使行駛中的車輛有時間停到禁行線外,設(shè)立5秒計時、顯示電路。1.2 課題分析
(1)主支道路分4種行車狀況,無無、無有、有無、有有,此信號從傳感器輸出信號得到,作為系統(tǒng)的輸入,在本系統(tǒng)中用撥片開關(guān)模擬狀態(tài)輸入。(2)主支道路有4種亮燈情況:主綠支紅、主黃支紅、支綠主紅、支黃主紅。(3)只要支路無車通行,則一直為主綠支紅狀態(tài),只有支路有車通過才會進入支綠主紅狀態(tài)。
(4)系統(tǒng)可以根據(jù)行車情況智能進入相應(yīng)亮燈情況,提高了十字路口的通車效率。
(5)用6個發(fā)光二極管作為主道路綠黃紅三燈顯示輸出和支道路綠黃紅三燈顯示輸出;用4個數(shù)碼管分別作為主支道路倒計時顯示輸出。
二、系統(tǒng)方案設(shè)計 2.1 整體模塊設(shè)計 2.1.1整體設(shè)計思路
整體設(shè)計思路為:交通燈控制系統(tǒng)主要包括兩個模塊,即交通燈控制模塊和倒計時顯示模塊。首先利用教學(xué)實驗箱提供的1HZ時鐘信號,實現(xiàn)計數(shù)功能,1s計數(shù)一次,同時設(shè)定主干道、支干道的交通燈的具體亮燈時間,并將計數(shù)結(jié)果傳給倒計時模塊,以實現(xiàn)倒計時模塊顯示的時間與交通燈的狀態(tài)相對應(yīng)。在交通燈控制過程中,用狀態(tài)機來實現(xiàn),設(shè)定主干道、支干道的行車檢測信號,用以進行狀態(tài)變換。每進入一個狀態(tài)就開始計數(shù),該狀態(tài)結(jié)束則清零,在下個狀態(tài)開始時重新計數(shù),實現(xiàn)每個狀態(tài)亮燈時間不同的需求。2.1.2 整體設(shè)計框架
根據(jù)系統(tǒng)要求可知:
輸入信號為系統(tǒng)時鐘,主支道路行車情況模擬輸入。輸出信號為主支道路紅綠黃顯示信號、倒計時顯示。
2.2 交通燈狀態(tài)轉(zhuǎn)換模塊設(shè)計
由原理分析可知系統(tǒng)需要在4種亮燈狀態(tài)之間切換,所以需要設(shè)計一個狀態(tài)轉(zhuǎn)換控制模塊,而倒計時顯示則來自內(nèi)部的計數(shù),所以狀態(tài)轉(zhuǎn)換模塊內(nèi)部包含了計數(shù)模塊,又因為二極管模擬紅綠燈顯示是和亮燈狀態(tài)緊密相關(guān)的,所以相應(yīng)的二極管控制整合在狀態(tài)轉(zhuǎn)換控制模塊內(nèi)部。故在狀態(tài)轉(zhuǎn)換模塊內(nèi)部包含3個子模塊,分別為計數(shù)模塊、狀態(tài)轉(zhuǎn)換控制模塊、二極管實現(xiàn)模塊。最后因為數(shù)碼管動態(tài)顯示模塊需要根據(jù)亮燈狀態(tài)決定輸出,所以本模塊還需增加計數(shù)輸出以及狀態(tài)輸出信號。該模塊計數(shù)采用1hz的時鐘脈沖,以期實現(xiàn)交通燈的秒數(shù)設(shè)置。
狀態(tài)循環(huán)控制: S0:主干道綠燈支干道紅燈45s S1:主干道黃燈支干道紅燈5s S2:主干道紅燈支干道綠燈25s S3:主干道紅燈支干道黃燈5s
2.3 數(shù)碼管倒計時顯示模塊設(shè)計
由于此模塊采用了數(shù)碼管的動態(tài)顯示原理,所以代碼量較多,單獨分為一個模塊,又因為動態(tài)顯示倒計時間是與亮燈狀態(tài)緊密相關(guān)的,所以必須從交通燈狀態(tài)控制模塊獲取相關(guān)的狀態(tài)輸入,引出狀態(tài)輸出信號,以供本模塊使用。又因為動態(tài)顯示需要較高的時鐘頻率,所以本模塊的時鐘信號采用系統(tǒng)輸入信號,而非之前計數(shù)的1hz時鐘。4位數(shù)碼管的前兩位顯示支干道的亮燈時間,后兩位顯示主干道的亮燈時間。
三、硬件設(shè)計 3.1總體設(shè)計框圖
由clk1hz輸入,用來計數(shù),道路行車檢測由pass_state1,pass_state0控制,pass_state1為主干道行車檢測,pass_state0為支干道行車檢測。1為有車通行,0為無車通行,輸出為數(shù)碼管的位選信號和段選信號,以及6個二極管控制信號。
3.2交通燈狀態(tài)轉(zhuǎn)換模塊
輸入計數(shù)時鐘和行車控制,輸出主干道以及支干道紅綠黃三燈的控制信號,最重要的是將此時的計數(shù)時間輸出給倒計時模塊,并將4個狀態(tài)的狀態(tài)輸出信號給倒計時模塊,實現(xiàn)在對應(yīng)的狀態(tài)下顯示對應(yīng)的時間。3.3數(shù)碼管倒計時顯示模塊
為了實現(xiàn)數(shù)碼管動態(tài)掃描,此模塊的時鐘使用較高頻率,輸入上級電路的計數(shù)輸出和狀態(tài)輸出,給出位選以及段選信號的控制。
四、硬件測試 4.1 引腳分配
Pin_3——1hz時鐘輸入,用于狀態(tài)控制模塊 Pin_33——24khz時鐘輸入,用于數(shù)碼管動態(tài)掃描 Pin_4——K1 支干道行車模擬輸入 Pin_5——K2 主干道行車模擬輸入
Pin_6,Pin_8,Pin_10——數(shù)碼管位選信號
Pin_11,Pin_12,Pin_13,Pin_14,Pin_15,Pin_30,Pin_31——數(shù)碼管段選信號
Pin_34——R1主干道紅燈 Pin_35——Y1 主干道黃燈 Pin_36——G1 主干道綠燈 Pin_37——R2 支干道紅燈 Pin_39——Y2 支干道黃燈 Pin_40——G2 支干道綠燈
4.2 仿真結(jié)果 交通燈顯示:
倒計時顯示:
S1狀態(tài)(支紅主黃):
S0狀態(tài)(支紅主綠)
五、總結(jié)
基本實現(xiàn)了設(shè)計所需的功能,能根據(jù)道路行車情況實現(xiàn)交通燈的智能控制,并將紅綠燈通行的時間通過數(shù)碼管直觀顯示出來,較好的完成了十字路口交通情況的模擬。
六、附錄
6.1 頂層模塊源程序
LIBRARY IEEE;---自動交通燈控制系統(tǒng)頂層描述 USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY TRAFFIC_LIGHT_CONTROL IS PORT(CLK1hz,CLK1khz : IN STD_LOGIC;---信號時鐘輸入
PASS_STATE : IN STD_LOGIC_VECTOR(1 DOWNTO 0);---主支通道的通車情況,低位為支通道高位為主通道,0為無車1為有車
ALIGHT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);---主干道紅綠黃燈控制信號 BLIGHT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);---支干道紅綠黃燈控制信號 SEL : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);---輸出數(shù)碼管位選信號 LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)---輸出數(shù)碼管段選信號);END ENTITY TRAFFIC_LIGHT_CONTROL;
ARCHITECTURE behav OF TRAFFIC_LIGHT_CONTROL IS COMPONENT STATE_CONTROL PORT(CLK1 : IN STD_LOGIC;---1Hz時鐘信號輸入
PASS_STATE_IN : IN STD_LOGIC_VECTOR(1 DOWNTO 0);---主支通道的通車情況,低位為支通道高位為主通道,0為無車1為有車
A_LIGHT: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);---主干道紅綠黃燈控制信號 B_LIGHT: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);---支干道紅綠黃燈控制信號 CNTOUT : OUT STD_LOGIC_VECTOR(5 DOWNTO 0);---已計數(shù)時間輸出
STATEOUT : OUT STD_LOGIC_VECTOR(1 DOWNTO 0)---狀態(tài)輸出,傳遞給數(shù)碼顯示模塊);END COMPONENT;
COMPONENT DISPLAY PORT(CLK2 : IN STD_LOGIC;---1KHz時鐘信號輸入
CNTIN : IN STD_LOGIC_VECTOR(5 DOWNTO 0);---亮燈已過時間輸入 STATEIN : IN STD_LOGIC_VECTOR(1 DOWNTO 0);---狀態(tài)輸入
LED7SOUT : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);---數(shù)碼管段選信號輸出 SELOUT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)---數(shù)碼管位選信號輸出);END COMPONENT;
SIGNAL MSTATE : STD_LOGIC_VECTOR(1 DOWNTO 0);---中間信號傳遞通車狀態(tài)
SIGNAL MCNT : STD_LOGIC_VECTOR(5 DOWNTO 0);---中間信號傳遞亮燈已計數(shù)時間
BEGIN---例化語句
U1: STATE_CONTROL PORT MAP(CLK1=>CLK1hz,PASS_STATE_IN=>PASS_STATE,B_LIGHT=>BLIGHT, A_LIGHT=>ALIGHT, CNTOUT=>MCNT, STATEOUT=>MSTATE);U2: DISPLAY PORT MAP(CLK2=>CLK1khz,CNTIN=>MCNT,STATEIN=>MSTATE,LED7SOUT=>LED7S,SELOUT=>SEL);
END ARCHITECTURE behav;6.2 交通燈狀態(tài)轉(zhuǎn)換模塊源程序
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY STATE_CONTROL IS GENERIC(GREENA_CNT:INTEGER:=45;---主通道綠燈亮的時間45s
YELLOWA_CNT:INTEGER:=5;---主通道黃燈亮的時間5s
GREENB_CNT:INTEGER:=25;---支通道綠燈亮的時間25s
YELLOWB_CNT:INTEGER:=5);---支通道黃燈亮的時間5s PORT(CLK1 : IN STD_LOGIC;---1Hz時鐘信號輸入
PASS_STATE_IN : IN STD_LOGIC_VECTOR(1 DOWNTO 0);---主支通道的通車情況,低位為支通道高位為主通道,0為無車1為有車
A_LIGHT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);---主干道紅綠黃燈控制信號 B_LIGHT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);---支干道紅綠黃燈控制信號 CNTOUT : OUT STD_LOGIC_VECTOR(5 DOWNTO 0);---已計數(shù)時間輸出 STATEOUT : OUT STD_LOGIC_VECTOR(1 DOWNTO 0)---剩余時間輸出顯示);END ENTITY STATE_CONTROL;
ARCHITECTURE behav OF STATE_CONTROL IS TYPE STATES IS(ST0,ST1,ST2,ST3);---4個狀態(tài)分別為【主綠支紅45s、主黃支紅5s、支綠主紅25s、支黃主紅5s、】
SIGNAL STATE : STATES:=ST0;---初始化狀態(tài)為狀態(tài)0 SIGNAL CNT_EN : STD_LOGIC:='0';---計數(shù)使能控制信號,初始不計數(shù)
SIGNAL CNT : STD_LOGIC_VECTOR(5 DOWNTO 0):=“000001”;---因為初始不計數(shù),但已過一個周期,所以初值為1 BEGIN
PROCESS(CLK1)BEGIN IF CLK1'EVENT AND CLK1 = '0' THEN
IF(CNT_EN='1')THEN---計數(shù)模塊
CNT<=CNT+1;ELSE
CNT<=“000001”;---若溢出則計數(shù)使能為0,CNT重新賦值為1 END IF;CASE STATE IS---狀態(tài)循環(huán)控制模塊 WHEN ST0 => IF(CNT=GREENA_CNT)THEN---主綠支紅若計數(shù)滿45s則根據(jù)主支通道的通車情況決定轉(zhuǎn)入下一個狀態(tài)
CASE PASS_STATE_IN IS
WHEN “00” => STATE<=ST0;
WHEN “01” => STATE<=ST1;
WHEN “10” => STATE<=ST0;
WHEN “11” => STATE<=ST1;
WHEN OTHERS => NULL;
END CASE;ELSE
STATE<=ST0;---若計數(shù)未滿則為原來狀態(tài)
END IF;WHEN ST1 =>---主黃支紅若計數(shù)滿5s則根據(jù)主支通道的通車情況決定轉(zhuǎn)入下一個狀態(tài)
IF(CNT=YELLOWA_CNT)THEN
CASE PASS_STATE_IN IS
WHEN “00” => STATE<=ST2;
WHEN “01” => STATE<=ST2;
WHEN “10” => STATE<=ST2;
WHEN “11” => STATE<=ST2;
WHEN OTHERS => NULL;
END CASE;ELSE
STATE<=ST1;---若計數(shù)未滿則為原來狀態(tài) END IF;WHEN ST2 =>---支綠主紅若計數(shù)滿25s則根據(jù)主支通道的通車情況決定轉(zhuǎn)入下一個狀態(tài)
IF(CNT=GREENB_CNT)THEN
CASE PASS_STATE_IN IS
WHEN “00” => STATE<=ST3;
WHEN “01” => STATE<=ST2;
WHEN “10” => STATE<=ST3;
WHEN “11” => STATE<=ST3;
WHEN OTHERS => NULL;
END CASE;ELSE
STATE<=ST2;---若計數(shù)未滿則為原來狀態(tài)
END IF;
WHEN ST3 =>---支黃主紅若計數(shù)滿5s則根據(jù)主支通道的通車情況決定轉(zhuǎn)入下一個狀態(tài)
IF(CNT=YELLOWA_CNT)THEN
CASE PASS_STATE_IN IS
WHEN “00” => STATE<=ST0;
WHEN “01” => STATE<=ST0;
WHEN “10” => STATE<=ST0;
WHEN “11” => STATE<=ST0;
WHEN OTHERS => NULL;
END CASE;ELSE
STATE<=ST3;---若計數(shù)未滿則為原來狀態(tài)
END IF;END CASE;END IF;CNTOUT<=CNT;END PROCESS;
PROCESS(STATE)BEGIN CASE STATE IS WHEN ST0 =>---狀態(tài)0時主綠支紅
A_LIGHT<=“010”;B_LIGHT<=“100”;CNT_EN<='1';STATEOUT<=“00”;---將當(dāng)前狀態(tài)傳遞給數(shù)碼管顯示模塊,以供后續(xù)使用 IF(CNT=GREENA_CNT)THEN CNT_EN<='0';END IF;
WHEN ST1 =>---狀態(tài)1時主黃支紅
A_LIGHT<=“001”;B_LIGHT<=“100”;CNT_EN<='1';STATEOUT<=“01”;---將當(dāng)前狀態(tài)傳遞給數(shù)碼管顯示模塊,以供后續(xù)使用 IF(CNT=YELLOWA_CNT)THEN CNT_EN<='0';END IF;
WHEN ST2 =>---狀態(tài)2時支綠主紅
A_LIGHT<=“100”;B_LIGHT<=“010”;CNT_EN<='1';STATEOUT<=“10”;---將當(dāng)前狀態(tài)傳遞給數(shù)碼管顯示模塊,以供后續(xù)使用 IF(CNT=GREENB_CNT)THEN CNT_EN<='0';END IF;
WHEN ST3 =>---狀態(tài)3時支黃主紅
A_LIGHT<=“100”;B_LIGHT<=“001”;CNT_EN<='1';STATEOUT<=“11”;---將當(dāng)前狀態(tài)傳遞給數(shù)碼管顯示模塊,以供后續(xù)使用 IF(CNT=YELLOWB_CNT)THEN CNT_EN<='0';END IF;
END CASE;END PROCESS;END behav;6.3 數(shù)碼管顯示倒計時源程序
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY DISPLAY IS PORT(CLK2 : IN STD_LOGIC;---時鐘輸入
CNTIN : IN STD_LOGIC_VECTOR(5 DOWNTO 0);---已計數(shù)輸入,來自狀態(tài)控制模塊 STATEIN : IN STD_LOGIC_VECTOR(1 DOWNTO 0);---狀態(tài)輸入,來自狀態(tài)控制模塊 LED7SOUT : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);---數(shù)碼管段選信號輸出 SELOUT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)---數(shù)碼管位選信號輸出);END ENTITY DISPLAY;ARCHITECTURE behav OF DISPLAY IS BEGIN PROCESS(CLK2)VARIABLE BITSEL : STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN-----------------------------位選信號循環(huán)模塊----------------IF CLK2'EVENT AND CLK2='0' THEN CASE BITSEL IS WHEN “000” => BITSEL:=“001”;SELOUT<=“001”;WHEN “001” => BITSEL:=“010”;SELOUT<=“010”;WHEN “010” => BITSEL:=“011”;SELOUT<=“011”;WHEN “011” => BITSEL:=“000”;SELOUT<=“000”;WHEN OTHERS => NULL;END CASE;END IF;-------------------------動態(tài)顯示模塊-----------------CASE STATEIN IS WHEN “00” =>---主綠支紅狀態(tài) OK CASE BITSEL IS WHEN “000” =>---主綠支紅狀態(tài) 點亮支干道十位數(shù)字 OK CASE CNTIN IS WHEN “000001” => LED7SOUT <= “1101101”;---01 50 WHEN “000010” => LED7SOUT <= “1100110”;---02 49 WHEN “000011” => LED7SOUT <= “1100110”;WHEN “000100” => LED7SOUT <= “1100110”;WHEN “000101” => LED7SOUT <= “1100110”;WHEN “000110” => LED7SOUT <= “1100110”;---06 45 WHEN “000111” => LED7SOUT <= “1100110”;WHEN “001000” => LED7SOUT <= “1100110”;WHEN “001001” => LED7SOUT <= “1100110”;WHEN “001010” => LED7SOUT <= “1100110”;WHEN “001011” => LED7SOUT <= “1100110”;---11 40 WHEN “001100” => LED7SOUT <= “1001111”;WHEN “001101” => LED7SOUT <= “1001111”;WHEN “001110” => LED7SOUT <= “1001111”;WHEN “001111” => LED7SOUT <= “1001111”;WHEN “010000” => LED7SOUT <= “1001111”;---16 35 WHEN “010001” => LED7SOUT <= “1001111”;WHEN “010010” => LED7SOUT <= “1001111”;WHEN “010011” => LED7SOUT <= “1001111”;WHEN “010100” => LED7SOUT <= “1001111”;WHEN “010101” => LED7SOUT <= “1001111”;---21 30 WHEN “010110” => LED7SOUT <= “1011011”;WHEN “010111” => LED7SOUT <= “1011011”;WHEN “011000” => LED7SOUT <= “1011011”;WHEN “011001” => LED7SOUT <= “1011011”;WHEN “011010” => LED7SOUT <= “1011011”;---26 25 WHEN “011011” => LED7SOUT <= “1011011”;WHEN “011100” => LED7SOUT <= “1011011”;WHEN “011101” => LED7SOUT <= “1011011”;WHEN “011110” => LED7SOUT <= “1011011”;WHEN “011111” => LED7SOUT <= “1011011”;---31 20 WHEN “100000” => LED7SOUT <= “0000110”;WHEN “100001” => LED7SOUT <= “0000110”;WHEN “100010” => LED7SOUT <= “0000110”;WHEN “100011” => LED7SOUT <= “0000110”;WHEN “100100” => LED7SOUT <= “0000110”;---36 15 WHEN “100101” => LED7SOUT <= “0000110”;WHEN “100110” => LED7SOUT <= “0000110”;WHEN “100111” => LED7SOUT <= “0000110”;WHEN “101000” => LED7SOUT <= “0000110”;WHEN “101001” => LED7SOUT <= “0000110”;---41 10 WHEN “101010” => LED7SOUT <= “0111111”;WHEN “101011” => LED7SOUT <= “0111111”;WHEN “101100” => LED7SOUT <= “0111111”;WHEN “101101” => LED7SOUT <= “0111111”;---45 06 WHEN OTHERS => NULL;END CASE;WHEN “001” =>---主綠支紅狀態(tài) 點亮支干道個位數(shù)字 OK CASE CNTIN IS WHEN “000001” => LED7SOUT <= “0111111”;---01 50 WHEN “000010” => LED7SOUT <= “1101111”;---02 49 WHEN “000011” => LED7SOUT <= “1111111”;WHEN “000100” => LED7SOUT <= “0000111”;WHEN “000101” => LED7SOUT <= “1111101”;WHEN “000110” => LED7SOUT <= “1101101”;WHEN “000111” => LED7SOUT <= “1100110”;---07 44 WHEN “001000” => LED7SOUT <= “1001111”;WHEN “001001” => LED7SOUT <= “1011011”;WHEN “001010” => LED7SOUT <= “0000110”;WHEN “001011” => LED7SOUT <= “0111111”;WHEN “001100” => LED7SOUT <= “1101111”;---12 39 WHEN “001101” => LED7SOUT <= “1111111”;WHEN “001110” => LED7SOUT <= “0000111”;WHEN “001111” => LED7SOUT <= “1111101”;WHEN “010000” => LED7SOUT <= “1101101”;WHEN “010001” => LED7SOUT <= “1100110”;---17 34 WHEN “010010” => LED7SOUT <= “1001111”;WHEN “010011” => LED7SOUT <= “1011011”;WHEN “010100” => LED7SOUT <= “0000110”;WHEN “010101” => LED7SOUT <= “0111111”;WHEN “010110” => LED7SOUT <= “1101111”;---22 29 WHEN “010111” => LED7SOUT <= “1111111”;WHEN “011000” => LED7SOUT <= “0000111”;WHEN “011001” => LED7SOUT <= “1111101”;WHEN “011010” => LED7SOUT <= “1101101”;WHEN “011011” => LED7SOUT <= “1100110”;---27 24 WHEN “011100” => LED7SOUT <= “1001111”;WHEN “011101” => LED7SOUT <= “1011011”;WHEN “011110” => LED7SOUT <= “0000110”;WHEN “011111” => LED7SOUT <= “0111111”;WHEN “100000” => LED7SOUT <= “1101111”;---32 19 WHEN “100001” => LED7SOUT <= “1111111”;WHEN “100010” => LED7SOUT <= “0000111”;WHEN “100011” => LED7SOUT <= “1111101”;WHEN “100100” => LED7SOUT <= “1101101”;WHEN “100101” => LED7SOUT <= “1100110”;---37 14 WHEN “100110” => LED7SOUT <= “1001111”;WHEN “100111” => LED7SOUT <= “1011011”;WHEN “101000” => LED7SOUT <= “0000110”;WHEN “101001” => LED7SOUT <= “0111111”;---41 09 WHEN “101010” => LED7SOUT <= “1101111”;WHEN “101011” => LED7SOUT <= “1111111”;WHEN “101100” => LED7SOUT <= “0000111”;WHEN “101101” => LED7SOUT <= “1111101”;---45 06 WHEN OTHERS => NULL;END CASE;WHEN “010” =>---主綠支紅狀態(tài) 點亮主干道十位數(shù)字 OK CASE CNTIN IS WHEN “000000” => LED7SOUT <= “1111101”;---00 46 WHEN “000001” => LED7SOUT <= “1100110”;WHEN “000010” => LED7SOUT <= “1100110”;WHEN “000011” => LED7SOUT <= “1100110”;WHEN “000100” => LED7SOUT <= “1100110”;WHEN “000101” => LED7SOUT <= “1100110”;---05 41 WHEN “000110” => LED7SOUT <= “1100110”;WHEN “000111” => LED7SOUT <= “1001111”;WHEN “001000” => LED7SOUT <= “1001111”;WHEN “001001” => LED7SOUT <= “1001111”;WHEN “001010” => LED7SOUT <= “1001111”;---10 36 WHEN “001011” => LED7SOUT <= “1001111”;WHEN “001100” => LED7SOUT <= “1001111”;WHEN “001101” => LED7SOUT <= “1001111”;WHEN “001110” => LED7SOUT <= “1001111”;WHEN “001111” => LED7SOUT <= “1001111”;---15 31 WHEN “010000” => LED7SOUT <= “1001111”;WHEN “010001” => LED7SOUT <= “1011011”;WHEN “010010” => LED7SOUT <= “1011011”;WHEN “010011” => LED7SOUT <= “1011011”;WHEN “010100” => LED7SOUT <= “1011011”;---20 26 WHEN “010101” => LED7SOUT <= “1011011”;WHEN “010110” => LED7SOUT <= “1011011”;WHEN “010111” => LED7SOUT <= “1011011”;WHEN “011000” => LED7SOUT <= “1011011”;WHEN “011001” => LED7SOUT <= “1011011”;---25 21 WHEN “011010” => LED7SOUT <= “1011011”;WHEN “011011” => LED7SOUT <= “0000110”;WHEN “011100” => LED7SOUT <= “0000110”;WHEN “011101” => LED7SOUT <= “0000110”;WHEN “011110” => LED7SOUT <= “0000110”;---30 16 WHEN “011111” => LED7SOUT <= “0000110”;WHEN “100000” => LED7SOUT <= “0000110”;WHEN “100001” => LED7SOUT <= “0000110”;WHEN “100010” => LED7SOUT <= “0000110”;WHEN “100011” => LED7SOUT <= “0000110”;---35 11 WHEN “100100” => LED7SOUT <= “0000110”;---36 10 WHEN “100101” => LED7SOUT <= “0111111”;WHEN “100110” => LED7SOUT <= “0111111”;WHEN “100111” => LED7SOUT <= “0111111”;WHEN “101000” => LED7SOUT <= “0111111”;WHEN “101001” => LED7SOUT <= “0111111”;WHEN “101010” => LED7SOUT <= “0111111”;WHEN “101011” => LED7SOUT <= “0111111”;WHEN “101100” => LED7SOUT <= “0111111”;WHEN “101101” => LED7SOUT <= “0111111”;---45 01 WHEN OTHERS => NULL;END CASE;WHEN “011” =>---主綠支紅狀態(tài) 點亮主干道個位數(shù)字 OK CASE CNTIN IS WHEN “000000” => LED7SOUT <= “1111101”;---00 46 WHEN “000001” => LED7SOUT <= “1101101”;---01 45 WHEN “000010” => LED7SOUT <= “1100110”;WHEN “000011” => LED7SOUT <= “1001111”;WHEN “000100” => LED7SOUT <= “1011011”;WHEN “000101” => LED7SOUT <= “0000110”;WHEN “000110” => LED7SOUT <= “0111111”;---06 40 WHEN “000111” => LED7SOUT <= “1101111”;WHEN “001000” => LED7SOUT <= “1111111”;WHEN “001001” => LED7SOUT <= “0000111”;WHEN “001010” => LED7SOUT <= “1111101”;WHEN “001011” => LED7SOUT <= “1101101”;---11 35 WHEN “001100” => LED7SOUT <= “1100110”;WHEN “001101” => LED7SOUT <= “1001111”;WHEN “001110” => LED7SOUT <= “1011011”;WHEN “001111” => LED7SOUT <= “0000110”;WHEN “010000” => LED7SOUT <= “0111111”;---16 30 WHEN “010001” => LED7SOUT <= “1101111”;WHEN “010010” => LED7SOUT <= “1111111”;WHEN “010011” => LED7SOUT <= “0000111”;WHEN “010100” => LED7SOUT <= “1111101”;WHEN “010101” => LED7SOUT <= “1101101”;---21 25 WHEN “010110” => LED7SOUT <= “1100110”;WHEN “010111” => LED7SOUT <= “1001111”;WHEN “011000” => LED7SOUT <= “1011011”;WHEN “011001” => LED7SOUT <= “0000110”;WHEN “011010” => LED7SOUT <= “0111111”;---26 20 WHEN “011011” => LED7SOUT <= “1101111”;WHEN “011100” => LED7SOUT <= “1111111”;WHEN “011101” => LED7SOUT <= “0000111”;WHEN “011110” => LED7SOUT <= “1111101”;WHEN “011111” => LED7SOUT <= “1101101”;---31 15 WHEN “100000” => LED7SOUT <= “1100110”;WHEN “100001” => LED7SOUT <= “1001111”;WHEN “100010” => LED7SOUT <= “1011011”;WHEN “100011” => LED7SOUT <= “0000110”;WHEN “100100” => LED7SOUT <= “0111111”;---35 10 WHEN “100101” => LED7SOUT <= “1101111”;WHEN “100110” => LED7SOUT <= “1111111”;WHEN “100111” => LED7SOUT <= “0000111”;WHEN “101000” => LED7SOUT <= “1111101”;WHEN “101001” => LED7SOUT <= “1101101”;WHEN “101010” => LED7SOUT <= “1100110”;WHEN “101011” => LED7SOUT <= “1001111”;WHEN “101100” => LED7SOUT <= “1011011”;WHEN “101101” => LED7SOUT <= “0000110”;---45 01 WHEN OTHERS => NULL;END CASE;
WHEN OTHERS => NULL;END CASE;-----------WHEN “01” =>---主黃支紅狀態(tài) OK CASE BITSEL IS WHEN “000” =>---主黃支紅狀態(tài) 點亮支干道十位數(shù)字 CASE CNTIN IS WHEN “000001” => LED7SOUT <= “0111111”;WHEN “000010” => LED7SOUT <= “0111111”;WHEN “000011” => LED7SOUT <= “0111111”;WHEN “000100” => LED7SOUT <= “0111111”;WHEN “000101” => LED7SOUT <= “0111111”;WHEN OTHERS => NULL;END CASE;WHEN “001” =>---主黃支紅狀態(tài) 點亮支干道個位數(shù)字 CASE CNTIN IS WHEN “000001” => LED7SOUT <= “1101101”;WHEN “000010” => LED7SOUT <= “1100110”;WHEN “000011” => LED7SOUT <= “1001111”;WHEN “000100” => LED7SOUT <= “1011011”;WHEN “000101” => LED7SOUT <= “0000110”;WHEN OTHERS => NULL;END CASE;WHEN “010”=>---主黃支紅狀態(tài) 點亮主干道十位數(shù)字 CASE CNTIN IS WHEN “000001” => LED7SOUT <= “0111111”;WHEN “000010” => LED7SOUT <= “0111111”;WHEN “000011” => LED7SOUT <= “0111111”;WHEN “000100” => LED7SOUT <= “0111111”;WHEN “000101” => LED7SOUT <= “0111111”;WHEN OTHERS => NULL;END CASE;WHEN“011” =>---主黃支紅狀態(tài) 點亮主干道個位數(shù)字 CASE CNTIN IS WHEN “000001” => LED7SOUT <= “1101101”;WHEN “000010” => LED7SOUT <= “1100110”;WHEN “000011” => LED7SOUT <= “1001111”;WHEN “000100” => LED7SOUT <= “1011011”;WHEN “000101” => LED7SOUT <= “0000110”;WHEN OTHERS => NULL;END CASE;WHEN OTHERS => NULL;END CASE;-----------------------WHEN “10” =>---支綠主紅狀態(tài) OK CASE BITSEL IS WHEN “000” =>---支綠主紅狀態(tài) 點亮支干道十位數(shù)字 OK CASE CNTIN IS WHEN “000001” => LED7SOUT <= “1011011”;---01 25 WHEN “000010” => LED7SOUT <= “1011011”;WHEN “000011” => LED7SOUT <= “1011011”;WHEN “000100” => LED7SOUT <= “1011011”;WHEN “000101” => LED7SOUT <= “1011011”;WHEN “000110” => LED7SOUT <= “1011011”;---06 20 WHEN “000111” => LED7SOUT <= “0000110”;WHEN “001000” => LED7SOUT <= “0000110”;WHEN “001001” => LED7SOUT <= “0000110”;WHEN “001010” => LED7SOUT <= “0000110”;WHEN “001011” => LED7SOUT <= “0000110”;---11 15 WHEN “001100” => LED7SOUT <= “0000110”;WHEN “001101” => LED7SOUT <= “0000110”;WHEN “001110” => LED7SOUT <= “0000110”;WHEN “001111” => LED7SOUT <= “0000110”;WHEN “010000” => LED7SOUT <= “0000110”;---16 10 WHEN “010001” => LED7SOUT <= “0111111”;WHEN “010010” => LED7SOUT <= “0111111”;WHEN “010011” => LED7SOUT <= “0111111”;WHEN “010100” => LED7SOUT <= “0111111”;WHEN “010101” => LED7SOUT <= “0111111”;---21 05 WHEN “010110” => LED7SOUT <= “0111111”;WHEN “010111” => LED7SOUT <= “0111111”;WHEN “011000” => LED7SOUT <= “0111111”;WHEN “011001” => LED7SOUT <= “0111111”;---25 01 WHEN OTHERS => NULL;END CASE;WHEN “001” =>---支綠主紅狀態(tài) 點亮支干道個位數(shù)字 OK CASE CNTIN IS WHEN “000001” => LED7SOUT <= “1101101”;---01 25 WHEN “000010” => LED7SOUT <= “1100110”;WHEN “000011” => LED7SOUT <= “1001111”;WHEN “000100” => LED7SOUT <= “1011011”;WHEN “000101” => LED7SOUT <= “0000110”;WHEN “000110” => LED7SOUT <= “0111111”;---06 20 WHEN “000111” => LED7SOUT <= “1101111”;WHEN “001000” => LED7SOUT <= “1111111”;WHEN “001001” => LED7SOUT <= “0000111”;WHEN “001010” => LED7SOUT <= “1111101”;WHEN “001011” => LED7SOUT <= “1101101”;---11 15 WHEN “001100” => LED7SOUT <= “1100110”;WHEN “001101” => LED7SOUT <= “1001111”;WHEN “001110” => LED7SOUT <= “1011011”;WHEN “001111” => LED7SOUT <= “0000110”;WHEN “010000” => LED7SOUT <= “0111111”;---16 10 WHEN “010001” => LED7SOUT <= “1101111”;WHEN “010010” => LED7SOUT <= “1111111”;WHEN “010011” => LED7SOUT <= “0000111”;WHEN “010100” => LED7SOUT <= “1111101”;WHEN “010101” => LED7SOUT <= “1101101”;---21 05 WHEN “010110” => LED7SOUT <= “1100110”;WHEN “010111” => LED7SOUT <= “1001111”;WHEN “011000” => LED7SOUT <= “1011011”;WHEN “011001” => LED7SOUT <= “0000110”;---25 01 WHEN OTHERS => NULL;END CASE;WHEN “010” =>---支綠主紅狀態(tài) 點亮主干道十位數(shù)字 OK CASE CNTIN IS WHEN “000001” => LED7SOUT <= “1001111”;---01 30 WHEN “000010” => LED7SOUT <= “1011011”;---02 29 WHEN “000011” => LED7SOUT <= “1011011”;WHEN “000100” => LED7SOUT <= “1011011”;WHEN “000101” => LED7SOUT <= “1011011”;WHEN “000110” => LED7SOUT <= “1011011”;---06 25 WHEN “000111” => LED7SOUT <= “1011011”;WHEN “001000” => LED7SOUT <= “1011011”;WHEN “001001” => LED7SOUT <= “1011011”;WHEN “001010” => LED7SOUT <= “1011011”;WHEN “001011” => LED7SOUT <= “1011011”;---11 20 WHEN “001100” => LED7SOUT <= “0000110”;WHEN “001101” => LED7SOUT <= “0000110”;WHEN “001110” => LED7SOUT <= “0000110”;WHEN “001111” => LED7SOUT <= “0000110”;WHEN “010000” => LED7SOUT <= “0000110”;---16 15 WHEN “010001” => LED7SOUT <= “0000110”;WHEN “010010” => LED7SOUT <= “0000110”;WHEN “010011” => LED7SOUT <= “0000110”;WHEN “010100” => LED7SOUT <= “0000110”;WHEN “010101” => LED7SOUT <= “0000110”;---21 10 WHEN “010110” => LED7SOUT <= “0111111”;WHEN “010111” => LED7SOUT <= “0111111”;WHEN “011000” => LED7SOUT <= “0111111”;WHEN “011001” => LED7SOUT <= “0111111”;---25 06 WHEN OTHERS => NULL;END CASE;WHEN“011” =>---支綠主紅狀態(tài) 點亮主干道個位數(shù)字 OK CASE CNTIN IS WHEN “000001” => LED7SOUT <= “0111111”;---01 30 WHEN “000010” => LED7SOUT <= “1101111”;---02 29 WHEN “000011” => LED7SOUT <= “1111111”;WHEN “000100” => LED7SOUT <= “0000111”;WHEN “000101” => LED7SOUT <= “1111101”;WHEN “000110” => LED7SOUT <= “1101101”;WHEN “000111” => LED7SOUT <= “1100110”;---07 24 WHEN “001000” => LED7SOUT <= “1001111”;WHEN “001001” => LED7SOUT <= “1011011”;WHEN “001010” => LED7SOUT <= “0000110”;WHEN “001011” => LED7SOUT <= “0111111”;WHEN “001100” => LED7SOUT <= “1101111”;---12 19 WHEN “001101” => LED7SOUT <= “1111111”;WHEN “001110” => LED7SOUT <= “0000111”;WHEN “001111” => LED7SOUT <= “1111101”;WHEN “010000” => LED7SOUT <= “1101101”;WHEN “010001” => LED7SOUT <= “1100110”;---17 14 WHEN “010010” => LED7SOUT <= “1001111”;WHEN “010011” => LED7SOUT <= “1011011”;WHEN “010100” => LED7SOUT <= “0000110”;WHEN “010101” => LED7SOUT <= “0111111”;WHEN “010110” => LED7SOUT <= “1101111”;---22 09 WHEN “010111” => LED7SOUT <= “1111111”;WHEN “011000” => LED7SOUT <= “0000111”;WHEN “011001” => LED7SOUT <= “1111101”;---25 06 WHEN OTHERS => NULL;END CASE;
WHEN OTHERS => NULL;END CASE;------------
WHEN “11” =>---支黃主紅狀態(tài) OK CASE BITSEL IS WHEN “000” =>---支黃主紅狀態(tài) 點亮支干道十位數(shù)字 CASE CNTIN IS WHEN “000001” => LED7SOUT <= “0111111”;WHEN “000010” => LED7SOUT <= “0111111”;WHEN “000011” => LED7SOUT <= “0111111”;WHEN “000100” => LED7SOUT <= “0111111”;WHEN “000101” => LED7SOUT <= “0111111”;WHEN OTHERS => NULL;END CASE;WHEN “001” =>---支黃主紅狀態(tài) 點亮支干道個位數(shù)字 CASE CNTIN IS WHEN “000001” => LED7SOUT <= “1101101”;WHEN “000010” => LED7SOUT <= “1100110”;WHEN “000011” => LED7SOUT <= “1001111”;WHEN “000100” => LED7SOUT <= “1011011”;WHEN “000101” => LED7SOUT <= “0000110”;WHEN OTHERS => NULL;END CASE;WHEN “010” =>---支黃主紅狀態(tài) 點亮主干道十位數(shù)字 CASE CNTIN IS WHEN “000001” => LED7SOUT <= “0111111”;WHEN “000010” => LED7SOUT <= “0111111”;WHEN “000011” => LED7SOUT <= “0111111”;WHEN “000100” => LED7SOUT <= “0111111”;WHEN “000101” => LED7SOUT <= “0111111”;WHEN OTHERS => NULL;END CASE;WHEN “011” =>---支黃主紅狀態(tài) 點亮主干道個位數(shù)字 CASE CNTIN IS WHEN “000001” => LED7SOUT <= “1101101”;WHEN “000010” => LED7SOUT <= “1100110”;WHEN “000011” => LED7SOUT <= “1001111”;WHEN “000100” => LED7SOUT <= “1011011”;WHEN “000101” => LED7SOUT <= “0000110”;WHEN OTHERS => NULL;END CASE;
WHEN OTHERS => NULL;END CASE;
------------END CASE;END PROCESS;END behav;
第二篇:FPGA交通燈實驗報告
交通燈實驗報告
一,實驗?zāi)康?/p>
實現(xiàn)兩路信號燈交替亮起,并利用兩組數(shù)碼管分別對兩路信號進行倒計時。
兩路信號時間分別為:
V:綠燈(30S)
H:紅燈(35S)
黃燈(5s)
綠燈(30S)
紅燈(35S)
黃燈(5S)
二,實驗步驟 建立工程
可在歡迎界面點擊“Creat a New Project”進入工程建立界面,亦可關(guān)閉歡迎界面,點擊菜單欄的“File”,點擊“New Project Wizard”進入建立工程界面。右側(cè)為建立工程界面,點擊next。
在此界面選定工程路徑,取好工程名,點擊“Next”。注意:路徑中不能有中文,工程名也不能有中文。
一直點擊“Next”進入器件設(shè)置界面,DE2-70開發(fā)工具采用的Cyclone II系列的EP2C70F896C6N。點擊“Finish”,完成工程建立
1、點擊“File”,點擊“New” 選擇“Verilog HDL” 2,點擊主界面工具欄中的 選擇“Verilog HDL”
3、寫入verilog代碼。
代碼如下:
module traffic(Clk_50M,Rst,LedR_H,LedG_H,LedY_H,LedR_V,LedG_V,LedY_V,Seg7_VH,Seg7_VL,Seg7_HH,Seg7_HL,led15);
parameter S1=2'b00;parameter S2=2'b01;parameter S3=2'b10;parameter S4=2'b11;
input Clk_50M,Rst;output LedR_H,LedG_H,LedY_H,LedR_V,LedG_V,LedY_V;output[6:0] Seg7_VH,Seg7_VL,Seg7_HH,Seg7_HL;output led15;
//-------------div for 1Hz-------start----reg Clk_1Hz;reg [31:0] Cnt_1Hz;always@(posedge Clk_50M or negedge Rst)begin
if(!Rst)
begin
Cnt_1Hz<=1;
Clk_1Hz<=1;
end
else
begin
if(Cnt_1Hz>=25000000)
end
//-----------div for 1Hz------end-----reg[7:0] Cnt30,CntH,CntV,CntHH,CntVV;reg[7:0] CntDis,CntDiss;//-----------30 counter and seg7---start---reg LedR_H,LedG_H,LedY_H,LedR_V,LedG_V,LedY_V;always@(posedge Clk_1Hz)begin
end
begin
Cnt_1Hz<=1;
Clk_1Hz<=~Clk_1Hz;
end
else
Cnt_1Hz<=Cnt_1Hz + 1;
case(state)
S1:
end
always@(posedge Clk_1Hz)begin
case(stateV)
S1:
begin
if(CntV>=30)
CntV<=1;
begin
if(Cnt30>=30)
Cnt30<=1;
else
Cnt30<=Cnt30 + 1;S2:
begin
if(Cnt30>=5)
Cnt30<=1;end
else
Cnt30<=Cnt30 + 1;S3:
begin
if(Cnt30>=30)
Cnt30<=1;end
else
Cnt30<=Cnt30 + 1;S4:
begin
if(Cnt30>=5)
Cnt30<=1;end
else
Cnt30<=Cnt30 + 1;end endcase
else
CntV<=CntV + 1;
S2: begin
end
end if(CntV>=5)
CntV<=1;
else
CntV<=CntV + 1;end
S3:
begin
if(CntV>=35)
CntV<=1;
else
CntV<=CntV + 1;end endcase always@(posedge Clk_1Hz)begin
case(stateH)
S1:
end
always@(negedge Clk_50M or negedge Rst)begin
begin
if(CntH>=35)
CntH<=1;
else
CntH<=CntH + 1;
S2:
begin
if(CntH>=30)
CntH<=1;end
else
CntH<=CntH + 1;end
S3:
begin
if(CntH>=5)
CntH<=1;
else
CntH<=CntH + 1;end endcase
case(state)
S1:
end always@(negedge Clk_50M or negedge Rst)begin
case(state)
S1:
end
//16進制計數(shù)器轉(zhuǎn)換為用于顯示的10進制計數(shù)器 always@(posedge Clk_50M)begin
if(CntVV>29)
begin
CntDis[7:4]<=3;
CntDis[3:0]<=CntVV20;end else if(CntVV>9)begin
CntDis[7:4]<=1;
CntDis[3:0]<=CntVV30;end else if(CntHH>19)begin
CntDiss[7:4]<=2;
CntDiss[3:0]<=CntHH10;end else
CntDiss<=CntHH;
end
if(Cnt30>=5)
end
end S3:
begin
state<=S4;
end S4:
begin
state<=S1;
end default:
begin
state<=S1;
end endcase
if(Cnt30>=30)
if(Cnt30>=5)always@(posedge Clk_1Hz)begin
case(state)
S1:
end
always@(posedge Clk_50M or negedge Rst)
begin
stateH<=S1;
stateV<=S1;
end S2:
begin
stateH<=S1;
stateV<=S2;
end S3:
begin
stateH<=S2;
stateV<=S3;
end S4:
begin
stateH<=S3;
stateV<=S3;
end endcase begin
if(!Rst)
begin
LedR_H<=0;
else
LedG_H<=0;LedY_H<=0;
LedR_V<=0;
LedG_V<=0;end LedY_V<=0;
begin
case(state)
S1:
begin
LedR_H<=1;LedG_H<=0;LedY_H<=0;LedR_V<=0;LedG_V<=1;LedY_V<=0;end
S2:
begin
LedR_H<=1;LedG_H<=0;LedY_H<=0;LedR_V<=0;LedG_V<=0;LedY_V<=1;end
S3:
begin
LedR_H<=0;LedG_H<=1;LedY_H<=0;LedR_V<=1;LedG_V<=0;LedY_V<=0;end
S4:
begin LedR_H<=0;LedG_H<=0;
end
LedY_H<=1;LedR_V<=1;LedG_V<=0;LedY_V<=0;end
default:
begin
end LedR_H<=0;LedG_H<=0;LedY_H<=0;LedR_V<=0;LedG_V<=0;LedY_V<=0;end
endcase assign led15=state;
endmodule
module SEG7_LUT input [3:0] iDIG;output reg
always @(iDIG)begin
case(iDIG)4'h1: oSEG = 7'b1111001;
//---t----4'h2: oSEG = 7'b0100100;// |
| 4'h3: oSEG = 7'b0110000;// lt rt
4'h4: oSEG = 7'b0011001;// |
| 4'h5: oSEG = 7'b0010010;//---m----4'h6: oSEG = 7'b0000010;// |
| 4'h7: oSEG = 7'b1111000;// lb rb 4'h8: oSEG = 7'b0000000;// |
| 4'h9: oSEG = 7'b0011000;//---b----4'ha: oSEG = 7'b0001000;4'hb: oSEG = 7'b0000011;4'hc: oSEG = 7'b1000110;4'hd: oSEG = 7'b0100001;4'he: oSEG = 7'b0000110;[6:0] oSEG;[6:0] oSEG;(oSEG,iDIG);
end
4'hf: oSEG = 7'b0001110;4'h0: oSEG = 7'b1000000;endcase endmodule 編譯工程
保存文件,將文件放在所建工程所在路徑下 點擊主界面工具欄中的圖標(biāo)
也可點擊菜單欄中“Processing”,點擊“Start Compilation”
分配關(guān)鍵如下:
Clk_50M Input PIN_AD15 LedG_H Output PIN_AD9 LedG_V Output PIN_AJ6 LedR_H Output PIN_AJ7)LedR_V Output PIN_AJ5)LedY_H Output PIN_AD8 LedY_V Output PIN_AK5 Rst Input PIN_AA23 Seg7_HH[6] Output PIN_G1 Seg7_HH[5] Output PIN_H3 Seg7_HH[4] Output PIN_H2 Seg7_HH[3] Output PIN_H1 Seg7_HH[2] Output PIN_J2 Seg7_HH[1] Output PIN_J1 Seg7_HH[0] Output PIN_K3
Seg7_HL[6] Seg7_HL[5] Seg7_HL[4] Seg7_HL[3] Seg7_HL[2] Seg7_HL[1] Seg7_HL[0] Seg7_VH[6] Seg7_VH[5] Seg7_VH[4] Seg7_VH[3] Seg7_VH[2] Seg7_VH[1] Seg7_VH[0] Seg7_VL[6] Seg7_VL[5] Seg7_VL[4] Seg7_VL[3] Seg7_VL[2] Seg7_VL[1] Seg7_VL[0] Output Output Output Output Output Output Output Output Output Output Output Output Output Output Output Output Output Output Output Output Output PIN_E4 PIN_F4 PIN_G4 PIN_H8 PIN_H7 PIN_H4 PIN_H6 PIN_AD17 PIN_AF17 7 PIN_AE17 7 PIN_AG16 PIN_AF16 7 PIN_AE16 7 PIN_AG13 PIN_AD12 PIN_AD11 PIN_AF10 8 PIN_AD10 PIN_AH9 8 PIN_AF9 8 PIN_AE8 8
燒寫代碼
在管腳配置完成后,還需將工程再編譯一次,成功后,點擊主界面工具欄中的亦可點擊主界面菜單欄中“Tools”,點擊“Programmer”
進入代碼燒寫界面后,點擊“Start”,當(dāng)“Progress”為100%時,表示燒寫完成,這是可觀察DE2-70板現(xiàn)象
獲得預(yù)期的效果,兩組的信號紅黃綠燈交替切換,計數(shù)器記為零時信號燈切換狀態(tài),紅燈35s,黃燈5s,綠燈30s。三,心得體會
通過本次實驗初步了解了EDA技術(shù),熟悉了FPGA開發(fā)板的開發(fā)流程,鍛煉了動手能力。
第三篇:基于FPGA的智能交通燈
設(shè)計題目: 基于FPGA的交通燈控制系統(tǒng)設(shè)計
專 業(yè):
學(xué)生姓名: 學(xué) 號:
起迄日期: 2014.8.22.--2014.9.22.指導(dǎo)教師: 教研室主任:
目錄
1.緒論..............................................................1 2.課題研究背景及意義................................................1 3.設(shè)計要求..........................................................1 4.設(shè)計方案..........................................................1 4.1方案比較....................................錯誤!未定義書簽。4.2 方案說明...................................錯誤!未定義書簽。5.VHDL語言介紹...................................錯誤!未定義書簽。6.系統(tǒng)仿真..........................................................3 6.1 系統(tǒng)電路框圖................................................4 6.2設(shè)計結(jié)果仿真.................................................4 7.心得體會..........................................................5 8.參考文獻..........................................................6 7.附件..............................................................6
摘要:針對現(xiàn)實中越來越嚴(yán)重的城市交通擁堵現(xiàn)象,提出了一種城市十字路口交通信號燈控制與FPGA實現(xiàn)的新方法。設(shè)計的智能交通控制系統(tǒng)利用對相向車道采用不同步的紅綠燈信號控制方法,能夠減少交通資源浪費,大幅提高十字路口的車輛通行效率。利用超高速硬件描述語言VHDL設(shè)計十字路口交通信號燈控制器,實現(xiàn)主干道和支干道的交通控制功能,并通過Quartus II完成綜合、仿真、進行管腳分配、繪出仿真波形及原理圖。
關(guān)鍵字:硬件描述語言VHDL;交通信號燈;智能控制
1.緒論
智能的交通燈指揮著人們和各種車輛的安全運行,實現(xiàn)紅、黃、綠燈的自動指揮是城鄉(xiāng)交通管理現(xiàn)代化的重要課題。在城鄉(xiāng)街道的十字交叉路口,為了保證交通秩序和行人的安全,一般在每條街道上各有一組紅、黃、綠交通信號燈,其中紅燈亮,表示該條道禁止通行;黃燈亮該條道路上未過停車線的停止通行,已過停車線的車輛繼續(xù)通行;綠燈亮,表示該條道路允許通行。交通燈自動控制十字路口兩組紅、黃、綠交通燈的狀態(tài)轉(zhuǎn)換,指揮各種車輛和行人安全通行。實現(xiàn)十字路口交通管理自動化。
DEA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴大與深入,在電子信息,通信,自動,控制及計算機應(yīng)用等領(lǐng)域的重要性日益突出,因此本論文研究基于FPGA的交通燈設(shè)計。FPGA中有大量實現(xiàn)組合邏輯的資源,可以完成較大規(guī)模的組合邏輯電路設(shè)計,而其中相當(dāng)數(shù)量的存儲電路(觸發(fā)器)又可完成復(fù)雜的時序邏輯電路設(shè)計。通過使用各種EDA工具,用原理圖或硬件描述語言,可以很方便地將復(fù)雜的電路在FPGA中實現(xiàn)。像典型的數(shù)字系統(tǒng)分頻器,數(shù)字鐘,數(shù)字頻率計等等都可用FPGA完成。本文以QuartusII 軟件為開發(fā)平臺,通過VHDL硬件描述語言以及原理圖的輸入方式來設(shè)計交通燈。
2.課題研究背景及意義
隨著公路交通運輸?shù)陌l(fā)展,交通擁擠、道路阻塞和交通事故頻繁發(fā)生等問題越來越嚴(yán)重地困擾著世界各大城市。相對于交通運輸工具的飛速發(fā)展,我國交通配套設(shè)施建設(shè)明顯滯后,道路安全網(wǎng)絡(luò)、道路標(biāo)識、交通指揮中心仍然不足。單獨從車輛方面或道路方面考慮,均很難有效地解決交通問題。通過采用信息通信技術(shù)、電子技術(shù)以及其他科學(xué)技術(shù)把它們聯(lián)系起來,并實現(xiàn)智能化的交通控制才能解決根本問題,交通信息化需要融合科技力量才能使目前的交通問題得到改善。
在現(xiàn)代文明高速發(fā)展的社會,道路的高度發(fā)達使得整個社會進步的速度進一步的加快,交通燈的出現(xiàn)是社會發(fā)展的必然產(chǎn)物。交通燈在道路事業(yè)中占有舉足輕重的地位,它直接影響到公路以及市區(qū)內(nèi)的通車質(zhì)量。所以,智能交通燈的研究具有重大意義。
3.設(shè)計要求
主干道綠燈亮支干道紅燈亮?xí)r間是50秒,接下來黃燈閃爍5秒,此時主干道的綠燈和支干道的紅燈繼續(xù)亮;然后是主干道紅燈亮支干道綠燈亮,時間為20秒,再黃燈閃5秒同時主干道的紅燈和支干道的綠燈也繼續(xù)亮。
4.設(shè)計方案
首先根據(jù)系統(tǒng)的需要進行分析。系統(tǒng)要求主干道綠燈亮支干道紅燈亮?xí)r間是50秒,接下來黃燈閃爍5秒,此時主干道的綠燈和支干道的紅燈繼續(xù)亮,然后是 主干道紅燈亮支干道綠燈亮?xí)r間為20秒,再黃燈閃5秒同時主干道的紅燈和支干道的綠燈也繼續(xù)亮。
因此將整個系統(tǒng)分為計時模塊和控制模塊組成。計時模塊中秒模塊主要將50MHZ的時鐘進行分頻得到20ns的時鐘信號,再將信號50000000倍得到秒信號??刂颇K由交通燈控制模塊以及黃燈閃爍模塊構(gòu)成。
Verilog HDL語言介紹 5.1 Verilog HDL特點
Verilog HDL語言不僅定義了語法,而且對每個語法結(jié)構(gòu)都定義了清晰地模擬、仿真語義。使用這種語言編寫的模型可以方便地使用Verilog仿真器進行驗證。Verilog HDL從C語言繼承了多種操作符和結(jié)構(gòu)。Verilog HDL提供了擴展的建模能力和擴展模塊。
Verilog HDL之所以成為和VHDL并駕齊驅(qū)的描述語言,以為它有如下特點:
(1)基本邏輯門,例如and、or和nand等都內(nèi)置在語言中。
(2)用戶定義原語(UDP)創(chuàng)建的靈活性。用戶定義的原語既可以是組合邏輯原語,也可以是時序邏輯原語。
(3)開關(guān)級基本結(jié)構(gòu)模型,例如pmos 和nmos等也被內(nèi)置在語言中。(4)提供顯式語言結(jié)構(gòu)指定設(shè)計中的端口到端口的時延及路徑時延和設(shè)計的時序檢查。
(5)可采用三種不同方式或混合方式對設(shè)計建模。這些方式包括:行為描述方式—使用過程化結(jié)構(gòu)建模;數(shù)據(jù)流方式—使用連續(xù)賦值語句方式建模;結(jié)構(gòu)化方式—使用門和模塊實例語句描述建模。
(6)Verilog HDL中有兩類數(shù)據(jù)類型:線網(wǎng)數(shù)據(jù)類型和寄存器數(shù)據(jù)類型。線網(wǎng)類型表示構(gòu)件間的物理連線,而寄存器類型表示抽象的數(shù)據(jù)存儲元件。
(7)能夠描述層次設(shè)計,可使用模塊實例結(jié)構(gòu)描述任何層次。設(shè)計能夠在多個層次上加以描述,從開關(guān)級、門級、寄存器傳送級(RTL)到算法級。
(8)設(shè)計的規(guī)??梢允侨我獾?;語言不對設(shè)計的規(guī)模(大?。┦┘尤魏蜗拗啤erilog HDL不再是某些公司的專有語言而是IEEE標(biāo)準(zhǔn)。人和機器都可閱讀Verilog 語言,因此它可作為EDA的工具和設(shè)計者之間的交互語言。
5.2Verilog HDL程序基本結(jié)構(gòu)
模塊是Verilog HDL的基本描述單位,描述某個設(shè)計的功能或結(jié)構(gòu)及與其他模塊通信的外部端口。一個模塊的基本語法如下:
module module_name//模塊名稱
(port_list);//輸入輸出信號列表//說明 reg//寄存器 wire//線網(wǎng)
parameter//參數(shù) input//輸入信號 output//輸出信號 inout//輸入輸出信號 function//函數(shù) task//任務(wù) …//語句
Initial statement Always statement Module instantiation// Gate instantiation// UDP instantiation// Continuous assignment// Endmodule 說明部分用于定義不同的項,例如模塊描述中使用寄存器和參數(shù)、語句定義設(shè)計的功能和結(jié)構(gòu)。說明部分和語句可以放置在模塊的任何地方,但是變量、寄存器、線網(wǎng)和參數(shù)等的說明部分必須在使用前出現(xiàn)。為了使模塊描述清晰和具有良好的可讀性,最好將所有的說明部分放在語句前。
6.系統(tǒng)仿真
本文的仿真是在QuartuslI上進行的。QuartuslI 是 Altera 提供的 FPGA/CPLD 開發(fā)集成環(huán)境,Altera 是世界上最大的可編程邏輯器件供應(yīng)商之一。QimrtiisII在21世紀(jì) 初推出,是Altera前一代FPGA/CPLD集成開發(fā)環(huán)境MAX+plusII的更 新?lián)Q代產(chǎn)品,其界面友好,使用便捷。QuartiisII提供了一種與結(jié)構(gòu) 無關(guān)的設(shè)計環(huán)境,使設(shè)計者能方便地進行設(shè)計輸入、快速處理和器件 編程。
Altera的QuartusII提供了完整的多平臺設(shè)計環(huán)境,能滿足各 種特定設(shè)計的需要,也是單芯片可編程系統(tǒng)(SOPC)設(shè)計的綜合性環(huán) 境和SOPC開發(fā)的基本設(shè)計工具,并為Altera DSP開發(fā)包進行系統(tǒng)模 型設(shè)計提供了集成綜合環(huán)境。
QuartusII包括模塊化的編輯器。編輯器包括的功能模塊有分析 /綜合器、適配器、裝配器、時序分析器、設(shè)計輔助模塊、EDA網(wǎng)表 文件生成器、編輯數(shù)據(jù)接口等。可以通過選擇Start Compilation來運行所有的編輯器模塊,也可以選擇單獨運行各個模塊。
基于Quartus II的設(shè)計流程:
(1)建立工作庫文件夾和編輯設(shè)計文件(2)創(chuàng)建工程;(3)全程編譯工程;(4)時序仿真;(5)引腳鎖定;
(6)下載至硬件系統(tǒng)驗證。
6.1 系統(tǒng)電路框圖
系統(tǒng)整體電路設(shè)計采用原理圖輸入法,將各個模塊包括子模塊進行連接,得到系統(tǒng)的電路框圖如下圖所示。
圖三 系統(tǒng)整體電路圖
6.2設(shè)計結(jié)果仿真
利用Quartus II軟件對本設(shè)計的程序進行編譯,得到系統(tǒng)的仿真圖。
交通燈運行時時序仿真圖1
交通燈運行時時序仿真圖1
7.心得體會
在這次課程設(shè)計中,我再一次的體驗到了細心對一個編程者的重要性,和程序的規(guī)范性對于程序的重要性,這些平時我們忽略的問題,其實有時候關(guān)乎著我們編程的成功與否的。
在verilog語言中,我們必須注意其與C語言的異同,比如格式和變量定義,還有模塊的調(diào)用,和時鐘信號的應(yīng)用。我覺得需要在以后多加練習(xí),可以對以后的學(xué)習(xí)和工作帶來莫大的幫助。這次的
課程設(shè)計相對以前的較難,其實就是對我們的一次考核,也是一次考驗,它培養(yǎng)了學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對我們實際工作能力的具體訓(xùn)練和考察過程。然而從理論到實踐的轉(zhuǎn)化過程,我在做課程設(shè)計的近一個月時間里,有了更進一步的認識和了解,要想學(xué)知識要重在實踐,要通過不斷的實際操作才能更好地學(xué)習(xí)。
通過這次課程設(shè)計,我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,從而提高自己的實際動手能力和獨立思考的能
力。在設(shè)計的過程中遇到問題,可以說得是困難重重,遇到了各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知解得不夠深刻,掌握得不夠牢固。實踐出真知,通過親自動手制作,使我們掌握的知識不再是紙上談兵。
8.參考文獻
(1)程云長.可編程邏輯器件與VHDL語言[M].北京:科學(xué)出版社,2005(2)黃智偉.全國大學(xué)生電子設(shè)計競賽系統(tǒng)設(shè)計[M].北京:北京航空航天大學(xué)出版社,2006(3)黃智偉.全國大學(xué)生電子設(shè)計競賽電路設(shè)計[M].北京:北京航空航天大學(xué)出版社,2006(4)黃智偉.全國大學(xué)生電子設(shè)計競賽 常用電路模塊制作[M].北京:北京航空航天大學(xué)出版社,2010(5)黃智偉等.基于NI multisim的電子電路計算機仿真設(shè)計與分析[M].北京:電子工業(yè)出版社,2007(6)黃智偉.印制電路板(PCB)設(shè)計技術(shù)與實踐[M].北京:電子工業(yè)出版社,2009(7)高吉祥等.電子技術(shù)基礎(chǔ)實驗與課程設(shè)計[M].北京:電子工業(yè)出版社,2002(8)潘松.EDA技術(shù)實用教程[M].科學(xué)出版社.2005
7.附件 原程序
`timescale 100ms / 1us //程序中的時間單位和仿真精度。module signal_led(clk, rst_n, traffic_signal_master_red, traffic_signal_master_green, traffic_signal_master_yellow, traffic_signal_slave_red, traffic_signal_slave_green, traffic_signal_slave_yellow);input clk;input rst_n;output reg
traffic_signal_master_red;// 交通信號燈主干道紅燈
output reg
traffic_signal_master_green;// 交通信號燈主干道綠燈
output reg
traffic_signal_master_yellow;// 交通信號燈主干道黃燈 output reg
traffic_signal_slave_red;// 交通信號燈次干道紅燈
output reg
traffic_signal_slave_green;// 交通信號燈次干道綠燈
output reg
traffic_signal_slave_yellow;// 交通信號燈次干道黃燈
reg signal_red_led;reg signal_green_led;reg signal_yellow_led;reg [31:0] traffic_signal_cnt;parameter
LED_ON
= 1'b0;// 1亮
parameter
LED_OFF
= 1'b1;// 0滅
parameter
TIME_CELL
= 32'd50000000;// 時間單元時間 = Time_cell * 20ns(50MHz主頻)parameter START = 32'd0;parameter MASTER_GREEN = TIME_CELL * 20;parameter MASTER_YELLOW_1 = TIME_CELL * 20 + TIME_CELL;parameter MASTER_YELLOW_2 = TIME_CELL * 20 + 2 * TIME_CELL;parameter MASTER_YELLOW_3 = TIME_CELL * 20 + 3 * TIME_CELL;parameter MASTER_YELLOW_4 = TIME_CELL * 20 + 4 * TIME_CELL;parameter MASTER_YELLOW_5 = TIME_CELL * 20 + 5 * TIME_CELL;parameter SLAVE_GREEN = TIME_CELL * 20 + 5 * TIME_CELL + TIME_CELL * 20;parameter SLAVE_YELLOW_1 = TIME_CELL * 20 + 5 * TIME_CELL + TIME_CELL * 20 + TIME_CELL;parameter SLAVE_YELLOW_2 = TIME_CELL * 20 + 5 * TIME_CELL + TIME_CELL * 20 + 2 * TIME_CELL;parameter SLAVE_YELLOW_3 = TIME_CELL * 20 + 5 * TIME_CELL + TIME_CELL * 20 + 3 * TIME_CELL;parameter SLAVE_YELLOW_4 = TIME_CELL * 20 + 5 * TIME_CELL + TIME_CELL * 20 + 4 * TIME_CELL;parameter TOTAL_TIME = TIME_CELL * 20 + 5 * TIME_CELL + TIME_CELL * 20 + 5 * TIME_CELL;
//******************************************************************* // 模塊名稱:時間計數(shù)種子 // 功能描述
//******************************************************************* always @(posedge clk or negedge rst_n)begin if(!rst_n)traffic_signal_cnt <= 32'h0;else if(traffic_signal_cnt == TOTAL_TIME)traffic_signal_cnt <= START;else traffic_signal_cnt <= traffic_signal_cnt+1;end //******************************************************************* // 模塊名稱:LED燈閃爍控制 // 功能描述
//******************************************************************* always @(posedge clk or negedge rst_n)begin if(!rst_n)
begin signal_red_led <= LED_OFF;signal_green_led <= LED_OFF;signal_yellow_led <= LED_OFF;end else begin case(traffic_signal_cnt)START
:
begin signal_red_led <= LED_OFF;signal_green_led <= LED_ON;signal_yellow_led <= LED_OFF;end MASTER_GREEN
:
begin signal_red_led <= LED_OFF;signal_green_led <= LED_ON;signal_yellow_led <= LED_ON;end MASTER_YELLOW_1 :
begin signal_red_led <= LED_OFF;signal_green_led <= LED_ON;signal_yellow_led <= LED_OFF;end MASTER_YELLOW_2 :
begin signal_red_led <= LED_OFF;signal_green_led <= LED_ON;signal_yellow_led <= LED_ON;end MASTER_YELLOW_3 :
begin signal_red_led <= LED_OFF;signal_green_led <= LED_ON;signal_yellow_led <= LED_OFF;end MASTER_YELLOW_4 :
begin signal_red_led <= LED_OFF;signal_green_led <= LED_ON;signal_yellow_led <= LED_ON;end MASTER_YELLOW_5 :
begin signal_red_led <= LED_ON;signal_green_led <= LED_OFF;signal_yellow_led <= LED_OFF;end SLAVE_GREEN
:
begin signal_red_led <= LED_ON;signal_green_led <= LED_OFF;signal_yellow_led <= LED_OFF;end SLAVE_YELLOW_1 :
begin signal_red_led <= LED_ON;signal_green_led <= LED_OFF;signal_yellow_led <= LED_ON;end SLAVE_YELLOW_2 :
begin signal_red_led <= LED_ON;signal_green_led <= LED_OFF;signal_yellow_led <= LED_OFF;end SLAVE_YELLOW_3 :
begin signal_red_led <= LED_ON;signal_green_led <= LED_OFF;signal_yellow_led <= LED_ON;end SLAVE_YELLOW_4 :
begin signal_red_led <= LED_ON;signal_green_led <= LED_OFF;signal_yellow_led <= LED_OFF;end endcase end end //******************************************************************* // 模塊名稱:主從LED輸出 // 功能描述:
//******************************************************************* always @(posedge clk or negedge rst_n)begin if(!rst_n)begin traffic_signal_master_red <= LED_OFF;traffic_signal_master_green <= LED_OFF;traffic_signal_master_yellow <= LED_OFF;traffic_signal_slave_red <= LED_OFF;traffic_signal_slave_green <= LED_OFF;traffic_signal_slave_yellow <= LED_OFF;end else begin traffic_signal_master_red <= signal_red_led;traffic_signal_master_green <= signal_green_led;traffic_signal_master_yellow <= signal_yellow_led;traffic_signal_slave_red <= ~signal_red_led;traffic_signal_slave_green <= ~signal_green_led;traffic_signal_slave_yellow <= signal_yellow_led;end end endmodule
第四篇:基于單片機的交通燈控制系統(tǒng)
單片機原理及系統(tǒng)課程設(shè)計報告
基于單片機的交通燈控制系統(tǒng) 引言
單片機是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的微型計算機系統(tǒng),在工業(yè)控制領(lǐng)域具有廣泛的應(yīng)用。本文設(shè)計了基于單片機的交通燈控制系統(tǒng)以AT89C51單片機為核心芯片,通過控制三色LED燈的亮滅來控制各車道的通行。設(shè)計方案及原理
本系統(tǒng)由AT89C51單片機、紅、黃、綠LED交通信號燈、共陰極數(shù)碼管、緊急通車開關(guān)等模塊組成該電路具有設(shè)計簡單,顯示亮度高,能耗小,可靠性高燈特點。其總體設(shè)計框圖如圖1所示。
復(fù)位電路七段數(shù)碼管倒計時顯示電路AT89C51晶振電路A、B車道LED顯示電路按鍵電路
圖1 系統(tǒng)總體設(shè)計方框圖
2.1 系統(tǒng)設(shè)計
交通燈控制系統(tǒng)主要控制A,B兩車道的交通,以AT89C51單片機為核心芯片,通過控制三色LED燈的亮滅來控制各車道的通行;另外通過3個按鍵來模擬各車道有無車輛的情況和有緊急車輛的情況。根據(jù)設(shè)計要求,制定總體設(shè)計思想如下:
(1)用AT89C51單片機控制交通燈電路,晶振采用12MHz。(2)用發(fā)光二極管模擬交通信號燈,用按鍵開關(guān)模擬車輛檢測信號。
(3)有緊急車輛通過時,按下K3開關(guān)使A、B車道均為紅燈,禁行20s。此時,
第五篇:智能交通燈控制系統(tǒng) 畢業(yè)設(shè)計總結(jié)
無
錫
職
業(yè)
技
術(shù)
學(xué)
院
畢業(yè)設(shè)計總結(jié) 畢業(yè)設(shè)計總結(jié)
本次畢業(yè)設(shè)計,我的指導(dǎo)老師是李麗老師,首先,我們進行總體規(guī)劃,包括控制系統(tǒng)組成、控制系統(tǒng)工作過程、控制系統(tǒng)功能、控制系統(tǒng)技術(shù)指標(biāo);之后,進行了硬件系統(tǒng)設(shè)計,學(xué)習(xí)單片機原理與接口技術(shù),網(wǎng)上搜索下載AT89C51、數(shù)碼顯示管、點亮LED技術(shù)資料,并學(xué)習(xí)消化,設(shè)計硬件控制原理,用Protel繪圖軟件設(shè)計出控制器原理圖,并對控制器硬件進行了調(diào)試;接著,研究設(shè)計六線四相步進電機控制方式和方法;而后,規(guī)劃出了控制軟件結(jié)構(gòu)圖,設(shè)計出了主控模塊程序流程圖、各功能模塊程序流程圖,并逐功能模塊編輯、編譯、連接、測試控制程序,在編程過程中,我一邊學(xué)習(xí)C51程序設(shè)計,一邊熟悉Keil C51開發(fā)平臺,一邊編程設(shè)計控制程序;最后,對控制程序進行了測試和修改完善。
本次畢業(yè)設(shè)計創(chuàng)新點一是提出了六線四相步進電機啟動加速控制技術(shù)方案,二是研究了六線四相步進電機各種運行控制方式。
本次畢業(yè)設(shè)計體會一是深刻認識到專業(yè)理論對指導(dǎo)實踐工作的重要性,上學(xué)期間,專業(yè)理論學(xué)的不夠扎實,不夠深入、不夠全面、不懂用途;二是現(xiàn)有的技能不能勝任實際工作,實際動手能力欠缺;三是不知道如何進行課題需求分析、課題總體規(guī)劃;四是不知道如何進行軟件結(jié)構(gòu)設(shè)計;五是實際編程經(jīng)驗欠缺,缺少排除故障能力。所以,我們即將畢業(yè)的大學(xué)生需要與時俱進,克服不足,勤學(xué)苦練,迎接挑戰(zhàn),為國爭光。
在該課題后續(xù)研究設(shè)計時,應(yīng)重視步進電機特性研究,重視控制方法、控制方式研究;增加聯(lián)網(wǎng)控制功能;增加LCD數(shù)據(jù)顯示功能。
在這篇畢業(yè)設(shè)計論文即將完成的時候,我突然意識到自己的校園生活即將畫上一個句號。當(dāng)我踏上工作崗位的時候即將面對的是完全不同于之前十幾年校園生活的新的旅程。如果說之前的日子是學(xué)會如何做人、如何做事、如何認識和理解世界、如何學(xué)會感恩,那么,今后的日子,我將真正成為一個有用的人,一個能與別人合作或者獨立完成任務(wù)的人,一個真正懂得世界、懂得感恩并真正付出的人。
我要感謝我存在的這個世界賦予我的認知和理解,感謝父母給了我機會認識并引導(dǎo)撫育我這個世界,感謝二十幾年來成百上千的老師與朋友讓我能夠在正確的道路上走得更遠并且激勵我成為一個堅定信念不做讓自己后悔事情的人。
“窮則獨善其身,達則兼濟天下”,古訓(xùn)教導(dǎo)我們不做自私人,懂得盡己所能,知恩圖報。一切來之不易,珍惜且能盡其用,算是在自己能力有限的時候?qū)ι鐣?,對生活最大的慰藉和回報。今年的二月份,在?jīng)歷了將近一年的苦苦尋覓之后,我終于遇到了一個適合自己發(fā)展的崗位,也終于能夠?qū)⑷康木ν度氲竭@次畢業(yè)設(shè)計之中。首先我非常感謝我的導(dǎo)師李老師對我的支持和寬容,因為這次畢設(shè)的題目來源于我在生活的靈感,并且有著強烈的愿望,期望它能夠成為現(xiàn)實,期望在離開校園之前見證自己所學(xué)是有用的學(xué)問。李老師在我的畢設(shè)過程中給予我鼎力的支持,因而有機會實現(xiàn)這個愿望。同時,在漫長的設(shè)計和實踐過程中,身邊的同學(xué)和朋友都給了我很多支持和幫助,這也證明了即便是一個人的任務(wù)也需要集體的力量,慶幸自己在離開校園之前學(xué)到了很多今后可能及其重要的東西。
回顧自己的學(xué)習(xí)歷程,感覺今天的生活與狀態(tài)是由一系列的偶然與必然串聯(lián)成的結(jié)果。在這個過程中自己承受了比別人更多的挫折,但也學(xué)到了更多的感悟,獲得了比別人更大的成就。我體會了人生的正弦曲線,知道很多情況下結(jié)果是之前很長時間的累積,很有趣的是,我的這些感悟在大學(xué)的專業(yè)課學(xué)習(xí)的時候得到
/ 2
無
錫
職
業(yè)
技
術(shù)
學(xué)
院
畢業(yè)設(shè)計總結(jié)
了理論上描述的一致。因為我的每一次成功的獲得都比別人晚了許多,但也都是在最關(guān)鍵的時候比別人得到了更多的收獲,也比別人體會到更多的付出后的充實。很慶幸自己在過去歲月中每一次困難抉擇中做出的選擇,以及在不斷地激勵中為目標(biāo)而不斷奮斗的堅持。
“來到社會做什么?畢業(yè)后做一個怎樣的人?”雖然即將畢業(yè),但是這兩個問題將常伴左右。第一個問題的答案已經(jīng)深深寫在自己三年大學(xué)生活的美好回憶之中,而第二個問題,將是我今后不斷反省自我并思考未來的信條。
學(xué)無止境,無論每天往返于公司和住所,還是奔走于實驗室與宿舍之間,作為一個職員或者學(xué)生,無時無刻不在接受新的知識、觀點、理念。即便是創(chuàng)造社會價值,也仍需要不斷補給養(yǎng)分。于此,作為剛剛走出校園的人,我將牢記于心。
最后,真誠期望每一個已經(jīng)出現(xiàn)在或是即將出現(xiàn)在我不同人生階段卻是同一條生活軌跡的師長、親友、戰(zhàn)友們,能夠始終擁有美好幸福的生活狀態(tài)、以及一顆熱忱于探索未知和真理的心,同時也是對自己未來生活的期冀。