版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計(jì) 說 明 書</p><p> 課程設(shè)計(jì)名稱: EDA技術(shù)課程設(shè)計(jì) </p><p> 題 目: 適用多功能數(shù)字鐘 </p><p> 日期:2010年 6月 18日</p><p><b> 適用多功能數(shù)字鐘</b></p>
2、;<p> 摘 要:Verilog是廣泛應(yīng)用的硬件描述語言,可以用在硬件設(shè)計(jì)流程的建模、綜合和模擬等多個(gè)階段。隨著硬件設(shè)計(jì)規(guī)模的不斷擴(kuò)大,應(yīng)用硬件描述語言進(jìn)行描述的CPLD結(jié)構(gòu),成為設(shè)計(jì)專用集成電路和其他集成電路的主流。通過應(yīng)用Verilog HDL對(duì)適用多功能數(shù)字鐘的設(shè)計(jì),達(dá)到對(duì)Verilog HDL的理解,同時(shí)對(duì)CPLD器件進(jìn)行簡要了解。</p><p> 本文的研究內(nèi)容包括:應(yīng)用Veri
3、log HDL對(duì)適用多功能數(shù)字鐘進(jìn)行設(shè)計(jì)。</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è)計(jì)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è)計(jì)7</p><p> 3.1 晶體振蕩電路模塊7</p><p> 3.2 JTAG下載電路模塊7</p><p>
9、3.3 顯示電路模塊7</p><p> 3.4 鬧鐘驅(qū)動(dòng)電路模塊8</p><p> 3.5 電源電路模塊8</p><p> 4.基于Verilog HDL語言的軟件設(shè)計(jì)11</p><p> 5系統(tǒng)仿真及調(diào)試20</p><p><b> 6 設(shè)計(jì)總結(jié)23</b><
10、;/p><p> 6.1設(shè)計(jì)小結(jié)……………………………………...……………………………………….23</p><p> 6.2設(shè)計(jì)收獲…………………………………...…..……………………………………..23</p><p> 6.3設(shè)計(jì)改進(jìn)…………………………………...…..……………………………………..23</p><p><
11、;b> 7致謝24</b></p><p><b> 8參考文獻(xiàn)25</b></p><p> 附錄一:CPLD中頂層模塊連接圖26</p><p> 附錄二:在QuartusII軟件中利用硬件描述語言描述電路后,用RTL Viewers生成的對(duì)應(yīng)的電路圖如下27</p><p><
12、;b> 1 前言</b></p><p> 隨著電子技術(shù)的發(fā)展,現(xiàn)場可編程們陳列FPGA和復(fù)雜可編程邏輯器件CPLD的出現(xiàn),使得電子系統(tǒng)的設(shè)計(jì)者利用與器件相應(yīng)的電子軟件CAD,可以設(shè)計(jì)出自己專用的集成電路ASIC器件。這種可編程ASIC不僅使設(shè)產(chǎn)品達(dá)到小型化、集成化和和高可靠性。還減小設(shè)計(jì)成本和設(shè)計(jì)周期,而且器件據(jù)用用戶可編程特性。在現(xiàn)現(xiàn)代計(jì)算機(jī)技術(shù)和電子工藝的發(fā)展,使得現(xiàn)代數(shù)字系統(tǒng)的設(shè)計(jì)和
13、應(yīng)用進(jìn)入了新的階段。電子設(shè)計(jì)自動(dòng)化(EDA)技術(shù)在數(shù)字設(shè)計(jì)中起的作用越來越重要,新的工具和新的設(shè)計(jì)方法不斷推出,可編程邏輯器件不斷增加新的模塊,功能也是越來越強(qiáng),硬件設(shè)計(jì)語言也順應(yīng)形勢,推出新的標(biāo)準(zhǔn),更加好用,更加便捷。</p><p> 1.1課題的背景和目的</p><p> 二十一世紀(jì)是信息化高速發(fā)展的世紀(jì),產(chǎn)業(yè)的信息化離不開硬件芯片的支持。芯片技術(shù)的進(jìn)步是推動(dòng)全球信息化的動(dòng)力。
14、因此在二十一世紀(jì)掌握芯片技術(shù)是十分有必要的。本次課題是計(jì)算機(jī)組成原理的課程設(shè)計(jì),這次課題旨在通過自己對(duì)所需功能芯片的設(shè)計(jì)與實(shí)現(xiàn)來鞏固以前所學(xué)的計(jì)算機(jī)硬件基礎(chǔ)知識(shí),同時(shí)也提高動(dòng)手實(shí)踐的能力,還有為將來進(jìn)行更大規(guī)模更復(fù)雜的開發(fā)積累經(jīng)驗(yàn)。</p><p> 1.2 EDA技術(shù)的介紹</p><p> EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)縮寫,是9
15、0年代初從CAD(計(jì)算機(jī)輔助設(shè)計(jì))、CAM(計(jì)算機(jī)輔助制造)、CAT(計(jì)算機(jī)輔助測試)和CAE(計(jì)算機(jī)輔助工程)的概念發(fā)展而來的。EDA技術(shù)是以計(jì)算機(jī)為工具,根據(jù)硬件描述語言HDL( Hardware Description language)完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對(duì)于特定目標(biāo)芯片的適配編譯和編程下載等工作。</p><p> 硬件描述語言HDL是相對(duì)于一
16、般的計(jì)算機(jī)軟件語言,如:C、PASCAL而言的。HDL語言使用與設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語言,它能描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式。設(shè)計(jì)者可利用HDL程序來描述所希望的電路系統(tǒng),規(guī)定器件結(jié)構(gòu)特征和電路的行為方式;然后利用綜合器和適配器將此程序編程能控制FPGA和CPLD內(nèi)部結(jié)構(gòu),并實(shí)現(xiàn)相應(yīng)邏輯功能的的門級(jí)或更底層的結(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ù)分為三個(gè)階段:</p><p> ?。?)七十年代為CAD階段,人們開始用計(jì)算機(jī)輔助進(jìn)行IC版圖編輯、PCB布局布線,取代了手工操作,產(chǎn)生了計(jì)算機(jī)輔助設(shè)計(jì)的概念。</p><
18、p> ?。?)八十年代為CAE階段,與CAD相比,除了純粹的圖形繪制功能外,又增加了電路功能設(shè)計(jì)和結(jié)構(gòu)設(shè)計(jì),并且通過電氣連接網(wǎng)絡(luò)表將兩者結(jié)合在一起,實(shí)現(xiàn)了工程設(shè)計(jì),這就是計(jì)算機(jī)輔助工程的概念。CAE的主要功能是:原理圖輸入,邏輯仿真,電路分析,自動(dòng)布局布線,PCB后分析。</p><p> (3)九十年代為ESDA階段,盡管CAD/CAE技術(shù)取得了巨大的成功,但并沒有把人從繁重的設(shè)計(jì)工作中徹底解放出來。在
19、整個(gè)設(shè)計(jì)過程中,自動(dòng)化和智能化程度還不高,各種EDA軟件界面千差萬別,學(xué)習(xí)使用困難,并且互不兼容,直接影響到設(shè)計(jì)環(huán)節(jié)間的銜接?;谝陨喜蛔?,人們開始追求:貫徹整個(gè)設(shè)計(jì)過程的自動(dòng)化,這就是ESDA即電子系統(tǒng)設(shè)計(jì)自動(dòng)化。</p><p> 1.4 EDA技術(shù)的發(fā)展趨勢</p><p> 目前的EDA產(chǎn)業(yè)正處在一場大變革的前夕,對(duì)更低成本、更低功耗的無止境追求和越來越短的產(chǎn)品上市壓力正迫使
20、IC供應(yīng)商提供采用0.13μm或以下的千萬門級(jí)的系統(tǒng)芯片,而這些系統(tǒng)芯片的高復(fù)雜性設(shè)計(jì)更加依賴于EDA供應(yīng)商提供全新的設(shè)計(jì)工具和方法以實(shí)現(xiàn)模擬前后端、混合信號(hào)和數(shù)字電路的完全整合。然而,這些新的需求為當(dāng)代EDA工具和設(shè)計(jì)方法帶來了不少新的挑戰(zhàn)與機(jī)會(huì)。</p><p> 例如,如何在工藝上防止模擬電路與數(shù)字電路之間的干擾;現(xiàn)有的大部份EDA工具最多只能處理百萬門級(jí)設(shè)計(jì)規(guī)模,隨著IC設(shè)計(jì)向千萬門級(jí)以上規(guī)模發(fā)展,現(xiàn)有
21、EDA工具和方法必須進(jìn)行升級(jí)。如何融合各EDA供應(yīng)商的工具,以便向IC設(shè)計(jì)界提供更高效能和更方便的RTL-to-GDSII或Conc-ept-to-GDSII整合設(shè)計(jì)環(huán)境;為保證深亞微米(0.13μm或以下)和更低內(nèi)核工作電壓(1.8V或以下)時(shí)代的信號(hào)完整性和設(shè)計(jì)時(shí)序收斂,必須采用新的設(shè)計(jì)方法。</p><p> 半導(dǎo)體工藝的每一次躍升都促使EDA工具改變自己,以適應(yīng)工藝的發(fā)展;反過來EDA工具的進(jìn)步又推動(dòng)設(shè)
22、計(jì)技術(shù)的發(fā)展??梢哉fEDA工具是IC設(shè)計(jì)產(chǎn)業(yè)的背后推手。</p><p> 系統(tǒng)芯片(SOC)正在迅速地進(jìn)入主流產(chǎn)品的行列。由此引發(fā)的“芯片就等于整機(jī)”的現(xiàn)象,將對(duì)整個(gè)電子產(chǎn)業(yè)形成重大的沖擊。種種跡象表明,整個(gè)電子產(chǎn)業(yè)正在醞釀著一場深刻的產(chǎn)業(yè)重組,這將為許多新興的企業(yè)提供進(jìn)入這一行業(yè)的最佳。</p><p><b> 2 總體方案設(shè)計(jì)</b></p>
23、<p><b> 2.1設(shè)計(jì)內(nèi)容</b></p><p> 設(shè)計(jì)一個(gè)多功能的數(shù)字鐘,該數(shù)字鐘具有下述功能:</p><p> ?。?)計(jì)時(shí)功能:包括時(shí),分,秒。</p><p> ?。?)定時(shí)與鬧鐘功能:能在設(shè)定的時(shí)間發(fā)出鬧鈴音。</p><p> ?。?)校時(shí)功能:對(duì)小時(shí),分鐘和秒能手動(dòng)調(diào)整以校準(zhǔn)時(shí)間。
24、</p><p> ?。?)整點(diǎn)報(bào)時(shí)功能:每逢整點(diǎn),產(chǎn)生“嘀嘀嘀嘀—嘟”,四短一長的報(bào)時(shí)音。</p><p><b> 2.2方案比較 </b></p><p> 方案一:本方案是采用模擬器件來實(shí)現(xiàn)具體的電子鐘模塊的,計(jì)時(shí)模塊是由10進(jìn)制,6進(jìn)制,24進(jìn)制計(jì)數(shù)器分別級(jí)聯(lián)完成,輸出的信號(hào)經(jīng)過七段譯碼器由數(shù)碼管顯示出時(shí)間,再用三個(gè)鎖存器模塊對(duì)設(shè)
25、定的具體時(shí)間鎖存,再由比較器對(duì)設(shè)定時(shí)間和實(shí)際時(shí)間進(jìn)行比較,判定是否相等來實(shí)現(xiàn)鬧鐘功能。</p><p> 圖2.1 系統(tǒng)總體框圖</p><p> 方案二:本方案采用的是CPLD芯片及外圍電路實(shí)現(xiàn)。系統(tǒng)總體構(gòu)成包括最小系統(tǒng)部分、晶振模塊、電源模塊、JTAG下載模塊、時(shí)間顯示模塊、鬧鐘報(bào)警模塊,CPLD不僅完成對(duì)脈沖計(jì)數(shù),完成時(shí)鐘功能,還能同時(shí)對(duì)信號(hào)進(jìn)行譯碼,能設(shè)定鬧鐘時(shí)間,和對(duì)設(shè)定時(shí)
26、間比較鬧時(shí)。</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ù)字電路中的進(jìn)制計(jì)數(shù)器、譯碼、觸發(fā)器、鎖
27、存器,比較器實(shí)現(xiàn)。這種小規(guī)模數(shù)字電路搭建起來比較復(fù)雜。在設(shè)計(jì)中用到的芯片多,控制復(fù)雜,功耗大,在一些小型的設(shè)計(jì)中還可以,電路稍微復(fù)雜,則很難控制其時(shí)序,況且輸入組數(shù)不能很好的擴(kuò)展。</p><p> 方案二:本方案是使用復(fù)雜可編程邏輯器件的CPLD芯片實(shí)現(xiàn)。實(shí)現(xiàn)起來比較簡單,一些功能模塊在CPLD里面用Verilog HDL編程實(shí)現(xiàn),比如這次實(shí)現(xiàn)的電子鐘模塊CPLD一塊芯片就完成了包括七段譯碼,進(jìn)制計(jì)數(shù),設(shè)定鬧
28、時(shí)時(shí)間模塊和比較鬧時(shí)模塊,其實(shí)我們還可以在CPLD內(nèi)再擴(kuò)展許多功能,設(shè)計(jì)方便,利于修改,且開發(fā)難度不高,很適合對(duì)于大規(guī)模的系統(tǒng)設(shè)計(jì),還可以很容易在QuetusII 中仿真系統(tǒng)工作時(shí)序。</p><p><b> 2.4方案選擇</b></p><p> 上述兩個(gè)方案最大的區(qū)別就是:方案一采用的是數(shù)字編碼器等芯片,而方案二是用復(fù)雜可編程邏輯器件CPLD。由于本設(shè)計(jì)針
29、對(duì)電子鐘設(shè)計(jì)使用,而且要求根據(jù)相應(yīng)的要求進(jìn)行功能擴(kuò)展,使用CPLD在此方面更加有優(yōu)勢,,而且要維護(hù)方便,調(diào)試簡單,穩(wěn)定性好,功耗低?;谏鲜鰞煞桨副容^,論證,發(fā)現(xiàn)方案二更容易實(shí)現(xiàn)本次設(shè)計(jì)的要求,并且方案二的電路較簡單,程序容易控制,,而且是EDA的熱門技術(shù),所以最終選擇方案二。</p><p> 3.單元模塊電路簡介與設(shè)計(jì)</p><p> 3.1 晶體振蕩電路模塊</p>
30、<p> MAXⅡEPM570的時(shí)鐘電路比較簡單,在其2腳DCLOCK輸入時(shí)鐘信號(hào)即可。本系統(tǒng)采用的50M有源晶振。3.3V電源電壓對(duì)其供電,其原理圖如圖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í)間和搶答組數(shù)。直接用CPLD驅(qū)動(dòng)兩個(gè)數(shù)碼管顯示,數(shù)碼管為共陰極管,其電路原理圖如下:</p><p> 圖3.3 顯示電路</p><p> 3.4 鬧鐘驅(qū)動(dòng)電路模塊&
32、lt;/p><p> 報(bào)警電路用一個(gè)三極管驅(qū)動(dòng)一個(gè)蜂鳴器產(chǎn)生,當(dāng)時(shí)鐘走到設(shè)定的鬧鐘時(shí)間后,CPLD的beer管腳會(huì)自動(dòng)的給出高電平,驅(qū)動(dòng)三極管,使蜂鳴器響:</p><p> 圖3.4 蜂鳴報(bào)警電路</p><p> 3.5 電源電路模塊</p><p> 電源電路主要是為系統(tǒng)提供電源,因?yàn)镃PLD是3.3V,故整個(gè)系統(tǒng)用3.3V,用一
33、個(gè)LM7805穩(wěn)壓產(chǎn)生一個(gè)5V電壓,然后通過LM1117降壓為系統(tǒng)需要的標(biāo)準(zhǔn)3.3V。</p><p> 外接6~8V直流電壓輸入,通過二極管整流,電容C濾波后送入LM7805穩(wěn)壓,一路送入LM1117中降壓,一路送入蜂鳴器提供驅(qū)動(dòng)。原理圖如下圖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是一個(gè)低壓差電壓調(diào)節(jié)器系列。其壓差在1.2V輸出,負(fù)載電流為800mA時(shí)為1.2V。它與國家半導(dǎo)體的工業(yè)標(biāo)準(zhǔn)器件LM317有相同的管腳排列。LM1117有可調(diào)電壓的版本,通過2個(gè)外部電阻可實(shí)現(xiàn)1.25~13.8V
35、輸出電壓范圍。另外還有5個(gè)固定電壓輸出(1.8V、2.5V、2.85V、3.3V和5V)的型號(hào)。 LM1117提供電流限制和熱保護(hù)。電路包含1個(gè)齊納調(diào)節(jié)的帶隙參考電壓以確保輸出電壓的精度在±1%以內(nèi)。LM1117系列具有LLP、TO.263、SOT.223、TO.220和TO.252 D.PAK封裝。輸出端需要一個(gè)至少10uF的鉭電容來改善瞬態(tài)響應(yīng)和穩(wěn)定性。提供1.8V、2.5V、2.85V、3.3V、5V和可調(diào)電壓的型號(hào),節(jié)
36、省空間的SOT.223和LLP封裝及電流限制和熱保護(hù)功能,輸出電流可達(dá)800mA, 線性調(diào)整率:0.2% (Max) 負(fù)載調(diào)整率:0.4% (Max) 溫度范圍-LM1117:0℃~125℃ -LM1117I:.40℃~125℃。</p><p> 4.基于Verilog HDL語言的軟件設(shè)計(jì)</p><p> // 多功能數(shù)字鐘</p><p><b&
37、gt; /*信號(hào)定義:</b></p><p> clk:標(biāo)準(zhǔn)時(shí)鐘信號(hào),本例中,其頻率為4Hz;</p><p> clk_1k:產(chǎn)生鬧鈴音、報(bào)時(shí)音的時(shí)鐘信號(hào),本例中其頻率為1024Hz;</p><p> mode:功能控制信號(hào);為0:計(jì)時(shí)功能;</p><p><b> 為1:鬧鐘功能;<
38、/b></p><p> 為2:手動(dòng)校時(shí)功能;</p><p> turn:接按鍵,在手動(dòng)校時(shí)功能時(shí),選擇是調(diào)整小時(shí),還是分鐘;</p><p> 若長時(shí)間按住該鍵,還可使秒信號(hào)清零,用于精確調(diào)時(shí);</p><p> change:接按鍵,手動(dòng)調(diào)整時(shí),每按一次,計(jì)數(shù)器加1;</p><p> 如
39、果長按,則連續(xù)快速加1,用于快速調(diào)時(shí)和定時(shí);</p><p> hour,min,sec:此三信號(hào)分別輸出并顯示時(shí)、分、秒信號(hào),</p><p> 皆采用BCD碼計(jì)數(shù),分別驅(qū)動(dòng)6個(gè)數(shù)碼管顯示時(shí)間;</p><p> alert:輸出到揚(yáng)聲器的信號(hào),用于產(chǎn)生鬧鈴音和報(bào)時(shí)音;</p><p> 鬧鈴音為持續(xù)20秒的急促的"嘀
40、嘀嘀"音,若按住"change"鍵,</p><p> 則可屏蔽該音;整點(diǎn)報(bào)時(shí)音為"嘀嘀嘀嘀-嘟"四短一長音;</p><p> LD_alert:接發(fā)光二極管,指示是否設(shè)置了鬧鐘功能;</p><p> LD_hour:接發(fā)光二極管,指示當(dāng)前調(diào)整的是小時(shí)信號(hào);</p><p>
41、LD_min:接發(fā)光二極管,指示當(dāng)前調(diào)整的是分鐘信號(hà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信號(hào)用于產(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的輸入時(shí)鐘產(chǎn)生1Hz的時(shí)基信號(hào)</p><p> clk_1Hz<=~clk_1Hz;</p><p> always @(posedge mode) //mode信號(hào)控制系統(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四個(gè)信號(hào)</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> //如果長時(shí)間按下"change"鍵,則生成"num1"
52、信號(hào)用于連續(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信號(hào)</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用于計(jì)時(shí)、校時(shí)中的分鐘計(jì)數(shù)</p><p> assign ct2=(num1&clk)|(!num1&count2); //ct2用于定時(shí)狀態(tài)下調(diào)整分鐘信號(hào)</p><p> assig
58、n cta=(num4&clk)|(!num4&h_clk); //cta用于計(jì)時(shí)、校時(shí)中的小時(shí)計(jì)數(shù)</p><p> assign ctb=(num2&clk)|(!num2&countb); //ctb用于定時(shí)狀態(tài)下調(diào)整小時(shí)信號(hào)</p><p> always @(posedge clk_1Hz) //秒計(jì)時(shí)和秒調(diào)整進(jìn)程<
59、/p><p> if(!(sec1^8'h59)|turn&(!m))</p><p> begin sec1<=0;if(!(turn&(!m))) minclk<=1;end</p><p> //按住"turn"按鍵一段時(shí)間,秒信號(hào)可清零,該功能用于手動(dòng)精確調(diào)時(shí)</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) //分計(jì)時(shí)和分調(diào)整進(jìn)程</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) //小時(shí)計(jì)時(shí)和小時(shí)調(diào)整進(jìn)程</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) //鬧鐘定時(shí)功能中的分鐘調(diào)節(jié)進(jìn)程</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) //鬧鐘定時(shí)功能中的小時(shí)調(diào)節(jié)進(jìn)程</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;//控制鬧鈴的時(shí)間長短</p><p> else a
69、lert1<=0; else alert1<=0;</p><p> always //時(shí)、分、秒的顯示控制</p><p><b> case(m)</b></p><p> 3'b00:begin hour<=hour1;min<=min1;sec<=
70、sec1;end</p><p> //計(jì)時(shí)狀態(tài)下的時(shí)、分、秒顯示</p><p> 3'b01:begin hour<=ahour;min<=amin;sec<=8'hzz;end</p><p> //定時(shí)狀態(tài)下的時(shí)、分、秒顯示</p><p> 3'b10:begin hour<
71、;=hour1;min<=min1;sec<=8'hzz;end</p><p> //校時(shí)狀態(tài)下的時(shí)、分、秒顯示</p><p><b> endcase</b></p><p> assign LD_alert=(ahour|amin)?1:0;//指示是否進(jìn)行了鬧鈴定時(shí)</p><p>
72、 assign alert=((alert1)?clk_1k&clk:0)|alert2;//產(chǎn)生鬧鈴音或整點(diǎn)報(bào)時(shí)音</p><p> always //產(chǎn)生整點(diǎn)報(bào)時(shí)信號(hào)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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)——多功能數(shù)字鐘
- eda實(shí)現(xiàn)多功能數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字電子技術(shù)課程設(shè)計(jì)-多功能數(shù)字鐘
- 數(shù)字電子技術(shù)課程設(shè)計(jì)---多功能數(shù)字鐘的設(shè)計(jì)
- 電子技術(shù)課程設(shè)計(jì)--多功能數(shù)字鐘的設(shè)計(jì)
- 多功能數(shù)字鐘課程設(shè)計(jì)
- 課程設(shè)計(jì)-- 多功能 數(shù)字鐘
- eda數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘--eda課程設(shè)計(jì)
- 電子技術(shù)課程設(shè)計(jì)---多功能數(shù)字鐘電路設(shè)計(jì)
- eda數(shù)字鐘課程設(shè)計(jì)
- 課程設(shè)計(jì)--多功能數(shù)字鐘設(shè)計(jì)
- 課程設(shè)計(jì)---多功能電子數(shù)字鐘
- vhdl課程設(shè)計(jì)---多功能數(shù)字鐘
- 數(shù)字邏輯課程設(shè)計(jì)---多功能數(shù)字鐘
- 多功能數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 多功能數(shù)字鐘電路課程設(shè)計(jì)
- 多功能數(shù)字鐘課程設(shè)計(jì)報(bào)告
- eda技術(shù)課程設(shè)計(jì)--數(shù)碼管顯示數(shù)字鐘設(shè)計(jì)
- 多功能數(shù)字鐘課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論