




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、EDA課程設計報告 題 目:基于FPGA的十字路口交通燈控制器專 業(yè):電子信息工程班 級:一班 姓 名: 學 號: 報告日期:2014/1/5 目錄EDA課程設計報告1目錄2系統(tǒng)設計要求21.系統(tǒng)設計方案3系統(tǒng)設計思路3系統(tǒng)設計方案分析42.交通控制燈各模塊電路設計52.1 控制模塊 controller52.2 時鐘分頻模塊frequency10Hz和frequency92.3 分位電路模塊fenwei122.4 帶閃爍功能的七段數(shù)碼驅動顯示模塊display133.交通控制燈頂層電路設計153.1 原理說明153.2 端口設計說明163.3 Quartus ii 仿真與結果分析174.仿真
2、結果分析195.心得體會19系統(tǒng)設計要求(1) 在十字路口的兩個方向上各設一組紅、綠、黃燈,顯示順序為其中一個方向是(東西方向)是綠燈、黃燈、紅燈;另一方向(南北方向)是紅燈、綠燈、黃燈。(2) 設置一組數(shù)碼管,以倒計時的方式顯示允許通行或禁止通行的時間。其中綠燈、黃燈、紅燈的持續(xù)時間分別是20s、5s和25s。(3) 當各條路上任意一條上出現(xiàn)特殊情況時,如當消防車、救護車或其他需要優(yōu)先放行的車輛通過時,各方向上均是紅燈,倒計時停止,且顯示數(shù)字在閃爍。當特殊運行狀態(tài)結束時,控制器恢復原來狀態(tài),繼續(xù)正常運行。1.系統(tǒng)設計方案系統(tǒng)設計思路(1) 本系統(tǒng)設計中均采用混合設計的方法,將整體方案劃分成若
3、干個模塊進行設計。采用VHDL硬件描述語言和原理圖描述相結合的方式,對多種應用電路進行設計,其中底層電路(即模塊電路)采用VHDL硬件描述語言方式實現(xiàn),頂層電路采用原理圖描述方式實現(xiàn)。(2) 系統(tǒng)設計流程提出系統(tǒng)設計要求需求分析模塊化方案設計底層電路設計-VHDL模塊電路設計頂層電路設計-原理圖描述+各模塊連接FPGA整體方案設計實現(xiàn)FPGA整體方案編譯仿真時序仿真功能仿真硬件搭接和運行FPGA整體方案設計完成圖1 系統(tǒng)設計流程系統(tǒng)設計方案分析根據(jù)任務要求,計數(shù)器的值和交通燈亮滅關系如圖1所示。顯然,此任務設計的核心是一個技術范圍為050s的計數(shù)器和一個根據(jù)計數(shù)值作出規(guī)定反應的控制器。假設現(xiàn)有
4、晶振為20MHz,因此還需要分頻電路來得到10Hz和1Hz的時鐘,最后要驅動七段數(shù)碼管,還需要一個譯碼電路。紅燈亮綠燈亮黃燈亮計數(shù)值504525200紅燈亮綠燈亮黃燈亮圖2 計數(shù)值和交通燈亮滅關系根據(jù)上面的分析,交通控制燈系統(tǒng)框圖如圖3所示;HoldReset計數(shù)器紅、黃、綠發(fā)光二極管控制器倒計時數(shù)字及“閃爍控制信號”Clk 1Hz分頻電路20MHz分位譯碼電路Clk 10HzCPLD/FPGA七段數(shù)碼管七段數(shù)碼管驅動電路圖3 交通控制等系統(tǒng)框圖2.交通控制燈各模塊電路設計2.1 控制模塊 controller(1)控制模塊的作用是根據(jù)計數(shù)器的數(shù)值控制發(fā)光二極管的亮、滅,以及輸出倒計時數(shù)值給七
5、段數(shù)碼管的分位譯碼電路。計數(shù)范圍為050。計數(shù)到50后,下一個時鐘沿回復到0,開始下一計數(shù)。此外當檢測到特殊情況(hold=”1”)發(fā)生時,計數(shù)器暫停計數(shù),無條件點亮紅色的發(fā)光二極管。而系統(tǒng)復位信號reset則使計數(shù)器異步清零??刂颇Kcontroller外部端口如圖4所示。圖4控制模塊controller外部端口(2)控制模塊的VHDL程序 程序說明:控制模塊描述了功能鍵hold和reset的功能;同時對頻率為1Hz的時鐘進行計數(shù),通過計數(shù)值,對各個時間段內(nèi)交通燈信號進行描述;此外,模塊還給出了下一步用于倒計時的信號numa4.0和numb4.0。library ieee;use ieee.
6、std_logic_1164.all;use ieee.std_logic_unsigned.all;entity controller isport(clock:in std_logic; reset:in std_logic; hold:in std_logic; flash:out std_logic; numa,numb:out integer range 0 to 25; reda,greena,yellowa:out std_logic; redb,greenb,yellowb:out std_logic );end;architecture control of controll
7、er issignal countnum:integer range 0 to 50;begin process(clock)beginif reset='1' then countnum<=0;elsif rising_edge(clock) then if hold='1' then flash<='1' else flash<='0' if countnum=47 then countnum<=0; else countnum<=countnum+1; end if; end if; end i
8、f;end process;process(clock)beginif rising_edge(clock) then if hold='1' then reda<='1' redb<='1' greena<='0' greenb<='0' yellowa<='0' yellowb<='0' else if countnum<=17 then numa<=20-countnum; reda<='0' greena&
9、lt;='1' yellowa<='0' elsif (countnum<=24) then numa<=25-countnum; reda<='0' greena<='0' yellowa<='1' else numa<=50-countnum; reda<='1' greena<='0' yellowa<='0' end if; if countnum<=24 then numb<=25-co
10、untnum; redb<='1' greenb<='0' yellowb<='0' elsif countnum<=44 then numb<=45-countnum; redb<='0' greenb<='1' yellowb<='0' else numb<=50-countnum; redb<='0' greenb<='0' yellowb<='1' end if; end
11、if; end if; end process;end; (3)控制模塊的VHDL仿真驗證l 初始狀態(tài)l 整體功能驗證l reset鍵功能驗證-將狀態(tài)恢復至初始狀態(tài),計數(shù)器顯示初始值,綠燈greena和紅燈redb亮l hold鍵功能驗證-保持計數(shù)值不變,紅燈reda和redb同時亮,flash閃爍輸出為高電平2.2 時鐘分頻模塊frequency10Hz和frequency(1)時鐘分頻模塊是對系統(tǒng)時鐘(設為20MHz)進行分頻,得到10Hz和1Hz的時鐘。時鐘分頻模塊的外部端口如圖5所示。圖5 時鐘分頻模塊的外部端口(2)時鐘分頻模塊frequency 10Hz的VHDL程序library
12、 ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity frequency10hz isport(clk20m:in std_logic; clk10hz:out std_logic);end;architecture count of frequency10hz issignal tout:integer range 0 to 999999;signal clk:std_logic;begin process(clk20m) begin if rising_edge(clk20m) then if to
13、ut=999999 then tout<=0; clk<= not clk; else tout<=tout+1; end if; end if;end process;clk10hz<=clk;end; (3)時鐘分頻模塊frequency10Hz仿真驗證(4)時鐘分頻模塊frequency的VHDL程序程序說明:通過一級分頻得到10Hz的時鐘,對其再次分頻得到1Hz時鐘。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity frequency isport(cl
14、k10hz:in std_logic; clk1hz:out std_logic);end;architecture count of frequency issignal tout:integer range 0 to 4;signal clk:std_logic;begin process(clk10hz) begin if rising_edge(clk10hz) then if tout=4 then tout<=0; clk<= not clk; else tout<=tout+1; end if; end if;end process;clk1hz<=clk
15、;end; (5)時鐘分頻模塊frequency仿真驗證2.3 分位電路模塊fenwei(1)因為控制輸出的倒計時數(shù)值可能是1位或者2位十進制數(shù),所以七段數(shù)碼管的譯碼電路前要加上分位電路(即將其分為2個1位的十進制數(shù),如25分為2和5)。(2)分位電路模塊fenwei的外部端口如圖6所示。fenwei模塊輸出的計數(shù)值numa4.0和numb4.0將十位數(shù)和個位數(shù)分別存到數(shù)組里,這樣可以得到兩個路口倒計時時間顯示的十位和個位信號。圖6 分位電路模塊fenwei外部端口(3)分位電路模塊fenwei的VHDL程序 程序說明:以10Hz的速度提取顯示值。library ieee;use ieee.s
16、td_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenwei isport(clock:in std_logic; numin:in integer range 0 to 25; numa,numb:out integer range 0 to 15);end;architecture fen of fenwei is begin process(clock) begin if rising_edge(clock) then if numin>=20 then numa<=2; numb<=numin-20;
17、elsif numin>=10 then numa<=1; numb<=numin-10; else numa<=0; numb<=numin; end if; end if; end process;end;(3)分位電路模塊fenwei仿真驗證2.4 帶閃爍功能的七段數(shù)碼驅動顯示模塊display(1)七段數(shù)碼驅動顯示模塊對輸入信號進行譯碼得到七段數(shù)碼顯示器的驅動信號,其外部端口如圖7所示。圖7 七段數(shù)碼驅動顯示模塊display外部端口(2)七段數(shù)碼驅動顯示模塊display的VHDL程序library ieee;use ieee.std_logic_116
18、4.all;use ieee.std_logic_unsigned.all;entity display isport(clock:in std_logic; flash:in std_logic; qin:in std_logic_vector(3 downto 0); display:out std_logic_vector(0 to 6);end;architecture light of display issignal timeout:integer range 0 to 11; beginprocess(clock)beginif rising_edge(clock) then i
19、f (flash='0') then timeout<=0; else if (timeout=11) then timeout<=timeout+1; end if; end if; if(timeout<=6) then case qin is when "0000"=>display<="1111110" when "0001"=>display<="0110000" when "0010"=>display<=&quo
20、t;1101101" when "0011"=>display<="1111001" when "0100"=>display<="0110011" when "0101"=>display<="1011011" when "0110"=>display<="1011111" when "0111"=>display<="1110000&
21、quot; when "1000"=>display<="1111111" when "1001"=>display<="1111011" when others=>display<="0000000" end case; else display<="0000000" end if; end if; end process;end;(3)七段數(shù)碼驅動顯示模塊display仿真驗證 3.交通控制燈頂層電路設計3.1 原理說明交通頂層電
22、路圖如圖8所示。圖8中有3個輸入信號clk20m、reset和hold。clk20m為系統(tǒng)輸入時鐘,它通過分頻器可分別得到1Hz和10Hz頻率信號,分別用來向controller模塊和display模塊提供時鐘脈沖。controller模塊根據(jù)時鐘脈沖上升沿開始計數(shù),將數(shù)據(jù)傳輸?shù)絥uma40和numb40兩個端口,并對reda、greena、yellowa和redb、greenb、yellowb兩組紅、黃、綠燈開始控制。fenwei模塊時鐘由系統(tǒng)輸入時鐘clk20m控制,將controller模塊輸出端口numa40和numb40傳輸過來的數(shù)據(jù)分為十位數(shù)和個位數(shù)分別存到numina、numin
23、b、numinc和numind兩組兩位數(shù)組里,然后分別送到display模塊輸入端口numina、numinb、numinc和numind進行數(shù)據(jù)顯示。圖8 交通控制燈頂層設計原理圖3.2 端口設計說明l clk20m:系統(tǒng)輸入時鐘,來自于石英振蕩器。l hold:輸入,功能鍵,保持:按hold鍵能實現(xiàn)特殊的功能:顯示倒計時的兩組數(shù)碼管閃爍;計數(shù)器停止計數(shù)并保持在原有的狀態(tài);東西,南北路口均顯示紅燈狀態(tài);特殊狀態(tài)接觸后可以繼續(xù)計數(shù)。l reset:輸入,功能鍵,復位。l flash:輸出,轉換期間的閃爍信號。l redb:輸出,B路口顯示紅燈信號,高電平有效。l greenb:輸出,B路口顯示
24、綠燈信號,高電平有效。l yellowb:輸出,B路口顯示黃燈信號,高電平有效。l reda:輸出,A路口顯示紅燈信號,高電平有效。l greena:輸出,A路口顯示綠燈信號,高電平有效。l yellowab:輸出,A路口顯示黃燈信號,高電平有效。l displaya:A路口倒數(shù)時間顯示十位數(shù)l displayb:A路口倒數(shù)時間顯示個位數(shù)l displayc:B路口倒數(shù)時間顯示十位數(shù)l displayd:B路口倒數(shù)時間顯示個位數(shù)3.3 Quartus ii 仿真與結果分析交通燈控制系統(tǒng)的時序仿真波形如圖9圖11所示??梢姡瑘D9中reset設置為高電平“1”時顯示初始值,為低電平“0”時顯示器開
25、始倒計時。圖9 交通燈控制系統(tǒng)的時序仿真波形1 圖10是仿真結果的細節(jié)部分。當A路口綠燈亮。displaya和displayb從20s倒計時,同時B路口燈亮,displayc和displayd從25s倒計時。當A路口綠燈倒計時結束時,讓黃燈亮,倒計時5s為轉換信號,當黃燈倒計時結束時紅燈亮,displaya和displayb從25s倒計時。B路口綠燈亮,displayc和displayd從20s倒計時,A路口紅燈亮,displaya和displayb從25s倒計時,這時B路口重復A路口的上一次動作,如此循環(huán)下去。圖10 交通燈控制系統(tǒng)的時序仿真波形2圖11 交通燈控制系統(tǒng)的時序仿真波形3從圖1
26、1可以看出交通燈控制系統(tǒng)中hold鍵的功能。當hold設置為高電平“1”時顯示器保持原有數(shù)字不變,且無條件點亮紅色的發(fā)光二極管reda=1。當hold設置為低電平“0”時,顯示器繼續(xù)計數(shù)。4.仿真結果分析通過設定clk值以及start和EMI的初值,就可以得到仿真波形圖。EMI高電平信號輸入時,所有交通燈都變?yōu)榧t燈狀態(tài)(符合任務書的要求)。由仿真波形圖還可以清楚的看出各時間段每個交通燈的狀態(tài)。要得到正確的仿真波形圖就不許設定合適的時間信號clk值。如果clk值設置的太小則交通燈狀態(tài)變化得太快無法分辨,如果clk值設置得太大則交通燈狀態(tài)轉換緩慢,效果不明顯。其次,要設定start初值,如果沒有設定start初值就不可能觸發(fā)而得到仿真圖。最后,就是要設置一EMI高電平信號來檢測緊急情況下的交通燈的狀態(tài)。5.心得體會通過這次的EDA課程設計,發(fā)現(xiàn)了自己的很多不足,發(fā)現(xiàn)了很多知識上的漏洞。同時也看到了自己的實踐經(jīng)驗還是比較缺乏
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 劍麻收購合同范本
- 購買茶具合同范本
- 建筑廢品回收合同范本
- 黎川租房合同范本
- 污泥外運合同范本
- 木材購貨合同范本
- 家電的合同范本
- 餐廳托管合同范本
- 簽訂保潔車合同范本
- 施工合同范本規(guī)定
- DL∕T 5032-2018 火力發(fā)電廠總圖運輸設計規(guī)范
- 國際留學合作框架協(xié)議書
- DL-T 297-2023 汽輪發(fā)電機合金軸瓦超聲檢測
- JGJT 152-2019 混凝土中鋼筋檢測技術標準
- DB3212-T 1157-2024 病案庫房建設規(guī)范
- 欠款還款計劃范文
- QBT 2088-1995 硅藻土行業(yè)標準
- 數(shù)字電子技術(武漢科技大學)智慧樹知到期末考試答案章節(jié)答案2024年武漢科技大學
- 室內(nèi)設計采光分析報告
- 學習解讀2024年新制定的學位法課件
- 四川省高等教育自學考試自考畢業(yè)生登記表001匯編
評論
0/150
提交評論