EDA課程設(shè)計籃球倒計時VHDL_第1頁
EDA課程設(shè)計籃球倒計時VHDL_第2頁
EDA課程設(shè)計籃球倒計時VHDL_第3頁
EDA課程設(shè)計籃球倒計時VHDL_第4頁
EDA課程設(shè)計籃球倒計時VHDL_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、題目:籃球競賽30s計時器設(shè)計一、設(shè)計目的 隨著電子技術(shù)的高速發(fā)展和計算機技術(shù)的普遍應(yīng)用,電子設(shè)計也越來越普遍地應(yīng)用于整個電子行業(yè)中。電子設(shè)計是人們進行電子產(chǎn)品設(shè)計、開發(fā)和制造過程中十分關(guān)鍵的一步,其核心就是電子電路的設(shè)計。電子設(shè)計自動化(EDA)是在電子產(chǎn)品向更復(fù)雜、更高級,向數(shù)字化、集成化、微型化和低耗能方向發(fā)展過程中逐漸產(chǎn)生并日趨完善的電子設(shè)計方法,在這種方法中,設(shè)計過程的大部分工作(特別是底層工作)均由計算機自動完成,是電子技術(shù)發(fā)展歷程中產(chǎn)生的一種先進的設(shè)計方法,是當(dāng)今電子設(shè)計的主流。 在籃球比賽中,規(guī)定了球員的持球時間不能超過30秒,否則就犯規(guī)了。本課程設(shè)計的“籃球競賽30秒計時器”

2、,可用于籃球比賽中,用于對球員持球時間30秒限制。一旦球員的持球時間超過了30秒,它自動的報警從而判定此球員的犯規(guī)。本課程設(shè)計是籃球競賽30秒計時器。此計時器功能齊全,顯示30秒倒計時功能,系統(tǒng)設(shè)置外部操作開關(guān)可以直接清零、啟動、暫停,同時應(yīng)用了七段數(shù)碼管來顯示數(shù)值,可以方便地實現(xiàn)斷點計時功能,當(dāng)計時器遞減到零時,還會發(fā)出光電報警信號。本設(shè)計完成的中途計時功能,實現(xiàn)了在許多的特定場合進行時間追蹤的功能,在社會生活中也具有廣泛的應(yīng)用價值.二、 設(shè)計要求用EDA技術(shù)設(shè)計一個30s計時器,具體技術(shù)要求如下:1、具有30s計時功能,并且能夠?qū)崟r顯示計數(shù)結(jié)果。2、設(shè)有外部操作開關(guān),控制計數(shù)器實現(xiàn)直接清零

3、、啟動以及暫停/連續(xù)工作等操作。3、計時器為30s遞減計時,計時間隔為1s。4、計時器遞減計時到零時,數(shù)碼顯示器不能滅燈,同時發(fā)出光電報警信號。三、總體設(shè)計原理與內(nèi)容 1、設(shè)計的總體原理 本設(shè)計為30秒計數(shù)器,它主要由外部開關(guān),控制電路,秒脈沖發(fā)生器,計數(shù)器,譯碼器和報警電路組成。各部分相互聯(lián)系,共同協(xié)作,實現(xiàn)電路功能。各部分關(guān)系框圖如圖3-1所示: 圖3-1 總體框圖 2、設(shè)計內(nèi)容 本設(shè)計為30秒計數(shù)器,它主要分為三個部分:計數(shù)部分,顯示部分和控制部分。其中計數(shù)器和控制電路是系統(tǒng)的主要部分。計數(shù)器完成30s計時功能,而控制電路具有直接控制計數(shù)器的啟動計數(shù)、暫停連續(xù)計數(shù)、譯碼顯示電路的顯示功能

4、。為了滿足系統(tǒng)的設(shè)計要求,在設(shè)計控制電路時,應(yīng)正確處理各個信號之間的時序關(guān)系。在操作直接清零開關(guān)CLR時,要求計數(shù)器清零,數(shù)碼顯示器不滅燈。 清零開關(guān)不工作時置數(shù)鍵才有效,置數(shù)鍵PLD為1時,同時計數(shù)器完成置數(shù)功能,譯碼顯示電路顯示“30”字樣;當(dāng)啟動開關(guān)為高電平時,計數(shù)器開始計數(shù);為了簡單起見,我們將暫停與連續(xù)的控制與開始用一個鍵控制。當(dāng)計數(shù)器減到0時,啟動報警系統(tǒng),報警指示燈亮進行報警。通過控制脈沖信號的傳送來達到相應(yīng)的目的。3、設(shè)計方案 本設(shè)計主要能完成:顯示30秒倒計時功能;系統(tǒng)設(shè)置外部操作開關(guān),控制計時器的直接清零、啟動和暫停/連續(xù)功能;在直接清零時,數(shù)碼管顯示器滅燈;計時器為30秒

5、遞減計時其計時間隔為1秒;計時器遞減計時到零時,數(shù)碼顯示器不滅燈,同時發(fā)出光電報警信號等。經(jīng)分析我們可以用兩種方案進行實現(xiàn):方案一:用VHDL編碼進行實現(xiàn)。VHDL是一門硬件描述語言,可以實現(xiàn)各種組合電路及邏輯電路。使用VHDL編碼實現(xiàn),可讀性強,易于理解,可以在軟仿,硬仿時,依次進行查看其正確性,還能提高自己的編碼水平,利于EDA課程的學(xué)習(xí)與應(yīng)用。采用靜態(tài)編碼,先設(shè)計計數(shù)器進行計數(shù),數(shù)值通過數(shù)碼管顯示電路進行顯示。設(shè)置CLOCK為1HZ,數(shù)值變化周期為1秒。方案二:也是采用VHDL編碼進行實現(xiàn),但采用的是動態(tài)掃描法,設(shè)置一個片選信號,分時復(fù)用掃描兩個數(shù)碼管。這時就要設(shè)置兩個時鐘,因為1HZ的

6、時鐘頻率太小了,會使得看到的效果不連續(xù),十位與個位產(chǎn)生分離,效果不好??梢粤磉x一個頻率1000HZ左右的時鐘信號作為掃描時鐘。這種設(shè)計節(jié)約了能量,延長了數(shù)碼管的壽命,但引入了片選信號,又增加了一個時鐘,所以較第一種方案復(fù)雜。方案三:用原理圖輸入法進行實現(xiàn)。用原理圖書輸入法也能實現(xiàn),電路的仿真。但原理圖輸入法只適合中小型電路,而且需要良好的數(shù)字電路基礎(chǔ)與電路功底。另外,原理圖輸入法,比較繁瑣,不易于操作。綜合比較,選擇第一種方案。 四、EDA設(shè)計及仿真1、30S倒計時器源程序1. 計數(shù)模塊計數(shù)模塊,采用和三十秒減計數(shù)。計數(shù)間隔為1秒。其程序如下所示:-LIBRARY IEEE;USE IEEE.

7、STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-ENTITY CNT30 IS PORT (CLK,EN : IN STD_LOGIC; C0,C10 : OUT STD_LOGIC_VECTOR(5 DOWNTO 0); -C0,C10表示十位和個位 END CNT30;-ARCHITECTURE behav OF CNT30 ISBEGIN PROCESS(CLK, EN)VARIABLE TMPA: STD_LOGIC_VECTOR (3 DOWNTO 0); VARIABLE TMPB: STD_LOGIC_VECTOR (3 D

8、OWNTO 0); BEGIN IF CLK'EVENT AND CLK='1' THEN -檢測時鐘上升沿 TMPB:="0011"TMPA:="0000"; IF EN = '1' THEN - -檢測是否允許計數(shù)(同步使能) IF TMPA="0000" THEN IF TMPB/="0000" THEN TMPA:="1001" TMPB:=TMPB-1; END PROCESS;C0<=TMPA;C10<= TMPB;END beha

9、v; -2、顯示模塊源程序 顯示部分采用七段數(shù)碼管進行實現(xiàn)。LED數(shù)碼管及引腳圖資料:7段LED數(shù)碼管是利用7個LED(發(fā)光二極管)外加一個小數(shù)點的LED組合而成的顯示設(shè)備,可以顯示09等10個數(shù)字和小數(shù)點,使用非常廣泛。這類數(shù)碼管可以分為共陽極與共陰極兩種,共陽極就是把所有LED的陽極連接到共同接點com,而每個LED的陰極分別為a、b、c、d、e、f、g及dp;共陰極則是把所有LED的陰極連接到共同接點com,而每個LED的陽極分別為a、b、c、d、e、f、g及dp,圖中的8個LED分別與上面那個圖中的ADP各段相對應(yīng),通過控制各個LED的亮滅來顯示數(shù)字。我們采用共陰極接法,其圖如下: 圖

10、4-1 共陰極數(shù)碼管連接圖 輸入相應(yīng)的數(shù)值,對應(yīng)驅(qū)動相關(guān)二極管點亮,顯示相應(yīng)的數(shù)值。顯示部分功能表如表4-1所示: 表4-1 功能表 用數(shù)碼管進行顯示,需把各個數(shù)值譯碼后傳輸?shù)綌?shù)碼管,分十位與個位分別進行顯示,其程序如下:PRO2: PROCESS(DD) BEGIN CASE DD IS -DD表示十位WHEN "0000" => S1 <="0111111"-顯示0WHEN "0001" => S1 <="0000110"-顯示1WHEN "0010" => S

11、1 <="1011011"-顯示2WHEN "0011" => S1 <="1001111"-顯示3WHEN "0100" => S1<="1100110"-顯示4WHEN "0101" => S1 <="1101101"-顯示5WHEN "0110" => S1 <="1111101"-顯示6WHEN "0111" => S1 <

12、="0000111"-顯示7WHEN "1000" => S1 <="1111111"-顯示8WHEN "1001" => S1 <="1101111"-顯示9WHEN OTHERS =>S1<="0000000" END CASE ; END PROCESS; PROCESS(SS) BEGIN CASE SS IS -SS表示個位WHEN "0000" => S0 <="0111111"

13、;-顯示0WHEN "0001" => S0 <="0000110"-顯示1WHEN "0010" => S0 <="1011011"-顯示2WHEN "0011" => S0 <="1001111"-顯示3WHEN "0100" => S0<="1100110"-顯示4WHEN "0101" => S0 <="1101101"-顯示5W

14、HEN "0110" => S0 <="1111101"-顯示6WHEN "0111" => S0 <="0000111"-顯示7WHEN "1000" => S0 <="1111111"-顯示8WHEN "1001" => S0 <="1101111"-顯示9WHEN OTHERS =>S0<="0000000" END CASE ;END PROCESS

15、;END A;2、總源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-ENTITY CNT30 ISPORT(CLK,CLR: INSTD_LOGIC;PLD,ENB : INSTD_LOGIC; -PLD表示復(fù)位信號 WARN: OUT STD_LOGIC; S1,S0 : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);-譯碼輸出,S1為十位S0為個位END CNT30;-ARCHITECTURE A OF CNT30 ISSIGNAL DD: STD_LOGIC_VE

16、CTOR (3 DOWNTO 0);-DD表示十位SIGNAL SS : STD_LOGIC_VECTOR (3 DOWNTO 0) ;-SS表示個位BEGINPRO1: PROCESS (CLK,CLR,ENB) VARIABLE TMPA: STD_LOGIC_VECTOR (3 DOWNTO 0); VARIABLE TMPB: STD_LOGIC_VECTOR (3 DOWNTO 0); VARIABLE TMPWARN: STD_LOGIC;BEGIN IF CLR='1' THEN TMPA:="0000"TMPB:="0000&quo

17、t;TMPWARN:='0' ELSIF CLK'EVENT AND CLK='1' THEN IF PLD='1' THEN TMPB:="0011"TMPA:="0000"TMPWARN:='0'-賦初值 ELSIF ENB='1' THEN IF TMPA="0000" THEN IF TMPB/="0000" THEN TMPA:="1001" TMPB:=TMPB-1; ELSE TMPWARN:=

18、'1' END IF; ELSE TMPA:=TMPA-1; END IF; END IF; END IF; SS<=TMPA;DD<=TMPB;WARN<=TMPWARN; END PROCESS; -PROT2顯示部分PRO2: PROCESS(DD) BEGIN CASE DD IS -十位顯示部分WHEN "0000" => S1 <="0111111"-顯示0WHEN "0001" => S1 <="0000110"-顯示1WHEN "0

19、010" => S1 <="1011011"-顯示2WHEN "0011" => S1 <="1001111"-顯示3WHEN "0100" => S1<="1100110"-顯示4WHEN "0101" => S1 <="1101101"-顯示5WHEN "0110" => S1 <="1111101"-顯示6WHEN "0111&qu

20、ot; => S1 <="0000111"-顯示7WHEN "1000" => S1 <="1111111"-顯示8WHEN "1001" => S1 <="1101111"-顯示9WHEN OTHERS =>S1<="0000000" END CASE ; END PROCESS; PROCESS(SS)BEGIN CASE SS IS -個位顯示部分WHEN "0000" => S0 <=&q

21、uot;0111111"-顯示0WHEN "0001" => S0 <="0000110"-顯示1WHEN "0010" => S0 <="1011011"-顯示2WHEN "0011" => S0 <="1001111"-顯示3WHEN "0100" => S0<="1100110"-顯示4WHEN "0101" => S0 <="11

22、01101"-顯示5WHEN "0110" => S0 <="1111101"-顯示6WHEN "0111" => S0 <="0000111"-顯示7WHEN "1000" => S0 <="1111111"-顯示8WHEN "1001" => S0 <="1101111"-顯示9WHEN OTHERS =>S0<="0000000" END C

23、ASE ;END PROCESS;END A;-2、源程序仿真結(jié)果及數(shù)據(jù)分析(1)仿真結(jié)果 圖4-2 仿真結(jié)果部分波形圖 圖4-3仿真結(jié)果總體波形圖(2)數(shù)據(jù)分析 由仿真結(jié)果圖可以看出:先清零,再置數(shù),置初始值為30 ,置數(shù)后,保持30,直至使能端ENB為高電平,等到上升沿的到來,開始計數(shù),計數(shù)器減計數(shù)至零時,報警信號WARM變?yōu)楦唠娖?,發(fā)出報警信號。但信號在FPGA器件內(nèi)部通過連線和邏輯門時,都有一定的延時。延時的大小與連線的長短和門單元的數(shù)目有關(guān),同時還受器件的制造工藝、工作電壓、溫度等的影響。此外,信號的高低電平轉(zhuǎn)換也需要一定的過度時間。由于存在這些因素的影響,多路信號的電平值發(fā)生變化時

24、,在信號變化的瞬間,組合邏輯的輸出有先后順序,并不是同時變化,往往會出現(xiàn)一些不正確的“毛刺”,稱為“冒險”現(xiàn)象??梢酝ㄟ^改變設(shè)計來破壞毛刺的產(chǎn)生的條件,從而減少毛刺的發(fā)生。例如,在數(shù)字電路設(shè)計中,常采用格雷碼。還可以利用D觸發(fā)器消除毛刺。但由于時間和條件的限制沒有進行時延現(xiàn)象的消除,在本次設(shè)計中沒有太大影響,但在以后的工作中是一定要避免的。五、硬件實現(xiàn)1、打開QuartusII軟件,建立一個工程,將編寫好的源代碼加載進去進行仿真。2、代碼編譯成功之后,進行功能仿真,首先建立波形文件,設(shè)置時鐘參數(shù);將波形文件保存好,進行軟件仿真;3、軟仿真實現(xiàn)之后,要進行硬仿,即硬件實現(xiàn)。硬件實現(xiàn)簡單明了,可以

25、清楚的看到實驗的成功與否,而且真實可靠。為了實現(xiàn)硬仿,我們先進行管腳綁定。CLR ,ENB ,PLD分別由鍵8,鍵7及鍵6來執(zhí)行,S1,S0分別由數(shù)碼管8和數(shù)碼管7來顯示。綁定情況如圖4-4所示: 圖4-4 管腳綁定圖4、管腳綁定好之后,進行編譯。5、編譯無誤后,進行下載硬仿。硬件電路選擇模式6,數(shù)碼管8和數(shù)碼管7分別顯示計數(shù)值的十位與個位。鍵8,鍵7與鍵6分別代表清零,啟動/暫停/連續(xù)與復(fù)位鍵。加載結(jié)果如圖4-5所示: 圖4-5 加載成功圖 圖 4-6 清零效果顯示圖 實驗箱選擇模式6.按下清零鍵,數(shù)碼管清零,顯示00,并且報警燈不亮。 圖 4-7 復(fù)位效果顯示圖 釋放清零鍵,按下復(fù)位鍵,顯

26、示預(yù)置數(shù)30,上圖為顯示效果。 圖 4-8 硬件運行效果剪影 釋放復(fù)位鍵,按下啟動按鈕,計數(shù)器開始減計數(shù),計數(shù)周期為1秒。圖為計數(shù)器減至19時的效果。 圖 4-9 光電報警示意圖 計數(shù)器繼續(xù)進行減計數(shù),當(dāng)減至0時出發(fā)光電報警信號進行報警。并保持數(shù)碼管不滅,保持0狀態(tài)。直至清零。重復(fù)上述過程。六、設(shè)計總結(jié)1、設(shè)計過程中遇到的問題及解決方法在此次設(shè)計中,我自己的動手能力有了顯著的提高。在軟仿的時候一切都比較順利,但硬仿的時候,卻發(fā)現(xiàn)有一個不該報警的地方報警了,看程序也沒錯誤,波形也沒錯誤,剛開始怎么也找不出問題,后來我們感覺應(yīng)該還是程序的問題,便從程序入手,在程序中又強調(diào)了一下,報警條件,結(jié)果硬仿

27、正確了。所以說,實驗就要不斷的嘗試,VHDL是一門語言,語言有些時候不僅僅是語法這么簡單,只有在不斷地調(diào)試中才能取得成功。在本次設(shè)計中,其實我們做了兩種方案。第二種方案沒有詳細提及,該方案采用的時動態(tài)掃描。做完第一種方案之后,我們又進行了第二種方案的仿真,在硬仿時發(fā)現(xiàn)數(shù)碼管不能正確顯示,出現(xiàn)了亂碼現(xiàn)象。這讓我們很是費解,軟仿沒有錯誤,試驗箱也不可能有問題,這是什么原因呢?我們思索了很久,也做了許多嘗試,都沒有成功。后來忽然間看到模式指示數(shù)碼管旁邊有一個短路帽,這讓我哦聯(lián)想到電路實驗中短路帽的轉(zhuǎn)換,所以,我把短路帽從上方拿到了下方,結(jié)果就正確顯示了。還有一次,同學(xué)的顯示怎么都成功不了,按了開始就變?yōu)?,完全看不到變化現(xiàn)象,我看了程序感覺沒錯,就覺得是不是時鐘設(shè)置的問題,我把它的時鐘頻率調(diào)小之后,發(fā)現(xiàn)果真正確顯示了。2,設(shè)計體會為期一周的EDA課程設(shè)計就要結(jié)束了,在這一周的實訓(xùn)中,我收獲頗豐

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論