欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      基于EDA技術(shù)的數(shù)字時鐘設(shè)計 最終版范文

      時間:2019-05-12 07:07:01下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《基于EDA技術(shù)的數(shù)字時鐘設(shè)計 最終版范文》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《基于EDA技術(shù)的數(shù)字時鐘設(shè)計 最終版范文》。

      第一篇:基于EDA技術(shù)的數(shù)字時鐘設(shè)計 最終版范文

      物理與電子學(xué)院

      《》 課程考核論文

      論文作者姓名:

      者 學(xué) 號:

      學(xué) 專 業(yè):

      理科

      物理方向

      課 教 師:

      高偉

      成 時 間:

      2015年6月

      基于EDA技術(shù)的數(shù)字時鐘設(shè)計

      目錄

      摘要··················································································2 一.緒論·············································································3 1.課題的研究背景·································································3 2.數(shù)字電子鐘的發(fā)展簡況·························································3 二.系統(tǒng)設(shè)計········································································4 1.整體規(guī)劃·········································································4 2.時基信號產(chǎn)生電路·······························································5 3.調(diào)時、調(diào)分信號的產(chǎn)生電路····················································5 4.計數(shù)顯示電路····································································6 三.基本功能實現(xiàn)···································································6 1.時鐘計數(shù)··········································································7 2.校時設(shè)置··········································································7 3.清零功能··········································································8 4.定時、報時功能··································································9 四.系統(tǒng)軟件實現(xiàn)···································································9 1.詳細(xì)模塊描述·····································································9 2.總體設(shè)計及引腳設(shè)置·····························································9 五.系統(tǒng)仿真及分析································································10 1.各模塊時序仿真·································································10 2.總體時序仿真····································································11 3.實驗結(jié)果·········································································11 六.設(shè)計總結(jié)········································································12 ·參考文獻(xiàn)···········································································12 附錄:參考程序······································································13

      摘要

      隨著基于PLD的EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大與深入,EDA技術(shù)在電子信息、通信、自動控制及計算機(jī)應(yīng)用等領(lǐng)域的重要性日益突出。本文詳細(xì)介紹EDA課程設(shè)計任務(wù)——數(shù)字鐘的設(shè)計的詳細(xì)設(shè)計過程及結(jié)果,并總結(jié)出心得體會。

      主體:主要涉及模60與模24計數(shù)器、動態(tài)顯示控制電路、分頻器主要整點報時電路,這些電路都是以模塊封裝好的,以便其他電路調(diào)用。以計數(shù)器構(gòu)成計時部件,通過分頻器分出的1HZ脈沖計時,調(diào)用動態(tài)顯示電路顯示,通過整點報時電路控制蜂鳴器。在計數(shù)器級聯(lián)時采用內(nèi)部同步外部異步的方式,但通過簡單的改變達(dá)到了同步的效果而且比同步還可靠。顯示控制時為了節(jié)約資源采用動態(tài)原理。

      關(guān)鍵字 多功能數(shù)字時鐘

      整點報時 EDA技術(shù) VHDL語言

      Abstract

      This article is based on the QuartusII software and the corresponding experimental platform to complete a multi-function digital timer experiment, so that we clearly understand to us digital table function is how to achieve.Used in the design of the level design thought, function decreases progressively step by step.The experiment mainly includes the mainbody-the basic functions of the circuit of clock.Subject: mainly relates to mode 60and mode 24counter, dynamicdisplay of control circuit, the primary divider the whole point timekeeping circuit, the circuit is in module a good package, so that other circuit calls.To counter through a frequency divider which timing components, from1HZ pulse timing,called dynamic display circuit displays, through the wholepoint timekeeping circuit control buzzer.In counter cascade usesinternal synchronous external asynchronous manner, but bysimplychanging the synchronization effect and is more reliable thansynchronous.Display control in order to save resources by the dynamic principle.Key word: Level design Multifunctional digital clock Synchronization The whole point timekeeping The language of VHDL

      一.緒論

      1.課題的研究背景

      當(dāng)面對這樣一個信息爆炸的時代,時間變得越來越寶貴,人們無疑需要一個良好的計劃時間表,而這就需要一個系統(tǒng)完善成熟的定時系統(tǒng)來及時提醒人們。然而在這個新技術(shù)、新產(chǎn)品不斷涌現(xiàn),各類產(chǎn)品功能日益強(qiáng)大,這就需要我們帶著戰(zhàn)略性眼光選擇。多功能數(shù)字電子鐘無意是人們最好的選擇之一,多功能數(shù)字時鐘小巧、價格低廉,外觀造型日益精美、精確度高、功能齊全、使用方便,不僅僅可以顯示鐘表的功能也具備計時、測溫、定鬧鐘、顯示日歷、語音報表等功能,其集成化高而受到廣大人們?nèi)罕娤矏?。在人們不斷的要求下,多功能?shù)字鐘已經(jīng)成為現(xiàn)代設(shè)計時鐘研究生產(chǎn)的主導(dǎo)方向。

      2.數(shù)字電子鐘的發(fā)展簡況

      在國外,公元以前,人們也是主要利用天文現(xiàn)象來計時,比如觀察太陽日出日落、星相的轉(zhuǎn)移,此后當(dāng)在德國的亨萊思創(chuàng)造了小型機(jī)械鐘開始,國外的鐘表行業(yè)逐漸掀起,到了19世紀(jì),鐘表制造業(yè)已經(jīng)成為人們必不可少的一個行業(yè),鐘表制造業(yè)也逐漸的實現(xiàn)了工業(yè)化生產(chǎn),在20世紀(jì),隨著電子潮流的飛速發(fā)展,鐘表行業(yè)也出現(xiàn)了翻天覆地的變化,由單一的機(jī)械表轉(zhuǎn)向多元式的鐘表,有電池驅(qū)動鐘、電機(jī)械表、指針式電子鐘表、數(shù)字式電子鐘表等種類,并且功能不斷的增多如現(xiàn)在出現(xiàn)的多功能數(shù)字電子鐘,它采用的是數(shù)字電路來顯示分秒,它的作用早已不僅限于計時的功能,它還可以顯示日歷、定鬧、報時、測溫等功能。它人性化的設(shè)計給人們的生活帶來了很多的方便,成為人們?nèi)粘I畹谋匦杵贰?/p>

      二.系統(tǒng)設(shè)計

      1.整體規(guī)劃

      數(shù)字電子時鐘主干電路系統(tǒng)由秒信號發(fā)生器、“時、分、秒”計數(shù)器、譯碼器及顯示器、校時電路、整點報時電路組成。將標(biāo)準(zhǔn)秒信號送入“秒計數(shù)器”,“秒計數(shù)器”采用60進(jìn)制計數(shù)器,每累計60秒發(fā)出一個“分脈沖”信號,該信號將作為“分計數(shù)器”的時鐘脈沖?!胺钟嫈?shù)器”也采用60進(jìn)制計數(shù)器,每累計60分鐘,發(fā)出一個“時脈沖”信號,該信號將被送到“時計數(shù)器”?!皶r計數(shù)器”采用12進(jìn)制計時器,可實現(xiàn)12小時的累計。通過六個LED顯示器顯示出來。整點報時電路根據(jù)計時系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號,然后去觸發(fā)一音頻發(fā)生器實現(xiàn)報時。校時電路用來對“時”、“分”、“秒”顯示數(shù)字進(jìn)行校對調(diào)整。

      電子時鐘系統(tǒng)總體規(guī)劃如圖1所示:

      (1)根據(jù)電路特點,用層次設(shè)計概念,將此設(shè)計任務(wù)分成若干模塊,規(guī)定每一模塊的功能和各模塊之間的接口,同時加深層次化設(shè)計概念。

      (2)軟件的元件管理深層含義,以及模塊元件之間的連接概念,對于不同目錄下的同一設(shè)計,如何融合。

      (3)適配劃分前后的仿真內(nèi)容有何不同概念,仿真信號對象有何不同,有更深一步了解。

      (4)按適配劃分后的引腳鎖定,同相關(guān)功能模塊硬件電路的接口連線。(5)所有模塊采用VHDL硬件描述語言設(shè)計。

      圖1 總體方案框圖

      2.時基信號產(chǎn)生電路

      數(shù)字鐘以其顯示時間的直觀性、走時準(zhǔn)確性作為一種計時工具,數(shù)字鐘的基本組成部分離不開計數(shù)器,在控制邏輯電路的控制下完成預(yù)定的各項功能。由晶振產(chǎn)生的頻率非常穩(wěn)定的脈沖,經(jīng)整形、穩(wěn)定電路后,產(chǎn)生一個頻率為1Hz的、非常穩(wěn)定的計數(shù)時鐘脈沖。

      3.調(diào)時、調(diào)分信號的產(chǎn)生電路

      由計數(shù)器的計數(shù)過程可知,正常計數(shù)時,當(dāng)秒計數(shù)器(60進(jìn)制)計數(shù)到59 時,再來一個脈沖,則秒計數(shù)器清零,重新開始新一輪的計數(shù),而進(jìn)位則作為分計數(shù)器的計數(shù)脈沖,使分計數(shù)器計數(shù)加1。把秒計數(shù)器的進(jìn)位脈沖和一個頻率為2Hz的脈沖信號同時接到一個2選1數(shù)據(jù)選擇器的兩個數(shù)據(jù)輸入端,而位選信號則接一個脈沖按鍵開關(guān),當(dāng)按鍵開關(guān)不按下去時(即為0),則數(shù)據(jù)選擇器將秒計數(shù)器的進(jìn)位脈沖送到分計數(shù)器,此時,數(shù)字鐘正常工作;當(dāng)按鍵開關(guān)按下去時(即為1),則數(shù)據(jù)選擇器將另外一個2Hz 的信號作為分計數(shù)器的計數(shù)脈沖,使其計數(shù)頻率加快,當(dāng)達(dá)到正確時間時,松開按鍵開關(guān),從而達(dá)到調(diào)時的目的。調(diào)節(jié)小時的時間也一樣的實現(xiàn)。

      4.計數(shù)顯示電路

      由計數(shù)部分、數(shù)據(jù)選擇器、譯碼器組成,是時鐘的關(guān)鍵部分。

      1、計數(shù)部分:由兩個60進(jìn)制計數(shù)器和一個24 進(jìn)制計數(shù)器組成,其中60 進(jìn)制計數(shù)器可用6 進(jìn)制計數(shù)器和10 進(jìn)制計數(shù)器構(gòu)成;24 進(jìn)制的小時計數(shù)同樣可用6 進(jìn)制計數(shù)器和10 進(jìn)制計數(shù)器得到:當(dāng)計數(shù)器計數(shù)到24 時,“2”和“4”同時進(jìn)行清零,則可實現(xiàn)24 進(jìn)制計數(shù)。

      2、數(shù)據(jù)選擇器:84 輸入14 輸出的多路數(shù)據(jù)選擇器,因為本實驗用到了8個數(shù)碼管(有兩個用來產(chǎn)生隔離符號‘—’)。

      3、譯碼器:七段譯碼器。譯碼器必須能譯出‘—’,由實驗二中譯碼器真值表可得:字母F 的8421BCD 碼為“1111”,譯碼后為“1000111”,現(xiàn)在如果只譯出‘—’,即字母F的中間一橫,則譯碼后應(yīng)為“0000001”,這樣,在數(shù)碼管上顯示的就為‘—’。

      三.基本功能實現(xiàn)

      1.時鐘計數(shù):

      首先下載程序進(jìn)行復(fù)位清零操作,電子鐘從00:00:00計時開始。sethour可以調(diào)整時鐘的小時部分, setmin可以調(diào)整分鐘,步進(jìn)為1。

      由于電子鐘的最小計時單位是1s,因此提供給系統(tǒng)的內(nèi)部的時鐘頻率應(yīng)該大于1Hz,這里取100Hz。CLK端連接外部10Hz的時鐘輸入信號clk。對clk進(jìn)行計

      數(shù),當(dāng)clk=10時,秒加1,當(dāng)秒加到60時,分加1;當(dāng)分加到60時,時加1;當(dāng)時加到24時,全部清0,從新計時。

      用6位數(shù)碼管分別顯示“時”、“分”、“秒”,通過OUTPUT(6 DOWNTO 0)上的信號來點亮指定的LED七段顯示數(shù)碼管。

      2.校時設(shè)置:

      手動調(diào)節(jié)分鐘、小時,可以對所設(shè)計的時鐘任意調(diào)時間,這樣使數(shù)字鐘真正具有使用功能。我們可以通過實驗板進(jìn)行任意的調(diào)整,因為我們用的時鐘信號均是1HZ的,所以每LED燈變化一次就來一個脈沖,即計數(shù)一次。

      通過一個開關(guān)的兩種電平,來打開個關(guān)閉一個二輸入與非門,另一個輸入端接1Hz的信號。因此這個開關(guān)實現(xiàn)了1Hz信號是否加入電路的作用,開關(guān)打在高電平上,1Hz信號通過與非門,開關(guān)打在低電平上,與非門輸出為高電平。把與非門的輸出信號,和時鐘正常走時所需要的時鐘信號,一起通過與門,加給分個位時鐘信號的輸入端即可,這樣分校時開關(guān)打在高電平上,分個位以1Hz的頻率跳動起來,分校時開關(guān)打在低電平上時,正常走時。同理小時校準(zhǔn)與此相同。

      3.清零功能:

      reset為復(fù)位鍵,低電平時實現(xiàn)清零功能,高電平時正常計數(shù)。可以根據(jù)我們自己任意時間的復(fù)位。

      清零電路設(shè)計的關(guān)鍵就是要解決好同步問題,在發(fā)出清零信號時,所有計數(shù)器的時鐘信號是一致的,而且處于有效的邊沿。為此可以設(shè)計當(dāng)清零信號有效時,很高頻率的信號同時加入個計數(shù)器的時鐘端,而當(dāng)清零信號無效時,各計數(shù)器上時鐘端加的是正常走時所需要的時鐘信號。也可以用與門,或門和非門實現(xiàn)上述的功能。當(dāng)清零信號為低時,清零信號經(jīng)過一個非門變?yōu)楦唠娖叫盘?,將與門打開,高頻信號通過與門,在與秒各位計數(shù)器的時鐘端上的信號相或,與其他各位計數(shù)器時鐘輸入端上的信號相與。這樣,當(dāng)清零信號有效時,每一位計數(shù)器上的時鐘輸入端實現(xiàn)了同步的功能,實現(xiàn)了同步清零的功能。當(dāng)清零信號無效時,時鐘正常走時。

      4.定時、報時功能:

      整點報時電路根據(jù)計時系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號,然后去觸發(fā)一音頻發(fā)生器實現(xiàn)報時。它通過對定時和計時的比較來完成報時,由兩個計數(shù)器組成,計數(shù)器由兩個開關(guān)控制,用來對定時的分鐘和時鐘設(shè)定,當(dāng)開關(guān)都打到不送脈沖的狀態(tài),兩個計數(shù)器都保持,從而達(dá)到存儲的目的。比較電路用來比較定時時間和計時時間,當(dāng)它們一致時,輸出為1,這樣可以驅(qū)動報時模塊。最后,利用顯示電路將定的時間設(shè)定輸出。要使定時起到提醒作用,還要有鈴聲,這里用1hz脈沖作為蜂鳴器的信號源。

      四.系統(tǒng)軟件實現(xiàn)

      1.詳細(xì)模塊描述

      (1)Second模塊為秒計數(shù)模塊。Clk作為秒脈沖,reset復(fù)位,setmin用于調(diào)整分鐘,接按鍵,enmin是當(dāng)秒計數(shù)記到59后產(chǎn)生分脈沖,秒計數(shù)重新從0開始計數(shù)。Daout為秒計數(shù)。

      (2)Minute模塊為分計數(shù)模塊。Clk作為分脈沖,接second模塊的enmin,reset用于復(fù)位,sethour用于調(diào)整小時,接按鍵,enhour是當(dāng)分計數(shù)記到59后產(chǎn)生時脈沖,分計數(shù)重新從0開始計數(shù)。Daout為分計數(shù)。

      (3)Hour模塊為時計數(shù)模塊,clk為時脈沖,接minute模塊的enhour,reset復(fù)位,daout為時計數(shù)。

      (4)Alert模塊為整點報時模塊。其中clk1用于在其上升沿判斷是否為整點時刻,若是則加clk秒脈沖從speak端口輸出到揚聲器作為聲音信號,報時10秒。Stop為停止報時控制,接按鍵,按動按鍵時若在報時則報時停止。Reset復(fù)位端。dainsh和dianm分別接分計數(shù)和秒計數(shù),用于判斷整點和報時。

      2.總體設(shè)計及引腳設(shè)置

      在軟件中設(shè)置后頂層原理圖顯示為

      設(shè)計思想,利用脈沖時鐘產(chǎn)生一個1Hz的信號來實現(xiàn)一秒鐘的控制,要產(chǎn)生1Hz的信號就要用到分頻器,實驗中用三個百分頻器把1MHz的信號變成1Hz。然后信號進(jìn)入控制秒的計數(shù)器,當(dāng) 的仿真時間域以便有足夠長的觀察時間。波形文件存盤后運行仿真器,直到出現(xiàn)仿真結(jié)果。

      24進(jìn)制的時控制模塊中當(dāng)clk為上升沿時,hour1輸出由9變?yōu)?,并且hour1都是由0到9循環(huán),hour2輸出由2變?yōu)?,并且hour2都是由0到2循環(huán)。

      60進(jìn)制的分控制模塊中當(dāng)clk和carry為上升沿時,min1輸出由9變?yōu)?,并且min1都是由0到9循環(huán),min2輸出由5變?yōu)?,并且min2都是由0到5循環(huán)。

      60進(jìn)制的秒控制模塊中當(dāng)clk和carry為上升沿時,sec1輸出由9變?yōu)?,并且sec1都是由0到9循環(huán),sec2輸出由5變?yōu)?,并且sec2都是由0到5循環(huán)。

      仿真波形

      3.實驗結(jié)果

      首先,由石英晶體振蕩器輸出穩(wěn)定的脈沖信號,經(jīng)過振蕩器輸出標(biāo)準(zhǔn)的秒脈沖信號,秒計數(shù)電路為六十進(jìn)制計數(shù)器,秒計數(shù)電路將振蕩器產(chǎn)生的秒脈沖信號作為輸入信號,進(jìn)行計數(shù),并通過秒顯示器顯示秒;其次,當(dāng)秒計數(shù)器完成60個秒計數(shù)后,秒計時電路清零,輸出一個“分計時信號”,分計時電路收到秒計時電路產(chǎn)生的信號后,開始計數(shù)并顯示分;再次,當(dāng)分計時電路完成60個分計數(shù)后,分計數(shù)器清零,輸出一個“時計時信號”,時計時電路收到分計時電路產(chǎn)生的信號后,開始計數(shù)并顯示時;最后,時計時電路完成24個時計數(shù)后,清零。完成電子鐘基本功能仿真結(jié)果。

      六.設(shè)計總結(jié)

      通過畢業(yè)論文設(shè)計,我進(jìn)一步加深了對電子設(shè)計的認(rèn)識,進(jìn)一步熟練了對QuartusII軟件的操作。在編寫程序的過程中,遇到了很多問題,使我發(fā)現(xiàn)自己以前學(xué)習(xí)上存在的不足。通過同學(xué)探討和請教老師的方式,終于把問題都解決了。對數(shù)字時鐘原理和設(shè)計思路的更詳細(xì)的了解,掌握了做畢業(yè)設(shè)計的一般流程,為以后的電路設(shè)計積累了一定的經(jīng)驗。做畢業(yè)設(shè)計時,我先查閱了相關(guān)知識,把原理吃透,確定一個大的設(shè)計方向,在按照這個方向分模塊的把要實現(xiàn)的功能用流程圖的形式展示。最后參照每個模塊把輸入和輸出引腳設(shè)定,運用我們所學(xué)的VHDL語言進(jìn)行編程。通過這次的設(shè)計,我深入了解了EDA技術(shù),收獲很大,對軟件編程、排錯調(diào)試、相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。

      經(jīng)過這次的畢業(yè)設(shè)計我學(xué)到的也不止是一些新的理論知識和具體的動手實踐。更重要的是一種思路,大的問提可以轉(zhuǎn)換成小的問題解決,困難的問題通過轉(zhuǎn)換成簡單的問題解決。相信這將會對我今后的學(xué)習(xí)工作帶來幫助。設(shè)計論文過程中我認(rèn)識到我專業(yè)知識缺少的還很多,實踐經(jīng)驗也相當(dāng)匱乏。因此在今后我還需要不斷的去學(xué)習(xí)新的知識,不斷的充實自身。

      在此,再次感謝梁勇老師的悉心指導(dǎo),您讓使我學(xué)到了很多很多!

      ·參考文獻(xiàn)

      1.EDA技術(shù)實用教程----vhdl版(carry:out std_logic);end second;architecture rt1 of second is signal sec1_t,sec2_t:std_logic_vector(3 downto 0);begin process(clk,reset)begin if reset='1'then sec1_t<=“0000”;sec2_t<=“0000”;elsif clk'event and clk='1'then if sec1_t=“1001”then sec1_t<=“0000”;if sec2_t=“0101”then sec2_t<=“0000”;else sec2_t<=sec2_t+1;end if;else sec1_t<=sec1_t+1;end if;if sec1_t=“1001” and sec2_t=“0101”then carry<='1';else carry<='0';end if;end if;end process;sec1<=sec1_t;sec2<=sec2_t;end rt1;

      分模塊 程序如下:

      library ieee;

      use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute is port(clk,reset:in std_logic;min1,min2:out std_logic_vector(3 downto 0);carry:out std_logic);end minute;architecture rt1 of minute is signal min1_t,min2_t:std_logic_vector(3 downto 0);begin process(clk,reset)begin if reset='1'then min1_t<=“0000”;min2_t<=“0000”;elsif clk'event and clk='1'then if min1_t=“1001”then min1_t<=“0000”;if min2_t=“0101”then min2_t<=“0000”;else min2_t<=min2_t+1;end if;else min1_t<=min1_t+1;end if;if min1_t=“1001” and min2_t=“0101”then carry<='1';else carry<='0';end if;end if;end process;min1<=min1_t;min2<=min2_t;end rt1;

      時模塊

      程序如下:

      library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour is port(clk,reset:in std_logic;hour1,hour2:out std_logic_vector(3 downto 0));end hour;architecture rt1 of hour is signal hour1_t,hour2_t:std_logic_vector(3 downto 0);begin process(clk,reset)begin if reset='1'then hour1_t<=“0000”;hour2_t<=“0000”;elsif clk'event and clk='1'then if hour1_t=“0011” and hour2_t=“0010”then hour1_t<=“0000”;hour2_t<=“0000”;else if hour1_t=“1001”then hour1_t<=“0000”;if hour2_t=“0010”then hour2_t<=“0000”;else hour2_t<=hour2_t+1;end if;else hour1_t<=hour1_t+1;end if;end if;end if;end process;hour1<=hour1_t;

      hour2<=hour2_t;end rt1;譯碼顯示模塊 程序如下: library ieee;use ieee.std_logic_1164.all;entity segment7 is port(data:in std_logic_vector(3 downto 0);dout:out std_logic_vector(6 downto 0));end segment7;architecture behav of segment7 is begin process(data)begin case data is when “0000”=>dout<=“0111111”;when “0001”=>dout<=“0000110”;when “0010”=>dout<=“1011011”;when “0011”=>dout<=“1001111”;when “0100”=>dout<=“1100110”;when “0101”=>dout<=“1101101”;when “0110”=>dout<=“1111101”;when “0111”=>dout<=“0100111”;when “1000”=>dout<=“1111111”;when “1001”=>dout<=“1101111”;when others=>dout<=“0000000”;end case;end process;end behav;

      第二篇:EDA課程設(shè)計 數(shù)字時鐘

      EDA

      課程設(shè)計報告

      一·設(shè)計任務(wù)

      使用硬件描述語言,在CPLD/FPGA上實現(xiàn)一個多功能數(shù)字鐘。

      二·設(shè)計要求

      除按鍵、LED、揚聲器、時鐘信號外,整個數(shù)字鐘的功能要求在一塊芯片上實現(xiàn)。

      a)具有時,分,秒,計數(shù)顯示功能,以24小時循環(huán)計時; b)具有時間清零功能;

      c)具有小時、分鐘和秒鐘調(diào)整功能(個位和十位分開調(diào)或合起來調(diào))。

      d)具有鬧鐘功能,能預(yù)設(shè)鬧鐘時間,精確到秒。

      整個數(shù)字鐘只設(shè)一個時鐘輸入端口,所需不同頻率信

      號在內(nèi)部分頻實現(xiàn)。(LED掃描頻率設(shè)為50Hz以上)。

      三·設(shè)計方案

      設(shè)計采用模塊方式,分別為分頻模塊:產(chǎn)生1Hz的脈沖作為秒的輸入,和產(chǎn)生1kHz的脈沖作為數(shù)碼管顯示的動態(tài)掃描。計時模塊:秒模塊,分模塊,時模塊。鬧鐘模塊,顯示模塊,控制模塊。

      四·模塊端口設(shè)置

      1.分頻模塊

      輸入:clkin :

      本實驗輸入為50MHz晶振

      輸出:clk : 為顯示模塊及始終調(diào)節(jié)提供1KHz脈沖

      clkt: 為計數(shù)器模塊提供1Hz脈沖

      2.計時模塊

      m 是模式按鍵,當(dāng)m=0 時,進(jìn)入計時模式,在計時模式下可以進(jìn)行時間調(diào)整。num3,num4 產(chǎn)生加速調(diào)整時間,當(dāng)其值為1 時,可以快速調(diào)整時間,該調(diào)整時間的頻率由clk 提

      供。counta,count1 是手動調(diào)節(jié)時間。Turn 接按鍵,可以改變當(dāng)前調(diào)節(jié)的是小時還是分鐘,長按turn 鍵還可以使秒鐘信號清零。sec1,min1,hour1 輸出的是計時的秒,分,時。

      3.鬧鐘模塊

      原理:num1,num2 產(chǎn)生加速調(diào)整時間,當(dāng)其值為1 時,可以快速調(diào)整時間,該調(diào)整時間的

      頻率由clk 提供。countb,count2 是手動調(diào)節(jié)鬧鐘時間。amin,ahour 是輸出的鬧鐘的分鐘和 小時 4.控制模塊

      m 是模式按鍵,當(dāng)m=0 時,指當(dāng)前輸出的是計時功能;當(dāng)m=1 時,指當(dāng)前調(diào)整的是

      鬧鐘時間;當(dāng)m=2 時,指當(dāng)前調(diào)整的是計時時間;當(dāng)m=3 時,此時turn 按鍵可用于跑表的

      暫停與開始。change 接按鍵,手動調(diào)整時,每按一次,計數(shù)器加1;如果長按,則連續(xù)快

      速加1,用于快速調(diào)時和定時;turn 接按鍵,在手動校時功能時,選擇是調(diào)整小時,還是分

      鐘;若長時間按住該鍵,還可使秒信號清零,用于精確調(diào)時。count1,count2,counta,countb 分

      別是用來調(diào)節(jié)計時時間和鬧鐘時間。LD_min,LD_hour,指示當(dāng)前調(diào)節(jié)的是分鐘還是小時。5 顯示模塊

      輸入:clk--1kHz時鐘,提供高頻掃描

      in0、in1…in5--分別為時、分、秒的個位與十位信號

      輸出:a、b…g--數(shù)碼管輸入

      d0、d1…d5--數(shù)碼管選通

      五.程序。

      分頻模塊

      module fenpin(clk,clkt,clkin);input clkin;output clk,clkt;reg clk,clkt;reg [31:0]out,t1;

      initial t1<=0;initial out<=0;initial clk<=0;initial clkt<=0;

      always@(posedge clkin)begin

      out<=out+1;

      if(out==20000)

      begin

      out<=0;

      clk<=!clk;

      end end

      always@(posedge clk)

      begin

      t1<=t1+1;

      if(t1==1000)

      begin

      clkt<=1;

      t1<=0;

      end

      else

      clkt<=0;end endmodule

      計時模塊 module jishi(clk,clk_1Hz, turn,mode,count1,counta,sec1,min1,hour1,num3,num4);input clk,clkt,turn,num3,num4;input mode;input count1,counta;output [7:0] sec1,min1;output [7:0] hour1;wire clkt,ct1,cta,turn,num3,num4;reg [7:0] sec1=0,min1=0;reg [7:0] hour1=0;reg [1:0] m;wire count1,counta;reg minclk,hclk;always @(posedge mode)//mode 信號控制系統(tǒng)在三種功能間轉(zhuǎn)換 begin if(m==4)m<=0;else m<=m+1;end /////秒鐘計時模塊////// always @(posedge clkt)

      if((sec1==8'h59)|turn&(!m))///////若長時間按住該鍵,還可使秒信號清零,用于精確調(diào)時。begin sec1<=0;//按住“turn”按鍵一段時間,秒信號可清零,該功能用于手動精確調(diào)時

      if(!(turn&(!m)))minclk<=1;///產(chǎn)生進(jìn)位 end else begin if(sec1[3:0]==4'b1001)begin sec1[3:0]<=4'b0000;sec1[7:4]<=sec1[7:4]+1;end else sec1[3:0]<=sec1[3:0]+1;minclk<=0;end ////////分鐘計時模?/// assign m_clk=minclk||count1;/////m_clk 產(chǎn)生進(jìn)位或校正改變 assign ct1=(num3&clk)|(!num3&m_clk);//ct1 用于計時、校時中的分鐘計數(shù)

      always @(posedge ct1)begin if(min1==8'h59)begin min1<=0;hclk<=1;end else begin if(min1[3:0]==9)

      begin min1[3:0]<=0;min1[7:4]<=min1[7:4]+1;end else min1[3:0]<=min1[3:0]+1;hclk<=0;end end ////////小時計時模塊/// assign h_clk=hclk||counta;//////h_clk 產(chǎn)生進(jìn)位或校正改變 assign cta=(num4&clk)|(!num4&h_clk);//cta 用于計時、校時中的小時計數(shù)

      always @(posedge cta)if(hour1==8'h23)hour1<=0;else if(hour1[3:0]==9)begin hour1[7:4]<=hour1[7:4]+1;hour1[3:0]<=0;end else hour1[3:0]<=hour1[3:0]+1;Endmodule

      鬧鐘模塊

      module alarm(clk,amin,ahour,num1,num2,count2,countb,LD_alert);input clk,num1,num2,count2,countb;output [7:0] amin;

      output [7:0] ahour;output LD_alert;wire LD_alert;reg [7:0] amin=0;reg [7:0] ahour=0;assign ct2=(num1&clk)|(!num1&count2);//ct2 用于定時狀態(tài)下調(diào)整分鐘信號

      assign LD_alert=(ahour|amin)?1:0;//指示是否進(jìn)行了鬧鈴定時 always @(posedge ct2)if(amin==8'h59)amin<=0;else if(amin[3:0]==9)begin amin[3:0]<=0;amin[7:4]<=amin[7:4]+1;end else amin[3:0]<=amin[3:0]+1;assign ctb=(num2&clk)|(!num2&countb);////ctb 用于定時狀態(tài)調(diào)節(jié)小時信號 always @(posedge ctb)if(ahour==8'h23)ahour<=0;else if(ahour[3:0]==9)begin ahour[3:0]<=0;ahour[7:4]<=ahour[7:4]+1;end else ahour[3:0]<=ahour[3:0]+1;Endmodule 控制模塊

      module ctrol(change,turn,count1,count2,counta,countb,pause,LD_min,LD_hour,mode);input change,mode,turn;output count1,count2,counta,countb,pause,LD_min,LD_hour;reg [1:0] m;reg fm=0,count1=0,count2=0,counta=0,countb=0,pause=0,LD_min=0,LD_hour=0;wire mode,turn,change;always @(posedge mode)//mode 信號控制系統(tǒng)在三種功能間轉(zhuǎn)換 begin if(m==4)m<=0;else m<=m+1;end always @(posedge turn)//////////接按鍵,在手動校時功能時,選擇是調(diào)整小時,還是分鐘; begin fm<=~fm;end

      always @(m or fm or change)begin case(m)2: begin ////////2:調(diào)節(jié)時間功能; if(fm)begin count1<=change;{LD_min,LD_hour}<=2;end//////指示當(dāng)前調(diào)整的是分鐘

      Else

      begin counta<=change;{LD_min,LD_hour}<=1;end/////指示當(dāng)前調(diào)整的是小時 {count2,countb}<=0;end 1: begin //////1:調(diào)節(jié)鬧鐘功能 if(fm)begin count2<=change;{LD_min,LD_hour}<=2;end/////指示當(dāng)前調(diào)整的是分 else begin countb<=change;{LD_min,LD_hour}<=1;end/////指示當(dāng)前調(diào)整的是小時 {count1,counta}<=0;end

      0: begin {count1,count2,counta,countb,LD_min,LD_hour}<=0;end ////0:計時功能 endcase end endmodule 顯示模塊

      module show(min1,sec1,amin,hour1,ahour,MSH,MSL,SH,SL,MH,ML,min,sec,hour,mode);input [7:0] min1,sec1,amin;input [7:0] hour1,ahour;input[3:0] MSH,MSL,SH,SL,MH,ML;input mode;output [7:0] min,sec;output [7:0] hour;reg [7:0] min,sec;reg [7:0] hour;reg [1:0] m;always @(posedge mode)//mode 信號控制系統(tǒng)在三種功能間轉(zhuǎn)換

      begin if(m==4)m<=0;else m<=m+1;end always @(min1 or sec1 or amin or hour1 or ahour or m)begin case(m)0: begin hour<=hour1;min<=min1;sec<=sec1;end 1: begin hour<=ahour;min<=amin;sec<=8'hzz;end 2: begin hour<=hour1;min<=min1;sec<=8'hzz;end 3: begin

      hour<={SH,SL};

      min<={MSH,MSL};sec<={MH,ML};end endcase end Endmodule

      實驗分析 七

      實驗總結(jié)

      八、參考資料

      1、《EDA技術(shù)實用教程》

      2、實驗箱使用說明;

      第三篇:EDA課程設(shè)計——數(shù)字時鐘

      Hefei University

      EDA課程綜述

      論文題目: EDA課程綜述

      專 業(yè): 09通信(2)班

      姓 名: 唐吉祥

      學(xué) 號: 0905072035 指導(dǎo)老師: 查長軍

      隨著基于PLD的EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大和深入,EDA技術(shù)在電子信息、通信、自動控制及計算機(jī)應(yīng)用領(lǐng)域的重要性日益提高。

      作為現(xiàn)在的大學(xué)生應(yīng)熟練掌握這門技術(shù),為以后的發(fā)展打下良好的基礎(chǔ),本實驗設(shè)計是應(yīng)用QuartusII環(huán)境及VHDL語言設(shè)計一個時間可調(diào)的數(shù)字時鐘。使自己熟練使用QuartusII環(huán)境來進(jìn)行設(shè)計,掌握VHDL語言的設(shè)計方法。要注重理論與實踐之間的不同,培養(yǎng)自己的實踐能力!

      目錄

      一、課程設(shè)計任務(wù)及要求............................................................................................3

      1.1實驗?zāi)康?.........................................................................................................3 1.2功能設(shè)計..........................................................................................................3

      二、整體設(shè)計思想........................................................................................................3

      2.1性能指標(biāo)及功能設(shè)計......................................................................................3 2.2總體方框圖......................................................................................................4

      三、詳細(xì)設(shè)計................................................................................................................4

      3.1數(shù)字鐘的基本工作原理:..............................................................................4

      3.1.1時基T 產(chǎn)生電路..................................................................................4 3.1.2調(diào)時、調(diào)分信號的產(chǎn)生......................................................................4 3.1.3計數(shù)顯示電路.......................................................................................5 3.2設(shè)計思路..........................................................................................................5 3.3設(shè)計步驟..........................................................................................................6

      3.3.1工程建立及存盤...................................................................................6 3.3.2工程項目的編譯...................................................................................7 3.3.3目標(biāo)芯片的選擇...................................................................................7 3.3.4時序仿真...............................................................................................8 3.3.5引腳鎖定.............................................................................................10 3.3.6硬件測試.............................................................................................11 3.3.7實驗結(jié)果.............................................................................................11

      四、設(shè)計總結(jié)..............................................................................................................12

      五、附錄......................................................................................................................12

      5.1 VHDL源程序..................................................................................................12 5.2配置符號圖....................................................................................................17

      一、課程設(shè)計任務(wù)及要求

      1.1實驗?zāi)康?/p>

      1)掌握VHDL語言的基本運用

      2)掌握QuartusII的簡單操作并會使用EDA實驗箱 3)掌握一個基本EDA課程設(shè)計的操作

      1.2功能設(shè)計

      1)有時、分、秒計數(shù)顯示功能,小時為24進(jìn)制,分鐘和秒為60進(jìn)制以24小時循環(huán)計時

      2)設(shè)置復(fù)位、清零等功能

      3)有校時功能,可以分別對時及分進(jìn)行單獨校時,使其校正到標(biāo)準(zhǔn)時間 4)時鐘計數(shù)顯示時有LED燈顯示

      二、整體設(shè)計思想

      2.1性能指標(biāo)及功能設(shè)計

      1)時、分、秒計時器

      時計時器為一個24進(jìn)制計數(shù)器,分、秒計時器均為60進(jìn)制計數(shù)器。當(dāng)秒計時器接受到一個秒脈沖時,秒計數(shù)器開始從1計數(shù)到60,此時秒顯示器將顯示00、01、02、...、59、00;每當(dāng)秒計數(shù)器數(shù)到00時,就會產(chǎn)生一個脈沖輸出送至分計時器,此時分計數(shù)器數(shù)值在原有基礎(chǔ)上加1,其顯示器將顯示00、01、02、...、59、00;每當(dāng)分計數(shù)器數(shù)到00時,就會產(chǎn)生一個脈沖輸出送至?xí)r計時器,此時時計數(shù)器數(shù)值在原有基礎(chǔ)上加1,其顯示器將顯示00、01、02、...、23、00。即當(dāng)數(shù)字鐘運行到23點59分59秒時,當(dāng)秒計時器在接受一個秒脈沖,數(shù)字鐘將自動顯示00點00分00秒。2)校時電路

      當(dāng)開關(guān)撥至校時檔時,電子鐘秒計時工作,通過時、分校時開關(guān)分別對時、分進(jìn)行校對,開關(guān)每按1次,與開關(guān)對應(yīng)的時或分計數(shù)器加1,當(dāng)調(diào)至需要的時與分時,撥動reset開關(guān),電子鐘從設(shè)置的時間開始往后計時。2.2總體方框圖

      三、詳細(xì)設(shè)計

      3.1數(shù)字鐘的基本工作原理:

      3.1.1時基T 產(chǎn)生電路

      數(shù)字鐘以其顯示時間的直觀性、走時準(zhǔn)確性作為一種計時工具,數(shù)字鐘的基本組成部分離不開計數(shù)器,在控制邏輯電路的控制下完成預(yù)定的各項功能。

      由晶振產(chǎn)生的頻率非常穩(wěn)定的脈沖,經(jīng)整形、穩(wěn)定電路后,產(chǎn)生一個頻率為1Hz的、非常穩(wěn)定的計數(shù)時鐘脈沖。

      3.1.2調(diào)時、調(diào)分信號的產(chǎn)生

      由計數(shù)器的計數(shù)過程可知,正常計數(shù)時,當(dāng)秒計數(shù)器(60進(jìn)制)計數(shù)到59 時,再來一個脈沖,則秒計數(shù)器清零,重新開始新一輪的計數(shù),而進(jìn)位則作為分計數(shù)器的計數(shù)脈沖,使分計數(shù)器計數(shù)加1?,F(xiàn)在我們把電路稍做變動:把秒計數(shù)器的進(jìn)位脈沖和一個頻率為2Hz的脈沖信號同時接到一個2選1數(shù)據(jù)選擇器的兩個數(shù)據(jù)輸入端,而位選信號則接一個脈沖按鍵開關(guān),當(dāng)按鍵開關(guān)不按下去時(即為0),則數(shù)據(jù)選擇器將秒計數(shù)器的進(jìn)位脈沖送到分計數(shù)器,此時,數(shù)字鐘正常工作;當(dāng)按鍵開關(guān)按下去時(即為1),則數(shù)據(jù)選擇器將另外一個2Hz 的信號作為分計數(shù) 器的計數(shù)脈沖,使其計數(shù)頻率加快,當(dāng)達(dá)到正確時間時,松開按鍵開關(guān),從而達(dá)到調(diào)時的目的。調(diào)節(jié)小時的時間也一樣的實現(xiàn)。

      3.1.3計數(shù)顯示電路

      由計數(shù)部分、數(shù)據(jù)選擇器、譯碼器組成,是時鐘的關(guān)鍵部分。

      1、計數(shù)部分:由兩個60進(jìn)制計數(shù)器和一個24 進(jìn)制計數(shù)器組成,其中60 進(jìn)制計數(shù)器可用6 進(jìn)制計數(shù)器和10 進(jìn)制計數(shù)器構(gòu)成;24 進(jìn)制的小時計數(shù)同樣可用6 進(jìn)制計數(shù)器和10 進(jìn)制計數(shù)器得到:當(dāng)計數(shù)器計數(shù)到24 時,“2”和“4”同時進(jìn)行清零,則可實現(xiàn)24 進(jìn)制計數(shù)。

      2、數(shù)據(jù)選擇器:84 輸入14 輸出的多路數(shù)據(jù)選擇器,因為本實驗用到了8個數(shù)碼管(有兩個用來產(chǎn)生隔離符號‘—’)。

      3、譯碼器:七段譯碼器。譯碼器必須能譯出‘—’,由實驗二中譯碼器真值表可得:字母F 的8421BCD 碼為“1111”,譯碼后為“1000111”,現(xiàn)在如果只譯出‘—’,即字母F的中間一橫,則譯碼后應(yīng)為“0000001”,這樣,在數(shù)碼管上顯示的就為‘—’。

      3.2設(shè)計思路

      根據(jù)系統(tǒng)設(shè)計要求,系統(tǒng)設(shè)計采用自頂向下設(shè)計方法,由時鐘分頻部分、計時部分、按鍵部分調(diào)時部分和顯示部分五個部分組成。這些模塊都放在一個頂層文件中。

      1)時鐘計數(shù):

      首先下載程序進(jìn)行復(fù)位清零操作,電子鐘從00:00:00計時開始。sethour可以調(diào)整時鐘的小時部分, setmin可以調(diào)整分鐘,步進(jìn)為1。

      由于電子鐘的最小計時單位是1s,因此提供給系統(tǒng)的內(nèi)部的時鐘頻率應(yīng)該大于1Hz,這里取100Hz。CLK端連接外部10Hz的時鐘輸入信號clk。對clk進(jìn)行計數(shù),當(dāng)clk=10時,秒加1,當(dāng)秒加到60時,分加1;當(dāng)分加到60時,時加1;當(dāng)時加到24時,全部清0,從新計時。

      用6位數(shù)碼管分別顯示“時”、“分”、“秒”,通過OUTPUT(6 DOWNTO 0)上的信號來點亮指定的LED七段顯示數(shù)碼管。

      2)時間設(shè)置:

      手動調(diào)節(jié)分鐘、小時,可以對所設(shè)計的時鐘任意調(diào)時間,這樣使數(shù)字鐘真正具有使用功能。我們可以通過實驗板上的鍵7和鍵4進(jìn)行任意的調(diào)整,因為我們用的時鐘信號均是1HZ的,所以每LED燈變化一次就來一個脈沖,即計數(shù)一次。3)清零功能: reset為復(fù)位鍵,低電平時實現(xiàn)清零功能,高電平時正常計數(shù)??梢愿鶕?jù)我們自己任意時間的復(fù)位。

      3.3設(shè)計步驟

      3.3.1工程建立及存盤

      1.打開 QuartusⅡ,單擊“File”菜單,選擇 File→New Project Wizard,對話框如下:分別輸入項目的工作路徑、項目名和實體名,單擊Finish。

      2.單擊“File”菜單,選擇New,彈出小對話框,雙擊“VHDL File“,即選中了文本編輯方式。在出現(xiàn)的“Vhdl1.vhd”文本編輯窗中鍵入VHDL程序,輸入完畢后,選擇File→Save As,即出現(xiàn)“Save As”對話框。選擇自己建立好的存放本文件的目錄,然后在文件名框中鍵入文件名,按“Save”按鈕。

      3.建立工程項目,在保存VHDL文件時會彈出是否建立項目的小窗口,點擊“Yes”確定。即出現(xiàn)建立工程項目的導(dǎo)航窗口,點擊“Next”,最后在出現(xiàn)的屏幕中分別鍵入新項目的工作路徑、項目名和實體名。注意,原理圖輸入設(shè)計方法中,存盤的原理圖文件名可以是任意的,但VHDL程序文本存盤的文件名必須與文件的實體名一致,輸入后,單擊“Finish”按鈕。3.3.2工程項目的編譯

      單擊工具條上的編譯符號開始編譯,并隨著進(jìn)度不斷變化屏幕,編譯完成后的屏幕如圖所示:

      3.3.3目標(biāo)芯片的選擇

      選擇菜單 Assignments 選項的下拉菜單中選擇器件 Device ?,如圖所示: 在彈出的對話框中的 Family(器件序列欄)對應(yīng)的序列名,EP1C3 對應(yīng)的是 Cyclone 系列。在 Available Devices里選擇 EP1C3T144-C8(有時需要把 Show advanced devices的勾消去,以便顯示出所有速度級別的器件)。注意:所選器件必須與目標(biāo)板的器件型號完全一致。

      在圖中,單擊“Device and Pin Options?”,在彈出的“Device and Pin Options?”窗口中,單擊“Unused Pins”標(biāo)簽。選擇“As output driving an unspecified signal ”(由于學(xué)習(xí)機(jī)的“FPGA”具有很多功能,為了避免使用引腳對其它器件造成影響,保證本系統(tǒng)可靠工作,將未使用引腳設(shè)定為輸出不定狀態(tài))后,單擊確定后,無誤后單擊“OK”。

      3.3.4時序仿真

      建立波形文件:選擇 File→New,在New窗中選中“Other File”標(biāo)簽。在出現(xiàn)的屏幕中選擇“Vector Waveform File”項出現(xiàn)一新的屏幕。在出現(xiàn)的新屏幕中,雙擊“Name”下方的空白處,彈出“Insert Nod or Bus”對話框,單擊該對話框的“Node Finder??”。在屏幕中的 Filter 中選擇 Pins,單擊“List”。而后,單擊“>>”,所有輸入/輸出都被拷貝到右邊的一側(cè),這些正是我們希望的各個引腳,也可以只選其中的的一部分,根據(jù)實際情況決定。然后單擊屏幕右上腳的 “OK”。在出現(xiàn)的小屏幕上單擊“OK”。

      設(shè)定仿真時間寬度。選擇 Edit → End time?選項,在End time選擇窗中選擇適當(dāng)?shù)姆抡鏁r間域,以便有足夠長的觀察時間。

      波形文件存盤。選擇File→Save as 選項,直接存盤即可。運行仿真器。在菜單中選擇項,直到出現(xiàn),仿真結(jié)束。

      未曾編輯的仿真波形

      仿真波形 3.3.5引腳鎖定

      將設(shè)計編程下載進(jìn)選定的目標(biāo)器件中,如EPF10K10,作進(jìn)一步的硬件測試,將設(shè)計的所有輸入輸出引腳分別與目標(biāo)器件的EPF10K10的部分引腳相接,操作如下:

      1.選擇 Assignments → Assignments Editor ,即進(jìn)入 Assignments Editor編輯器。在Category 欄選擇 Pin,或直接單擊右上側(cè)的 Pin 按鈕。

      2.雙擊 TO 欄的《new》,在出現(xiàn)的的下拉欄中選擇對應(yīng)的端口信號名(如 D[0]);然后雙擊對應(yīng)的欄的《new》,在出現(xiàn)的下拉欄中選擇對應(yīng)的端口信號名的期間引腳號。

      3.最后存儲這些引腳鎖定信息后,必須再編譯(啟動)一次,才能將引腳鎖定信息編譯進(jìn)編程下載文件中。此后就可以準(zhǔn)備將編譯好的 SOF 文件下載到試驗系統(tǒng)的FPGA中去了。

      引腳鎖定 3.3.6硬件測試

      1.首先將下載線把計算機(jī)的打印機(jī)口與目標(biāo)板(如開發(fā)板或?qū)嶒灠澹┻B接好,打開電源,選擇模式7。

      2.打開編輯窗和配置文件。選擇,彈出一個編輯窗。在Mode欄中選擇JTAG,并在選項下的小方框打勾。注意核對下載文件路徑與文件名。如果文件沒有出現(xiàn)或者出錯,單擊左Add file側(cè)按鈕,手動選擇配置文件 clock.sof。

      3.最后單擊下載標(biāo)符Start,即進(jìn)入對目標(biāo)器件 FPGA 的配置下載操作。當(dāng) Progress 顯示100%,以及在底部的處理欄中出現(xiàn) Configuration Succeeded 時,表示編程成功,如圖所示。注意,如果必要時,可再次單擊 Start,直至編程成功。

      4.下載完成后,通過硬件測試進(jìn)一步確定設(shè)計是否達(dá)到所有的技術(shù)指標(biāo),如未達(dá)到,可逐步檢查,哪部分出現(xiàn)問題。如果是代碼出現(xiàn)問題,須修改代碼;若是時序波形圖有問題,須重新設(shè)置。

      3.3.7實驗結(jié)果

      實驗箱使用模式7,鍵8為復(fù)位按鍵,鍵8為1時正常工作。鍵4設(shè)置小時,鍵7設(shè)置分鐘。

      下載成功后,按下鍵8,及使六個LED復(fù)位清零,顯示數(shù)秒的自動計時,可以通過4鍵設(shè)置小時數(shù),7鍵設(shè)置分鐘數(shù)。當(dāng)秒數(shù)滿60則進(jìn)一位,分鐘數(shù)滿60進(jìn)一位,當(dāng)顯示為23:59:59時,秒數(shù)在加一則顯示00:00:00,之后從新計時。

      四、設(shè)計總結(jié)

      通過這次課程設(shè)計,我進(jìn)一步加深了對電子設(shè)計自動化的了解。并進(jìn)一步熟練了對QuartusII軟件的操作。在編寫程序的過程中,遇到了很多問題,使我發(fā)現(xiàn)自己以前學(xué)習(xí)上存在的不足。通過與同學(xué)探討和請教老師,終于把問題都解決了,并加深了對數(shù)字時鐘原理和設(shè)計思路的了解。

      同時也掌握了做課程設(shè)計的一般流程,為以后的設(shè)計積累了一定的經(jīng)驗。做課程設(shè)計時,先查閱相關(guān)知識,把原理吃透,確定一個大的設(shè)計方向,在按照這個方向分模塊的把要實現(xiàn)的功能用流程圖的形式展示。最后參照每個模塊把輸入和輸出引腳設(shè)定,運用我們所學(xué)的VHDL語言進(jìn)行編程??傊?,通過這次的設(shè)計,進(jìn)一步了解了EDA技術(shù),收獲很大,對軟件編程、排錯調(diào)試、相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。

      在此,也感謝康老師的悉心指導(dǎo),使自己學(xué)到了很多東西!

      五、附錄

      5.1 VHDL源程序

      Alert模塊

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY alert IS

      PORT(clk:IN STD_LOGIC;

      dain:IN STD_LOGIC_VECTOR(6 DOWNTO 0);

      speak:OUT STD_LOGIC;

      lamp:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END alert;ARCHITECTURE fun OF alert IS

      SIGNAL count:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL count1:STD_LOGIC_VECTOR(1 DOWNTO 0);

      BEGIN speaker:PROCESS(clk)

      BEGIN

      --speak<=count1(1);

      IF(clk'event and clk='1')THEN

      IF(dain=”0000000“)THEN

      speak<=count1(1);

      IF(count1>=”10“)THEN

      count1<=”00“;--count1為三進(jìn)制加法計數(shù)器

      ELSE

      count1<=count1+1;--speak<=count1(0);

      END IF;

      END IF;

      END IF;

      END PROCESS speaker;lamper:PROCESS(clk)

      BEGIN

      IF(rising_edge(clk))THEN

      IF(count<=”10“)THEN

      IF(count=”00“)THEN

      lamp<=”001“;--循環(huán)點亮三只燈

      ELSIF(count=”01“)THEN

      lamp<=”010“;

      ELSIF(count=”10“)THEN

      lamp<=”100“;

      END IF;

      count<=count+1;

      ELSE

      count<=”00“;

      END IF;

      END IF;

      END PROCESS lamper;END fun;Hour模塊

      LIBRARY IEEE;use IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hour IS

      PORT(clk,reset:IN STD_LOGIC;

      daout:out STD_LOGIC_VECTOR(5 DOWNTO 0));END ENTITY hour;ARCHITECTURE fun OF hour IS SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0);

      BEGIN

      daout<=count;

      PROCESS(clk,reset)

      BEGIN

      IF(reset='0')THEN count<=”000000“;--若reset=0,則異步清零

      ELSIF(clk'event and clk='1')THEN

      --否則,若clk上升沿到

      IF(count(3 DOWNTO 0)=”1001“)THEN--若個位計時恰好到”1001“即9

      IF(count<16#23#)THEN

      --23進(jìn)制

      count<=count+7;

      --若到23D則

      else

      count<=”000000“;

      --復(fù)0

      END IF;

      ELSIF(count<16#23#)THEN

      --若未到23D,則count進(jìn)1

      count<=count+1;

      ELSE

      --否則清零

      count<=”000000“;

      END IF;

      --END IF(count(3 DOWNTO 0)=”1001“)

      END IF;

      --END IF(reset='0')

      END PROCESS;END fun;Minute模塊

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY minute IS

      PORT(clk,clk1,reset,sethour:IN STD_LOGIC;

      enhour:OUT STD_LOGIC;

      daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY minute;ARCHITECTURE fun OF minute IS SIGNAL count :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enhour_1, enhour_2: STD_LOGIC;--enmin_1為59分時的進(jìn)位信號 BEGIN

      --enmin_2由clk調(diào)制后的手動調(diào)時脈沖信號串

      daout<=count;

      enhour_2<=(sethour and clk1);--sethour為手動調(diào)時控制信號,高電平有效

      enhour<=(enhour_1 or enhour_2);PROCESS(clk,reset,sethour)

      BEGIN

      IF(reset='0')THEN--若reset為0,則異步清零

      count<=”0000000“;

      ELSIF(clk'event and clk='1')THEN--否則,若clk上升沿到

      IF(count(3 DOWNTO 0)=”1001“)THEN--若個位計時恰好到”1001“即9

      IF(count <16#60#)THEN--又若count小于16#60#,即60

      IF(count=”1011001“)THEN--又若已到59D

      enhour_1<='1';--則置進(jìn)位為1

      count<=”0000000“;--count復(fù)0

      ELSE

      count<=count+7;--若count未到59D,則加7,即作”加6校正“

      END IF;--使前面的16#60#的個位轉(zhuǎn)變?yōu)?421BCD的容量

      ELSE

      count<=”0000000“;--count復(fù)0(有此句,則對無效狀態(tài)電路可自啟動)

      END IF;

      --END IF(count<16#60#)

      ELSIF(count <16#60#)THEN

      count<=count+1;--若count<16#60#則count加1

      enhour_1<='0' after 100 ns;--沒有發(fā)生進(jìn)位

      ELSE

      count<=”0000000“;--否則,若count不小于16#60# count復(fù)0

      END IF;--END IF(count(3 DOWNTO 0)=”1001“)

      END IF;--END IF(reset='0')

      END process;END fun;Second模塊

      LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY second IS PORT(clk,reset,setmin:STD_LOGIC;

      enmin:OUT STD_LOGIC;

      daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY second;ARCHITECTURE fun OF second IS SIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enmin_1,enmin_2:STD_LOGIC;

      --enmin_1為59秒時的進(jìn)位信號

      BEGIN

      --enmin_2由clk調(diào)制后的手動調(diào)分脈沖信號串

      daout<=count;

      enmin_2<=(setmin and clk);--setmin為手動調(diào)分控制信號,高電平有效

      enmin<=(enmin_1 or enmin_2);--enmin為向分進(jìn)位信號

      PROCESS(clk,reset,setmin)

      BEGIN

      IF(reset='0')THEN count<=”0000000“;--若reset為0,則異步清零

      ELSIF(clk 'event and clk='1')then--否則,若clk上升沿到

      IF(count(3 downto 0)=”1001“)then

      --若個位計時恰好到”1001“即9

      IF(count<16#60#)then--又若count小于16#60#,即60H IF(count=”1011001“)then

      --又若已到59D

      enmin_1<='1';count<=”0000000“;--則置進(jìn)位為1及count復(fù)0

      ELSE

      --未到59D

      count<=count+7;--則加7,而+7=+1+6,即作”加6校正“

      END IF;

      ELSE

      --若count不小于16#60#(即count等于或大于16#60#)

      count<=”0000000“;

      --count復(fù)0

      END IF;

      --END IF(count<16#60#)

      ELSIF(count<16#60#)then--若個位計數(shù)未到”1001“則轉(zhuǎn)此句再判

      count<=count+1;

      --若count<16#60#則count加1

      enmin_1<='0'after 100 ns;--沒有發(fā)生進(jìn)位

      ELSE

      --否則,若count不小于16#60#

      count<=”0000000“;

      --則count復(fù)0

      END IF;

      --END IF(count(3 DOWNTO 0)=”1001")

      END IF;

      --END IF(reset='0')END PROCESS;END fun;5.2配置符號圖

      第四篇:EDA課程設(shè)計 數(shù)字時鐘(鬧鐘)

      課 程 設(shè) 計 說 明 書

      題目: 鬧鐘

      學(xué)院(系): 年級專業(yè): 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師: 教師職稱:

      共 16 頁

      第 1 頁

      目 錄

      第1章 摘要…………………………………………………………………………………1 第2章 設(shè)計方案……………………………………………………………………………

      2.1 VHDL簡介…………………………………………………………………………… 2.2 設(shè)計思路…………………………………………………………………………… 第3章 模塊介紹…………………………………………………………………………… 第4章 Verilog HDL設(shè)計源程序………………………………………………………… 第5章 波形仿真圖………………………………………………………………………… 第6章 管腳鎖定及硬件連線……………………………………………………………… 心得體會 ……………………………………………………………………………………17 參考文獻(xiàn) ……………………………………………………………………………………18

      共 16 頁

      第 2 頁

      第一章 摘要

      在當(dāng)今社會,數(shù)字電路產(chǎn)品的應(yīng)用在我們的實際生活中顯得越來越重要,與我們的生活聯(lián)系愈加緊密,例如計算機(jī)、儀表、電子鐘等等,使我們的生活工作較以前的方式更加方便、完善,帶來了很多的益處。

      在此次EDA課程,我的設(shè)計課題是鬧鐘,使用VHDL語言進(jìn)行編程完成。報告書主要由設(shè)計方案、模塊介紹、設(shè)計源程序、仿真波形圖和管腳鎖定及硬件連線四部分組成。設(shè)計方案主要介紹了我對于設(shè)計課題的大致設(shè)計思路,之后各個部分將會詳細(xì)介紹設(shè)計組成及程序。

      共 16 頁

      第 3 頁

      第二章 設(shè)計方案 §2.1 VHDL簡介

      數(shù)字電路主要是基于兩個信號(我們可以簡單的說是有電壓和無電壓),用數(shù)字信號完成對數(shù)字量進(jìn)行算術(shù)運算和邏輯運算的電路我們稱之為數(shù)字電路,它具有邏輯運算和邏輯處理等功能,數(shù)字電路可分為組合邏輯電路和時序邏輯電路。

      EDA技術(shù),就是以大規(guī)模可編程邏輯器件為設(shè)計載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達(dá)方式,以計算機(jī)、大規(guī)模可編程邏輯器件的開發(fā)軟件及實驗開發(fā)系統(tǒng)為設(shè)計工具,通過有關(guān)的開發(fā)軟件,自動完成用軟件的方式設(shè)計的電子系統(tǒng)到硬件系統(tǒng)的邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合及優(yōu)化、邏輯布局布線、邏輯仿真,直至完成對于特定目標(biāo)芯片的適配編譯、邏輯映射、編程下載等工作,最終形成集成電子系統(tǒng)或?qū)S眉尚酒囊婚T新技術(shù)。

      利用EDA技術(shù)進(jìn)行電子系統(tǒng)的設(shè)計,具有以下幾個特點:① 用軟件的方式設(shè)計硬件;② 用軟件方式設(shè)計的系統(tǒng)到硬件系統(tǒng)的轉(zhuǎn)換是由有關(guān)的開發(fā)軟件自動完成的;③ 設(shè)計過程中可用有關(guān)軟件進(jìn)行各種仿真;④ 系統(tǒng)可現(xiàn)場編程,在線升級;⑤ 整個系統(tǒng)可集成在一個芯片上,體積小、功耗低、可靠性高。因此,EDA技術(shù)是現(xiàn)代電子設(shè)計的發(fā)展趨勢。

      EDA技術(shù)伴隨著計算機(jī)、集成電路、電子系統(tǒng)設(shè)計的發(fā)展,經(jīng)歷了計算機(jī)輔助設(shè)計(Computer Assist Design,簡稱CAD)、計算機(jī)輔助工程設(shè)計(Computer Assist Engineering Design,簡稱CAE)和電子設(shè)計自動化(Electronic Design Automation,簡稱EDA)三個發(fā)展階段。

      常用的硬件描述語言有VHDL、Verilog、ABEL。

      EDA技術(shù)是隨著集成電路和計算機(jī)技術(shù)的飛速發(fā)展應(yīng)運而生的一種高級、快速、有效的電子設(shè)計自動化工具。它是為解決自動控制系統(tǒng)設(shè)計而提出的,從70年代經(jīng)歷了計算機(jī)輔助設(shè)計(CAD),計算機(jī)輔助工程(CAE),電子系統(tǒng)設(shè)計自動化(ESDA)3個階段。前兩個階段的EDA產(chǎn)品都只是個別或部分的解決了電子產(chǎn)品設(shè)計中的工程問題;第三代EDA工具根據(jù)工程設(shè)計中的瓶

      共 16 頁

      第 4 頁

      頸和矛盾對設(shè)計數(shù)據(jù)庫實現(xiàn)了統(tǒng)一管理,并提出了并行設(shè)計環(huán)境概念,提供了獨立于工藝和廠家的系統(tǒng)級的設(shè)計工具。EDA關(guān)鍵技術(shù)之一就是采用硬件描述語言對硬件電路進(jìn)行描述,且具有系統(tǒng)級仿真和綜合能力。目前應(yīng)用比較廣泛的硬件描述語言就是Verilog HDL。Verilog HDL簡介

      Verilog HDL是目前大規(guī)模集成電路設(shè)計中最具代表性、使用最廣泛的硬件描述語言之一。具有如下特點:

      (1)能夠在不同的抽象層次上,如系統(tǒng)級、行為級、RTL級、門級和開關(guān)級,對設(shè)計系統(tǒng)進(jìn)行精確而簡練的描述。

      (2)能夠在每個抽象層次的描述上對設(shè)計進(jìn)行仿真驗證,及時發(fā)現(xiàn)及時發(fā)現(xiàn)可能存在的錯誤,縮短設(shè)計周期,并保存整個設(shè)計過程的正確性。

      (3)由于代碼描述與工藝過程實現(xiàn)無關(guān),便于設(shè)計標(biāo)準(zhǔn)化,提高設(shè)計的可重用性。如國有C語言的編程基礎(chǔ)經(jīng)驗,只需很短的時間就能學(xué)會和掌握Verilog HDL,因此,Verilog HDL可以作為學(xué)習(xí)HDL設(shè)計方法的入門和基礎(chǔ)。

      §2.2 設(shè)計思路

      一、設(shè)計要求

      1、設(shè)計簡易的一分鐘鬧鐘;

      2、可手動輸入定時時間(0~59s),如30s;

      3、兩個動態(tài)數(shù)碼管上跟蹤顯示時間的變化:如30,29,28……到了指定時間蜂鳴器發(fā)出5s的提示音;

      4、采用2個動態(tài)數(shù)碼管顯示時間;

      5、用蜂鳴器發(fā)出提示音;

      6、撥碼開關(guān)設(shè)置定時時間。

      二、設(shè)計思路

      根據(jù)上述的設(shè)計要求,整個系統(tǒng)大致包括如下幾個組成部分:它包括以下幾個組成

      共 16 頁

      第 5 頁

      部分:1)顯示屏,由2個七段動態(tài)數(shù)碼管組成,用于顯示當(dāng)前設(shè)置的鬧鐘時間并進(jìn)行跟蹤顯示;2)6個撥碼開關(guān),用于輸入鬧鐘時間;3)復(fù)位鍵,確定新的鬧鐘時間設(shè)置,或顯示已設(shè)置的鬧鐘時間;4)蜂鳴器,在當(dāng)前時鐘時間與鬧鐘時間相同時,發(fā)出報警聲。

      共 16 頁

      第 6 頁

      第三章 模塊介紹

      一、計時模塊

      此模塊共有6個撥碼開關(guān)作為輸入信號,當(dāng)開關(guān)無輸入時,都處于低電平狀態(tài),D5、D4、D3、D2、D1和D0是并行數(shù)據(jù)輸入端,CRN是異步復(fù)位輸入端,LDN是預(yù)置控制輸入端。當(dāng)開關(guān)有輸入時,會產(chǎn)生一個六位的二進(jìn)制輸出信號num,此信號表示動作的開關(guān)序號,它是作為動態(tài)顯示模塊的輸入信號。

      二、數(shù)碼顯示模塊

      這個模塊有兩個輸入信號和兩個輸出信號。其中一個是信號輸入模塊的輸出num作為輸入,另外一個是時鐘輸入端,作為掃描數(shù)碼管的頻率信號,采用1024HZ的中高頻信號。輸出信號為SS0、SS1、SS2,是動態(tài)數(shù)碼管的片選段。

      三、報警模塊

      報警模塊共有兩個輸入信號ET和CLK1,一個輸出信號COUT。當(dāng)從信號輸入模塊檢測到有開關(guān)輸入時,ET信號已置1,CLK上升沿到來時,程序?qū)OUT置1,蜂鳴器發(fā)出時間為10s的報警信號,時間到達(dá)后,跳出循環(huán),蜂鳴器停止報警。

      四、頂層模塊

      頂層模塊的作用是將各個模塊組合到一起,從而實現(xiàn)最終的功能。其輸入即為各個模塊的輸入,一個時鐘信號,還有6個撥碼開關(guān)的輸入,其輸出為數(shù)碼管顯示和報警器。

      共 16 頁

      第 7 頁

      第四章Verilog HDL設(shè)計源程序

      一、計時模塊

      module counter(LDN,D5,D4,D3,D2,D1,D0,CLK,CRN,Q,OC);input LDN,D5,D4,D3,D2,D1,D0,CLK,CRN;output[5:0] Q;output OC;reg OC;reg[5:0] Q;reg[5:0] Q_TEMP;reg[3:0] NUM;always@(posedge CLK or negedge CRN)begin

      if(~CRN)Q_TEMP=6'b000000;else if(~LDN)begin Q_TEMP={D5,D4,D3,D2,D1,D0};NUM=4'b0000;end else if(Q_TEMP<6'b111100&&Q_TEMP>6'b000000)begin if(NUM<4'b1000&&NUM>=4'b0000)NUM=NUM+1;else NUM=4'b0001;if(NUM==4'b1000)Q_TEMP=Q_TEMP-1;end

      共 16 頁

      第 8 頁

      else Q_TEMP=6'b000000;end always begin

      if(Q_TEMP==6'b000000&&LDN)OC=1'b1;else OC=1'b0;Q=Q_TEMP;end endmodule

      二、數(shù)碼顯示模塊

      module showtime(A,Q,CLKM,SS0,SS1,SS2);input[5:0] A;input CLKM;output[6:0] Q;output SS0,SS1,SS2;reg[6:0] Q;reg SS0,SS1,SS2;reg M;reg[5:0] B;reg[5:0] C;always@(posedge CLKM)begin M=M+1;end always begin

      共 16 頁

      第 9 頁

      if(A<='b001001)begin B=A;C=0;end else if(A>'b001001&&A<='b10011)begin B=A-10;C=1;end else if(A>'b10011&&A<='b11101)begin B=A-20;C=2;end else if(A>'b11101&&A<='b100111)begin B=A-30;C=3;end else if(A>'b100111&&A<='b110001)begin B=A-40;C=4;end else if(A>'b110001&&A<='b111011)

      共 16 頁

      第 10 頁

      begin B=A-50;C=5;end else if(A=='b111100)begin B=0;C=6;end if(M=='b1)begin SS0=1;SS1=0;SS2=0;case(B)'b000000:Q='b0111111;'b000001:Q='b0000110;'b000010:Q='b1011011;'b000011:Q='b1001111;'b000100:Q='b1100110;'b000101:Q='b1101101;'b000110:Q='b1111101;'b000111:Q='b0000111;'b001000:Q='b1111111;'b001001:Q='b1101111;default:Q='b0111111;endcase end

      共 16 頁

      第 11 頁

      else if(M=='b0)begin SS0=0;SS1=0;SS2=0;case(C)'b000000:Q='b0111111;'b000001:Q='b0000110;'b000010:Q='b1011011;'b000011:Q='b1001111;'b000100:Q='b1100110;'b000101:Q='b1101101;'b000110:Q='b1111101;default:Q='b0111111;endcase end end endmodule

      三、報警模塊

      module speaker(CLK1,ET,COUT);input CLK1,ET;output COUT;reg COUT;reg[5:0] TEMP;always@(posedge CLK1)begin

      if(~ET)TEMP=6'b000000;else if(TEMP<6'b101001&&TEMP>=6'b000000)TEMP=TEMP+1;

      共 16 頁

      第 12 頁

      else TEMP=6'b101001;end always begin if(TEMP<6'b101001&&TEMP!=6'b000000)COUT=1'b1;else COUT=1'b0;end endmodule

      四、頂層模塊 module timer(LDN,D5,D4,D3,D2,D1,D0,CLK,CRN,CLK1,COUT,LED,SS0,SS1,SS2,CLKM);input LDN,D5,D4,D3,D2,D1,D0,CLK,CRN,CLK1,CLKM;output[6:0] LED;output COUT,SS0,SS1,SS2;wire X6;wire[5:0] X;counter u1(.LDN(LDN),.D5(D5),.D4(D4),.D3(D3),.D2(D2),.D1(D1),.D0(D0),.CLK(CLK),.CRN(CRN),.Q(X[5:0]),.OC(X6));showtime u2(.A(X[5:0]),.Q(LED[6:0]),.CLKM(CLKM),.SS0(SS0),.SS1(SS1),.SS2(SS2));speaker u3(.CLK1(CLK1),.ET(X6),.COUT(COUT));endmodule

      共 16 頁

      第 13 頁

      第五章 波形仿真圖

      一、計時模塊波形仿真圖

      二、報警模塊波形仿真圖

      三、頂層模塊波形仿真圖

      共 16 頁

      第 14 頁

      第六章 管腳鎖定及硬件連線

      一、管腳鎖定

      CLK>chip=timer;Input Pin=75 CLKM>chip=timer:Input Pin=83 CLK1> chip=timer;Input Pin=85 COUT> chip=timer;Output Pin=38 CRN> chip=timer;Input Pin=39 DO> chip=timer;Input Pin=53 D1> chip=timer;Input Pin=47 D2> chip=timer;Input Pin=46 D3> chip=timer;Input Pin=45 D4> chip=timer;Input Pin=44 D5> chip=timer;Input Pin=41 LDN> chip=timer;Input Pin=40 LED0> chip=timer;Output Pin=173 LED1> chip=timer;Output Pin=174 LED2> chip=timer;Output Pin=175 LED3> chip=timer;Output Pin=176 LED4> chip=timer;Output Pin=177 LED5> chip=timer;Output Pin=179 LED6> chip=timer;Output Pin=187 SSO> chip=timer;Output Pin=191 SS1> chip=timer;Output Pin=192 SS2> chip=timer;Output Pin=193 引線說明:撥碼開關(guān)使用數(shù)字開關(guān)組A,需外接引線。

      共 16 頁

      第 15 頁

      心得體會

      通過這次設(shè)計,初步對EDA有一個了解。

      出于沒有學(xué)習(xí)過這門課程,所以再課程設(shè)計開始時對于EDA就是一無所知。課程設(shè)計之初是做了一個簡單的培訓(xùn),關(guān)于軟件和硬件的設(shè)計,算是入門訓(xùn)練吧。通過前兩天的課程講解,我對其有了初步的了解。之后就開始按照指導(dǎo)書中的例題就行練習(xí),仿真,有進(jìn)一步的掌握后就開始了自己的課程設(shè)計。由于我C++程序設(shè)計知識不扎實,所以導(dǎo)致這次軟件設(shè)計困難重重,也讓我明白了在這個領(lǐng)域知識的串聯(lián)是非常普遍的,學(xué)好學(xué)扎實是我們必須要做到的要求。

      通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能提高自己的實際動手能力。在設(shè)計的過程中,可以說得是困難重重,但這畢竟第一次做,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處。

      在此還需要感謝鄭兆兆老師和呂宏詩老師耐心的指導(dǎo)與幫助,使課設(shè)能夠更加順利的完成。

      共 16 頁

      第 16 頁

      參考文獻(xiàn)

      1、閻石主編.《數(shù)字電子技術(shù)基礎(chǔ)》(第五版).高等教等育出版社.2006.5,168-175頁 ;

      2、李國麗、朱維勇、何劍春主編 《EDA與數(shù)字系統(tǒng)設(shè)計》(第2版).機(jī)械工業(yè)出版社.2009.3,105-146頁

      共 16 頁

      第 17 頁

      第五篇:EDA課程設(shè)計時鐘

      EDA

      課程設(shè)計

      姓名:

      學(xué)號:

      班級:自動化

      設(shè)計題目

      多功能數(shù)字鐘電路設(shè)計

      設(shè)計任務(wù)及要求

      多功能數(shù)字鐘應(yīng)該具有的功能有:顯示時—分—秒、小時和分鐘可調(diào)等基本功能。整個鐘表的工作應(yīng)該是在1Hz信號的作用下進(jìn)行,這樣每來一個時鐘信號,秒增加1秒,當(dāng)秒從59秒跳轉(zhuǎn)到00秒時,分鐘增加1分,同時當(dāng)分鐘從59分跳轉(zhuǎn)到00分時,小時增加1小時,小時的范圍為0~23時。

      在實驗中為了顯示的方便,由于分鐘和秒鐘顯示的范圍都是從0~59,所以可以用一個3位的二進(jìn)制碼顯示十位,用一個四位的二進(jìn)制碼(BCD碼)顯示個位,對于小時因為他的范圍是從0~23,所以可以用一個2位的二進(jìn)制碼顯示十位,用一個4位的二進(jìn)制碼(BCD碼)顯示個位。

      實驗中由于七段碼管是掃描的方式

      顯示,所以雖然時鐘需要的是1Hz時鐘信號,但是掃描需要一個比較高頻率的信號,因此為了得到準(zhǔn)確的1Hz信號,必須對輸入的系統(tǒng)時鐘50Mhz進(jìn)行分頻。

      調(diào)整時間的按鍵用按鍵模塊的S1和S2,S1調(diào)節(jié)小時,每按下一次,小時增加一個小時;S2調(diào)整分鐘,每按下一次,分鐘增加一分鐘。另外用S8按鍵作為系統(tǒng)時鐘復(fù)位,復(fù)位后全部顯示00—00—00。

      三.基于Verilog

      HDL語言的電路設(shè)計、仿真與綜合(一)頂層模塊

      本程序采用結(jié)構(gòu)化設(shè)計方法,將其分為彼此獨立又有一定聯(lián)系的三個模塊,如圖1所示:

      圖1:頂層結(jié)構(gòu)框圖

      (二)子模塊

      1.分頻器

      分頻器的作用是對50Mhz的系統(tǒng)時鐘信號進(jìn)行分頻,得到頻率為1000hz的信號,作為顯示器的輸入信號。

      源程序如下:

      module

      fenpin(input

      CP,output

      CPout);

      reg

      CPout;

      reg

      [31:0]

      Cout;

      reg

      CP_En;

      always

      @(posedge

      CP)

      //將50MHz分頻為1kHz

      begin

      Cout

      <=

      (Cout

      ==

      32'd50000)

      ?

      32'd0

      :

      (Cout

      +

      32'd1);

      CP_En

      <=

      (Cout

      ==

      32'd50000)

      ?

      1'd1

      :

      1'd0;

      CPout

      <=

      CP_En;

      end

      endmodule

      功能仿真波形如圖2所示(以五分頻為例):

      2.控制器和計數(shù)器

      控制器的作用是,調(diào)整小時和分鐘的值,并能實現(xiàn)清零功能。計數(shù)器的作用是實現(xiàn)分鐘和秒鐘滿60進(jìn)1,小時則由23跳到00。當(dāng)?shù)竭_(dá)59分55秒的時候,LED燈會閃爍來進(jìn)行報時。因為控制器和計數(shù)器的驅(qū)動信號頻率均為1Hz,故從分頻器輸出的信號進(jìn)入控制器后,要進(jìn)行二次分頻,由1Khz變?yōu)?Hz。

      if(Clk_En)

      begin

      if(R1==1)

      begin

      if(Hour<24)

      Hour=Hour+1;

      if(Hour==24)

      begin

      Hour=0;

      end

      R1=0;

      end

      if(R2==1)

      begin

      if(Minute<60)

      Minute=Minute+1;

      if(Minute==60)

      begin

      Minute=0;

      if(Hour<24)

      Hour=Hour+1;

      if(Hour==24)

      begin

      Hour=0;

      End

      end

      R2=0;

      end

      if(Second<60)

      Second=Second+1;

      if(Second==60)

      begin

      Second=0;

      if(Minute<60)

      Minute=Minute+1;

      源程序如下:

      module

      kongzhiqi(CPout,S1,S2,RET,Hour,Minute,Second,LED);

      input

      CPout,S1,S2,RET;

      output

      [5:0]

      Hour;

      output

      [5:0]

      Minute;

      output

      [5:0]

      Second;

      output

      LED;

      reg

      [5:0]

      Hour;

      reg

      [5:0]

      Minute;

      reg

      [5:0]

      Second;

      reg

      R1;

      reg

      R2,R8,LED;

      reg

      [10:0]

      Cout;

      reg

      Clk_En;

      always@(posedge

      CPout)

      begin

      if(S1==0)

      begin

      R1=1;

      end

      if(S2==0)

      begin

      R2=1;

      end

      if(RET==0)

      begin

      R8=1;

      end

      Cout=(Cout==32'd1000)?32'd0:(Cout

      +

      32'd1);

      Clk_En=(Cout==32'd1000)?1'd1:1'd0;

      LED=1;

      end

      else

      LED=0;

      if(R8==1)//清零

      begin

      Hour=0;

      Minute=0;

      Second=0;

      R8=0;

      end

      end

      end

      endmod

      if(Minute==60)

      begin

      Minute=0;

      if(Hour<24)

      Hour=Hour+1;

      if(Hour==24)

      begin

      Hour=0;

      end

      end

      end

      if((Minute==59)&&(Second>55))

      begin

      if(LED==1)

      LED=0;

      else

      功能仿真波形如圖3所示:

      3.顯示器

      顯示器的作用是將時—分—秒的值在數(shù)碼管上依次顯示出來。從分頻器輸出的1Khz的信號作為數(shù)碼管的掃描信號。SEL

      表示三個數(shù)碼管選擇位,它的取值表示八個數(shù)碼管,從左至右依次是111~000。LEDGA表示七段數(shù)碼管,它的取值決定特定位數(shù)上顯示的數(shù)字。

      源程序如下:

      4'b0000:

      Led

      =

      7'b0111_111;

      4'b0001:

      Led

      =

      7'b0000_110;

      4'b0010:

      Led

      =

      7'b1011_011;

      4'b0011:

      Led

      =

      7'b1001_111;

      4'b0100:

      Led

      =

      7'b1100_110;

      4'b0101:

      Led

      =

      7'b1101_101;

      4'b0110:

      Led

      =

      7'b1111_101;

      4'b0111:

      Led

      =

      7'b0000_111;

      4'b1000:

      Led

      =

      7'b1111_111;

      4'b1001:

      Led

      =

      7'b1101_111;

      default:

      Led

      =

      7'b0000_000;

      endcase

      if(SEL==3'b100)

      Led=7'b1000_000;

      if(SEL==3'b011)

      case(shiwei2)

      4'b0000:

      Led

      =

      7'b0111_111;

      4'b0001:

      Led

      =

      7'b0000_110;

      4'b0010:

      Led

      =

      7'b1011_011;

      4'b0011:

      Led

      =

      7'b1001_111;

      4'b0100:

      Led

      =

      7'b1100_110;

      module

      xianshi(CPout,Hour,Minute,Second,SEL,LEDAG);

      input

      CPout;

      input

      Hour,Minute,Second;

      output

      SEL,LEDAG;

      reg

      [2:0]

      SEL;

      reg

      [6:0]

      Led;

      reg

      [3:0]

      shi1,ge1,shi2,ge2,shi3,ge3;

      always

      @(posedge

      CPout)

      begin

      shiwei1=Hour/10;

      gewei1=Hour%10;

      shiwei2=Minute/10;

      gewei2=Minute%10;

      shiwei3=Second/10;

      gewei3=Second%10;

      if(SEL==3'b110)

      case(shiwei1)

      4'b0000:

      Led

      =

      7'b0111_111;

      4'b0001:

      Led

      =

      7'b0000_110;

      4'b0010:

      Led

      =

      7'b1011_011;

      4'b0011:

      Led

      =

      7'b1001_111;

      4'b0100:

      Led

      =

      7'b1100_110;

      4'b0101:

      Led

      =

      7'b1101_101;

      4'b0110:

      Led

      =

      7'b1111_101;

      4'b0111:

      Led

      =

      7'b0000_111;

      4'b1000:

      Led

      =

      7'b1111_111;

      4'b1001:

      Led

      =

      7'b1101_111;

      default:

      Led

      =

      7'b0000_000;

      endcase

      if(SEL==3'b101)

      case(gewei1)

      default:

      Led

      =

      7'b0000_000;

      endcase

      if(SEL==3'b111)

      case(gewei3)

      4'b0000:

      Led

      =

      7'b0111_111;

      4'b0001:

      Led

      =

      7'b0000_110;

      4'b0010:

      Led

      =

      7'b1011_011;

      4'b0011:

      Led

      =

      7'b1001_111;

      4'b0100:

      Led

      =

      7'b1100_110;

      4'b0101:

      Led

      =

      7'b1101_101;

      4'b0110:

      Led

      =

      7'b1111_101;

      4'b0111:

      Led

      =

      7'b0000_111;

      4'b1000:

      Led

      =

      7'b1111_111;

      4'b1001:

      Led

      =

      7'b1101_111;

      default:

      Led

      =

      7'b0000_000;

      endcase

      SEL

      =

      SEL

      +

      3'd1;

      end

      assign

      LEDAG=Led;

      endmodule

      4'b0101:

      Led

      =

      7'b1101_101;

      4'b0110:

      Led

      =

      7'b1111_101;

      4'b0111:

      Led

      =

      7'b0000_111;

      4'b1000:

      Led

      =

      7'b1111_111;

      4'b1001:

      Led

      =

      7'b1101_111;

      default:

      Led

      =

      7'b0000_000;

      endcase

      if(SEL==3'b010)

      case(gewei2)

      4'b0000:

      Led

      =

      7'b0111_111;

      4'b0001:

      Led

      =

      7'b0000_110;

      4'b0010:

      Led

      =

      7'b1011_011;

      4'b0011:

      Led

      =

      7'b1001_111;

      4'b0100:

      Led

      =

      7'b1100_110;

      4'b0101:

      Led

      =

      7'b1101_101;

      4'b0110:

      Led

      =

      7'b1111_101;

      4'b0111:

      Led

      =

      7'b0000_111;

      4'b1000:

      Led

      =

      7'b1111_111;

      4'b1001:

      Led

      =

      7'b1101_111;

      default:

      Led

      =

      7'b0000_000;

      endcase

      if(SEL==3'b001)

      Led=7'b1000_000;

      if(SEL==3'b000)

      case(shiwei3)

      4'b0000:

      Led

      =

      7'b0111_111;

      4'b0001:

      Led

      =

      7'b0000_110;

      4'b0010:

      Led

      =

      7'b1011_011;

      4'b0011:

      Led

      =

      7'b1001_111;

      4'b0100:

      Led

      =

      7'b1100_110;

      4'b0101:

      Led

      =

      7'b1101_101;

      4'b0110:

      Led

      =

      7'b1111_101;

      4'b0111:

      Led

      =

      7'b0000_111;

      4'b1000:

      Led

      =

      7'b1111_111;

      4'b1001:

      Led

      =

      7'b1101_111;

      總結(jié)體會

      這次課程設(shè)計雖然只有短短的四天,但我的收獲卻很大。通過這次實習(xí),我掌握了EDA設(shè)計的基本流程(即設(shè)計輸入—編譯—調(diào)試—仿真—下載),領(lǐng)會了自頂而下結(jié)構(gòu)化設(shè)計的優(yōu)點,并具備了初步的EDA程序設(shè)計能力。

      我感覺,這個程序最難的地方在于頂層模塊的設(shè)計,因為頂層模塊需要將各個子模塊按照電路原理有機(jī)地結(jié)合起來,這需要扎實的理論功底,而這正是我所欠缺的。相比而言,子模塊的設(shè)計就容易多了,因為Verilog語言和C語言有很多相似之處,只要明白了實驗原理,就不難完成,水平的高下只體現(xiàn)在程序的簡潔與否。Verilog源程序的編寫很容易出現(xiàn)錯誤,這就需要耐心的調(diào)試。因為很多情況下,一長串的錯誤往往是由一個不經(jīng)意的小錯誤引起的。當(dāng)程序?qū)艺{(diào)屢錯的時候,最好和其他同學(xué)溝通交流一下,他們不經(jīng)意的一句話,就可能給我啟發(fā),使問題迎刃而解。

      這次實習(xí),給我感觸最深的還是行為態(tài)度問題。人的能力有大有小,但只要端正態(tài)度,不拋棄,不放棄,任何人都能取得令自己滿意的成績。在此,我由衷的感謝在這次課程設(shè)計中給了我巨大幫助的老師和同學(xué)們!

      下載基于EDA技術(shù)的數(shù)字時鐘設(shè)計  最終版范文word格式文檔
      下載基于EDA技術(shù)的數(shù)字時鐘設(shè)計 最終版范文.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        數(shù)字電子時鐘設(shè)計

        (電子技術(shù)課程) 設(shè)計說明書 數(shù)字電子時鐘 起止日期: 2016 年11月23日 至2016年 11月 27 日 學(xué)生姓名 班級 學(xué)號 成績 指導(dǎo)教師(簽字) 交通工程學(xué)院(部) 2016年11月29日 數(shù)字......

        EDA數(shù)字秒表的設(shè)計

        設(shè) 計 報 告——數(shù)字秒表的設(shè)計 EDA 一 設(shè)計目的 1.根據(jù)設(shè)計要求,完成對數(shù)字秒表的設(shè)計。 2.進(jìn)一步加強(qiáng)對QuartusⅡ的應(yīng)用和對Verilog HDL語言的使用。 二 設(shè)計內(nèi)容和要求 1......

        基于verilog的數(shù)字時鐘設(shè)計

        課程設(shè)計 基于Verilog HDL的數(shù)字秒表設(shè)計 系別:物理與電氣工程學(xué)院 專業(yè):微電子學(xué) 班級:班 成員: 1 目錄 一、前言…………………………………………………………………………......

        數(shù)字時鐘的設(shè)計實驗報告

        實驗報告 數(shù)字時鐘的設(shè)計 一、 實驗?zāi)康?1、 掌握數(shù)字鐘的設(shè)計方法。 2、掌握計數(shù)器相互級聯(lián)的方法。 學(xué)號:14040120049 姓名:陶澤二、 實驗設(shè)備和器件 1、數(shù)字邏輯電路實驗板......

        數(shù)字時鐘課程設(shè)計

        數(shù)字電子技術(shù)課程設(shè)計報告 一、設(shè)計目的 數(shù)字鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機(jī)械式時鐘相比具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更更長的使用壽......

        數(shù)字時鐘設(shè)計實驗報告(精選多篇)

        電 子 課 程 設(shè) 計題目:數(shù)字時鐘數(shù)字時鐘設(shè)計實驗報告一、設(shè)計要求: 設(shè)計一個 24 小時制的數(shù)字時鐘。要求:計時、顯示精度到秒;有校時功能。采用中小規(guī)模集成電路設(shè)計。發(fā)揮:增......

        數(shù)字電子時鐘實驗報告

        華大計科學(xué)院 數(shù)字邏輯課程設(shè)計說明書 題目: 多功能數(shù)字鐘 專業(yè): 計算機(jī)科學(xué)與技術(shù) 班級:網(wǎng)絡(luò)工程1班 姓名:劉群 學(xué)號: 1125111023 完成日期: 2013-9 一、設(shè)計題目與要求 設(shè)......

        數(shù)字時鐘課程設(shè)計論文

        目錄 1. 序論?????????????????????????3 2. 本論?????????????????????????4 ——設(shè)計說明????????????......