版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 本設(shè)計(jì)為一個(gè)多功能的數(shù)字時(shí)鐘,具有時(shí)、分、秒計(jì)數(shù)顯示功能,以24小時(shí)循環(huán)計(jì)數(shù);具有校對(duì)功能。 本設(shè)計(jì)采用EDA技術(shù),以硬件描述語(yǔ)言Verilog HDL為系統(tǒng)邏輯描述語(yǔ)言設(shè)計(jì)文件,在QUARTUSII工具軟件環(huán)境下,采用自頂向下的設(shè)計(jì)方法,由各個(gè)基本模塊共同構(gòu)建了一個(gè)基于FPGA的數(shù)字鐘。</p><p&
2、gt; 系統(tǒng)由時(shí)鐘模塊、控制模塊、計(jì)時(shí)模塊、數(shù)據(jù)譯碼模塊、顯示以及組成。經(jīng)編譯和仿真所設(shè)計(jì)的程序,在可編程邏輯器件上下載驗(yàn)證,本系統(tǒng)能夠完成時(shí)、分、秒的分別顯示,按鍵進(jìn)行校準(zhǔn),整點(diǎn)報(bào)時(shí),鬧鐘功能。</p><p> 關(guān)鍵詞:數(shù)字時(shí)鐘,硬件描述語(yǔ)言,Verilog HDL,F(xiàn)PGA</p><p><b> Abstract</b></p><
3、p> The design for a multi-functional digital clock, with hours, minutes and seconds count display to a 24-hour cycle count; have proof functions function. The use of EDA design technology, hardware-description langua
4、ge VHDL description logic means for the system design documents, in QUAETUSII tools environment, a top-down design, by the various modules together build a FPGA-based digital clock. The main system make up of the clock m
5、odule, control module, time module, data decoding module, display a</p><p> Keywords: digital clock,hardware description language,Verilog HDL,FPGA </p><p><b> 目 錄</b></p>&
6、lt;p><b> 摘 要1</b></p><p> Abstract2</p><p><b> 第一章緒論1</b></p><p> 1.1.選題意義與研究現(xiàn)狀1</p><p> 1.2.國(guó)內(nèi)外研究及趨勢(shì)1</p><p> 1.
7、3.論文結(jié)構(gòu)2</p><p> 第二章編程軟件及語(yǔ)言介紹3</p><p> 2.1Quarters II編程環(huán)境介紹3</p><p> 2.1.1菜單欄3</p><p> 2.1.2工具欄8</p><p> 2.1.3功能仿真流程9</p><p>
8、 2.2Verilog HDL語(yǔ)言介10</p><p> 2.2.1什么是verilog HDL語(yǔ)言10</p><p> 2.2.2主要功能11</p><p> 第三章數(shù)字化時(shí)鐘系統(tǒng)硬件設(shè)計(jì)13</p><p> 3.1系統(tǒng)核心板電路分析13</p><p> 3.2系統(tǒng)主板電路分
9、析15</p><p> 3.2.1時(shí)鐘模塊電路15</p><p> 3.2.2顯示電路15</p><p> 3.2.3鍵盤(pán)控制電路17</p><p> 3.2.4蜂鳴電路設(shè)計(jì)17</p><p> 第四章數(shù)字化時(shí)鐘系統(tǒng)軟件設(shè)計(jì)18</p><p> 4.
10、1整體方案介紹18</p><p> 4.1.1整體設(shè)計(jì)描述18</p><p> 4.1.2整體信號(hào)定義19</p><p> 4.1.3模塊框圖20</p><p> 4.2分頻模塊實(shí)現(xiàn)20</p><p> 4.2.1分頻模塊描述20</p><p>
11、4.2.2分頻模塊設(shè)計(jì)20</p><p> 4.2.3分頻模塊仿真21</p><p> 4.3計(jì)時(shí)模塊實(shí)現(xiàn)21</p><p> 4.3.1計(jì)時(shí)模塊描述與實(shí)現(xiàn)21</p><p> 4.3.2計(jì)時(shí)模塊仿真23</p><p> 4.4按鍵處理模塊實(shí)現(xiàn)23</p>&l
12、t;p> 4.4.1按鍵處理模塊描述23</p><p> 4.4.2按鍵去抖處理模塊設(shè)計(jì)24</p><p> 4.4.3按鍵模塊去抖仿真24</p><p> 4.5鬧鐘模塊實(shí)現(xiàn)25</p><p> 4.5.1鬧鐘模塊設(shè)計(jì)25</p><p> 4.5.2鬧鐘設(shè)定模塊仿真
13、25</p><p> 4.6蜂鳴器模塊實(shí)現(xiàn)25</p><p> 4.6.1蜂鳴器模塊描述25</p><p> 4.6.2蜂鳴器模塊實(shí)現(xiàn)26</p><p> 4.6.3蜂鳴器模塊仿真27</p><p> 4.7顯示模塊實(shí)現(xiàn)27</p><p> 4.7.1
14、顯示模塊描述27</p><p> 4.7.2顯示模塊實(shí)現(xiàn)27</p><p> 4.7.3顯示模塊仿真29</p><p> 第五章系統(tǒng)調(diào)試及運(yùn)行結(jié)果分析30</p><p> 5.1硬件調(diào)試30</p><p> 5.2軟件調(diào)試31</p><p> 5.
15、3調(diào)試過(guò)程及結(jié)果31</p><p> 5.4調(diào)試注意事項(xiàng)33</p><p> 第六章總結(jié)和展望34</p><p><b> 5.5總結(jié)34</b></p><p><b> 5.6展望34</b></p><p><b> 參考文
16、獻(xiàn)35</b></p><p><b> 致 謝36</b></p><p><b> 附 錄37</b></p><p><b> 緒論</b></p><p><b> 選題意義與研究現(xiàn)狀</b></p>
17、;<p> 在這個(gè)時(shí)間就是金錢(qián)的年代里,數(shù)字電子鐘已成為人們生活中的必需品。目前應(yīng)用的數(shù)字鐘不僅可以實(shí)現(xiàn)對(duì)年、月、日、時(shí)、分、秒的數(shù)字顯示,還能實(shí)現(xiàn)對(duì)電子鐘所在地點(diǎn)的溫度顯示和智能鬧鐘功能,廣泛應(yīng)用于車(chē)站、醫(yī)院、機(jī)場(chǎng)、碼頭、廁所等公共場(chǎng)所的時(shí)間顯示。</p><p> 隨著現(xiàn)場(chǎng)可編程門(mén)陣列( field program-mable gate array ,F(xiàn)PGA) 的出現(xiàn),電子系統(tǒng)向集成化、大
18、規(guī)模和高速度等方向發(fā)展的趨勢(shì)更加明顯, 作為可編程的集成度較高的ASIC,可在芯片級(jí)實(shí)現(xiàn)任意數(shù)字邏輯電路,從而可以簡(jiǎn)化硬件電路,提高系統(tǒng)工作速度,縮短產(chǎn)品研發(fā)周期。故利用 FPGA這一新的技術(shù)手段來(lái)研究電子鐘有重要的現(xiàn)實(shí)意義。設(shè)計(jì)采用FPGA現(xiàn)場(chǎng)可編程技術(shù),運(yùn)用自頂向下的設(shè)計(jì)思想設(shè)計(jì)電子鐘。避免了硬件電路的焊接與調(diào)試,而且由于FPGA的 I /O端口豐富,內(nèi)部邏輯可隨意更改,使得數(shù)字電子鐘的實(shí)現(xiàn)較為方便。</p><
19、p> 本課題使用Cyclone EP1C6Q240的FPGA器件,完成實(shí)現(xiàn)一個(gè)可以計(jì)時(shí)的數(shù)字時(shí)鐘。該系統(tǒng)具有顯示時(shí)、分、秒,智能鬧鐘,按鍵實(shí)現(xiàn)校準(zhǔn)時(shí)鐘,整點(diǎn)報(bào)時(shí)等功能。滿(mǎn)足人們得到精確時(shí)間以及時(shí)間提醒的需求,方便人們生活。</p><p><b> 國(guó)內(nèi)外研究及趨勢(shì)</b></p><p> 隨著人們生活水平的提高和生活節(jié)奏的加快,對(duì)時(shí)間的要求越來(lái)越高,精
20、準(zhǔn)數(shù)字計(jì)時(shí)的消費(fèi)需求也是越來(lái)越多。</p><p> 二十一世紀(jì)的今天,最具代表性的計(jì)時(shí)產(chǎn)品就是電子時(shí)鐘,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對(duì)穩(wěn)定的機(jī)械振蕩頻率源使鐘表的走時(shí)差從分級(jí)縮小到秒級(jí),代表性的產(chǎn)品就是帶有擺或擺輪游絲的機(jī)械鐘或表。第二次革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時(shí)精度更高的石英電子鐘表,使鐘表的走時(shí)月差從分級(jí)縮小到秒級(jí)。第三次革命就是單片機(jī)數(shù)碼計(jì)時(shí)技術(shù)的應(yīng)用,使
21、計(jì)時(shí)產(chǎn)品的走時(shí)日差從分級(jí)縮小到1/600萬(wàn)秒,從原有傳統(tǒng)指針計(jì)時(shí)的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀(guān)明了,并增加了全自動(dòng)日期、星期的顯示功能,它更符合消費(fèi)者的生活需求!因此,電子時(shí)鐘的出現(xiàn)帶來(lái)了鐘表計(jì)時(shí)業(yè)界跨躍性的進(jìn)步。</p><p> 我國(guó)生產(chǎn)的電子時(shí)鐘有很多種,總體上來(lái)說(shuō)以研究多功能電子時(shí)鐘為主,使電子時(shí)鐘除了原有的顯示時(shí)間基本功能外,還具有鬧鈴,報(bào)警等功能。商家生產(chǎn)的電子時(shí)鐘更從質(zhì)量,價(jià)
22、格,實(shí)用上考慮,不斷的改進(jìn)電子時(shí)鐘的設(shè)計(jì),使其更加的具有市場(chǎng)。</p><p><b> 論文結(jié)構(gòu)</b></p><p> 第一章詳細(xì)論述了近些年來(lái),數(shù)字化時(shí)鐘系統(tǒng)研究領(lǐng)域的動(dòng)態(tài)及整個(gè)數(shù)字化時(shí)鐘系統(tǒng)的發(fā)展?fàn)顩r,同時(shí)分析了所面臨的問(wèn)題與解決方案,從而提出了本論文的研究任務(wù)。</p><p> 第二章從研究任務(wù)著手,選擇符合設(shè)計(jì)要求的常用芯
23、片及其它元器件,詳細(xì)論述了各接口電路的設(shè)計(jì)與連接,以模塊化的形式,整合數(shù)字化時(shí)鐘硬件的設(shè)計(jì)從小到大,從局部到整體,循序漸進(jìn),最終實(shí)現(xiàn)一個(gè)功能齊全的數(shù)字化時(shí)鐘系統(tǒng)。</p><p> 第三章根據(jù)系統(tǒng)設(shè)計(jì)要求,著手對(duì)數(shù)字化時(shí)鐘系統(tǒng)軟件進(jìn)行功能的實(shí)現(xiàn),將各功能模塊有機(jī)結(jié)合,實(shí)現(xiàn)時(shí)鐘走時(shí),實(shí)現(xiàn)鬧鈴、整點(diǎn)報(bào)時(shí)附加功能。</p><p> 第四章按照設(shè)計(jì)思路,在聯(lián)機(jī)調(diào)試過(guò)程中,對(duì)時(shí)鐘系統(tǒng)的不足和缺
24、點(diǎn)進(jìn)行分析,將調(diào)試過(guò)程作重點(diǎn)的記錄。</p><p> 第五章對(duì)全文的總結(jié),對(duì)本系統(tǒng)功能實(shí)現(xiàn)以及制作過(guò)程中需要注意的方面,及整個(gè)系統(tǒng)軟件編寫(xiě)中所吸取的經(jīng)驗(yàn)教訓(xùn)進(jìn)行論述,同時(shí),也對(duì)整個(gè)研究應(yīng)用進(jìn)行展望。</p><p><b> 編程軟件及語(yǔ)言介紹</b></p><p> Quarters II編程環(huán)境介紹</p><
25、p> 運(yùn)行環(huán)境設(shè)計(jì)采用quartus II軟件實(shí)現(xiàn),因此針對(duì)軟件需要用到的一些功能在這里進(jìn)行描述.</p><p> Quartus II軟件界面簡(jiǎn)單易操作,如下圖2.1:</p><p> 圖2.1Quartus II軟件界面圖</p><p><b> 菜單欄</b></p><p><b>
26、 【File】菜單</b></p><p> Quartus II的【 File】菜單除具有文件管理的功能外,還有許多其他選項(xiàng)</p><p> 圖2.2Quartus II菜單欄圖</p><p> (1)【New 】選項(xiàng):新建工程或文件,其下還有子菜單</p><p> 【New Quartus II Project
27、】選項(xiàng):新建工程。 </p><p> 【Design File】選項(xiàng):新建設(shè)計(jì)文件,常用的有:AHDL文本文件、VHDL文本文件、Verilog HDL文本文件、原理圖文件等。 </p><p> 【Vector Waveform Five】選項(xiàng):矢量波形文件。 </p><p> ?。?)【Open】選項(xiàng):打開(kāi)一個(gè)文件。 </p><p&
28、gt; ?。?)【New Project Wizard 】選項(xiàng):創(chuàng)建新工程。點(diǎn)擊后彈出對(duì)話(huà)框。單擊對(duì)話(huà)框最上第一欄右側(cè)的“…”按鈕,找到文件夾已存盤(pán)的文件,再單擊打開(kāi)按鈕,既出現(xiàn)如圖所示的設(shè)置情況。對(duì)話(huà)框中第一行表示工程所在的工作庫(kù)文件夾,第二行表示此項(xiàng)工程的工程名,第三行表示頂層文件的實(shí)體名,一般與工程名相同。</p><p> 圖2.3Quartus II新建工程圖</p><p&
29、gt; (4)【creat /update】選項(xiàng):生成元件符號(hào)。可以將設(shè)計(jì)的電路封裝成一個(gè)元件符號(hào),供以后在原理圖編輯器下進(jìn)行層次設(shè)計(jì)時(shí)調(diào)用。 </p><p> 【 View】菜單:進(jìn)行全屏顯示或?qū)Υ翱谶M(jìn)行切換,包括層次窗口、狀態(tài)窗口、消息窗口等。</p><p> 圖2.4Quartus II菜單欄全屏切換圖</p><p> 【Assignments
30、】菜單</p><p> (1)【Device】選項(xiàng):為當(dāng)前設(shè)計(jì)選擇器件。 </p><p> (2)【Pin】選項(xiàng):為當(dāng)前層次樹(shù)的一個(gè)或多個(gè)邏輯功能塊分配芯片引腳或芯片內(nèi)的位置。</p><p> ?。?)【Timing Ananlysis Setting】選項(xiàng):為當(dāng)前設(shè)計(jì)的 tpd、tco、tsu、fmax等時(shí)間參數(shù)設(shè)定時(shí)序要求。 </p>&
31、lt;p> ?。?)【EDA tool setting】選項(xiàng):EDA 設(shè)置工具。使用此工具可以對(duì)工程進(jìn)行綜合、仿真、時(shí)序分析,等等。EDA 設(shè)置工具屬于第三方工具。 </p><p> ?。?)【Setting】選項(xiàng):設(shè)置控制??梢允褂盟鼘?duì)工程、文件、參數(shù)等進(jìn)行修改,還可以設(shè)置編譯器、仿真器、時(shí)序分析、功耗分析等。 </p><p> ?。?)【assignment editor】選
32、項(xiàng):任務(wù)編輯器。 </p><p> ?。?)【pin planner 】選項(xiàng):可以使用它將所設(shè)計(jì)電路的 I/O 引腳合理的分配到已設(shè)定器件的引腳上。</p><p> 圖2.5Quartus II菜單欄設(shè)定引腳下拉圖</p><p> 【processing】菜單</p><p> 【processing】菜單的功能是對(duì)所設(shè)計(jì)的電路
33、進(jìn)行編譯和檢查設(shè)計(jì)的正確性。 </p><p> (1)【Stop process】選項(xiàng):停止編譯設(shè)計(jì)項(xiàng)目。 </p><p> (2)【Start Compilation】選項(xiàng):開(kāi)始完全編譯過(guò)程,這里包括分析與綜合、適</p><p> 配、裝配文件、定時(shí)分析、網(wǎng)表文件提取等過(guò)程。 </p><p> (3)【analyze cur
34、rent file】選項(xiàng):分析當(dāng)前的設(shè)計(jì)文件,主要是對(duì)當(dāng)前設(shè)計(jì)文</p><p> 件的語(yǔ)法、語(yǔ)序進(jìn)行檢查。 </p><p> ?。?)【compilation report】選項(xiàng):適配信息報(bào)告,通過(guò)它可以查看詳細(xì)的適配信</p><p> 息,包括設(shè)置和適配結(jié)果等。 </p><p> (5)【start simulation】選項(xiàng)
35、:開(kāi)始功能仿真。 </p><p> (6)【simulation report】選項(xiàng):生成功能仿真報(bào)告。 </p><p> ?。?)【compiler tool】選項(xiàng):它是一個(gè)編譯工具,可以有選擇對(duì)項(xiàng)目中的各個(gè)文</p><p><b> 件進(jìn)行分別編譯。 </b></p><p> ?。?)【simulatio
36、n tool】選項(xiàng):對(duì)編譯過(guò)電路進(jìn)行功能仿真和時(shí)序仿真。 </p><p> ?。?)【classic timing analyzer tool】選項(xiàng):classic時(shí)序仿真工具。 </p><p> ?。?0)【powerplay power analyzer tool】選項(xiàng):PowerPlay 功耗分析工具。 </p><p> 圖2.6Quartus II菜
37、單欄運(yùn)行下拉圖</p><p><b> 【tools】菜單</b></p><p> 【tools 】菜單的功能是 </p><p> ?。?)【run EDA simulation tool 】選項(xiàng):運(yùn)行EDA仿真工具,EDA是第三方仿真工具。 </p><p> (2)【run EDA timing anal
38、yzer tool 】選項(xiàng):運(yùn)行EDA時(shí)序分析工具,EDA是第三方仿真工具。 </p><p> (3)【Programmer 】選項(xiàng):打開(kāi)編程器窗口,以便對(duì) Altera 的器件進(jìn)行下載編程。</p><p> 圖2.7Quartus II仿真菜單下拉圖</p><p><b> 工具欄 </b></p><p>
39、; 工具欄緊鄰菜單欄下方,它其實(shí)是各菜單功能的快捷按鈕組合區(qū)。</p><p> 2.8Quartus II菜單欄圖</p><p> 圖2.9Quartus II菜單欄按鍵功能圖</p><p><b> 功能仿真流程</b></p><p><b> 新建仿真文件</b></p&
40、gt;<p> 圖2.10Quartus II菜單欄新建文件夾圖</p><p><b> 功能方正操作</b></p><p> 在菜單上點(diǎn)processing在下拉菜單中,如下圖:</p><p> 圖2.11Quartus II菜單欄processing下拉圖</p><p> Verilo
41、g HDL語(yǔ)言介</p><p> 什么是verilog HDL語(yǔ)言</p><p> Verilog HDL是一種硬件描述語(yǔ)言,用于從算法級(jí)、門(mén)級(jí)到開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模。被建模的數(shù)字系統(tǒng)對(duì)象的復(fù)雜性可以介于簡(jiǎn)單的門(mén)和完整的電子數(shù)字系統(tǒng)之間。數(shù)字系統(tǒng)能夠按層次描述,并可在相同描述中顯式地進(jìn)行時(shí)序建模。</p><p> Verilog HDL
42、 語(yǔ)言具有下述描述能力:設(shè)計(jì)的行為特性、設(shè)計(jì)的數(shù)據(jù)流特性、設(shè)計(jì)的結(jié)構(gòu)</p><p> 組成以及包含響應(yīng)監(jiān)控和設(shè)計(jì)驗(yàn)證方面的時(shí)延和波形產(chǎn)生機(jī)制。所有這些都使用同一種建模語(yǔ)言。此外,Verilog HDL語(yǔ)言提供了編程語(yǔ)言接口,通過(guò)該接口可以在模擬、驗(yàn)證期間從設(shè)計(jì)外部訪(fǎng)問(wèn)設(shè)計(jì),包括模擬的具體控制和運(yùn)行。</p><p> Verilog HDL語(yǔ)言不僅定義了語(yǔ)法,而且對(duì)每個(gè)語(yǔ)法結(jié)構(gòu)都定義
43、了清晰的模擬、仿真語(yǔ)義。因此,用這種語(yǔ)言編寫(xiě)的模型能夠使用Ve rilog仿真器進(jìn)行驗(yàn)證。語(yǔ)言從C編程語(yǔ)言中繼承了多種操作符和結(jié)構(gòu)。</p><p> Verilog HDL提供了擴(kuò)展的建模能力,其中許多擴(kuò)展最初很難理解。但是,Verilog HDL語(yǔ)言的核心子集非常易于學(xué)習(xí)和使用,這對(duì)大多數(shù)建模應(yīng)用來(lái)說(shuō)已經(jīng)足夠。當(dāng)然,完整的硬件描述語(yǔ)言足以對(duì)從最復(fù)雜的芯片到完整的電子系統(tǒng)進(jìn)行描述。</p>&l
44、t;p><b> 主要功能</b></p><p> 下面列出的是Verilog硬件描述語(yǔ)言的主要能力:</p><p> 基本邏輯門(mén),例如and、or和nan d等都內(nèi)置在語(yǔ)言中。</p><p> 用戶(hù)定義原語(yǔ)(UP)創(chuàng)建的靈活性。用戶(hù)定義的原語(yǔ)既可以是組合邏輯原語(yǔ),也可以是時(shí)序邏輯原語(yǔ)。</p><p&g
45、t; 開(kāi)關(guān)級(jí)基本結(jié)構(gòu)模型,例如pmos和nmos等也被內(nèi)置在語(yǔ)言中。</p><p> 提供顯式語(yǔ)言結(jié)構(gòu)指定設(shè)計(jì)中的端口到端口的時(shí)延及路徑時(shí)延和設(shè)計(jì)的時(shí)序檢查。</p><p> 可采用三種不同方式或混合方式對(duì)設(shè)計(jì)建模。這些方式包括:行為描述方式—使用過(guò)程化結(jié)構(gòu)建模;數(shù)據(jù)流方式—使用連續(xù)賦值語(yǔ)句方式建模;結(jié)構(gòu)化方式—使用門(mén)和模塊實(shí)例語(yǔ)句描述建模。</p><p&g
46、t; Verilog HDL中有兩類(lèi)數(shù)據(jù)類(lèi)型:線(xiàn)網(wǎng)數(shù)據(jù)類(lèi)型和寄存器數(shù)據(jù)類(lèi)型。線(xiàn)網(wǎng)類(lèi)型表示構(gòu)件間的物理連線(xiàn),而寄存器類(lèi)型表示抽象的數(shù)據(jù)存儲(chǔ)元件。</p><p> 能夠描述層次設(shè)計(jì),可使用模塊實(shí)例結(jié)構(gòu)描述任何層次。</p><p> 設(shè)計(jì)的規(guī)??梢允侨我獾模徽Z(yǔ)言不對(duì)設(shè)計(jì)的規(guī)模(大?。┦┘尤魏蜗拗?。</p><p> Verilog HDL不再是某些公司的專(zhuān)有語(yǔ)
47、言而是IEEE標(biāo)準(zhǔn)。</p><p> 人和機(jī)器都可閱讀Verilog語(yǔ)言,因此它可作為EDA的工具和設(shè)計(jì)者之間的交互語(yǔ)言。</p><p> Verilog HDL語(yǔ)言的描述能力能夠通過(guò)使用編程語(yǔ)言接口(PLI)機(jī)制進(jìn)一步擴(kuò)展。PLI是允許外部函數(shù)訪(fǎng)問(wèn)Verilog模塊內(nèi)信息、允許設(shè)計(jì)者與模擬器交互的例程集合。</p><p> 設(shè)計(jì)能夠在多個(gè)層次上加以描述
48、,從開(kāi)關(guān)級(jí)、門(mén)級(jí)、寄存器傳送級(jí)(RTL)到算法級(jí),包括進(jìn)程和隊(duì)列級(jí)。</p><p> 能夠使用內(nèi)置開(kāi)關(guān)級(jí)原語(yǔ)在開(kāi)關(guān)級(jí)對(duì)設(shè)計(jì)完整建模。</p><p> 同一語(yǔ)言可用于生成模擬激勵(lì)和指定測(cè)試的驗(yàn)證約束條件,例如輸入值的指定。</p><p> Verilog HDL能夠監(jiān)控模擬驗(yàn)證的執(zhí)行,即模擬驗(yàn)證執(zhí)行過(guò)程中設(shè)計(jì)的值能夠被監(jiān)控和顯示。這些值也能夠用于與期望值比
49、較,在不匹配的情況下,打印報(bào)告消息。</p><p> 在行為級(jí)描述中,Verilog HDL不僅能夠在RTL級(jí)上進(jìn)行設(shè)計(jì)描述,而且能夠在體系結(jié)構(gòu)級(jí)描述及其算法級(jí)行為上進(jìn)行設(shè)計(jì)描述。</p><p> 能夠使用門(mén)和模塊實(shí)例化語(yǔ)句在結(jié)構(gòu)級(jí)進(jìn)行結(jié)構(gòu)描述。</p><p> 如圖顯示了Verilog HDL的混合方式建模能力,即在一個(gè)設(shè)計(jì)中每個(gè)模塊均可以在不同設(shè)計(jì)層
50、次上建模。</p><p> Verilog HDL還具有內(nèi)置邏輯函數(shù),例如&(按位與)和|(按位或)。</p><p> 對(duì)高級(jí)編程語(yǔ)言結(jié)構(gòu),例如條件語(yǔ)句、情況語(yǔ)句和循環(huán)語(yǔ)句,語(yǔ)言中都可以使用。</p><p> 可以顯式地對(duì)并發(fā)和定時(shí)進(jìn)行建模。</p><p> 提供強(qiáng)有力的文件讀寫(xiě)能力。</p><p
51、> 語(yǔ)言在特定情況下是非確定性的,即在不同的模擬器上模型可以產(chǎn)生不同的結(jié)果;例如,事件隊(duì)列上的事件順序在標(biāo)準(zhǔn)中沒(méi)有定義。</p><p> 圖2.12混合設(shè)計(jì)層次圖</p><p> 數(shù)字化時(shí)鐘系統(tǒng)硬件設(shè)計(jì)</p><p><b> 系統(tǒng)核心板電路分析</b></p><p> 本系統(tǒng)采用的開(kāi)發(fā)平臺(tái)標(biāo)配的
52、核心板是QuickSOPC,可以實(shí)現(xiàn)EDA、SOP和DSP的實(shí)驗(yàn)及研發(fā)。本系統(tǒng)采用QuickSOPC標(biāo)準(zhǔn)配置為Altera公司的EP1C6Q240C8芯片。</p><p><b> 核心板的硬件資源</b></p><p> 核心板采用4層板精心設(shè)計(jì),采用120針接口。QuickSOPC核心板的硬件原理框圖如圖2-1所示:</p><p>
53、; 圖3.1 QuickSOPC硬件方塊圖</p><p><b> FPGA電路</b></p><p> 核心板QuickSOPC上所用的FPGA為Altera公司Cyclone系列的EP1C6Q240。EP1C6Q240包含有5980個(gè)邏輯單元和92Kbit的片上RAM。EP1C6Q240有185個(gè)用戶(hù)I/O口,封裝為240-Pin PQFP。核心板EP1
54、C6Q240器件特性如表2-1。</p><p> 表3-1 核心EP1C6Q240器件特性:Hb7838電子-技術(shù)資料-電子元件-電路圖-技術(shù)應(yīng)用網(wǎng)站-基本知識(shí)-原理-維修-作用-參數(shù)-電子元器件符號(hào)-各種圖紙</p><p><b> 配置電路</b></p><p> Cyclone FPGA的配置方式包括:主動(dòng)配置模式、被動(dòng)配置模
55、式以及JTAG配置模式。本系統(tǒng)采用的是JTAG配置模式下載配置數(shù)據(jù)到FPGA。</p><p> 通過(guò)JTAG結(jié)果,利用Quartus II軟件可以直接對(duì)FPGA進(jìn)行單獨(dú)的硬件重新配置。Quartus II軟件在編譯時(shí)會(huì)自動(dòng)生成用于JTAG配置的.sof文件。Cyclone FPGA設(shè)計(jì)成的JTAG指令比其他任何器件操作模式的優(yōu)先級(jí)都高,因此JTAG配置可隨時(shí)進(jìn)行而不用等待其他配置模式完成。JTAG模式使用4個(gè)
56、專(zhuān)門(mén)的信號(hào)引腳:TDI、TDO、TMS以及TCK。JTAG的3個(gè)輸入腳TDI、TMS和TCK具有內(nèi)部弱上拉,上拉電阻大約為25kΩ。在JGTA進(jìn)行配置的時(shí)候,所有用戶(hù)I/O扣都為高阻態(tài)。</p><p><b> 時(shí)鐘電路</b></p><p> FPGA內(nèi)部沒(méi)振蕩電路,使用有源晶振是比較理想的選擇。EP1C6Q240C8的輸入的時(shí)鐘頻率范圍為15.625~38
57、7MHz,經(jīng)過(guò)內(nèi)部的PLL電路后可輸出15.625~275MHz的系統(tǒng)時(shí)鐘。當(dāng)輸入時(shí)鐘頻率較低時(shí),可以使用FPGA的內(nèi)部PLL調(diào)整FPGA所需的系統(tǒng)時(shí)鐘,使系統(tǒng)運(yùn)行速度更快。</p><p> 核心板包含一個(gè)48MHz的有源晶振作為系統(tǒng)的時(shí)鐘源。如圖2-2所示。為了得到一個(gè)穩(wěn)定、精確的時(shí)鐘頻率,有源晶振的供電電源經(jīng)過(guò)了LC濾波。</p><p> 本系統(tǒng)硬件整體設(shè)計(jì)框圖如圖2-3所示:
58、</p><p> 圖3.2數(shù)字時(shí)鐘系統(tǒng)硬件電路總體框圖</p><p><b> 系統(tǒng)主板電路分析</b></p><p><b> 時(shí)鐘模塊電路</b></p><p> FPGA內(nèi)部沒(méi)振蕩電路,使用有源晶振是比較理想的選擇。EP1C6Q240C8的輸入的時(shí)鐘頻率范圍為15.625~38
59、7MHz,經(jīng)過(guò)內(nèi)部的PLL電路后可輸出15.625~275MHz的系統(tǒng)時(shí)鐘。當(dāng)輸入時(shí)鐘頻率較低時(shí),可以使用FPGA的內(nèi)部PLL調(diào)整FPGA所需的系統(tǒng)時(shí)鐘,使系統(tǒng)運(yùn)行速度更快。</p><p> 核心板包含一個(gè)50MHz的有源晶振作為系統(tǒng)的時(shí)鐘源。為了得到一個(gè)穩(wěn)定、精確的時(shí)鐘頻率,有源晶振的供電電源經(jīng)過(guò)了LC濾波。</p><p> 圖3.3 系統(tǒng)時(shí)鐘電路圖</p><
60、;p><b> 顯示電路</b></p><p> 由于本設(shè)計(jì)需要顯示時(shí)間信息包括:時(shí)、分、秒,顯所以采用主板上七段數(shù)碼管顯示電路與系統(tǒng)連接實(shí)現(xiàn)顯示模塊的功能。</p><p> 主板上七段數(shù)碼管顯示電路如圖2-4 所示,RP4和 RP6 是段碼上的限流電阻,位碼由于電流較大,采用了三極管驅(qū)動(dòng)。</p><p> 圖3.4七段數(shù)碼
61、管顯示電路圖</p><p> 數(shù)碼管 LED顯示是工程項(xiàng)目中使用較廣的一種輸出顯示器件。常見(jiàn)的數(shù)管有共陰和 共陽(yáng) 2 種。共陰數(shù)碼管是將 8 個(gè)發(fā)光二極管的陰極連接在一起作為公共端,而共陽(yáng)數(shù)碼管是將 8 個(gè)發(fā)光二極管的陽(yáng)極連接在一起作為公共端。公共端常被稱(chēng)作位碼,而將其他的 8 位稱(chēng)作段碼。如圖 2-5所示為共陽(yáng)數(shù)碼管及其電路,數(shù)碼管有 8 個(gè)段分別為:h、g、f、e、d、c、b 和a(h 為小數(shù)點(diǎn)) ,只要
62、公共端為高電平“1” ,某個(gè)段輸出低電平“0”則相應(yīng)的段就亮。</p><p> 圖3.5七段數(shù)碼管顯示電路圖</p><p> 從電路可以看出,數(shù)碼管是共陽(yáng)的,當(dāng)位碼驅(qū)動(dòng)信號(hào)為 0時(shí),對(duì)應(yīng)的數(shù)碼管才能操作;當(dāng)段碼驅(qū)動(dòng)信號(hào)為 0 時(shí),對(duì)應(yīng)的段碼點(diǎn)亮。</p><p><b> 鍵盤(pán)控制電路</b></p><p>
63、 鍵盤(pán)控制電路要實(shí)現(xiàn)時(shí)鐘系統(tǒng)調(diào)時(shí)的功能和鬧鈴開(kāi)關(guān)的功能。本設(shè)計(jì)采用主板上的獨(dú)立鍵盤(pán)來(lái)實(shí)現(xiàn)這兩個(gè)功能。當(dāng)鍵盤(pán)被按下是為“0”,未被按下是為“1”。電路連接圖如圖2-6所示。電路中為了防止FPGA的I/O設(shè)為輸出且為高電平在按鍵下直接對(duì)地短路,電阻RP9、RP10對(duì)此都能起到保護(hù)作用。</p><p> 圖3.6 鍵盤(pán)電路圖</p><p><b> 蜂鳴電路設(shè)計(jì)</b&
64、gt;</p><p> 如圖2-7所示,蜂鳴器使用 PNP三極管進(jìn)行驅(qū)動(dòng)控制,蜂鳴器使用的是交流蜂鳴器。當(dāng)在 BEEP輸入一定頻率的脈沖時(shí),蜂鳴器蜂鳴,改變輸入頻率可以改變蜂鳴器的響聲。因此可以利用一個(gè) PWM 來(lái)控制 BEEP,通過(guò)改變 PWM 的頻率來(lái)得到不同的聲響,也可以用來(lái)播放音樂(lè)。若把 JP7斷開(kāi),Q4 截止,蜂鳴器停止蜂鳴。</p><p><b> 圖3.7蜂
65、鳴電路圖</b></p><p> 數(shù)字化時(shí)鐘系統(tǒng)軟件設(shè)計(jì)</p><p><b> 整體方案介紹</b></p><p><b> 整體設(shè)計(jì)描述</b></p><p> 設(shè)計(jì)中的數(shù)字時(shí)鐘,帶有按鍵校準(zhǔn),定點(diǎn)報(bào)時(shí),數(shù)碼管顯示等功能。因此數(shù)字時(shí)鐘所包含的模塊可分為,分頻模塊,按鍵
66、模塊,計(jì)時(shí)校準(zhǔn)模塊,鬧鐘模塊,LED顯示模塊,模塊之間的關(guān)系下圖:</p><p> 圖4.1整體模塊框圖</p><p> 針對(duì)框圖流程,設(shè)定出各個(gè)模塊的需求:</p><p><b> 分頻電路:</b></p><p> 針對(duì)計(jì)時(shí)器模塊與鬧鐘設(shè)定模塊的需求,可以知道分頻模塊需要生成一個(gè)1Hz的頻率信號(hào),確保
67、計(jì)時(shí)模塊可以正常計(jì)數(shù)。</p><p><b> 計(jì)時(shí)器模塊:</b></p><p> 計(jì)數(shù)模塊的作用是收到分頻模塊1Hz頻率的信號(hào)線(xiàn),能進(jìn)行正確計(jì)時(shí),并且可以通過(guò)按鍵進(jìn)行時(shí)間的修改,且當(dāng)整點(diǎn)時(shí),給蜂鳴器產(chǎn)生使能信號(hào),進(jìn)行整點(diǎn)報(bào)時(shí),播放音樂(lè)。</p><p><b> 鬧鐘設(shè)定模塊:</b></p>
68、<p> 可根據(jù)按鍵的設(shè)定鬧鐘的時(shí)間,當(dāng)計(jì)時(shí)模塊的時(shí)間與鬧鐘設(shè)定模塊的時(shí)間相等的時(shí)候,給蜂鳴器一個(gè)使能信號(hào),蜂鳴器鬧鈴。。</p><p><b> 蜂鳴器模塊:</b></p><p> 根據(jù)計(jì)時(shí)模塊,鬧鐘模塊給出的使能信號(hào),判定蜂鳴器是整點(diǎn)報(bào)時(shí),還是鬧鐘響鈴。整點(diǎn)報(bào)時(shí)會(huì)播放音樂(lè),鬧鐘時(shí)嘀嘀嘀報(bào)警。</p><p><b
69、> LED顯示模塊:</b></p><p> 根據(jù)實(shí)際的需求顯示計(jì)時(shí)模塊的時(shí)間,還是鬧鐘設(shè)定模塊的時(shí)間,8個(gè)七段碼LED數(shù)碼管,進(jìn)行掃描方式顯示數(shù)據(jù)。</p><p><b> 整體信號(hào)定義</b></p><p> 對(duì)整個(gè)模塊進(jìn)行信號(hào)定義。</p><p><b> 接口及寄存器
70、定義</b></p><p> module clock(clk,key,dig,seg,beep);// 模塊名 clock </p><p> input clk; // 輸入時(shí)鐘 </p><p> input [4:0] key; //輸入按鍵 ,key[3:0]分別為秒,分鐘,小時(shí)的增加按鍵。Key[4]為鬧鐘設(shè)置按鍵,key[
71、5]為校準(zhǔn)設(shè)置按鍵。</p><p> output [7:0] dig; // 數(shù)碼管選擇輸出引腳 a</p><p> output [7:0] seg; // 數(shù)碼管段輸出引腳</p><p> output beep;//蜂鳴器輸出端</p><p> reg [7:0] seg_r = 8'h0;
72、//定義數(shù)碼管輸出寄存器 </p><p> reg [7:0] dig_r; //定義數(shù)碼管選擇輸出寄存器 </p><p> reg [3:0] disp_dat;// 定義顯示數(shù)據(jù)寄存器 </p><p> reg [8:0] count1; //定義計(jì)數(shù)寄存器</p><p> reg [14:0] count
73、; //定義計(jì)數(shù)中間寄存器 </p><p> reg [23:0] hour = 24'h235956; // 定義現(xiàn)在時(shí)刻寄存器 </p><p> reg [23:0] clktime = 24'h000000;//定義設(shè)定鬧鐘</p><p> reg [1:0] keyen = 2'b11; // 定義
74、標(biāo)志位 </p><p> reg [4:0] dout1 = 5'b11111;</p><p> reg [4:0] dout2 = 5'b11111;</p><p> reg [4:0] dout3 = 5'b11111;// 寄存器 </p><p> wire [4:0] key_done;
75、 // 按鍵消抖輸出 </p><p> reg [15:0] beep_count = 16'h0;//蜂鳴器寄存器</p><p> reg [15:0] beep_count_end = 16'hffff; //蜂鳴器截止寄存器</p><p> reg clktime_en = 1'b1;//鬧鐘使能寄存器&l
76、t;/p><p> reg sec ;//1秒時(shí)鐘</p><p> reg clk1;//1ms時(shí)鐘</p><p> reg beep_r;//寄存器 </p><p> wire beepen;//鬧鐘使能信號(hào)</p><p><b> 模塊框圖<
77、;/b></p><p> 通過(guò)quartus II的creat symble for current file功能生成框圖如下:</p><p> 圖4.2生成的符號(hào)圖</p><p> 分頻模塊實(shí)現(xiàn),計(jì)數(shù)電路所需時(shí)鐘信號(hào)為1HZ,而系統(tǒng)時(shí)鐘為48MHZ,所以要對(duì)系統(tǒng)時(shí)鐘進(jìn)行分頻以來(lái)滿(mǎn)足電路的需要。</p><p><b&
78、gt; 分頻模塊實(shí)現(xiàn)</b></p><p><b> 分頻模塊描述</b></p><p> 對(duì)于分頻模塊,關(guān)鍵是生成個(gè)1Hz的時(shí)鐘信號(hào)??紤]到仿真的需要,模塊中間生成1個(gè)1kHz的時(shí)鐘信號(hào)。1Hz的信號(hào)的產(chǎn)生用來(lái)產(chǎn)生時(shí)鐘的秒脈沖,框圖如下圖4.2:</p><p><b> 圖4.3分頻模塊圖</b>
79、;</p><p><b> 分頻模塊設(shè)計(jì)</b></p><p> 本系統(tǒng)程序設(shè)計(jì)時(shí)鐘的準(zhǔn)確與否主要取決于秒脈沖的精確度。為了保證計(jì)時(shí)準(zhǔn)確,我們對(duì)系統(tǒng)時(shí)鐘48MHz進(jìn)行了48000分頻生成1kHz信號(hào)clk1,在通過(guò)1kHz信號(hào),生成1Hz信號(hào)clk。</p><p> //1ms信號(hào)產(chǎn)生部分 </p><p>
80、 always @(posedge clk) // 定義 clock 上升沿觸發(fā) </p><p><b> begin </b></p><p> count = count + 1'b1; </p><p> if(count == 15'd24000) //0.5mS到了嗎? </
81、p><p><b> begin </b></p><p> count = 15'd0; //計(jì)數(shù)器清零 </p><p> clk1 = ~clk1; //置位秒標(biāo)志 </p><p><b> end </b></p><p>&l
82、t;b> end</b></p><p> //秒信號(hào)產(chǎn)生部分 </p><p> always @(posedge clk1) // 定義 clock 上升沿觸發(fā) </p><p><b> begin </b></p><p> count1 = count1 + 1'
83、b1; </p><p> if(count1 == 9'd500) //0.5S到了嗎? </p><p><b> begin </b></p><p> count1 = 9'd0; //計(jì)數(shù)器清零 </p><p> sec = ~sec; //置位秒標(biāo)志
84、 </p><p><b> end</b></p><p><b> End</b></p><p><b> 分頻模塊仿真</b></p><p> 通過(guò)設(shè)置功能仿真,檢查代碼的正確性</p><p><b> 仿真結(jié)果<
85、/b></p><p> 圖4.4 分頻模塊波形仿真圖</p><p> 右上圖可以知道,計(jì)數(shù)寄存器count累加到23999時(shí),重新變?yōu)?,共計(jì)數(shù)了24000個(gè)值。觸發(fā)clk1跳變,使得count1加一,count1累加到499的時(shí)候,下一個(gè)數(shù)據(jù)為0,共技術(shù)500個(gè)值。所以,sec信號(hào)的頻率為1Hz,滿(mǎn)足設(shè)計(jì)要求。</p><p><b>
86、計(jì)時(shí)模塊實(shí)現(xiàn)</b></p><p><b> 計(jì)時(shí)模塊描述與實(shí)現(xiàn)</b></p><p> 計(jì)時(shí)模塊是采用16進(jìn)制來(lái)實(shí)現(xiàn)的,將hour[23,0]定義為其時(shí)分秒,其中hour[3,0]為其秒鐘上的個(gè)位數(shù)值,hour[4,7]為其秒鐘上的十位數(shù)值,以此類(lèi)推分鐘、時(shí)鐘的個(gè)位和十位。當(dāng)clk脈沖過(guò)來(lái)時(shí),秒個(gè)位hour[3,0]便開(kāi)始加1,當(dāng)加到9時(shí),秒十位
87、加1,與此同時(shí)秒個(gè)位清零,繼續(xù)加1。當(dāng)秒十位hour[7,4]為5秒個(gè)位為9時(shí)(即59秒),分個(gè)位hour[11,8]加1,與此同時(shí)秒個(gè)位和秒十位都清零。以此類(lèi)推,當(dāng)分十位hour[15,12]為5和分個(gè)位為9時(shí)(即59分),時(shí)個(gè)位加1,與此同時(shí)分個(gè)位hour[19,16]和分十位都清零。當(dāng)時(shí)分十位[23,20]為2和分個(gè)位為4,全部清零,開(kāi)始重新計(jì)時(shí)。從功能上講分別為模60計(jì)數(shù)器,模60計(jì)數(shù)器和模24計(jì)數(shù)器。</p>&
88、lt;p> //時(shí)間計(jì)算及校準(zhǔn)部分</p><p> always @(negedge sec)//計(jì)時(shí)處理 </p><p><b> begin </b></p><p> hour[3:0] = hour[3:0] + 1'b1; //秒加 1 </p><p> if(ho
89、ur[3:0] >= 4'ha) //加到10,復(fù)位</p><p><b> begin </b></p><p> hour[3:0] = 4'h0; </p><p> hour[7:4] = hour[7:4] + 1'b1; // 秒的十位加一 </p>
90、<p> if(hour[7:4] >= 4'h6) //加到6,復(fù)位</p><p><b> begin </b></p><p> hour[7:4] = 4'h0; </p><p> hour[11:8] = hour[11:8] + 1'b1;//分個(gè)位加一
91、 </p><p> if(hour[11:8] >= 4'ha) //加到10,復(fù)位</p><p><b> begin </b></p><p> hour[11:8] = 4'h0; </p><p> hour[15:12] = hour[15:12] + 1'
92、;b1;//分十位加一 </p><p> if(hour[15:12] >= 4'h6) //加到6,復(fù)位</p><p><b> begin </b></p><p> hour[15:12] = 4'h0; </p><p> hour[19:16] = hour
93、[19:16] + 1'b1;//時(shí)個(gè)位加一 </p><p> if(hour[19:16] >= 4'ha) //加到10,復(fù)位</p><p><b> begin </b></p><p> hour[19:16] = 4'h0; </p><p> hour
94、[23:20] = hour[23:20] + 1'b1;//時(shí)十位加一 </p><p><b> end </b></p><p> if(hour[23:16] >= 8'h24) //加到24,復(fù)位</p><p> hour[23:16] = 8'h0; </p><
95、p><b> end </b></p><p><b> end </b></p><p><b> end </b></p><p><b> end </b></p><p><b> end </b></p
96、><p><b> end </b></p><p><b> 計(jì)時(shí)模塊仿真</b></p><p> 對(duì)計(jì)時(shí)模塊進(jìn)行仿真,記錄仿真波形</p><p> 圖4.5 計(jì)時(shí)模塊仿真圖</p><p> 由上圖可見(jiàn),當(dāng)sec信號(hào)下降沿跳變時(shí),hour寄出去會(huì)加1,也就相當(dāng)于
97、跳了一秒鐘時(shí)間。當(dāng)hour的時(shí)間為235959是,下一個(gè)計(jì)數(shù)器的值為000000,hour寄存器歸零,相當(dāng)于半夜0點(diǎn)的時(shí)刻。仿真的結(jié)果達(dá)到預(yù)期,通過(guò)。</p><p><b> 按鍵處理模塊實(shí)現(xiàn)</b></p><p><b> 按鍵處理模塊描述</b></p><p><b> 框圖如下圖4.4:<
98、/b></p><p> 圖4.6按鍵控制功能圖</p><p> 模塊講計(jì)時(shí)部分和時(shí)間調(diào)整部分整合到一起,正常態(tài)的時(shí)候,時(shí)間正常運(yùn)行,當(dāng)key[5]被按下時(shí),進(jìn)入時(shí)間校準(zhǔn),可以通過(guò)key[2:0]三個(gè)鍵,分別對(duì)秒,分,時(shí)進(jìn)行加1操作,從而進(jìn)行時(shí)間校準(zhǔn)。當(dāng)key[3]被按下時(shí),進(jìn)入鬧鐘設(shè)定,可以通過(guò)key[2:0]三個(gè)鍵,分別對(duì)秒,分,時(shí)進(jìn)行加1操作,從而進(jìn)行鬧鐘的設(shè)定。<
99、/p><p> 圖4.7 按鍵模塊仿真圖</p><p> 通過(guò)按鍵key進(jìn)行仿真控制,可以發(fā)現(xiàn)clktime會(huì)隨著按鍵的按下,分別有時(shí)鐘,分鐘秒鐘加1,仿真結(jié)果滿(mǎn)足設(shè)計(jì)要求。</p><p> 按鍵去抖處理模塊設(shè)計(jì)</p><p> 按鍵模塊實(shí)現(xiàn)去抖處理,及乒乓按鍵設(shè)計(jì),確保后面的計(jì)時(shí)模塊與鬧鐘模塊的功能實(shí)現(xiàn)。</p>&
100、lt;p> assign key_done = key|dout3; // 按鍵消抖輸出 </p><p> always @(posedge count1[5]) //按鍵去噪聲</p><p><b> begin </b></p><p> dout1 <= key; </p><p>
101、; dout2 <= dout1;</p><p> dout3 <= dout2;//連續(xù)賦值</p><p><b> end</b></p><p> always @(negedge key_done[4]) </p><p><b> begin </b>
102、</p><p> keyen[1] = ~keyen[1]; //校準(zhǔn)按鍵轉(zhuǎn)換乒乓按鍵</p><p><b> end</b></p><p> always @(negedge key_done[3]) </p><p><b> begin </b></p>
103、<p> keyen[0] = ~keyen[0]; //定時(shí)按鍵轉(zhuǎn)換乒乓按鍵</p><p><b> End</b></p><p><b> 按鍵模塊去抖仿真</b></p><p> 對(duì)于按鍵去抖動(dòng)仿真,同樣才用功能仿真方式,這里不再重復(fù)設(shè)置與操作,如同上面的分頻模塊進(jìn)行設(shè)置并進(jìn)行仿真
104、。</p><p> Key寄存器為輸入按鍵,初始化電路為高電平,當(dāng)有按鍵按下去的時(shí)候,變?yōu)榈碗娖健R虼烁淖僰ey的值,觀(guān)察仿真結(jié)果是否正確。</p><p> 功能仿真,記錄仿真結(jié)果,如下圖:</p><p> 圖4.8 按鍵模塊仿真圖</p><p> 通過(guò)上圖可以知道,key_done會(huì)隨著key的變化而發(fā)生相應(yīng)的變化,并有消除
105、噪聲的作用,功能仿真正確,達(dá)到設(shè)計(jì)目的。</p><p><b> 鬧鐘模塊實(shí)現(xiàn)</b></p><p><b> 鬧鐘模塊設(shè)計(jì)</b></p><p> 本設(shè)計(jì)中,判斷鬧鈴時(shí)間到,是通過(guò)判定時(shí)鐘系統(tǒng)實(shí)時(shí)時(shí)間的時(shí)鐘與分鐘是否分別等于設(shè)定的鬧鈴時(shí)間的時(shí)鐘、分鐘、秒鐘。當(dāng)時(shí)間(hour[23:0])等于設(shè)定的鬧鐘時(shí)間(c
106、lktime[23:0])時(shí),鬧鐘觸發(fā)時(shí),播放嘀嘀嘀報(bào)警聲,鬧鐘會(huì)響10秒的時(shí)間(clktime[23:0]+10 >=hour[23:0])。正常情況下,鬧鈴時(shí)間到會(huì)進(jìn)行為時(shí)1分鐘的蜂鳴報(bào)時(shí),可以通過(guò)按下鬧鐘按鍵key[3]使其停止。當(dāng)鬧鈴設(shè)置為整點(diǎn)是,會(huì)先進(jìn)行整點(diǎn)報(bào)時(shí),然后進(jìn)入鬧鈴。</p><p> 圖4.9 鬧鐘控制鍵功能圖</p><p><b> 鬧鐘設(shè)定模
107、塊仿真</b></p><p> 圖4.10 鬧鐘模塊仿真圖</p><p> 通過(guò)按鍵key進(jìn)行仿真控制,可以發(fā)現(xiàn)clktime會(huì)隨著按鍵的按下,分別有時(shí)鐘,分鐘秒鐘加1,仿真結(jié)果滿(mǎn)足設(shè)計(jì)要求。</p><p><b> 蜂鳴器模塊實(shí)現(xiàn)</b></p><p><b> 蜂鳴器模塊描述&l
108、t;/b></p><p> 蜂鳴器模塊負(fù)責(zé)整點(diǎn)報(bào)時(shí),和鬧鈴的時(shí)候進(jìn)行出聲的作用。整點(diǎn)報(bào)時(shí)的時(shí)候,播放音樂(lè),10秒音樂(lè)播報(bào)完后停止整點(diǎn)報(bào)時(shí)。鬧鐘觸發(fā)時(shí),播放嘀嘀嘀報(bào)警聲。當(dāng)鬧鈴設(shè)置為整點(diǎn)是,會(huì)先進(jìn)行整點(diǎn)報(bào)時(shí),然后進(jìn)入鬧鈴。當(dāng)鬧鐘設(shè)定鍵被按下,響起的蜂鳴聲會(huì)被屏蔽。模塊框圖如下圖4.9:</p><p><b> 蜂鳴器模塊實(shí)現(xiàn)</b></p>
109、<p> //蜂鳴器的計(jì)數(shù)定時(shí)器</p><p> always@(posedge clk) </p><p><b> begin </b></p><p> beep_count = beep_count + 1'b1; //計(jì)數(shù)器加 1 </p><p> if((
110、beep_count == beep_count_end)&&(!(beep_count_end == 16'hffff))) </p><p><b> begin </b></p><p> beep_count = 16'h0; //計(jì)數(shù)器清零 </p><p> bee
111、p_r = ~beep_r; //取反輸出信號(hào) </p><p><b> end </b></p><p><b> end </b></p><p> always @(posedge clk) </p><p><b> begin</b&g
112、t;</p><p> if (!beepen)</p><p> case(hour[3:0]) //整點(diǎn)報(bào)時(shí)音樂(lè)內(nèi)容</p><p> 4'h0:beep_count_end = 16'h6a88; //中音 6 的分頻系數(shù)值 </p><p> 4'h1:beep_count_
113、end = 16'h8637; //中音 4 的分頻系數(shù)值</p><p> 4'h2:beep_count_end = 16'h7794; //中音 5 的分頻系數(shù)值 </p><p> 4'h3:beep_count_end = 16'hb327; //中音 1 的分頻系數(shù)值 </p><p
114、> 4'h5:beep_count_end = 16'hb327; //中音 1 的分頻系數(shù)值 </p><p> 4'h6:beep_count_end = 16'h7794; //中音 5 的分頻系數(shù)值 </p><p> 4'h7:beep_count_end = 16'h6a88; //中音
115、6 的分頻系數(shù)值 </p><p> 4'h8:beep_count_end = 16'h8637; //中音 4 的分頻系數(shù)值</p><p> default:beep_count_end = 16'hffff; //其他情況無(wú)聲</p><p><b> endcase</b></p&
116、gt;<p> else if (!clktime_en)</p><p><b> begin</b></p><p> case(count1[8:5])//鬧鐘嘀嘀嘀聲內(nèi)容</p><p> 4'h0,4'h2,4'h6,4'h8:beep_count_end = 16
117、'h2f74; //高音 7 的分頻系數(shù)值 </p><p> default:beep_count_end = 16'hffff; //其他情況不出聲</p><p><b> endcase</b></p><p><b> end</b></p><p><
118、b> else</b></p><p> beep_count_end = 16'hffff;</p><p><b> end</b></p><p><b> //鬧鈴使能控制</b></p><p> always @(posedge clk) </p
119、><p><b> begin</b></p><p> if (!keyen[0])//判斷鬧鈴是否有取消</p><p> clktime_en = 1'b1;//鬧鈴響起后,需要手動(dòng)關(guān)閉鬧鈴</p><p> else if ((clktime[23:0] <= ho
120、ur[23:0])&(clktime[23:0]+10 >=hour[23:0]))</p><p> //鬧鈴過(guò)一點(diǎn)時(shí)間,自動(dòng)關(guān)閉。</p><p> clktime_en = 1'b0;</p><p><b> end</b></p><p><b> 蜂鳴器模塊仿真<
121、/b></p><p> 功能仿真,記錄波形圖:</p><p> 圖4.11蜂鳴器模塊仿真圖</p><p> 通過(guò)上圖可以看出來(lái),當(dāng)hour與clktime相等時(shí),鬧鈴被觸發(fā),經(jīng)過(guò)一段時(shí)間后,鬧鈴?fù)V构ぷ?,設(shè)計(jì)滿(mǎn)足要求。</p><p><b> 顯示模塊實(shí)現(xiàn)</b></p><p&
122、gt;<b> 顯示模塊描述</b></p><p> 此設(shè)計(jì)中的LED七段數(shù)碼管顯示模塊主要顯示時(shí)間的時(shí)、分、秒信息,數(shù)碼管為共陽(yáng)的。在此設(shè)計(jì)中占非常重要的地位,它是確保時(shí)間能直觀(guān)呈現(xiàn)的橋梁。在設(shè)計(jì)過(guò)程中,首先進(jìn)行程序編寫(xiě)和調(diào)試的應(yīng)該是顯示模塊。</p><p> 下面輸入的端口為鬧鐘設(shè)定鍵被按下,七段數(shù)碼管會(huì)顯示鬧鐘設(shè)定情況下數(shù)碼管所對(duì)應(yīng)的數(shù)字。正常時(shí)間情況
123、、鬧鐘設(shè)定以及查看鬧鐘所設(shè)定好的時(shí)間都是同樣的原理,當(dāng)他們被按下數(shù)碼管會(huì)顯示對(duì)應(yīng)的模式相應(yīng)的數(shù)字。</p><p> 圖4.12顯示模塊圖</p><p><b> 顯示模塊實(shí)現(xiàn)</b></p><p><b> //數(shù)碼管顯示內(nèi)容</b></p><p> always @(posedge
124、 clk)</p><p><b> begin</b></p><p> case({keyen[0],count1[3:1]}) //選擇掃描顯示數(shù)據(jù) </p><p> 4'd0:disp_dat = clktime[3:0];//秒個(gè)位 </p><p> 4'd1:disp_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于fpga數(shù)字時(shí)鐘設(shè)計(jì)-畢業(yè)論文
- 畢業(yè)設(shè)計(jì)基于fpga的多功能數(shù)字時(shí)鐘
- 畢業(yè)設(shè)計(jì)基于fpga的多功能的數(shù)字時(shí)鐘設(shè)計(jì)
- 基于fpga的數(shù)字時(shí)鐘設(shè)計(jì)設(shè)計(jì)
- 基于fpga數(shù)字時(shí)鐘的設(shè)計(jì)
- 基于FPGA數(shù)字時(shí)鐘的設(shè)計(jì)(論文)定稿.doc
- 基于FPGA數(shù)字時(shí)鐘的設(shè)計(jì)(論文)初稿.doc
- 畢業(yè)論文-基于fpga數(shù)字時(shí)鐘的設(shè)計(jì)【精校排版】
- 基于fpga的數(shù)字時(shí)鐘設(shè)計(jì)
- 基于FPGA數(shù)字時(shí)鐘的設(shè)計(jì)(論文)二稿.doc
- 基于fpga的數(shù)字時(shí)鐘設(shè)計(jì)部分
- 畢業(yè)設(shè)計(jì)-數(shù)字時(shí)鐘設(shè)計(jì)
- 數(shù)字日歷時(shí)鐘畢業(yè)設(shè)計(jì)論文
- 數(shù)字時(shí)鐘畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文基于fpga技術(shù)的數(shù)字存儲(chǔ)示波器設(shè)計(jì)
- 基于fpga的數(shù)字時(shí)鐘課程設(shè)計(jì)
- 基于fpga的led數(shù)顯時(shí)鐘畢業(yè)設(shè)計(jì)
- 基于proteus數(shù)字時(shí)鐘制作畢業(yè)設(shè)計(jì)
- 基于fpga的數(shù)字電子時(shí)鐘設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子數(shù)字時(shí)鐘
評(píng)論
0/150
提交評(píng)論