適用多功能數(shù)字鐘(eda技術(shù)課程設(shè)計)_第1頁
已閱讀1頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  課 程 設(shè) 計 說 明 書</p><p>  課程設(shè)計名稱: EDA技術(shù)課程設(shè)計 </p><p>  題 目: 適用多功能數(shù)字鐘 </p><p>  日期:2010年 6月 18日</p><p><b>  適用多功能數(shù)字鐘</b></p>

2、;<p>  摘 要:Verilog是廣泛應(yīng)用的硬件描述語言,可以用在硬件設(shè)計流程的建模、綜合和模擬等多個階段。隨著硬件設(shè)計規(guī)模的不斷擴大,應(yīng)用硬件描述語言進行描述的CPLD結(jié)構(gòu),成為設(shè)計專用集成電路和其他集成電路的主流。通過應(yīng)用Verilog HDL對適用多功能數(shù)字鐘的設(shè)計,達到對Verilog HDL的理解,同時對CPLD器件進行簡要了解。</p><p>  本文的研究內(nèi)容包括:應(yīng)用Veri

3、log HDL對適用多功能數(shù)字鐘進行設(shè)計。</p><p>  關(guān)鍵詞:適用多功能數(shù)字鐘;硬件描述語言</p><p>  Abstract: Verilog is the most widely used hardware description language.It can be used to the modeling, synthesis, and simulation stag

4、es of the hardware system design flow. With the scale of hardware design continually enlarging, describing the CPLD with HDL become the mainstream of designing ASIC and other IC.To comprehend Verilog HDL and get some kno

5、wledge of CPLD device, we design a block with several functions with Verilog HDL.</p><p>  This thesis is about to discuss the above there aspects: Design Apply to the multifunctional digital clock with Veri

6、log HDL.</p><p>  Keywords:Apply to the multifunctional digital clock; hardware description language</p><p><b>  目 錄</b></p><p><b>  1 前言1</b></p>&l

7、t;p>  1.1課題的背景和目的1</p><p>  1.2 EDA技術(shù)的介紹1</p><p>  1.3 EDA技術(shù)的發(fā)展2</p><p>  1.4 EDA技術(shù)的發(fā)展趨勢2</p><p>  2 總體方案設(shè)計4</p><p><b>  2.2方案比較4</b>&

8、lt;/p><p>  2.3 方案論證5</p><p><b>  2.4方案選擇5</b></p><p>  3.單元模塊電路簡介與設(shè)計7</p><p>  3.1 晶體振蕩電路模塊7</p><p>  3.2 JTAG下載電路模塊7</p><p>  

9、3.3 顯示電路模塊7</p><p>  3.4 鬧鐘驅(qū)動電路模塊8</p><p>  3.5 電源電路模塊8</p><p>  4.基于Verilog HDL語言的軟件設(shè)計11</p><p>  5系統(tǒng)仿真及調(diào)試20</p><p><b>  6 設(shè)計總結(jié)23</b><

10、;/p><p>  6.1設(shè)計小結(jié)……………………………………...……………………………………….23</p><p>  6.2設(shè)計收獲…………………………………...…..……………………………………..23</p><p>  6.3設(shè)計改進…………………………………...…..……………………………………..23</p><p><

11、;b>  7致謝24</b></p><p><b>  8參考文獻25</b></p><p>  附錄一:CPLD中頂層模塊連接圖26</p><p>  附錄二:在QuartusII軟件中利用硬件描述語言描述電路后,用RTL Viewers生成的對應(yīng)的電路圖如下27</p><p><

12、;b>  1 前言</b></p><p>  隨著電子技術(shù)的發(fā)展,現(xiàn)場可編程們陳列FPGA和復(fù)雜可編程邏輯器件CPLD的出現(xiàn),使得電子系統(tǒng)的設(shè)計者利用與器件相應(yīng)的電子軟件CAD,可以設(shè)計出自己專用的集成電路ASIC器件。這種可編程ASIC不僅使設(shè)產(chǎn)品達到小型化、集成化和和高可靠性。還減小設(shè)計成本和設(shè)計周期,而且器件據(jù)用用戶可編程特性。在現(xiàn)現(xiàn)代計算機技術(shù)和電子工藝的發(fā)展,使得現(xiàn)代數(shù)字系統(tǒng)的設(shè)計和

13、應(yīng)用進入了新的階段。電子設(shè)計自動化(EDA)技術(shù)在數(shù)字設(shè)計中起的作用越來越重要,新的工具和新的設(shè)計方法不斷推出,可編程邏輯器件不斷增加新的模塊,功能也是越來越強,硬件設(shè)計語言也順應(yīng)形勢,推出新的標準,更加好用,更加便捷。</p><p>  1.1課題的背景和目的</p><p>  二十一世紀是信息化高速發(fā)展的世紀,產(chǎn)業(yè)的信息化離不開硬件芯片的支持。芯片技術(shù)的進步是推動全球信息化的動力。

14、因此在二十一世紀掌握芯片技術(shù)是十分有必要的。本次課題是計算機組成原理的課程設(shè)計,這次課題旨在通過自己對所需功能芯片的設(shè)計與實現(xiàn)來鞏固以前所學(xué)的計算機硬件基礎(chǔ)知識,同時也提高動手實踐的能力,還有為將來進行更大規(guī)模更復(fù)雜的開發(fā)積累經(jīng)驗。</p><p>  1.2 EDA技術(shù)的介紹</p><p>  EDA是電子設(shè)計自動化(Electronic Design Automation)縮寫,是9

15、0年代初從CAD(計算機輔助設(shè)計)、CAM(計算機輔助制造)、CAT(計算機輔助測試)和CAE(計算機輔助工程)的概念發(fā)展而來的。EDA技術(shù)是以計算機為工具,根據(jù)硬件描述語言HDL( Hardware Description language)完成的設(shè)計文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標芯片的適配編譯和編程下載等工作。</p><p>  硬件描述語言HDL是相對于一

16、般的計算機軟件語言,如:C、PASCAL而言的。HDL語言使用與設(shè)計硬件電子系統(tǒng)的計算機語言,它能描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式。設(shè)計者可利用HDL程序來描述所希望的電路系統(tǒng),規(guī)定器件結(jié)構(gòu)特征和電路的行為方式;然后利用綜合器和適配器將此程序編程能控制FPGA和CPLD內(nèi)部結(jié)構(gòu),并實現(xiàn)相應(yīng)邏輯功能的的門級或更底層的結(jié)構(gòu)網(wǎng)表文件或下載文件。目前,就FPGA/CPLD開發(fā)來說,比較常用和流行的HDL主要有ABEL-HDL、AHDL

17、和VHDL。 </p><p>  1.3 EDA技術(shù)的發(fā)展</p><p>  可將EDA技術(shù)分為三個階段:</p><p> ?。?)七十年代為CAD階段,人們開始用計算機輔助進行IC版圖編輯、PCB布局布線,取代了手工操作,產(chǎn)生了計算機輔助設(shè)計的概念。</p><

18、p> ?。?)八十年代為CAE階段,與CAD相比,除了純粹的圖形繪制功能外,又增加了電路功能設(shè)計和結(jié)構(gòu)設(shè)計,并且通過電氣連接網(wǎng)絡(luò)表將兩者結(jié)合在一起,實現(xiàn)了工程設(shè)計,這就是計算機輔助工程的概念。CAE的主要功能是:原理圖輸入,邏輯仿真,電路分析,自動布局布線,PCB后分析。</p><p> ?。?)九十年代為ESDA階段,盡管CAD/CAE技術(shù)取得了巨大的成功,但并沒有把人從繁重的設(shè)計工作中徹底解放出來。在

19、整個設(shè)計過程中,自動化和智能化程度還不高,各種EDA軟件界面千差萬別,學(xué)習(xí)使用困難,并且互不兼容,直接影響到設(shè)計環(huán)節(jié)間的銜接?;谝陨喜蛔?,人們開始追求:貫徹整個設(shè)計過程的自動化,這就是ESDA即電子系統(tǒng)設(shè)計自動化。</p><p>  1.4 EDA技術(shù)的發(fā)展趨勢</p><p>  目前的EDA產(chǎn)業(yè)正處在一場大變革的前夕,對更低成本、更低功耗的無止境追求和越來越短的產(chǎn)品上市壓力正迫使

20、IC供應(yīng)商提供采用0.13μm或以下的千萬門級的系統(tǒng)芯片,而這些系統(tǒng)芯片的高復(fù)雜性設(shè)計更加依賴于EDA供應(yīng)商提供全新的設(shè)計工具和方法以實現(xiàn)模擬前后端、混合信號和數(shù)字電路的完全整合。然而,這些新的需求為當代EDA工具和設(shè)計方法帶來了不少新的挑戰(zhàn)與機會。</p><p>  例如,如何在工藝上防止模擬電路與數(shù)字電路之間的干擾;現(xiàn)有的大部份EDA工具最多只能處理百萬門級設(shè)計規(guī)模,隨著IC設(shè)計向千萬門級以上規(guī)模發(fā)展,現(xiàn)有

21、EDA工具和方法必須進行升級。如何融合各EDA供應(yīng)商的工具,以便向IC設(shè)計界提供更高效能和更方便的RTL-to-GDSII或Conc-ept-to-GDSII整合設(shè)計環(huán)境;為保證深亞微米(0.13μm或以下)和更低內(nèi)核工作電壓(1.8V或以下)時代的信號完整性和設(shè)計時序收斂,必須采用新的設(shè)計方法。</p><p>  半導(dǎo)體工藝的每一次躍升都促使EDA工具改變自己,以適應(yīng)工藝的發(fā)展;反過來EDA工具的進步又推動設(shè)

22、計技術(shù)的發(fā)展??梢哉fEDA工具是IC設(shè)計產(chǎn)業(yè)的背后推手。</p><p>  系統(tǒng)芯片(SOC)正在迅速地進入主流產(chǎn)品的行列。由此引發(fā)的“芯片就等于整機”的現(xiàn)象,將對整個電子產(chǎn)業(yè)形成重大的沖擊。種種跡象表明,整個電子產(chǎn)業(yè)正在醞釀著一場深刻的產(chǎn)業(yè)重組,這將為許多新興的企業(yè)提供進入這一行業(yè)的最佳。</p><p><b>  2 總體方案設(shè)計</b></p>

23、<p><b>  2.1設(shè)計內(nèi)容</b></p><p>  設(shè)計一個多功能的數(shù)字鐘,該數(shù)字鐘具有下述功能:</p><p>  (1)計時功能:包括時,分,秒。</p><p> ?。?)定時與鬧鐘功能:能在設(shè)定的時間發(fā)出鬧鈴音。</p><p> ?。?)校時功能:對小時,分鐘和秒能手動調(diào)整以校準時間。

24、</p><p>  (4)整點報時功能:每逢整點,產(chǎn)生“嘀嘀嘀嘀—嘟”,四短一長的報時音。</p><p><b>  2.2方案比較 </b></p><p>  方案一:本方案是采用模擬器件來實現(xiàn)具體的電子鐘模塊的,計時模塊是由10進制,6進制,24進制計數(shù)器分別級聯(lián)完成,輸出的信號經(jīng)過七段譯碼器由數(shù)碼管顯示出時間,再用三個鎖存器模塊對設(shè)

25、定的具體時間鎖存,再由比較器對設(shè)定時間和實際時間進行比較,判定是否相等來實現(xiàn)鬧鐘功能。</p><p>  圖2.1 系統(tǒng)總體框圖</p><p>  方案二:本方案采用的是CPLD芯片及外圍電路實現(xiàn)。系統(tǒng)總體構(gòu)成包括最小系統(tǒng)部分、晶振模塊、電源模塊、JTAG下載模塊、時間顯示模塊、鬧鐘報警模塊,CPLD不僅完成對脈沖計數(shù),完成時鐘功能,還能同時對信號進行譯碼,能設(shè)定鬧鐘時間,和對設(shè)定時

26、間比較鬧時。</p><p>  圖2.2 系統(tǒng)組成框圖</p><p>  該圖是CPLD內(nèi)部原理模塊圖</p><p>  圖2.3 CPLD內(nèi)部原理框圖</p><p><b>  2.3 方案論證</b></p><p>  方案一:該系統(tǒng)是利用數(shù)字電路中的進制計數(shù)器、譯碼、觸發(fā)器、鎖

27、存器,比較器實現(xiàn)。這種小規(guī)模數(shù)字電路搭建起來比較復(fù)雜。在設(shè)計中用到的芯片多,控制復(fù)雜,功耗大,在一些小型的設(shè)計中還可以,電路稍微復(fù)雜,則很難控制其時序,況且輸入組數(shù)不能很好的擴展。</p><p>  方案二:本方案是使用復(fù)雜可編程邏輯器件的CPLD芯片實現(xiàn)。實現(xiàn)起來比較簡單,一些功能模塊在CPLD里面用Verilog HDL編程實現(xiàn),比如這次實現(xiàn)的電子鐘模塊CPLD一塊芯片就完成了包括七段譯碼,進制計數(shù),設(shè)定鬧

28、時時間模塊和比較鬧時模塊,其實我們還可以在CPLD內(nèi)再擴展許多功能,設(shè)計方便,利于修改,且開發(fā)難度不高,很適合對于大規(guī)模的系統(tǒng)設(shè)計,還可以很容易在QuetusII 中仿真系統(tǒng)工作時序。</p><p><b>  2.4方案選擇</b></p><p>  上述兩個方案最大的區(qū)別就是:方案一采用的是數(shù)字編碼器等芯片,而方案二是用復(fù)雜可編程邏輯器件CPLD。由于本設(shè)計針

29、對電子鐘設(shè)計使用,而且要求根據(jù)相應(yīng)的要求進行功能擴展,使用CPLD在此方面更加有優(yōu)勢,,而且要維護方便,調(diào)試簡單,穩(wěn)定性好,功耗低?;谏鲜鰞煞桨副容^,論證,發(fā)現(xiàn)方案二更容易實現(xiàn)本次設(shè)計的要求,并且方案二的電路較簡單,程序容易控制,,而且是EDA的熱門技術(shù),所以最終選擇方案二。</p><p>  3.單元模塊電路簡介與設(shè)計</p><p>  3.1 晶體振蕩電路模塊</p>

30、<p>  MAXⅡEPM570的時鐘電路比較簡單,在其2腳DCLOCK輸入時鐘信號即可。本系統(tǒng)采用的50M有源晶振。3.3V電源電壓對其供電,其原理圖如圖3.1所示:</p><p>  圖3.1 晶振電路模塊</p><p>  3.2 JTAG下載電路模塊</p><p>  JTAG下載電路是為MAXⅡEPM570在程序用的,其原理圖如圖3.

31、2所示:</p><p>  圖3.2 JTAG下載電路</p><p>  3.3 顯示電路模塊</p><p>  顯示電路主要作用是顯示延時間和搶答組數(shù)。直接用CPLD驅(qū)動兩個數(shù)碼管顯示,數(shù)碼管為共陰極管,其電路原理圖如下:</p><p>  圖3.3 顯示電路</p><p>  3.4 鬧鐘驅(qū)動電路模塊&

32、lt;/p><p>  報警電路用一個三極管驅(qū)動一個蜂鳴器產(chǎn)生,當時鐘走到設(shè)定的鬧鐘時間后,CPLD的beer管腳會自動的給出高電平,驅(qū)動三極管,使蜂鳴器響:</p><p>  圖3.4 蜂鳴報警電路</p><p>  3.5 電源電路模塊</p><p>  電源電路主要是為系統(tǒng)提供電源,因為CPLD是3.3V,故整個系統(tǒng)用3.3V,用一

33、個LM7805穩(wěn)壓產(chǎn)生一個5V電壓,然后通過LM1117降壓為系統(tǒng)需要的標準3.3V。</p><p>  外接6~8V直流電壓輸入,通過二極管整流,電容C濾波后送入LM7805穩(wěn)壓,一路送入LM1117中降壓,一路送入蜂鳴器提供驅(qū)動。原理圖如下圖3.7和3.8所示:</p><p>  圖3.5 5V電源電路</p><p>  圖3.6 3.3V電源電路&l

34、t;/p><p>  7805為三端穩(wěn)壓電路,主要的三端穩(wěn)壓電路屬性如表3.1所示</p><p>  表3.1 三端穩(wěn)壓電路</p><p>  LM1117是一個低壓差電壓調(diào)節(jié)器系列。其壓差在1.2V輸出,負載電流為800mA時為1.2V。它與國家半導(dǎo)體的工業(yè)標準器件LM317有相同的管腳排列。LM1117有可調(diào)電壓的版本,通過2個外部電阻可實現(xiàn)1.25~13.8V

35、輸出電壓范圍。另外還有5個固定電壓輸出(1.8V、2.5V、2.85V、3.3V和5V)的型號。 LM1117提供電流限制和熱保護。電路包含1個齊納調(diào)節(jié)的帶隙參考電壓以確保輸出電壓的精度在±1%以內(nèi)。LM1117系列具有LLP、TO.263、SOT.223、TO.220和TO.252 D.PAK封裝。輸出端需要一個至少10uF的鉭電容來改善瞬態(tài)響應(yīng)和穩(wěn)定性。提供1.8V、2.5V、2.85V、3.3V、5V和可調(diào)電壓的型號,節(jié)

36、省空間的SOT.223和LLP封裝及電流限制和熱保護功能,輸出電流可達800mA, 線性調(diào)整率:0.2% (Max) 負載調(diào)整率:0.4% (Max) 溫度范圍-LM1117:0℃~125℃ -LM1117I:.40℃~125℃。</p><p>  4.基于Verilog HDL語言的軟件設(shè)計</p><p>  // 多功能數(shù)字鐘</p><p><b&

37、gt;  /*信號定義:</b></p><p>  clk:標準時鐘信號,本例中,其頻率為4Hz;</p><p>  clk_1k:產(chǎn)生鬧鈴音、報時音的時鐘信號,本例中其頻率為1024Hz;</p><p>  mode:功能控制信號;為0:計時功能;</p><p><b>  為1:鬧鐘功能;<

38、/b></p><p>  為2:手動校時功能;</p><p>  turn:接按鍵,在手動校時功能時,選擇是調(diào)整小時,還是分鐘;</p><p>  若長時間按住該鍵,還可使秒信號清零,用于精確調(diào)時;</p><p>  change:接按鍵,手動調(diào)整時,每按一次,計數(shù)器加1;</p><p>  如

39、果長按,則連續(xù)快速加1,用于快速調(diào)時和定時;</p><p>  hour,min,sec:此三信號分別輸出并顯示時、分、秒信號,</p><p>  皆采用BCD碼計數(shù),分別驅(qū)動6個數(shù)碼管顯示時間;</p><p>  alert:輸出到揚聲器的信號,用于產(chǎn)生鬧鈴音和報時音;</p><p>  鬧鈴音為持續(xù)20秒的急促的"嘀

40、嘀嘀"音,若按住"change"鍵,</p><p>  則可屏蔽該音;整點報時音為"嘀嘀嘀嘀-嘟"四短一長音;</p><p>  LD_alert:接發(fā)光二極管,指示是否設(shè)置了鬧鐘功能;</p><p>  LD_hour:接發(fā)光二極管,指示當前調(diào)整的是小時信號;</p><p>  

41、LD_min:接發(fā)光二極管,指示當前調(diào)整的是分鐘信號。 */</p><p>  module clock(clk,clk_1k,mode,change,turn,alert,hour,min,sec,secH,secL,minH,minL,hourH,hourL, LD_alert,</p><p>  LD_hour,LD_min);</p><p>  i

42、nput clk,clk_1k,mode,change,turn; output alert,LD_alert,LD_hour,LD_min;</p><p>  output[7:0]hour,min,sec,secH,secL,minH,minL,</p><p>  hourH,hourL;</p><p>  reg[7:0] hour,min,sec,ho

43、ur1,min1,sec1,ahour,amin,secH,secL, minH,minL,hourH,hourL;</p><p>  reg[1:0] m,fm,num1,num2,num3,num4;</p><p>  reg[1:0] loop1,loop2,loop3,loop4,sound;</p><p>  reg LD_hour,LD_min;

44、reg clk_1Hz,clk_2Hz,minclk,hclk;</p><p>  reg alert1,alert2,ear; reg count1,count2,counta,countb;</p><p>  wire ct1,ct2,cta,ctb,m_clk,h_clk;</p><p>  always @(posedge clk)</p>

45、<p>  begin clk_2Hz<=~clk_2Hz;</p><p>  if(sound==3) begin sound<=0;ear<=1;end</p><p>  //ear信號用于產(chǎn)生或屏蔽聲音</p><p>  else begin sound<=sound+1;ear<=0;end</p>

46、;<p><b>  end</b></p><p>  always @(posedge clk_2Hz) //由4Hz的輸入時鐘產(chǎn)生1Hz的時基信號</p><p>  clk_1Hz<=~clk_1Hz;</p><p>  always @(posedge mode) //mode信號控制系統(tǒng)在三種功能

47、間轉(zhuǎn)換</p><p>  begin if(m==2) m<=0; else m<=m+1; end</p><p>  always @(posedge turn) </p><p><b>  fm<=~fm;</b></p><p>  always //產(chǎn)生count

48、1,count2,counta,countb四個信號</p><p>  begin case(m)</p><p>  2:begin if(fm) begin count1<=change;{LD_min,LD_hour}<=2;end</p><p>  else begin counta<=change;{LD_min,LD_hou

49、r}<=1;end</p><p>  {count2,countb}<=0;</p><p><b>  end</b></p><p>  1:begin if(fm) begin count2<=change;{LD_min,LD_hour}<=2;end </p><p>  else

50、 begin countb<=change;{LD_min,LD_hour}<=1;end</p><p>  {count1,counta}<=2'b00;</p><p><b>  end</b></p><p>  default:{count1,count2,counta,countb,LD_min,LD_h

51、our}<=0;</p><p><b>  endcase</b></p><p><b>  end</b></p><p>  always @(negedge clk)</p><p>  //如果長時間按下"change"鍵,則生成"num1"

52、信號用于連續(xù)快速加1</p><p>  if(count2) begin if(loop1==3) num1<=1;</p><p>  else begin loop1<=loop1+1;num1<=0;end</p><p><b>  end</b></p><p>  else begin

53、loop1<=0;num1<=0;end</p><p>  always @(negedge clk) //產(chǎn)生num2信號</p><p>  if(countb) begin if(loop2==3) num2<=1;</p><p>  else begin loop2<=loop2+1;num2<=0

54、;end</p><p><b>  end</b></p><p>  else begin loop2<=0;num2<=0;end</p><p>  always @(negedge clk)</p><p>  if(count1) begin if(loop3==3) num3<=1;&l

55、t;/p><p>  else begin loop3<=loop3+1;num3<=0;end</p><p><b>  end</b></p><p>  else begin loop3<=0;num3<=0;end</p><p>  always @(negedge clk)</p&

56、gt;<p>  if(counta) begin if(loop4==3) num4<=1;</p><p>  else begin loop4<=loop4+1;num4<=0;end</p><p><b>  end</b></p><p>  else begin loop4<=0; n

57、um4<=0; end</p><p>  assign ct1=(num3&clk)|(!num3&m_clk); //ct1用于計時、校時中的分鐘計數(shù)</p><p>  assign ct2=(num1&clk)|(!num1&count2); //ct2用于定時狀態(tài)下調(diào)整分鐘信號</p><p>  assig

58、n cta=(num4&clk)|(!num4&h_clk); //cta用于計時、校時中的小時計數(shù)</p><p>  assign ctb=(num2&clk)|(!num2&countb); //ctb用于定時狀態(tài)下調(diào)整小時信號</p><p>  always @(posedge clk_1Hz) //秒計時和秒調(diào)整進程<

59、/p><p>  if(!(sec1^8'h59)|turn&(!m))</p><p>  begin sec1<=0;if(!(turn&(!m))) minclk<=1;end</p><p>  //按住"turn"按鍵一段時間,秒信號可清零,該功能用于手動精確調(diào)時</p><p>

60、  else begin if(sec1[3:0]==4'b1001)</p><p>  begin sec1[3:0]<=4'b0000;sec1[7:4]<=sec1[7:4]+1;end</p><p>  else sec1[3:0]<=sec1[3:0]+1;minclk<=0;</p><p><b&g

61、t;  end</b></p><p>  assign m_clk=minclk||count1;</p><p>  always @(posedge ct1) //分計時和分調(diào)整進程</p><p>  begin if(min1==8'h59) begin min1<=0;hclk<=1;end<

62、;/p><p>  else begin if(min1[3:0]==9)</p><p>  begin min1[3:0]<=0;min1[7:4]<=min1[7:4]+1;end</p><p>  else min1[3:0]<=min1[3:0]+1;hclk<=0;</p><p><b>  en

63、d</b></p><p><b>  end</b></p><p>  assign h_clk=hclk||counta;</p><p>  always @(posedge cta) //小時計時和小時調(diào)整進程</p><p>  if(hour1==8'h23) hour

64、1<=0;</p><p>  elseif(hour1[3:0]==9) </p><p>  begin hour1[7:4]<=hour1[7:4]+1;hour1[3:0]<=0;end</p><p>  else hour1[3:0]<=hour1[3:0]+1;</p><p>  always @(p

65、osedge ct2) //鬧鐘定時功能中的分鐘調(diào)節(jié)進程</p><p>  if(amin==8'h59) amin<=0;</p><p>  elseif(amin[3:0]==9)</p><p>  begin amin[3:0]<=0;amin[7:4]<=amin[7:4]+1;end</p>

66、<p>  else amin[3:0]<=amin[3:0]+1;</p><p>  always @(posedge ctb) //鬧鐘定時功能中的小時調(diào)節(jié)進程</p><p>  if(ahour==8'h23) ahour<=0;</p><p>  elseif(ahour[3:0]==9)<

67、;/p><p>  begin ahour[3:0]<=0;ahour[7:4]<=ahour[7:4]+1;end</p><p>  else ahour[3:0]<=ahour[3:0]+1;</p><p>  always //鬧鈴功能</p><p>  if((min1==amin)&

68、;&(hour1==ahour)&&(amin|ahour)&&(!change))</p><p>  //若按住"change"鍵不放,可屏蔽鬧鈴音</p><p>  if(sec1<8'h20) alert1<=1;//控制鬧鈴的時間長短</p><p>  else a

69、lert1<=0; else alert1<=0;</p><p>  always //時、分、秒的顯示控制</p><p><b>  case(m)</b></p><p>  3'b00:begin hour<=hour1;min<=min1;sec<=

70、sec1;end</p><p>  //計時狀態(tài)下的時、分、秒顯示</p><p>  3'b01:begin hour<=ahour;min<=amin;sec<=8'hzz;end</p><p>  //定時狀態(tài)下的時、分、秒顯示</p><p>  3'b10:begin hour<

71、;=hour1;min<=min1;sec<=8'hzz;end</p><p>  //校時狀態(tài)下的時、分、秒顯示</p><p><b>  endcase</b></p><p>  assign LD_alert=(ahour|amin)?1:0;//指示是否進行了鬧鈴定時</p><p>

72、  assign alert=((alert1)?clk_1k&clk:0)|alert2;//產(chǎn)生鬧鈴音或整點報時音</p><p>  always //產(chǎn)生整點報時信號alert2</p><p><b>  begin </b></p><p>  if((min1==8'h59)

73、&&(sec1>8'h54)||(!(min1|sec1))) </p><p>  if(sec1>8'h54) alert2<=ear&clk_1k;//產(chǎn)生短音</p><p>  else alert2<=!ear&clk_1k;//產(chǎn)生長音</p><p>  else aler

74、t2<=0;</p><p><b>  end</b></p><p>  always //秒顯示的譯碼</p><p>  begin case(sec)</p><p>  8'h00: begin secH<=8'b11111100;

75、secL<=8'b11111100; end</p><p>  8'h01: begin secH<=8'b11111100;secL<=8'b01100000; end</p><p>  8'h02: begin secH<=8'b11111100;secL<=8'b11011010; en

76、d</p><p>  8'h03: begin secH<=8'b11111100;secL<=8'b11110010; end</p><p>  8'h04: begin secH<=8'b11111100;secL<=8'b01100110; end</p><p>  8

77、9;h05: begin secH<= 8'b11111100;secL<=8'b10110110; end</p><p>  8'h06: begin secH<=8'b11111100;secL<=8'b00111110; end</p><p>  8'h07: begin secH<=8&#

78、39;b11111100;secL<=8'b11100000; end</p><p>  8'h08: begin secH<= 8'b11111100;secL<=8'b11111110; end</p><p>  8'h09: begin secH<=8'b11111100;secL<=8'

79、;b11100110; end</p><p>  8'h10: begin secH<=8'b01100000;secL<=8'b11111100; end</p><p>  8'h11: begin secH<=8'b01100000;secL<=8'b01100000; end</p>&

80、lt;p>  8'h12: begin secH<= 8'b01100000;secL<=8'b11011010; end</p><p>  8'h13: begin secH<=8'b01100000;secL<=8'b11110010; end</p><p>  8'h14: begin

81、 secH<=8'b01100000;secL<=8'b01100110; end</p><p>  8'h15: begin secH<= 8'b01100000;secL<=8'b10110110; end</p><p>  8'h16: begin secH<=8'b01100000;

82、secL<=8'b00111110; end</p><p>  8'h17: begin secH<=8'b01100000;secL<=8'b11100000; end</p><p>  8'h18: begin secH<= 8'b01100000;secL<=8'b11111110; e

83、nd</p><p>  8'h19: begin secH<=8'b01100000;secL<=8'b11100110; end</p><p>  8'h20: begin secH<=8'b11011010;secL<=8'b11111100; end</p><p>  8&#

84、39;h21: begin secH<=8'b11011010;secL<=8'b01100000; end</p><p>  8'h22: begin secH<=8'b11011010;secL<=8'b11011010; end</p><p>  8'h23: begin secH<=8&#

85、39;b11011010;secL<=8'b11110010; end</p><p>  8'h24: begin secH<=8’b11011010;secL<=8'b01100110; end</p><p>  8'h25: begin secH<= 8'b11011010;secL<=8'b10

86、110110; end</p><p>  8'h26: begin secH<= 8'b11011010;secL<=8'b00111110; end</p><p>  8'h27: begin secH<=8'b11011010;secL<=8'b11100000; end</p><

87、p>  8'h28: begin secH<=8'b11011010;secL<=8'b11111110; end</p><p>  8'h29: begin secH<=8'b11011010;secL<=8'b11100110; end</p><p>  8'h30: begin se

88、cH<=8'b11110010;secL<=8'b11111100; end</p><p>  8'h31: begin secH<= 8'b11110010;secL<=8'b01100000; end</p><p>  8'h32: begin secH<=8'b11110010;secL

89、<=8'b11011010; end</p><p>  8'h33: begin secH<= 8'b11110010;secL<=8'b11110010; end</p><p>  8'h34: begin secH<=8'b11110010;secL<=8'b01100110; end&l

90、t;/p><p>  8'h35: begin secH<=8'b11110010;secL<=8'b10110110; end</p><p>  8'h36: begin secH<=8'b11110010;secL<=8'b00111110; end</p><p>  8'h

91、37: begin secH<= 8'b11110010;secL<=8'b11100000; end</p><p>  8'h38: begin secH<= 8'b11110010;secL<=8'b11111110; end</p><p>  8'h39: begin secH<=8'

92、;b11110010;secL<=8'b11100110; end</p><p>  8'h40: begin secH<= 8'b01100110;secL<=8'b11111100; end</p><p>  8'h41: begin secH<= 8'b01100110;secL<=8'

93、b01100000; end</p><p>  8'h42: begin secH<=8'b01100110;secL<=8'b11011010; end</p><p>  8'h43: begin secH<=8'b01100110;secL<=8'b11110010; end</p>&l

94、t;p>  8'h44: begin secH<=8'b01100110;secL<=8'b01100110; end</p><p>  8'h45: begin secH<=8'b01100110;secL<=8'b10110110; end</p><p>  8'h46: begin

95、secH<=8'b01100110;secL<=8'b00111110; end</p><p>  8'h47: begin secH<= 8'b01100110;secL<=8'b11100000; end</p><p>  8'h48: begin secH<= 8'b01100110;s

96、ecL<=8'b11111110; end</p><p>  8'h49: begin secH<=8'b01100110;secL<=8'b11100110; end</p><p>  8'h50: begin secH<=8'b10110110;secL<=8'b11111100; end

97、</p><p>  8'h51: begin secH<=8'b10110110;secL<=8'b01100000; end</p><p>  8'h52: begin secH<= 8'b10110110;secL<=8'b11011010; end</p><p>  8

98、9;h53: begin secH<= 8'b10110110;secL<=8'b11110010; end</p><p>  8'h54: begin secH<= 8'b10110110;secL<=8'b01100110; end</p><p>  8'h55: begin secH<=8&

99、#39;b10110110;secL<=8'b10110110; end</p><p>  8'h56: begin secH<= 8'b10110110;secL<=8'b00111110; end</p><p>  8'h57: begin secH<=8'b10110110;secL<=8

100、9;b11100000; end</p><p>  8'h58: begin secH<= 8'b10110110;secL<=8'b11111110; end</p><p>  8'h59: begin secH<=8'b10110110;secL<=8'b11100110; end</p>

101、<p><b>  endcase</b></p><p><b>  end</b></p><p>  always //分顯示的譯碼</p><p>  begin case(min)</p><p>  8'h00: b

102、egin minH<=8'b11111100;minL<=8'b11111100; end</p><p>  8'h01: begin minH<=8'b11111100;minL<=8'b01100000; end</p><p>  8'h02: begin minH<=8'b111111

103、00;minL<=8'b11011010; end</p><p>  8'h03: begin minH<=8'b11111100;minL<=8'b11110010; end</p><p>  8'h04: begin minH<=8'b11111100;minL<=8'b01100110;

104、 end</p><p>  8'h05: begin minH<= 8'b11111100;minL<=8'b10110110; end</p><p>  8'h06: begin minH<=8'b11111100;minL<=8'b00111110; end</p><p>  

105、8'h07: begin minH<=8'b11111100;minL<=8'b11100000; end</p><p>  8'h08: begin minH<= 8'b11111100;minL<=8'b11111110; end</p><p>  8'h09: begin minH<

106、=8'b11111100;minL<=8'b11100110; end</p><p>  8'h10: begin minH<=8'b01100000;minL<=8'b11111100; end</p><p>  8'h11: begin minH<=8'b01100000;minL<=8&

107、#39;b01100000; end</p><p>  8'h12: begin minH<= 8'b01100000;minL<=8'b11011010; end</p><p>  8'h13: begin minH<=8'b01100000;minL<=8'b11110010; end</p>

108、;<p>  8'h14: begin minH<=8'b01100000;minL<=8'b01100110; end</p><p>  8'h15: begin minH<= 8'b01100000;minL<=8'b10110110; end</p><p>  8'h16: b

109、egin minH<=8'b01100000;minL<=8'b00111110; end</p><p>  8'h17: begin minH<=8'b01100000;minL<=8'b11100000; end</p><p>  8'h18: begin minH<= 8'b01100

110、000;minL<=8'b11111110; end</p><p>  8'h19: begin minH<=8'b01100000;minL<=8'b11100110; end</p><p>  8'h20: begin minH<=8'b11011010;minL<=8'b11111100

111、; end</p><p>  8'h21: begin minH<=8'b11011010;minL<=8'b01100000; end</p><p>  8'h22: begin minH<=8'b11011010;minL<=8'b11011010; end</p><p>  

112、8'h23: begin minH<=8'b11011010;minL<=8'b11110010; end</p><p>  8'h24: begin minH<=8’b11011010;minL<=8'b01100110; end</p><p>  8'h25: begin minH<= 8&#

113、39;b11011010;minL<=8'b10110110; end</p><p>  8'h26: begin minH<= 8'b11011010;minL<=8'b00111110; end</p><p>  8'h27: begin minH<=8'b11011010;minL<=8'

114、;b11100000; end</p><p>  8'h28: begin minH<=8'b11011010;minL<=8'b11111110; end</p><p>  8'h29: begin minH<=8'b11011010;minL<=8'b11100110; end</p>&

115、lt;p>  8'h30: begin minH<=8'b11110010;minL<=8'b11111100; end</p><p>  8'h31: begin minH<= 8'b11110010;minL<=8'b01100000; end</p><p>  8'h32: begin

116、 minH<=8'b11110010;minL<=8'b11011010; end</p><p>  8'h33: begin minH<= 8'b11110010;minL<=8'b11110010; end</p><p>  8'h34: begin minH<=8'b11110010;

117、minL<=8'b01100110; end</p><p>  8'h35: begin minH<=8'b11110010;minL<=8'b10110110; end</p><p>  8'h36: begin minH<=8'b11110010;minL<=8'b00111110; en

118、d</p><p>  8'h37: begin minH<= 8'b11110010;minL<=8'b11100000; end</p><p>  8'h38: begin minH<= 8'b11110010;minL<=8'b11111110; end</p><p>  8&

119、#39;h39: begin minH<=8'b11110010;minL<=8'b11100110; end</p><p>  8'h40: begin minH<= 8'b01100110;minL<=8'b11111100; end</p><p>  8'h41: begin minH<=

120、8'b01100110;minL<=8'b01100000; end</p><p>  8'h42: begin minH<=8'b01100110;minL<=8'b11011010; end</p><p>  8'h43: begin minH<=8'b01100110;minL<=8&#

121、39;b11110010; end</p><p>  8'h44: begin minH<=8'b01100110;minL<=8'b01100110; end</p><p>  8'h45: begin minH<=8'b01100110;minL<=8'b10110110; end</p>

122、<p>  8'h46: begin minH<=8'b01100110;minL<=8'b00111110; end</p><p>  8'h47: begin minH<= 8'b01100110;minL<=8'b11100000; end</p><p>  8'h48: beg

123、in minH<= 8'b01100110;minL<=8'b11111110; end</p><p>  8'h49: begin minH<=8'b01100110;minL<=8'b11100110; end</p><p>  8'h50: begin minH<=8'b1011011

124、0;minL<=8'b11111100; end</p><p>  8'h51: begin minH<=8'b10110110;minL<=8'b01100000; end</p><p>  8'h52: begin minH<= 8'b10110110;minL<=8'b11011010;

125、 end</p><p>  8'h53: begin minH<= 8'b10110110;minL<=8'b11110010; end</p><p>  8'h54: begin minH<= 8'b10110110;minL<=8'b01100110; end</p><p> 

126、 8'h55: begin minH<=8'b10110110;minL<=8'b10110110; end</p><p>  8'h56: begin minH<= 8'b10110110;minL<=8'b00111110; end</p><p>  8'h57: begin minH<

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論