版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 課程設計</b></p><p> 課程名稱: 交通燈設計 . </p><p> 學 院: 電氣工程學院 專 業(yè): 測儀 </p><p> 姓 名: 學
2、 號: </p><p> 年 級: 級 任課教師: </p><p> 2012年 1月12日</p><p><b> 電氣工程學院</b></p><p><b> 課程設計任務書</b></
3、p><p> 課題名稱: 交通燈控制器的設計 </p><p> 專業(yè)、班級: 測控技術與儀器測儀 班 </p><p> 指導教師: </p><p> 20 年 1 月 2 日至 20 年 1 月 13 日共 2 周</p><p> 指導教師簽名:
4、 </p><p> 教研室主任簽名: </p><p> 分管院長簽名: </p><p><b> 一、課程設計內(nèi)容</b></p><p> 1.學習ALTERA公司的FPGA/CPLD的結(jié)構、特點和性能。</p><p> 2
5、.學習集成開發(fā)軟件MAX+plus II/Quartus II的使用及設計過程。</p><p> 3.熟悉EDA工具設計數(shù)字電路設計方法,掌握VHDL硬件描述語言設計方法。</p><p> 4.根據(jù)給定題目設計數(shù)字電路,來加深對可編程邏輯器件的理解和掌握。</p><p> 二、課程設計應完成的工作</p><p> 1.在所選擇
6、器件內(nèi)完成交通燈控制器的設計,要求設計完成后芯片具有交通燈控制器的全部功能、包括顯示和操作接口。</p><p> 2.交通燈控制器要求控制十字路口兩道路的交通燈,兩道路交替通行,每次通行時間可設定20——60秒之間,每個路口要求有前行、禁止、人行燈。(根據(jù)實際設計進度考慮可以增加左右轉(zhuǎn)向燈,等待和通行時間顯示等)。</p><p> 3.撰寫設計說明書一份(不少于2000字),闡述系
7、統(tǒng)的工作原理,軟、硬件設計方法,重點闡述軟件思路。說明書應包括封面、任務書、目錄、摘要、正文、參考文獻(資料)等內(nèi)容,以及硬件電路綜合圖和軟件程序清單等材料。</p><p> 注:設計說明書題目字體用小三,黑體,正文字體用五號字,宋體,小標題用四號及小四,宋體,并用A4紙打印。</p><p> 三、課程設計進程安排</p><p> 四、設計資料及參考文獻
8、</p><p> 1.康華光 主編,《電子技術基礎-數(shù)字部分》,高等教育出版社,1998。</p><p> 2.譚會生等 主編,《EDA技術及應用》,西安電子科技大學出版社,2001</p><p> 3.潘松等 主編,《EDA技術實用教程》,科學出版社,2006</p><p> 4.雷伏容 主編,《VHDL電路設計》,清華大學
9、出版社,2006</p><p> 5.Charles H.Roth等著,《數(shù)字系統(tǒng)設計與VHDL》,電子工業(yè)出版社,2008</p><p> 五、成績評定綜合以下因素:</p><p> (1) 說明書及設計圖紙的質(zhì)量(占50%)。</p><p> (2) 獨立工作能力及設計過程的表現(xiàn) (占30%)。</p>&l
10、t;p> (3) 回答問題的情況(占20%)。</p><p> 說明書和圖紙部分評分分值分布如下:</p><p> 任務分析與設計思路(10分)</p><p> 要求說明設計任務的具體技術指標打算如何實現(xiàn),根據(jù)實現(xiàn)各技術指標的解決方法,提出總體設計的思路和解決方案,說明其中關鍵問題及其解決辦法。</p><p><b
11、> 詳細設計(50分)</b></p><p> 根據(jù)總體設計完成下面任務:</p><p> 1)用Quartus 綜合出電路原理圖;(10分)</p><p> 2)列出芯片引腳分配并有注釋;(10分)</p><p> 3)提供波形圖并給出具體分析;(10分)</p><p> 4)
12、提交程序清單,程序清單必須有詳細注釋。(10分)</p><p><b> 六、其他說明</b></p><p> 課程設計需獨立完成,每人必須提交課程設計說明書。</p><p> 課程設計說明書內(nèi)容不得雷同,雷同者本課程設計成績一律不及格。指導老師不負責甄別原創(chuàng)者與抄襲者。</p><p><b>
13、 正 文</b></p><p><b> 目 錄</b></p><p> 一.摘要..........................</p><p> 二.設計思路........................</p><p> 三.設計過程...............
14、.........</p><p> ?。保诸l模塊div..................</p><p> ?。玻t綠的現(xiàn)實模塊crosslight與crosslight2......</p><p> ?。常嫈?shù)兼譯碼模塊.................</p><p> 4.模塊連接圖....................&l
15、t;/p><p> 五.設計分析與總結(jié).....................</p><p> 六.程序清單........................</p><p> 一、摘 要</p><p> EDA技術是以計算機為工具,根據(jù)硬件描述語言VHDL完成的設計文件,自動的完成邏輯編譯,化簡,分割,綜合及優(yōu)化,布局布線
16、,仿真以及對特定目標芯片的適配編譯和編程下載等工作.隨著基于CPLD的EDA技術的發(fā)展和應用領域的擴大與深入,EDA技術在電子信息,通信,自動控制用計算機等領域的重要性日益突出。作為一個學習通信工程專業(yè)的學生,我們必須不斷的了解更多的新產(chǎn)品信息,這就更加要求我們對EDA有個全面認識。本程序設計的是基于VHDL的數(shù)字時鐘,采用EDA作為開發(fā)工具,VHDL語言為硬件描述語言,QUARTUSII作為程序的運行平臺,所開發(fā)的程序經(jīng)過調(diào)試運行,波
17、形仿真驗證,初步實現(xiàn)了設計目標。本程序使用的硬件描述語言VHDL,可以大大降低了硬件數(shù)字系統(tǒng)設計的入門級別,讓人感覺就是C語言的親近。通過本次的課程設計,不但使同學們進一步了解EDA技術在實際中的應用,也使同學們對EDA的綜合應用有了更深一步的應用,這次的課程設計給同學們以后的學習與工作中有了一個全面的指導作用. </p><p> 典型的EDA工具中必須包含兩個特殊的軟件包,即綜合器和適配器,綜合器的功能就是
18、將設計者在EDA平臺上完成的針對某個系統(tǒng)項目的VHDL原理圖或狀態(tài)圖形描述,針對給定的硬件系統(tǒng)組件,進行編譯,優(yōu)化,轉(zhuǎn)換和綜合,最終獲得我們欲將實現(xiàn)的功能的描述文件。綜合器在工作前,必須給定要實現(xiàn)的硬件結(jié)構參數(shù),它的功能就是將軟件描述與給定的硬件結(jié)構用一定的方式聯(lián)系起來,也就是說綜合器是軟件描述與硬件實現(xiàn)的一座橋梁。綜合過程就是將電路的高級語言描述轉(zhuǎn)換成低級的,可與目標器件CPLD相映射的網(wǎng)表文件。適配器的功能是將由綜合器產(chǎn)生的網(wǎng)表文件
19、配置與指定的目標器件中,產(chǎn)生最終的下載文件。適配器所選的目標器件(CPLD芯片)必須包含于在綜合器中已指定的目標器件系列。</p><p> 硬件描述語言VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language。它主要用于描述數(shù)字系統(tǒng)的結(jié)構,行為,功能和接口。除了還有很多硬件特征的語句外,VHDL的語言形式和描述風格與
20、句法是十分類似與一般的高級計算機語言。VHDL的程序結(jié)構特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設計就可以直接調(diào)用這個實體。這種將設計實體內(nèi)外部分的概念是VHDL系統(tǒng)設計的基本點。 </p><p><b> 二、
21、設計思路 </b></p><p> 首先,既然是要用VHDL語言設計就必須得先學會VHDL語言,這是設計前必須的準備工作;其次,要求學會軟件的仿真使用,此次設計中所用的軟件工具是QUARTUSII 5.1;再者就是具體設計過程的構想了。</p><p> 在車流不需交叉轉(zhuǎn)彎的單十字路口可以僅用簡單的四組的紅、黃、綠燈來控制,其中兩兩相同。假設一個十字路口有東西南北方向
22、,則南北方向紅、黃、綠燈時序完全相同,東西方向亦如此。當南北方向為綠燈時東西方向為紅燈,此時南北方向通行而東西方向禁止通行,同時來至東、西方的車輛均可以右轉(zhuǎn),但不能左轉(zhuǎn),這是此設計的最大不足。當一個直通方向的紅燈停止時為該直通方向的出發(fā)的車輛不與另一直通方向已經(jīng)進入十字路交叉處但還為使出的車輛發(fā)生碰撞事故,必須設置黃燈等待指示作為緩沖。即為紅燈停了亮黃燈,黃燈停了亮綠燈,綠燈停了亮紅燈,依次循環(huán)。同時可以設置黃等2秒,綠燈20秒,紅燈2
23、2秒。采用模塊化設計,先將各個功能模塊設計調(diào)試成功之后再用例化語句將各個功能模塊連接起來,即建立頂層模塊。</p><p><b> 三、設計過程</b></p><p><b> 1、分頻模塊div</b></p><p> 其功能就是根據(jù)所提供的晶振頻率進行分頻,以予驅(qū)動計數(shù)模塊和紅綠燈顯示模塊能,此模塊可以通過
24、改變軟件的個別參數(shù)實現(xiàn)任意倍數(shù)的分頻。</p><p> Clk接晶振,fpclk用于驅(qū)動后續(xù)模塊,rst接復位信號,低電平復位。</p><p> 紅綠的顯示模塊crosslight與crosslight2</p><p> 用于對紅綠燈的顯示控制,分別控制兩個直通方向的紅綠燈,clk為時鐘輸入端,接分頻模塊的輸出,rst1與rst0分別為復位信號輸入端,高
25、電平</p><p> 復位,greenlgt、yellowlgt、 redlgt與greenlgt0、 yellowlgt0、 redlgt0 分別作為兩個直通方向的綠燈黃燈和紅燈的顯示。</p><p><b> 計數(shù)兼譯碼模塊</b></p><p> 這六個模塊均為計數(shù)模塊,其輸出直接為字形碼,即兼?zhèn)渥g碼的功能。具體原理為采用加計
26、數(shù)器的方向顯示,利用直接查表賦值的方法逐一賦值,于是就可以實現(xiàn)正序的加一計數(shù)行成倒序的減一計數(shù)。此六個模塊的功能實現(xiàn)原理完全一致,EN02 EN20 EN22 ENe02 ENe20 ENe22即為復位輸入端,低電平復位。右端均為輸出端,輸出與七段顯示碼對應的字型碼可以直接驅(qū)動數(shù)碼管。</p><p> 模塊連接圖 通過頂層模塊的例化語句連接得到此圖</p><p><b&g
27、t; ?。ㄝ斎攵丝?) </b></p><p><b> (輸出端口)</b></p><p><b> 四、仿真波形</b></p><p> 圖中第一個為分頻器時鐘輸入,第二到七個信號為紅綠燈的輸出信號,以下為計數(shù)輸出,計數(shù)輸出全為字型碼,可直接驅(qū)動七段數(shù)碼管顯示,例如圖中的“1111110”為十進
28、制“0”的字型碼。</p><p><b> 五、設計分析與總結(jié)</b></p><p> 本次課程設計的程序的設計和調(diào)試都花了我不少精力,雖然結(jié)果并不如意但至少最后還是仿真陳功了,而且通過本次課程設計是我進一步加深了對VHDL硬件描述語言的理解及其運用,VHDL描述數(shù)字電路系統(tǒng)設計的行為、功能、輸入和輸出,它在語法上與現(xiàn)代編程語言相似,但包含了許多與硬件有特殊關
29、系的結(jié)構。VHDL將一個設計稱為一個實體Entity(元件、電路或者系統(tǒng)),并且將它分成外部的可見部分(實體名、連接)和內(nèi)部的隱藏部分(實體算法、實現(xiàn))。當定義了一個設計的實體之后,其他實體可以利用該實體,也可以開發(fā)一個實體庫。所以,內(nèi)部和外部的概念對系統(tǒng)設計的VHDL是十分重要的。外部的實體名或連接由實體聲明Entity來描述。而內(nèi)部的實體算法或?qū)崿F(xiàn)則由結(jié)構體 Architecture來描述。結(jié)構體可以包含相連的多個進程proce
30、ss或者組建component等其他并行結(jié)構。</p><p> 在此過程中,程序的反復調(diào)試簡直讓人想哭,有時候就僅僅是一個標點符號的錯誤都會花費大量的時間,特別是頂層模塊的調(diào)用,一不小心就錯誤一大堆。不過盡管感覺這次設計好難,但這也可以作為一次寶貴的人生體驗,可以加強獨立學習的能力,也許有同學會覺得快畢業(yè)了就沒必要學習了但我不這樣認為,我以前沒學好是現(xiàn)在更應該抓住著大學剩下的短短時間。盡管很累,但我覺得很值得
31、,謝謝老師給予我這個“累”的機會。</p><p><b> 六、程序清單</b></p><p> ?。ㄓ捎诹鶄€計數(shù)兼顯示模塊設計思想完全一致,在注釋部分僅對前面兩個模塊進行注釋)</p><p> --頂層模塊,完成各個功能模塊的鏈接</p><p> LIBRARY IEEE;--主程序庫說明部分</p
32、><p> USE IEEE.Std_Logic_1164.ALL;</p><p> ENTITY yintong IS--實體說明</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é)構體說明</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-- 實體說明</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é)構體說明</p><p><b> begin</b></p><p> process(clk)-- 并行進程語句 <
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為低電平時復位</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-- 實體說明</p><p><b> generic(</b></p><p> ye
59、llow:integer:=2;-- 定義黃燈顯示時間</p><p> green:integer:=20;-- 定義綠燈顯示時間</p><p> red:integer:=22-- 定義紅燈顯示時間</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é)構體說明</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) -- 并行進程語句 實現(xiàn)紅綠燈信號輸入</p><p><b>
63、 begin</b></p><p> if(rst0='1')then-- 定義高電平復位</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;-- 計數(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) -- 并行進程語句 實現(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-- 實體說明</p><p><b> generic(</b></p><p> green:integer:=20; -- 定義綠燈顯示時間</p>
76、;<p> yellow:integer:=2; -- 定義黃燈顯示時間</p><p> red:integer:=22-- 定義紅燈顯示時間</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é)構體說明</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) -- 并行進程語句 實現(xiàn)紅綠燈信號輸入</p><p><b&
80、gt; begin</b></p><p> if(rst1='1')then</p><p> state<=st0; cnt<=0;-- 復位</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) -- 并行進程語句 實現(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> --一方向兩秒計數(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-- 實體說明</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-- 上升沿計數(shù)</p><p> if EN02B='1' then CNT2B<=CNT2B+1;-- 計數(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> --二十二秒計數(shù)兼顯示模塊,正序計時倒序輸出</p><p> use ieee.std_logic_1164.all;-- 庫說明</p><p> use ieee.std_l
99、ogic_unsigned.all;</p><p> entity CNT22s is-- 實體說明</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é)構體說明</p><p> signal CNT6B:std_logic_vector(4 downto 0);-- 5位計數(shù)</p><p> beginlibrary iee
101、e;</p><p> process(clk,EN22A)is-- 正序計數(shù)并行進程語句</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;-- 上升沿計數(shù) EN22A為低電平時復位</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> --二十秒計數(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> --兩秒計數(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論