版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計(jì)</b></p><p> 課程名稱: 交通燈設(shè)計(jì) . </p><p> 學(xué) 院: 電氣工程學(xué)院 專 業(yè): 測儀 </p><p> 姓 名: 學(xué)
2、 號: </p><p> 年 級: 級 任課教師: </p><p> 2012年 1月12日</p><p><b> 電氣工程學(xué)院</b></p><p><b> 課程設(shè)計(jì)任務(wù)書</b></
3、p><p> 課題名稱: 交通燈控制器的設(shè)計(jì) </p><p> 專業(yè)、班級: 測控技術(shù)與儀器測儀 班 </p><p> 指導(dǎo)教師: </p><p> 20 年 1 月 2 日至 20 年 1 月 13 日共 2 周</p><p> 指導(dǎo)教師簽名:
4、 </p><p> 教研室主任簽名: </p><p> 分管院長簽名: </p><p><b> 一、課程設(shè)計(jì)內(nèi)容</b></p><p> 1.學(xué)習(xí)ALTERA公司的FPGA/CPLD的結(jié)構(gòu)、特點(diǎn)和性能。</p><p> 2
5、.學(xué)習(xí)集成開發(fā)軟件MAX+plus II/Quartus II的使用及設(shè)計(jì)過程。</p><p> 3.熟悉EDA工具設(shè)計(jì)數(shù)字電路設(shè)計(jì)方法,掌握VHDL硬件描述語言設(shè)計(jì)方法。</p><p> 4.根據(jù)給定題目設(shè)計(jì)數(shù)字電路,來加深對可編程邏輯器件的理解和掌握。</p><p> 二、課程設(shè)計(jì)應(yīng)完成的工作</p><p> 1.在所選擇
6、器件內(nèi)完成交通燈控制器的設(shè)計(jì),要求設(shè)計(jì)完成后芯片具有交通燈控制器的全部功能、包括顯示和操作接口。</p><p> 2.交通燈控制器要求控制十字路口兩道路的交通燈,兩道路交替通行,每次通行時(shí)間可設(shè)定20——60秒之間,每個(gè)路口要求有前行、禁止、人行燈。(根據(jù)實(shí)際設(shè)計(jì)進(jìn)度考慮可以增加左右轉(zhuǎn)向燈,等待和通行時(shí)間顯示等)。</p><p> 3.撰寫設(shè)計(jì)說明書一份(不少于2000字),闡述系
7、統(tǒng)的工作原理,軟、硬件設(shè)計(jì)方法,重點(diǎn)闡述軟件思路。說明書應(yīng)包括封面、任務(wù)書、目錄、摘要、正文、參考文獻(xiàn)(資料)等內(nèi)容,以及硬件電路綜合圖和軟件程序清單等材料。</p><p> 注:設(shè)計(jì)說明書題目字體用小三,黑體,正文字體用五號字,宋體,小標(biāo)題用四號及小四,宋體,并用A4紙打印。</p><p> 三、課程設(shè)計(jì)進(jìn)程安排</p><p> 四、設(shè)計(jì)資料及參考文獻(xiàn)
8、</p><p> 1.康華光 主編,《電子技術(shù)基礎(chǔ)-數(shù)字部分》,高等教育出版社,1998。</p><p> 2.譚會(huì)生等 主編,《EDA技術(shù)及應(yīng)用》,西安電子科技大學(xué)出版社,2001</p><p> 3.潘松等 主編,《EDA技術(shù)實(shí)用教程》,科學(xué)出版社,2006</p><p> 4.雷伏容 主編,《VHDL電路設(shè)計(jì)》,清華大學(xué)
9、出版社,2006</p><p> 5.Charles H.Roth等著,《數(shù)字系統(tǒng)設(shè)計(jì)與VHDL》,電子工業(yè)出版社,2008</p><p> 五、成績評定綜合以下因素:</p><p> (1) 說明書及設(shè)計(jì)圖紙的質(zhì)量(占50%)。</p><p> (2) 獨(dú)立工作能力及設(shè)計(jì)過程的表現(xiàn) (占30%)。</p>&l
10、t;p> (3) 回答問題的情況(占20%)。</p><p> 說明書和圖紙部分評分分值分布如下:</p><p> 任務(wù)分析與設(shè)計(jì)思路(10分)</p><p> 要求說明設(shè)計(jì)任務(wù)的具體技術(shù)指標(biāo)打算如何實(shí)現(xiàn),根據(jù)實(shí)現(xiàn)各技術(shù)指標(biāo)的解決方法,提出總體設(shè)計(jì)的思路和解決方案,說明其中關(guān)鍵問題及其解決辦法。</p><p><b
11、> 詳細(xì)設(shè)計(jì)(50分)</b></p><p> 根據(jù)總體設(shè)計(jì)完成下面任務(wù):</p><p> 1)用Quartus 綜合出電路原理圖;(10分)</p><p> 2)列出芯片引腳分配并有注釋;(10分)</p><p> 3)提供波形圖并給出具體分析;(10分)</p><p> 4)
12、提交程序清單,程序清單必須有詳細(xì)注釋。(10分)</p><p><b> 六、其他說明</b></p><p> 課程設(shè)計(jì)需獨(dú)立完成,每人必須提交課程設(shè)計(jì)說明書。</p><p> 課程設(shè)計(jì)說明書內(nèi)容不得雷同,雷同者本課程設(shè)計(jì)成績一律不及格。指導(dǎo)老師不負(fù)責(zé)甄別原創(chuàng)者與抄襲者。</p><p><b>
13、 正 文</b></p><p><b> 目 錄</b></p><p> 一.摘要..........................</p><p> 二.設(shè)計(jì)思路........................</p><p> 三.設(shè)計(jì)過程...............
14、.........</p><p> ?。保诸l模塊div..................</p><p> ?。玻t綠的現(xiàn)實(shí)模塊crosslight與crosslight2......</p><p> 3.計(jì)數(shù)兼譯碼模塊.................</p><p> ?。矗K連接圖....................&l
15、t;/p><p> 五.設(shè)計(jì)分析與總結(jié).....................</p><p> 六.程序清單........................</p><p> 一、摘 要</p><p> EDA技術(shù)是以計(jì)算機(jī)為工具,根據(jù)硬件描述語言VHDL完成的設(shè)計(jì)文件,自動(dòng)的完成邏輯編譯,化簡,分割,綜合及優(yōu)化,布局布線
16、,仿真以及對特定目標(biāo)芯片的適配編譯和編程下載等工作.隨著基于CPLD的EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大與深入,EDA技術(shù)在電子信息,通信,自動(dòng)控制用計(jì)算機(jī)等領(lǐng)域的重要性日益突出。作為一個(gè)學(xué)習(xí)通信工程專業(yè)的學(xué)生,我們必須不斷的了解更多的新產(chǎn)品信息,這就更加要求我們對EDA有個(gè)全面認(rèn)識。本程序設(shè)計(jì)的是基于VHDL的數(shù)字時(shí)鐘,采用EDA作為開發(fā)工具,VHDL語言為硬件描述語言,QUARTUSII作為程序的運(yùn)行平臺,所開發(fā)的程序經(jīng)過調(diào)試運(yùn)行,波
17、形仿真驗(yàn)證,初步實(shí)現(xiàn)了設(shè)計(jì)目標(biāo)。本程序使用的硬件描述語言VHDL,可以大大降低了硬件數(shù)字系統(tǒng)設(shè)計(jì)的入門級別,讓人感覺就是C語言的親近。通過本次的課程設(shè)計(jì),不但使同學(xué)們進(jìn)一步了解EDA技術(shù)在實(shí)際中的應(yīng)用,也使同學(xué)們對EDA的綜合應(yīng)用有了更深一步的應(yīng)用,這次的課程設(shè)計(jì)給同學(xué)們以后的學(xué)習(xí)與工作中有了一個(gè)全面的指導(dǎo)作用. </p><p> 典型的EDA工具中必須包含兩個(gè)特殊的軟件包,即綜合器和適配器,綜合器的功能就是
18、將設(shè)計(jì)者在EDA平臺上完成的針對某個(gè)系統(tǒng)項(xiàng)目的VHDL原理圖或狀態(tài)圖形描述,針對給定的硬件系統(tǒng)組件,進(jìn)行編譯,優(yōu)化,轉(zhuǎn)換和綜合,最終獲得我們欲將實(shí)現(xiàn)的功能的描述文件。綜合器在工作前,必須給定要實(shí)現(xiàn)的硬件結(jié)構(gòu)參數(shù),它的功能就是將軟件描述與給定的硬件結(jié)構(gòu)用一定的方式聯(lián)系起來,也就是說綜合器是軟件描述與硬件實(shí)現(xiàn)的一座橋梁。綜合過程就是將電路的高級語言描述轉(zhuǎn)換成低級的,可與目標(biāo)器件CPLD相映射的網(wǎng)表文件。適配器的功能是將由綜合器產(chǎn)生的網(wǎng)表文件
19、配置與指定的目標(biāo)器件中,產(chǎn)生最終的下載文件。適配器所選的目標(biāo)器件(CPLD芯片)必須包含于在綜合器中已指定的目標(biāo)器件系列。</p><p> 硬件描述語言VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language。它主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了還有很多硬件特征的語句外,VHDL的語言形式和描述風(fēng)格與
20、句法是十分類似與一般的高級計(jì)算機(jī)語言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對一個(gè)設(shè)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。 </p><p><b> 二、
21、設(shè)計(jì)思路 </b></p><p> 首先,既然是要用VHDL語言設(shè)計(jì)就必須得先學(xué)會(huì)VHDL語言,這是設(shè)計(jì)前必須的準(zhǔn)備工作;其次,要求學(xué)會(huì)軟件的仿真使用,此次設(shè)計(jì)中所用的軟件工具是QUARTUSII 5.1;再者就是具體設(shè)計(jì)過程的構(gòu)想了。</p><p> 在車流不需交叉轉(zhuǎn)彎的單十字路口可以僅用簡單的四組的紅、黃、綠燈來控制,其中兩兩相同。假設(shè)一個(gè)十字路口有東西南北方向
22、,則南北方向紅、黃、綠燈時(shí)序完全相同,東西方向亦如此。當(dāng)南北方向?yàn)榫G燈時(shí)東西方向?yàn)榧t燈,此時(shí)南北方向通行而東西方向禁止通行,同時(shí)來至東、西方的車輛均可以右轉(zhuǎn),但不能左轉(zhuǎn),這是此設(shè)計(jì)的最大不足。當(dāng)一個(gè)直通方向的紅燈停止時(shí)為該直通方向的出發(fā)的車輛不與另一直通方向已經(jīng)進(jìn)入十字路交叉處但還為使出的車輛發(fā)生碰撞事故,必須設(shè)置黃燈等待指示作為緩沖。即為紅燈停了亮黃燈,黃燈停了亮綠燈,綠燈停了亮紅燈,依次循環(huán)。同時(shí)可以設(shè)置黃等2秒,綠燈20秒,紅燈2
23、2秒。采用模塊化設(shè)計(jì),先將各個(gè)功能模塊設(shè)計(jì)調(diào)試成功之后再用例化語句將各個(gè)功能模塊連接起來,即建立頂層模塊。</p><p><b> 三、設(shè)計(jì)過程</b></p><p><b> 1、分頻模塊div</b></p><p> 其功能就是根據(jù)所提供的晶振頻率進(jìn)行分頻,以予驅(qū)動(dòng)計(jì)數(shù)模塊和紅綠燈顯示模塊能,此模塊可以通過
24、改變軟件的個(gè)別參數(shù)實(shí)現(xiàn)任意倍數(shù)的分頻。</p><p> Clk接晶振,fpclk用于驅(qū)動(dòng)后續(xù)模塊,rst接復(fù)位信號,低電平復(fù)位。</p><p> 紅綠的顯示模塊crosslight與crosslight2</p><p> 用于對紅綠燈的顯示控制,分別控制兩個(gè)直通方向的紅綠燈,clk為時(shí)鐘輸入端,接分頻模塊的輸出,rst1與rst0分別為復(fù)位信號輸入端,高
25、電平</p><p> 復(fù)位,greenlgt、yellowlgt、 redlgt與greenlgt0、 yellowlgt0、 redlgt0 分別作為兩個(gè)直通方向的綠燈黃燈和紅燈的顯示。</p><p><b> 計(jì)數(shù)兼譯碼模塊</b></p><p> 這六個(gè)模塊均為計(jì)數(shù)模塊,其輸出直接為字形碼,即兼?zhèn)渥g碼的功能。具體原理為采用加計(jì)
26、數(shù)器的方向顯示,利用直接查表賦值的方法逐一賦值,于是就可以實(shí)現(xiàn)正序的加一計(jì)數(shù)行成倒序的減一計(jì)數(shù)。此六個(gè)模塊的功能實(shí)現(xiàn)原理完全一致,EN02 EN20 EN22 ENe02 ENe20 ENe22即為復(fù)位輸入端,低電平復(fù)位。右端均為輸出端,輸出與七段顯示碼對應(yīng)的字型碼可以直接驅(qū)動(dòng)數(shù)碼管。</p><p> 模塊連接圖 通過頂層模塊的例化語句連接得到此圖</p><p><b&g
27、t; ?。ㄝ斎攵丝?) </b></p><p><b> (輸出端口)</b></p><p><b> 四、仿真波形</b></p><p> 圖中第一個(gè)為分頻器時(shí)鐘輸入,第二到七個(gè)信號為紅綠燈的輸出信號,以下為計(jì)數(shù)輸出,計(jì)數(shù)輸出全為字型碼,可直接驅(qū)動(dòng)七段數(shù)碼管顯示,例如圖中的“1111110”為十進(jìn)
28、制“0”的字型碼。</p><p><b> 五、設(shè)計(jì)分析與總結(jié)</b></p><p> 本次課程設(shè)計(jì)的程序的設(shè)計(jì)和調(diào)試都花了我不少精力,雖然結(jié)果并不如意但至少最后還是仿真陳功了,而且通過本次課程設(shè)計(jì)是我進(jìn)一步加深了對VHDL硬件描述語言的理解及其運(yùn)用,VHDL描述數(shù)字電路系統(tǒng)設(shè)計(jì)的行為、功能、輸入和輸出,它在語法上與現(xiàn)代編程語言相似,但包含了許多與硬件有特殊關(guān)
29、系的結(jié)構(gòu)。VHDL將一個(gè)設(shè)計(jì)稱為一個(gè)實(shí)體Entity(元件、電路或者系統(tǒng)),并且將它分成外部的可見部分(實(shí)體名、連接)和內(nèi)部的隱藏部分(實(shí)體算法、實(shí)現(xiàn))。當(dāng)定義了一個(gè)設(shè)計(jì)的實(shí)體之后,其他實(shí)體可以利用該實(shí)體,也可以開發(fā)一個(gè)實(shí)體庫。所以,內(nèi)部和外部的概念對系統(tǒng)設(shè)計(jì)的VHDL是十分重要的。外部的實(shí)體名或連接由實(shí)體聲明Entity來描述。而內(nèi)部的實(shí)體算法或?qū)崿F(xiàn)則由結(jié)構(gòu)體 Architecture來描述。結(jié)構(gòu)體可以包含相連的多個(gè)進(jìn)程proce
30、ss或者組建component等其他并行結(jié)構(gòu)。</p><p> 在此過程中,程序的反復(fù)調(diào)試簡直讓人想哭,有時(shí)候就僅僅是一個(gè)標(biāo)點(diǎn)符號的錯(cuò)誤都會(huì)花費(fèi)大量的時(shí)間,特別是頂層模塊的調(diào)用,一不小心就錯(cuò)誤一大堆。不過盡管感覺這次設(shè)計(jì)好難,但這也可以作為一次寶貴的人生體驗(yàn),可以加強(qiáng)獨(dú)立學(xué)習(xí)的能力,也許有同學(xué)會(huì)覺得快畢業(yè)了就沒必要學(xué)習(xí)了但我不這樣認(rèn)為,我以前沒學(xué)好是現(xiàn)在更應(yīng)該抓住著大學(xué)剩下的短短時(shí)間。盡管很累,但我覺得很值得
31、,謝謝老師給予我這個(gè)“累”的機(jī)會(huì)。</p><p><b> 六、程序清單</b></p><p> ?。ㄓ捎诹鶄€(gè)計(jì)數(shù)兼顯示模塊設(shè)計(jì)思想完全一致,在注釋部分僅對前面兩個(gè)模塊進(jìn)行注釋)</p><p> --頂層模塊,完成各個(gè)功能模塊的鏈接</p><p> LIBRARY IEEE;--主程序庫說明部分</p
32、><p> USE IEEE.Std_Logic_1164.ALL;</p><p> ENTITY yintong IS--實(shí)體說明</p><p> port( rst0,rst1,rst,clk: in std_logic;</p><p> yellowlgt,greenlgt,redlgt: out std_logic;<
33、/p><p> greenlgt0,yellowlgt0,redlgt0: out std_logic;</p><p> DOUT02M: out std_logic_vector(6 downto 0);</p><p> DOUTe02M:out std_logic_vector(6 downto 0);</p><p> DOUT
34、22M,DOUT22B:out std_logic_vector(6 downto 0);</p><p> DOUT20M,DOUT20B:out std_logic_vector(6 downto 0);</p><p> DOUTe20M,DOUTe20B:out std_logic_vector(6 downto 0);</p><p> DOUTe2
35、2M,DOUTe22B:out std_logic_vector(6 downto 0));</p><p> end yintong;</p><p> architecture tong of yintong is--結(jié)構(gòu)體說明</p><p> component div--分頻模塊引用</p><p> port( rst:
36、in std_logic;</p><p> clk: in std_logic;</p><p> fpclk: out std_logic);</p><p> end component;</p><p> component crosslight2-- 一直通方向紅綠燈顯示模塊引用</p><p>
37、 port(clk: in std_logic;</p><p> rst1: in std_logic;</p><p> greenlgt: out std_logic;</p><p> yellowlgt: out std_logic;</p><p> redlgt: out std_logic);</p>&
38、lt;p> end component;</p><p> component crosslight-- 另一直通方向的紅綠燈顯示模塊引用</p><p> port(clk: in std_logic;</p><p> rst0: in std_logic;</p><p> greenlgt0: out std_logi
39、c;</p><p> yellowlgt0: out std_logic;</p><p> redlgt0: out std_logic);</p><p> end component;</p><p> component cnt02s-- 一直通方向的黃燈顯示模塊引用</p><p> port(
40、clk,EN02B:in std_logic;</p><p> DOUT02M:out std_logic_vector(6 downto 0));</p><p> end component;</p><p> component cnte02s-- 另一直通方向的黃的顯示模塊引用</p><p> port(clk,ENe0
41、2B:in std_logic;</p><p> DOUTe02M:out std_logic_vector(6 downto 0));</p><p> end component;</p><p> component CNT22s-- 一直通方向的紅燈顯示模塊引用</p><p> port(clk,EN22A:in std
42、_logic;</p><p> DOUT22M,DOUT22B:out std_logic_vector(6 downto 0));</p><p> end component;</p><p> component CNT20s-- 一直通方向的綠燈顯示模塊引用</p><p> port(clk,EN20A:in std_l
43、ogic;</p><p> DOUT20M,DOUT20B:out std_logic_vector(6 downto 0));</p><p> end component;</p><p> component CNTe20s-- 另一直通方向的綠燈顯示模塊引用</p><p> port(clk,ENe20A:in std_
44、logic;</p><p> DOUTe20M,DOUTe20B:out std_logic_vector(6 downto 0));</p><p> end component;</p><p> component CNTe22s-- 另一直通方向的紅燈顯示模塊引用</p><p> port(clk,ENe22A:in s
45、td_logic;</p><p> DOUTe22M,DOUTe22B:out std_logic_vector(6 downto 0));</p><p> end component;</p><p> signal o1:std_logic;-- 信號量的定義</p><p> signal yl:std_logic; --
46、 信號量的定義</p><p> signal eyl:std_logic; -- 信號量的定義</p><p> signal rl:std_logic; -- 信號量的定義 下同</p><p> signal erl:std_logic;</p><p> signal gl:std_logic;</p>
47、<p> signal egl:std_logic; </p><p><b> begin</b></p><p> u1:div port map(rst,clk,o1);-- 位置映射方法完成信號連接 下同</p><p> u2:crosslight port map(o1,rst1,egl,eyl,erl);&
48、lt;/p><p> u3:crosslight2 port map(o1,rst0,gl,yl,rl);</p><p> u4:cnt02s port map(o1,yl,DOUT02M);</p><p> u5:cnt22s port map(o1,rl,DOUT22M,DOUT22B);</p><p> u6:CNT20s p
49、ort map(o1,gl,DOUT20M,DOUT20B);</p><p> u7:cnte02s port map(o1,eyl,DOUTe02M);</p><p> u8:CNTe20s port map(o1,egl,DOUTe20M,DOUTe20B);</p><p> u9:cnte22s port map(o1,rl,DOUTe22M,DO
50、UTe22B);</p><p> yellowlgt<=yl;-- 賦值輸出 下同</p><p> yellowlgt0<=eyl;</p><p> redlgt<=rl;</p><p> greenlgt<=gl;</p><p> greenlgt0<=egl;
51、</p><p> redlgt0<=erl;</p><p> end tong;-- 頂層模塊結(jié)束</p><p><b> --分頻模塊</b></p><p> library ieee;-- 庫說明</p><p> use ieee.std_logic_1164.a
52、ll;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity div is-- 實(shí)體說明</p><p> port( rst: in std_logic;</p><p> clk: in std_logic;</p><p> fpclk:
53、out std_logic);</p><p><b> end div;</b></p><p> architecture arc of div is-- 結(jié)構(gòu)體說明</p><p><b> begin</b></p><p> process(clk)-- 并行進(jìn)程語句 <
54、/p><p> variable count: integer range 0 to 1000000000;-- 定義允許分頻為0到--1000000000</p><p> variable clk0: std_logic;</p><p><b> begin</b></p><p> if rst='
55、0' then -- rst為低電平時(shí)復(fù)位</p><p> clk0:='0' ;</p><p> elsif clk'event and clk='1' then</p><p> if count=1000 then</p><p> clk0:=not clk0; </
56、p><p> count:=0; --上升沿敏感,定義1000分頻</p><p><b> else </b></p><p> count:=count+1;</p><p><b> end if;</b></p><p><b> end if;&l
57、t;/b></p><p> fpclk<=clk0;</p><p> end process;</p><p><b> end arc;</b></p><p> --一方向紅綠燈顯示模塊</p><p> library ieee;-- 庫說明</p>
58、<p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity crosslight is-- 實(shí)體說明</p><p><b> generic(</b></p><p> ye
59、llow:integer:=2;-- 定義黃燈顯示時(shí)間</p><p> green:integer:=20;-- 定義綠燈顯示時(shí)間</p><p> red:integer:=22-- 定義紅燈顯示時(shí)間</p><p><b> );</b></p><p><b> port(</b&
60、gt;</p><p> clk: in std_logic;</p><p> rst0: in std_logic;</p><p> greenlgt0: out std_logic;</p><p> yellowlgt0: out std_logic;</p><p> redlgt0: out s
61、td_logic);</p><p> end crosslight;</p><p> architecture a of crosslight is-- 結(jié)構(gòu)體說明</p><p> type states is (st0,st1,st2);</p><p> signal state :states;</p>&
62、lt;p> signal cnt : integer;</p><p> signal cnt_end: std_logic;</p><p><b> begin</b></p><p> process(rst0,clk) -- 并行進(jìn)程語句 實(shí)現(xiàn)紅綠燈信號輸入</p><p><b>
63、 begin</b></p><p> if(rst0='1')then-- 定義高電平復(fù)位</p><p> state<=st0; cnt<=0;</p><p> elsif(rising_edge(clk))then</p><p> if(cnt_end='1')t
64、hen</p><p> cnt<=cnt+1;-- 計(jì)數(shù)加一</p><p> else cnt<=0;</p><p><b> end if;</b></p><p> case state is</p><p> when st0=></p>&
65、lt;p> if(cnt=green)then</p><p> state<=st1;</p><p> else state<=st0;</p><p><b> end if;</b></p><p> when st1=></p><p> if(cnt
66、=yellow)then</p><p> state<=st2;</p><p> else state<=st1;</p><p><b> end if;</b></p><p> when st2=></p><p> if (cnt=red)then</
67、p><p> state<=st0;</p><p> else state<=st2;</p><p><b> end if;</b></p><p><b> end case;</b></p><p><b> end if;</b&
68、gt;</p><p> end process;</p><p> process (state) -- 并行進(jìn)程語句 實(shí)現(xiàn)紅綠燈信號輸出</p><p><b> begin</b></p><p> case state is</p><p> when st0=><
69、;/p><p> yellowlgt0<='1';</p><p> greenlgt0<='0';</p><p> redlgt0<='0';</p><p> cnt_end<='1';</p><p> if(cnt=
70、green)then</p><p> cnt_end<='0';</p><p><b> end if;</b></p><p> when st1=></p><p> yellowlgt0<='0';</p><p> green
71、lgt0<='1';</p><p> redlgt0<='0';</p><p> cnt_end<='1';</p><p> if(cnt=yellow)then</p><p> cnt_end<='0';</p><p
72、><b> end if;</b></p><p> when st2=></p><p> yellowlgt0<='0';</p><p> greenlgt0<='0';</p><p> redlgt0<='1';</p
73、><p> cnt_end<='1';</p><p> if(cnt=red)then</p><p> cnt_end<='0';</p><p><b> end if;</b></p><p><b> end case;<
74、/b></p><p> end process;</p><p><b> end a;</b></p><p> --另一方向紅綠燈顯示模塊</p><p> library ieee; -- 庫說明</p><p> use ieee.std_logic_1164.all;
75、</p><p> use ieee.std_logic_unsigned.all;</p><p> entity crosslight2 is-- 實(shí)體說明</p><p><b> generic(</b></p><p> green:integer:=20; -- 定義綠燈顯示時(shí)間</p>
76、;<p> yellow:integer:=2; -- 定義黃燈顯示時(shí)間</p><p> red:integer:=22-- 定義紅燈顯示時(shí)間</p><p><b> );</b></p><p><b> port(</b></p><p> clk: in std
77、_logic;</p><p> rst1: in std_logic;</p><p> greenlgt: out std_logic;</p><p> yellowlgt: out std_logic;</p><p> redlgt: out std_logic</p><p><b>
78、);</b></p><p> end crosslight2;</p><p> architecture a of crosslight2 is-- 結(jié)構(gòu)體說明</p><p> type states is (st0,st1,st2);</p><p> signal state :states;</p>
79、;<p> signal cnt : integer;</p><p> signal cnt_end: std_logic;</p><p><b> begin</b></p><p> process(rst1,clk) -- 并行進(jìn)程語句 實(shí)現(xiàn)紅綠燈信號輸入</p><p><b&
80、gt; begin</b></p><p> if(rst1='1')then</p><p> state<=st0; cnt<=0;-- 復(fù)位</p><p> elsif(rising_edge(clk))then</p><p> if(cnt_end='1')th
81、en</p><p> cnt<=cnt+1;</p><p> else cnt<=0;</p><p><b> end if;</b></p><p> case state is</p><p> when st0=></p><p>
82、 if(cnt=red)then</p><p> state<=st1;</p><p> else state<=st0;</p><p><b> end if;</b></p><p> when st1=></p><p> if(cnt=yellow)the
83、n</p><p> state<=st2;</p><p> else state<=st1;</p><p><b> end if;</b></p><p> when st2=></p><p> if (cnt= green)then</p>&
84、lt;p> state<=st0;</p><p> else state<=st2;</p><p><b> end if;</b></p><p><b> end case;</b></p><p><b> end if;</b></
85、p><p> end process;</p><p> process (state) -- 并行進(jìn)程語句 實(shí)現(xiàn)紅綠燈信號輸出</p><p><b> begin</b></p><p> case state is</p><p> when st0=></p>
86、<p> redlgt<='1';</p><p> yellowlgt<='0';</p><p> greenlgt<='0';</p><p> cnt_end<='1';</p><p> if(cnt=red)then<
87、;/p><p> cnt_end<='0';</p><p><b> end if;</b></p><p> when st1=></p><p> redlgt<='0';</p><p> yellowlgt<='1
88、39;;</p><p> greenlgt<='0';</p><p> cnt_end<='1';</p><p> if(cnt=yellow)then</p><p> cnt_end<='0';</p><p><b> e
89、nd if;</b></p><p> when st2=></p><p> redlgt<='0';</p><p> yellowlgt<='0';</p><p> greenlgt<='1';</p><p> cn
90、t_end<='1';</p><p> if(cnt= green)then</p><p> cnt_end<='0';</p><p><b> end if;</b></p><p><b> end case;</b></p>
91、<p> end process;</p><p><b> end a;</b></p><p> --一方向兩秒計(jì)數(shù)及顯示</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> us
92、e ieee.std_logic_unsigned.all;</p><p> entity CNT02s is-- 實(shí)體說明</p><p> port(clk,EN02B:in std_logic;</p><p> DOUT02M:out std_logic_vector(6 downto 0));--定義七位輸出</p><p&g
93、t; end entity CNT02s;</p><p> architecture art of CNT02s is</p><p> signal CNT2B:std_logic_vector(1 downto 0);</p><p><b> begin</b></p><p> process(clk
94、,EN02B)is</p><p><b> begin</b></p><p> if(clk'event and clk='1')then-- 上升沿計(jì)數(shù)</p><p> if EN02B='1' then CNT2B<=CNT2B+1;-- 計(jì)數(shù)器加一</p><
95、;p><b> ELSE</b></p><p> CNT2B<="01"; </p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p&
96、gt;<p> process(CNT2B) is</p><p> begin </p><p> CASE CNT2B is </p><p> WHEN"00"=>DOUT02M<="0111110";--
97、字型碼輸出</p><p> WHEN"01"=>DOUT02M<="1111110";-- 字型碼輸出</p><p> WHEN OTHERS=>DOUT02M<="1111110";-- 字型碼輸出</p><p><b> END CASE;</b>
98、;</p><p> END PROCESS;</p><p> END ARCHITECTURE ART;</p><p> --二十二秒計(jì)數(shù)兼顯示模塊,正序計(jì)時(shí)倒序輸出</p><p> use ieee.std_logic_1164.all;-- 庫說明</p><p> use ieee.std_l
99、ogic_unsigned.all;</p><p> entity CNT22s is-- 實(shí)體說明</p><p> port(clk,EN22A:in std_logic;</p><p> DOUT22M,DOUT22B:out std_logic_vector(6 downto 0));</p><p> --定義高位和地
100、位字型碼的輸出</p><p> end entity CNT22s;</p><p> architecture art of CNT22s is-- 結(jié)構(gòu)體說明</p><p> signal CNT6B:std_logic_vector(4 downto 0);-- 5位計(jì)數(shù)</p><p> beginlibrary iee
101、e;</p><p> process(clk,EN22A)is-- 正序計(jì)數(shù)并行進(jìn)程語句</p><p><b> begin</b></p><p> if(clk'event and clk='1')then</p><p> if EN22A='1' then C
102、NT6B<=CNT6B+1;-- 上升沿計(jì)數(shù) EN22A為低電平時(shí)復(fù)位</p><p><b> ELSE</b></p><p> CNT6B<="10110";</p><p><b> end if;</b></p><p><b> en
103、d if;</b></p><p> End process;</p><p> Process(CNT6B) is-- 倒序字型碼輸出</p><p> begin </p><p> CASE CNT6B is </p>&
104、lt;p> WHEN"10110"=>DOUT22M<="1111110";DOUT22B<="1111110";</p><p> --字型碼倒序輸出 下同</p><p> WHEN"10101"=>DOUT22M<="1111110";DO
105、UT22B<="0110000"; </p><p> WHEN"10100"=>DOUT22M<="1111110";DOUT22B<="1101101";</p><p> WHEN"10011"=>DOUT22M<="1111110&
106、quot;;DOUT22B<="1111001";</p><p> WHEN"10010"=>DOUT22M<="1111110";DOUT22B<="0110011";</p><p> WHEN"10001"=>DOUT22M<="11
107、11110";DOUT22B<="1011011";</p><p> WHEN"10000"=>DOUT22M<="1111110";DOUT22B<="1011111";</p><p> WHEN"01111"=>DOUT22M<=&q
108、uot;1111110";DOUT22B<="1110010";</p><p> WHEN"01110"=>DOUT22M<="1111110";DOUT22B<="1111111";</p><p> WHEN"01101"=>DOUT22M&
109、lt;="1111110";DOUT22B<="1111011";</p><p> WHEN"01100"=>DOUT22M<="0110000";DOUT22B<="1111110";</p><p> WHEN"01011"=>DO
110、UT22M<="0110000";DOUT22B<="0110000";</p><p> WHEN"01010"=>DOUT22M<="0110000";DOUT22B<="1101101";</p><p> WHEN"01001"=
111、>DOUT22M<="0110000";DOUT22B<="1111001";</p><p> WHEN"01000"=>DOUT22M<="0110000";DOUT22B<="0110011";</p><p> WHEN"00111&
112、quot;=>DOUT22M<="0110000";DOUT22B<="1011011";</p><p> WHEN"00110"=>DOUT22M<="0110000";DOUT22B<="1011111";</p><p> WHEN"
113、00101"=>DOUT22M<="0110000";DOUT22B<="1110010";</p><p> WHEN"00100"=>DOUT22M<="0110000";DOUT22B<="1111111";</p><p> WHEN
114、"00011"=>DOUT22M<="0110000";DOUT22B<="1111011";</p><p> WHEN"00010"=>DOUT22M<="1101101";DOUT22B<="1111110";</p><p>
115、 WHEN"00001"=>DOUT22M<="1101101";DOUT22B<="0110000";</p><p> WHEN"00000"=>DOUT22M<="1101101";DOUT22B<="1101101";</p><
116、;p> WHEN OTHERS=>DOUT22M<="1111110";DOUT22B<="1111110";</p><p><b> END CASE;</b></p><p> END PROCESS;</p><p> END ARCHITECTURE ART;&l
117、t;/p><p> --二十秒計(jì)數(shù)兼顯示模塊,其余注釋同上</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity CNT20s i
118、s</p><p> port(clk,EN20A,EN20B:in std_logic;</p><p> DOUT20M,DOUT20B:out std_logic_vector(6 downto 0));</p><p> end entity CNT20s;</p><p> architecture art of CNT20
119、s is</p><p> signal CNT6B:std_logic_vector(4 downto 0);</p><p><b> begin</b></p><p> process(clk,EN20A,EN20B)is</p><p><b> begin</b></p&g
120、t;<p> if(clk'event and clk='1')then</p><p> if EN20A='1' then CNT6B<=CNT6B+1;</p><p><b> ELSE</b></p><p> cNT6B<="10100";
121、</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> process(CNT6B) is</p><p> begin
122、 </p><p> cASE CNT6B is </p><p> wHEN"10100"=>DOUT20M<="1111110";DOUT20B<="1111110";</p><p> wHEN"10011"=>
123、;DOUT20M<="1111110";DOUT20B<="0110000"; </p><p> wHEN"10010"=>DOUT20M<="1111110";DOUT20B<="1101101";</p><p> wHEN"10001&q
124、uot;=>DOUT20M<="1111110";DOUT20B<="1111001";</p><p> wHEN"10000"=>DOUT20M<="1111110";DOUT20B<="0110011";</p><p> wHEN"0
125、1111"=>DOUT20M<="1111110";DOUT20B<="1011011";</p><p> wHEN"01110"=>DOUT20M<="1111110";DOUT20B<="1011111";</p><p> wHEN&
126、quot;01101"=>DOUT20M<="1111110";DOUT20B<="1110010";</p><p> wHEN"01100"=>DOUT20M<="1111110";DOUT20B<="1111111";</p><p>
127、 wHEN"01011"=>DOUT20M<="1111110";DOUT20B<="1111011";</p><p> wHEN"01010"=>DOUT20M<="0110000";DOUT20B<="1111110";</p><
128、p> wHEN"01001"=>DOUT20M<="0110000";DOUT20B<="0110000";</p><p> wHEN"01000"=>DOUT20M<="0110000";DOUT20B<="1101101";</p>
129、<p> wHEN"00111"=>DOUT20M<="0110000";DOUT20B<="1111001";</p><p> wHEN"00110"=>DOUT20M<="0110000";DOUT20B<="0110011";<
130、/p><p> wHEN"00101"=>DOUT20M<="0110000";DOUT20B<="1011011";</p><p> wHEN"00100"=>DOUT20M<="0110000";DOUT20B<="1011111"
131、;;</p><p> wHEN"00011"=>DOUT20M<="0110000";DOUT20B<="1110010";</p><p> wHEN"00010"=>DOUT20M<="0110000";DOUT20B<="111111
132、1";</p><p> wHEN"00001"=>DOUT20M<="0110000";DOUT20B<="1111011";</p><p> wHEN"00000"=>DOUT20M<="1101101";DOUT20B<="
133、1111110";</p><p> WHEN OTHERS=>DOUT20M<="1111110";DOUT20B<="1111110";</p><p><b> END CASE;</b></p><p> eND PROCESS;</p><p
134、> eND ARCHITECTURE ART;</p><p> --兩秒計(jì)數(shù)兼顯示,其余注釋同上</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p>
135、<p> entity CNTe02s is</p><p> port(clk,ENe02B:in std_logic;</p><p> DOUTe02M:out std_logic_vector(6 downto 0));</p><p> end entity CNTe02s;</p><p> architect
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通燈課程設(shè)計(jì)報(bào)告
- 交通燈課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)交通燈設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)-交通燈設(shè)計(jì)報(bào)告
- 交通燈課程設(shè)計(jì)報(bào)告---交通燈控制器
- 課程設(shè)計(jì)報(bào)告交通燈.doc
- 交通燈課程設(shè)計(jì)報(bào)告 (2)
- 交通燈課程設(shè)計(jì)報(bào)告6
- 交通燈課程設(shè)計(jì)報(bào)告5
- 交通燈課程設(shè)計(jì)報(bào)告2
- 微機(jī)交通燈課程設(shè)計(jì)報(bào)告
- 硬件課程設(shè)計(jì)---交通燈設(shè)計(jì)報(bào)告
- 交通燈課程設(shè)計(jì)報(bào)告 (2)
- 微機(jī)課程設(shè)計(jì)報(bào)告-交通燈
- plc交通燈課程設(shè)計(jì)報(bào)告
- 交通燈電路課程設(shè)計(jì)報(bào)告
- 智能交通燈課程設(shè)計(jì)報(bào)告
- 交通燈課程設(shè)計(jì)
- 課程設(shè)計(jì)交通燈
- 課程設(shè)計(jì)—交通燈
評論
0/150
提交評論