資源描述:
《EDA與FPGA課設(shè):交通燈》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、一、實(shí)驗(yàn)?zāi)康蘑賹W(xué)習(xí)較復(fù)雜的數(shù)字電路系統(tǒng)的設(shè)計(jì)②熟悉ispEXPERT軟件的使用方法③學(xué)習(xí)用VHDL基本邏輯電路和狀態(tài)機(jī)電路的綜合設(shè)計(jì)應(yīng)用。二、實(shí)驗(yàn)要求①主、支干道各設(shè)有一個(gè)綠、黃、紅指示燈,兩個(gè)顯示數(shù)碼管。
②主干道處于常允許通行狀態(tài),而支干道有車來才允許通行。當(dāng)主干道允許通行亮綠燈時(shí),支干道亮紅燈。而支干道允許通行亮綠燈時(shí),主干道亮紅燈。
③當(dāng)主、支道均有車時(shí),兩者交替允許通行,主干道每次放行45s,支干道每次放行25s,由亮綠燈變成亮紅燈轉(zhuǎn)換時(shí),先亮5s的黃燈作為過渡,并進(jìn)行減計(jì)時(shí)顯示。三、設(shè)計(jì)方案①設(shè)置支干道有車開關(guān)SB。②系統(tǒng)中要求有45秒、25秒和5秒三種定時(shí)信號(hào),需要設(shè)
2、計(jì)三種相應(yīng)的計(jì)時(shí)顯示電路。計(jì)時(shí)方法為倒計(jì)時(shí)。定時(shí)的起始信號(hào)由主控電路給出,定時(shí)時(shí)間結(jié)束的信號(hào)輸入到主控電路。③主控制電路的輸入信號(hào)一方面來自車輛檢測(cè),另一方面來自45秒、25秒、5秒的定時(shí)到信號(hào);輸出有計(jì)時(shí)啟動(dòng)信號(hào)(置計(jì)數(shù)起始值)和紅綠燈驅(qū)動(dòng)信號(hào)。四、實(shí)驗(yàn)原理實(shí)驗(yàn)有四個(gè)模塊組成:顯示模塊,計(jì)數(shù)模塊,控制模塊,鏈接模塊。①顯示模塊由兩部分組成,一是由七段數(shù)碼管組成的倒計(jì)時(shí)顯示器,每個(gè)方向兩個(gè)七段數(shù)碼管;二是由發(fā)光二極管代替的交通燈,每個(gè)方向3個(gè)發(fā)光二極管。②每個(gè)方向有一組2位倒計(jì)時(shí)器模塊,用以顯示該方向交通燈剩余的點(diǎn)亮?xí)r間。③控制模塊是交通燈的核心,主要控制交通燈按工作順序自動(dòng)變換,
3、同時(shí)控制倒計(jì)時(shí)模塊工作,每當(dāng)?shù)褂?jì)時(shí)回零時(shí),控制模塊接收到一個(gè)計(jì)時(shí)信號(hào),從而控制交通燈進(jìn)入下一個(gè)工作狀態(tài)。④鏈接模塊將各個(gè)模塊鏈接起來。實(shí)驗(yàn)交通燈狀態(tài)轉(zhuǎn)移如圖1所示:模塊結(jié)構(gòu)五、主要儀器設(shè)備IspDesignEXPERT軟件,F(xiàn)PGA配置存儲(chǔ)芯片,硬件電路板。六、實(shí)驗(yàn)步驟①啟動(dòng)IspDesignEXPERT軟件,并創(chuàng)立設(shè)計(jì)項(xiàng)目emma和選擇器件ispLSI1016E。②在Source-New中,選擇“VHDLModule”,然后選擇OK。③在VHDL文本編輯器中輸入源文件。④選擇Tools-SynplicitySynplifySynthesis命令,對(duì)源文件進(jìn)行編譯、綜合。⑤在項(xiàng)目管
4、理器的處理過程窗口中選擇ConstraintManager選項(xiàng),進(jìn)行引腳鎖定,根據(jù)實(shí)驗(yàn)板來進(jìn)行引腳鎖定。⑥插板,在Tools-ISDP中,搜索源文件和板,進(jìn)行調(diào)試,觀察板上結(jié)果。七、調(diào)試過程原理圖編譯:看到Done則說明通過。圖1當(dāng)前面打?qū)磿r(shí)說明通過。引腳鎖定圖下載程序成功:功能仿真:時(shí)序仿真八、程序控制程序:JTDKZ
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYJTDKZIS
PORT(CLK,SB,cnt,RST:INSTD_LOGIC;
en,MR,MY,MG,BR,BY,BG:OUTSTD_LOGIC;
din:outS
5、TD_LOGIC_vector(7downto0));
ENDENTITYJTDKZ;
ARCHITECTUREARTOFJTDKZIS
TYPESTATE_TYPEIS(A,B,C,D);
SIGNALp_STATE,n_state:STATE_TYPE;
BEGIN
reg:PROCESS(CLK,rst)IS
BEGIN
ifrst='1'then
p_STATE<=A;
ELSIF(CLK'EVENTANDCLK='1')THEN
p_STATE<=n_state;
ENDIF;
endprocessreg;com:PROCESS(sb,cnt,p_state)
beg
6、in
CASEp_STATEIS
WHENA=>MR<='0';MY<='0';MG<='1';
BR<='1';BY<='0';BG<='0';
IF(SBANDcnt)='1'THEN
n_STATE<=B;
din<="00000101";EN<='0';
ELSE
n_STATE<=A;
din<="01000101";EN<='1';
ENDIF;
WHENB=>MR<='0';MY<='1';MG<='0';
BR<='1';BY<='0';BG<='0';
IFcnt='1'THEN
n_STATE<=C;din<="00100101";EN<='0';
ELSE
n
7、_STATE<=B;din<="01000101";EN<='1';
ENDIF;
WHENC=>MR<='1';MY<='0';MG<='0';
BR<='0';BY<='0';BG<='1';
IFcnt='1'THEN
n_STATE<=D;din<="00000101";EN<='0';
ELSE
n_STATE<=C;din<="01000101";EN<='1';
ENDIF;
WHEND=>MR<='1';MY<='0';MG<='0';
BR<='0'