2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  摘 要</b></p><p>  本設(shè)計為一個多功能的數(shù)字時鐘,具有時、分、秒計數(shù)顯示功能,以24小時循環(huán)計數(shù);具有校對功能。 本設(shè)計采用EDA技術(shù),以硬件描述語言Verilog HDL為系統(tǒng)邏輯描述語言設(shè)計文件,在QUARTUSII工具軟件環(huán)境下,采用自頂向下的設(shè)計方法,由各個基本模塊共同構(gòu)建了一個基于FPGA的數(shù)字鐘。</p><p&

2、gt;  系統(tǒng)由時鐘模塊、控制模塊、計時模塊、數(shù)據(jù)譯碼模塊、顯示以及組成。經(jīng)編譯和仿真所設(shè)計的程序,在可編程邏輯器件上下載驗證,本系統(tǒng)能夠完成時、分、秒的分別顯示,按鍵進行校準,整點報時,鬧鐘功能。</p><p>  關(guān)鍵詞:數(shù)字時鐘,硬件描述語言,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.國內(nèi)外研究及趨勢1</p><p>  1.

7、3.論文結(jié)構(gòu)2</p><p>  第二章編程軟件及語言介紹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語言介10</p><p>  2.2.1什么是verilog HDL語言10</p><p>  2.2.2主要功能11</p><p>  第三章數(shù)字化時鐘系統(tǒng)硬件設(shè)計13</p><p>  3.1系統(tǒng)核心板電路分析13</p><p>  3.2系統(tǒng)主板電路分

9、析15</p><p>  3.2.1時鐘模塊電路15</p><p>  3.2.2顯示電路15</p><p>  3.2.3鍵盤控制電路17</p><p>  3.2.4蜂鳴電路設(shè)計17</p><p>  第四章數(shù)字化時鐘系統(tǒng)軟件設(shè)計18</p><p>  4.

10、1整體方案介紹18</p><p>  4.1.1整體設(shè)計描述18</p><p>  4.1.2整體信號定義19</p><p>  4.1.3模塊框圖20</p><p>  4.2分頻模塊實現(xiàn)20</p><p>  4.2.1分頻模塊描述20</p><p>  

11、4.2.2分頻模塊設(shè)計20</p><p>  4.2.3分頻模塊仿真21</p><p>  4.3計時模塊實現(xiàn)21</p><p>  4.3.1計時模塊描述與實現(xiàn)21</p><p>  4.3.2計時模塊仿真23</p><p>  4.4按鍵處理模塊實現(xiàn)23</p>&l

12、t;p>  4.4.1按鍵處理模塊描述23</p><p>  4.4.2按鍵去抖處理模塊設(shè)計24</p><p>  4.4.3按鍵模塊去抖仿真24</p><p>  4.5鬧鐘模塊實現(xiàn)25</p><p>  4.5.1鬧鐘模塊設(shè)計25</p><p>  4.5.2鬧鐘設(shè)定模塊仿真

13、25</p><p>  4.6蜂鳴器模塊實現(xiàn)25</p><p>  4.6.1蜂鳴器模塊描述25</p><p>  4.6.2蜂鳴器模塊實現(xiàn)26</p><p>  4.6.3蜂鳴器模塊仿真27</p><p>  4.7顯示模塊實現(xiàn)27</p><p>  4.7.1

14、顯示模塊描述27</p><p>  4.7.2顯示模塊實現(xiàn)27</p><p>  4.7.3顯示模塊仿真29</p><p>  第五章系統(tǒng)調(diào)試及運行結(jié)果分析30</p><p>  5.1硬件調(diào)試30</p><p>  5.2軟件調(diào)試31</p><p>  5.

15、3調(diào)試過程及結(jié)果31</p><p>  5.4調(diào)試注意事項33</p><p>  第六章總結(jié)和展望34</p><p><b>  5.5總結(jié)34</b></p><p><b>  5.6展望34</b></p><p><b>  參考文

16、獻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>  在這個時間就是金錢的年代里,數(shù)字電子鐘已成為人們生活中的必需品。目前應(yīng)用的數(shù)字鐘不僅可以實現(xiàn)對年、月、日、時、分、秒的數(shù)字顯示,還能實現(xiàn)對電子鐘所在地點的溫度顯示和智能鬧鐘功能,廣泛應(yīng)用于車站、醫(yī)院、機場、碼頭、廁所等公共場所的時間顯示。</p><p>  隨著現(xiàn)場可編程門陣列( field program-mable gate array ,F(xiàn)PGA) 的出現(xiàn),電子系統(tǒng)向集成化、大

18、規(guī)模和高速度等方向發(fā)展的趨勢更加明顯, 作為可編程的集成度較高的ASIC,可在芯片級實現(xiàn)任意數(shù)字邏輯電路,從而可以簡化硬件電路,提高系統(tǒng)工作速度,縮短產(chǎn)品研發(fā)周期。故利用 FPGA這一新的技術(shù)手段來研究電子鐘有重要的現(xiàn)實意義。設(shè)計采用FPGA現(xiàn)場可編程技術(shù),運用自頂向下的設(shè)計思想設(shè)計電子鐘。避免了硬件電路的焊接與調(diào)試,而且由于FPGA的 I /O端口豐富,內(nèi)部邏輯可隨意更改,使得數(shù)字電子鐘的實現(xiàn)較為方便。</p><

19、p>  本課題使用Cyclone EP1C6Q240的FPGA器件,完成實現(xiàn)一個可以計時的數(shù)字時鐘。該系統(tǒng)具有顯示時、分、秒,智能鬧鐘,按鍵實現(xiàn)校準時鐘,整點報時等功能。滿足人們得到精確時間以及時間提醒的需求,方便人們生活。</p><p><b>  國內(nèi)外研究及趨勢</b></p><p>  隨著人們生活水平的提高和生活節(jié)奏的加快,對時間的要求越來越高,精

20、準數(shù)字計時的消費需求也是越來越多。</p><p>  二十一世紀的今天,最具代表性的計時產(chǎn)品就是電子時鐘,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對穩(wěn)定的機械振蕩頻率源使鐘表的走時差從分級縮小到秒級,代表性的產(chǎn)品就是帶有擺或擺輪游絲的機械鐘或表。第二次革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時精度更高的石英電子鐘表,使鐘表的走時月差從分級縮小到秒級。第三次革命就是單片機數(shù)碼計時技術(shù)的應(yīng)用,使

21、計時產(chǎn)品的走時日差從分級縮小到1/600萬秒,從原有傳統(tǒng)指針計時的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動日期、星期的顯示功能,它更符合消費者的生活需求!因此,電子時鐘的出現(xiàn)帶來了鐘表計時業(yè)界跨躍性的進步。</p><p>  我國生產(chǎn)的電子時鐘有很多種,總體上來說以研究多功能電子時鐘為主,使電子時鐘除了原有的顯示時間基本功能外,還具有鬧鈴,報警等功能。商家生產(chǎn)的電子時鐘更從質(zhì)量,價

22、格,實用上考慮,不斷的改進電子時鐘的設(shè)計,使其更加的具有市場。</p><p><b>  論文結(jié)構(gòu)</b></p><p>  第一章詳細論述了近些年來,數(shù)字化時鐘系統(tǒng)研究領(lǐng)域的動態(tài)及整個數(shù)字化時鐘系統(tǒng)的發(fā)展狀況,同時分析了所面臨的問題與解決方案,從而提出了本論文的研究任務(wù)。</p><p>  第二章從研究任務(wù)著手,選擇符合設(shè)計要求的常用芯

23、片及其它元器件,詳細論述了各接口電路的設(shè)計與連接,以模塊化的形式,整合數(shù)字化時鐘硬件的設(shè)計從小到大,從局部到整體,循序漸進,最終實現(xiàn)一個功能齊全的數(shù)字化時鐘系統(tǒng)。</p><p>  第三章根據(jù)系統(tǒng)設(shè)計要求,著手對數(shù)字化時鐘系統(tǒng)軟件進行功能的實現(xiàn),將各功能模塊有機結(jié)合,實現(xiàn)時鐘走時,實現(xiàn)鬧鈴、整點報時附加功能。</p><p>  第四章按照設(shè)計思路,在聯(lián)機調(diào)試過程中,對時鐘系統(tǒng)的不足和缺

24、點進行分析,將調(diào)試過程作重點的記錄。</p><p>  第五章對全文的總結(jié),對本系統(tǒng)功能實現(xiàn)以及制作過程中需要注意的方面,及整個系統(tǒng)軟件編寫中所吸取的經(jīng)驗教訓進行論述,同時,也對整個研究應(yīng)用進行展望。</p><p><b>  編程軟件及語言介紹</b></p><p>  Quarters II編程環(huán)境介紹</p><

25、p>  運行環(huán)境設(shè)計采用quartus II軟件實現(xiàn),因此針對軟件需要用到的一些功能在這里進行描述.</p><p>  Quartus II軟件界面簡單易操作,如下圖2.1:</p><p>  圖2.1Quartus II軟件界面圖</p><p><b>  菜單欄</b></p><p><b>

26、  【File】菜單</b></p><p>  Quartus II的【 File】菜單除具有文件管理的功能外,還有許多其他選項</p><p>  圖2.2Quartus II菜單欄圖</p><p>  (1)【New 】選項:新建工程或文件,其下還有子菜單</p><p>  【New Quartus II Project

27、】選項:新建工程。 </p><p>  【Design File】選項:新建設(shè)計文件,常用的有:AHDL文本文件、VHDL文本文件、Verilog HDL文本文件、原理圖文件等。 </p><p>  【Vector Waveform Five】選項:矢量波形文件。 </p><p> ?。?)【Open】選項:打開一個文件。 </p><p&

28、gt; ?。?)【New Project Wizard 】選項:創(chuàng)建新工程。點擊后彈出對話框。單擊對話框最上第一欄右側(cè)的“…”按鈕,找到文件夾已存盤的文件,再單擊打開按鈕,既出現(xiàn)如圖所示的設(shè)置情況。對話框中第一行表示工程所在的工作庫文件夾,第二行表示此項工程的工程名,第三行表示頂層文件的實體名,一般與工程名相同。</p><p>  圖2.3Quartus II新建工程圖</p><p&

29、gt; ?。?)【creat /update】選項:生成元件符號??梢詫⒃O(shè)計的電路封裝成一個元件符號,供以后在原理圖編輯器下進行層次設(shè)計時調(diào)用。 </p><p>  【 View】菜單:進行全屏顯示或?qū)Υ翱谶M行切換,包括層次窗口、狀態(tài)窗口、消息窗口等。</p><p>  圖2.4Quartus II菜單欄全屏切換圖</p><p>  【Assignments

30、】菜單</p><p> ?。?)【Device】選項:為當前設(shè)計選擇器件。 </p><p>  (2)【Pin】選項:為當前層次樹的一個或多個邏輯功能塊分配芯片引腳或芯片內(nèi)的位置。</p><p>  (3)【Timing Ananlysis Setting】選項:為當前設(shè)計的 tpd、tco、tsu、fmax等時間參數(shù)設(shè)定時序要求。 </p>&

31、lt;p> ?。?)【EDA tool setting】選項:EDA 設(shè)置工具。使用此工具可以對工程進行綜合、仿真、時序分析,等等。EDA 設(shè)置工具屬于第三方工具。 </p><p> ?。?)【Setting】選項:設(shè)置控制??梢允褂盟鼘こ?、文件、參數(shù)等進行修改,還可以設(shè)置編譯器、仿真器、時序分析、功耗分析等。 </p><p>  (6)【assignment editor】選

32、項:任務(wù)編輯器。 </p><p>  (7)【pin planner 】選項:可以使用它將所設(shè)計電路的 I/O 引腳合理的分配到已設(shè)定器件的引腳上。</p><p>  圖2.5Quartus II菜單欄設(shè)定引腳下拉圖</p><p>  【processing】菜單</p><p>  【processing】菜單的功能是對所設(shè)計的電路

33、進行編譯和檢查設(shè)計的正確性。 </p><p> ?。?)【Stop process】選項:停止編譯設(shè)計項目。 </p><p> ?。?)【Start Compilation】選項:開始完全編譯過程,這里包括分析與綜合、適</p><p>  配、裝配文件、定時分析、網(wǎng)表文件提取等過程。 </p><p> ?。?)【analyze cur

34、rent file】選項:分析當前的設(shè)計文件,主要是對當前設(shè)計文</p><p>  件的語法、語序進行檢查。 </p><p> ?。?)【compilation report】選項:適配信息報告,通過它可以查看詳細的適配信</p><p>  息,包括設(shè)置和適配結(jié)果等。 </p><p> ?。?)【start simulation】選項

35、:開始功能仿真。 </p><p> ?。?)【simulation report】選項:生成功能仿真報告。 </p><p> ?。?)【compiler tool】選項:它是一個編譯工具,可以有選擇對項目中的各個文</p><p><b>  件進行分別編譯。 </b></p><p> ?。?)【simulatio

36、n tool】選項:對編譯過電路進行功能仿真和時序仿真。 </p><p> ?。?)【classic timing analyzer tool】選項:classic時序仿真工具。 </p><p> ?。?0)【powerplay power analyzer tool】選項:PowerPlay 功耗分析工具。 </p><p>  圖2.6Quartus II菜

37、單欄運行下拉圖</p><p><b>  【tools】菜單</b></p><p>  【tools 】菜單的功能是 </p><p> ?。?)【run EDA simulation tool 】選項:運行EDA仿真工具,EDA是第三方仿真工具。 </p><p> ?。?)【run EDA timing anal

38、yzer tool 】選項:運行EDA時序分析工具,EDA是第三方仿真工具。 </p><p> ?。?)【Programmer 】選項:打開編程器窗口,以便對 Altera 的器件進行下載編程。</p><p>  圖2.7Quartus II仿真菜單下拉圖</p><p><b>  工具欄 </b></p><p>

39、;  工具欄緊鄰菜單欄下方,它其實是各菜單功能的快捷按鈕組合區(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>  在菜單上點processing在下拉菜單中,如下圖:</p><p>  圖2.11Quartus II菜單欄processing下拉圖</p><p>  Verilo

41、g HDL語言介</p><p>  什么是verilog HDL語言</p><p>  Verilog HDL是一種硬件描述語言,用于從算法級、門級到開關(guān)級的多種抽象設(shè)計層次的數(shù)字系統(tǒng)建模。被建模的數(shù)字系統(tǒng)對象的復雜性可以介于簡單的門和完整的電子數(shù)字系統(tǒng)之間。數(shù)字系統(tǒng)能夠按層次描述,并可在相同描述中顯式地進行時序建模。</p><p>  Verilog HDL

42、 語言具有下述描述能力:設(shè)計的行為特性、設(shè)計的數(shù)據(jù)流特性、設(shè)計的結(jié)構(gòu)</p><p>  組成以及包含響應(yīng)監(jiān)控和設(shè)計驗證方面的時延和波形產(chǎn)生機制。所有這些都使用同一種建模語言。此外,Verilog HDL語言提供了編程語言接口,通過該接口可以在模擬、驗證期間從設(shè)計外部訪問設(shè)計,包括模擬的具體控制和運行。</p><p>  Verilog HDL語言不僅定義了語法,而且對每個語法結(jié)構(gòu)都定義

43、了清晰的模擬、仿真語義。因此,用這種語言編寫的模型能夠使用Ve rilog仿真器進行驗證。語言從C編程語言中繼承了多種操作符和結(jié)構(gòu)。</p><p>  Verilog HDL提供了擴展的建模能力,其中許多擴展最初很難理解。但是,Verilog HDL語言的核心子集非常易于學習和使用,這對大多數(shù)建模應(yīng)用來說已經(jīng)足夠。當然,完整的硬件描述語言足以對從最復雜的芯片到完整的電子系統(tǒng)進行描述。</p>&l

44、t;p><b>  主要功能</b></p><p>  下面列出的是Verilog硬件描述語言的主要能力:</p><p>  基本邏輯門,例如and、or和nan d等都內(nèi)置在語言中。</p><p>  用戶定義原語(UP)創(chuàng)建的靈活性。用戶定義的原語既可以是組合邏輯原語,也可以是時序邏輯原語。</p><p&g

45、t;  開關(guān)級基本結(jié)構(gòu)模型,例如pmos和nmos等也被內(nèi)置在語言中。</p><p>  提供顯式語言結(jié)構(gòu)指定設(shè)計中的端口到端口的時延及路徑時延和設(shè)計的時序檢查。</p><p>  可采用三種不同方式或混合方式對設(shè)計建模。這些方式包括:行為描述方式—使用過程化結(jié)構(gòu)建模;數(shù)據(jù)流方式—使用連續(xù)賦值語句方式建模;結(jié)構(gòu)化方式—使用門和模塊實例語句描述建模。</p><p&g

46、t;  Verilog HDL中有兩類數(shù)據(jù)類型:線網(wǎng)數(shù)據(jù)類型和寄存器數(shù)據(jù)類型。線網(wǎng)類型表示構(gòu)件間的物理連線,而寄存器類型表示抽象的數(shù)據(jù)存儲元件。</p><p>  能夠描述層次設(shè)計,可使用模塊實例結(jié)構(gòu)描述任何層次。</p><p>  設(shè)計的規(guī)??梢允侨我獾模徽Z言不對設(shè)計的規(guī)模(大?。┦┘尤魏蜗拗?。</p><p>  Verilog HDL不再是某些公司的專有語

47、言而是IEEE標準。</p><p>  人和機器都可閱讀Verilog語言,因此它可作為EDA的工具和設(shè)計者之間的交互語言。</p><p>  Verilog HDL語言的描述能力能夠通過使用編程語言接口(PLI)機制進一步擴展。PLI是允許外部函數(shù)訪問Verilog模塊內(nèi)信息、允許設(shè)計者與模擬器交互的例程集合。</p><p>  設(shè)計能夠在多個層次上加以描述

48、,從開關(guān)級、門級、寄存器傳送級(RTL)到算法級,包括進程和隊列級。</p><p>  能夠使用內(nèi)置開關(guān)級原語在開關(guān)級對設(shè)計完整建模。</p><p>  同一語言可用于生成模擬激勵和指定測試的驗證約束條件,例如輸入值的指定。</p><p>  Verilog HDL能夠監(jiān)控模擬驗證的執(zhí)行,即模擬驗證執(zhí)行過程中設(shè)計的值能夠被監(jiān)控和顯示。這些值也能夠用于與期望值比

49、較,在不匹配的情況下,打印報告消息。</p><p>  在行為級描述中,Verilog HDL不僅能夠在RTL級上進行設(shè)計描述,而且能夠在體系結(jié)構(gòu)級描述及其算法級行為上進行設(shè)計描述。</p><p>  能夠使用門和模塊實例化語句在結(jié)構(gòu)級進行結(jié)構(gòu)描述。</p><p>  如圖顯示了Verilog HDL的混合方式建模能力,即在一個設(shè)計中每個模塊均可以在不同設(shè)計層

50、次上建模。</p><p>  Verilog HDL還具有內(nèi)置邏輯函數(shù),例如&(按位與)和|(按位或)。</p><p>  對高級編程語言結(jié)構(gòu),例如條件語句、情況語句和循環(huán)語句,語言中都可以使用。</p><p>  可以顯式地對并發(fā)和定時進行建模。</p><p>  提供強有力的文件讀寫能力。</p><p

51、>  語言在特定情況下是非確定性的,即在不同的模擬器上模型可以產(chǎn)生不同的結(jié)果;例如,事件隊列上的事件順序在標準中沒有定義。</p><p>  圖2.12混合設(shè)計層次圖</p><p>  數(shù)字化時鐘系統(tǒng)硬件設(shè)計</p><p><b>  系統(tǒng)核心板電路分析</b></p><p>  本系統(tǒng)采用的開發(fā)平臺標配的

52、核心板是QuickSOPC,可以實現(xiàn)EDA、SOP和DSP的實驗及研發(fā)。本系統(tǒng)采用QuickSOPC標準配置為Altera公司的EP1C6Q240C8芯片。</p><p><b>  核心板的硬件資源</b></p><p>  核心板采用4層板精心設(shè)計,采用120針接口。QuickSOPC核心板的硬件原理框圖如圖2-1所示:</p><p>

53、;  圖3.1 QuickSOPC硬件方塊圖</p><p><b>  FPGA電路</b></p><p>  核心板QuickSOPC上所用的FPGA為Altera公司Cyclone系列的EP1C6Q240。EP1C6Q240包含有5980個邏輯單元和92Kbit的片上RAM。EP1C6Q240有185個用戶I/O口,封裝為240-Pin PQFP。核心板EP1

54、C6Q240器件特性如表2-1。</p><p>  表3-1 核心EP1C6Q240器件特性:Hb7838電子-技術(shù)資料-電子元件-電路圖-技術(shù)應(yīng)用網(wǎng)站-基本知識-原理-維修-作用-參數(shù)-電子元器件符號-各種圖紙</p><p><b>  配置電路</b></p><p>  Cyclone FPGA的配置方式包括:主動配置模式、被動配置模

55、式以及JTAG配置模式。本系統(tǒng)采用的是JTAG配置模式下載配置數(shù)據(jù)到FPGA。</p><p>  通過JTAG結(jié)果,利用Quartus II軟件可以直接對FPGA進行單獨的硬件重新配置。Quartus II軟件在編譯時會自動生成用于JTAG配置的.sof文件。Cyclone FPGA設(shè)計成的JTAG指令比其他任何器件操作模式的優(yōu)先級都高,因此JTAG配置可隨時進行而不用等待其他配置模式完成。JTAG模式使用4個

56、專門的信號引腳:TDI、TDO、TMS以及TCK。JTAG的3個輸入腳TDI、TMS和TCK具有內(nèi)部弱上拉,上拉電阻大約為25kΩ。在JGTA進行配置的時候,所有用戶I/O扣都為高阻態(tài)。</p><p><b>  時鐘電路</b></p><p>  FPGA內(nèi)部沒振蕩電路,使用有源晶振是比較理想的選擇。EP1C6Q240C8的輸入的時鐘頻率范圍為15.625~38

57、7MHz,經(jīng)過內(nèi)部的PLL電路后可輸出15.625~275MHz的系統(tǒng)時鐘。當輸入時鐘頻率較低時,可以使用FPGA的內(nèi)部PLL調(diào)整FPGA所需的系統(tǒng)時鐘,使系統(tǒng)運行速度更快。</p><p>  核心板包含一個48MHz的有源晶振作為系統(tǒng)的時鐘源。如圖2-2所示。為了得到一個穩(wěn)定、精確的時鐘頻率,有源晶振的供電電源經(jīng)過了LC濾波。</p><p>  本系統(tǒng)硬件整體設(shè)計框圖如圖2-3所示:

58、</p><p>  圖3.2數(shù)字時鐘系統(tǒng)硬件電路總體框圖</p><p><b>  系統(tǒng)主板電路分析</b></p><p><b>  時鐘模塊電路</b></p><p>  FPGA內(nèi)部沒振蕩電路,使用有源晶振是比較理想的選擇。EP1C6Q240C8的輸入的時鐘頻率范圍為15.625~38

59、7MHz,經(jīng)過內(nèi)部的PLL電路后可輸出15.625~275MHz的系統(tǒng)時鐘。當輸入時鐘頻率較低時,可以使用FPGA的內(nèi)部PLL調(diào)整FPGA所需的系統(tǒng)時鐘,使系統(tǒng)運行速度更快。</p><p>  核心板包含一個50MHz的有源晶振作為系統(tǒng)的時鐘源。為了得到一個穩(wěn)定、精確的時鐘頻率,有源晶振的供電電源經(jīng)過了LC濾波。</p><p>  圖3.3 系統(tǒng)時鐘電路圖</p><

60、;p><b>  顯示電路</b></p><p>  由于本設(shè)計需要顯示時間信息包括:時、分、秒,顯所以采用主板上七段數(shù)碼管顯示電路與系統(tǒng)連接實現(xiàn)顯示模塊的功能。</p><p>  主板上七段數(shù)碼管顯示電路如圖2-4 所示,RP4和 RP6 是段碼上的限流電阻,位碼由于電流較大,采用了三極管驅(qū)動。</p><p>  圖3.4七段數(shù)碼

61、管顯示電路圖</p><p>  數(shù)碼管 LED顯示是工程項目中使用較廣的一種輸出顯示器件。常見的數(shù)管有共陰和 共陽 2 種。共陰數(shù)碼管是將 8 個發(fā)光二極管的陰極連接在一起作為公共端,而共陽數(shù)碼管是將 8 個發(fā)光二極管的陽極連接在一起作為公共端。公共端常被稱作位碼,而將其他的 8 位稱作段碼。如圖 2-5所示為共陽數(shù)碼管及其電路,數(shù)碼管有 8 個段分別為:h、g、f、e、d、c、b 和a(h 為小數(shù)點) ,只要

62、公共端為高電平“1” ,某個段輸出低電平“0”則相應(yīng)的段就亮。</p><p>  圖3.5七段數(shù)碼管顯示電路圖</p><p>  從電路可以看出,數(shù)碼管是共陽的,當位碼驅(qū)動信號為 0時,對應(yīng)的數(shù)碼管才能操作;當段碼驅(qū)動信號為 0 時,對應(yīng)的段碼點亮。</p><p><b>  鍵盤控制電路</b></p><p>

63、  鍵盤控制電路要實現(xiàn)時鐘系統(tǒng)調(diào)時的功能和鬧鈴開關(guān)的功能。本設(shè)計采用主板上的獨立鍵盤來實現(xiàn)這兩個功能。當鍵盤被按下是為“0”,未被按下是為“1”。電路連接圖如圖2-6所示。電路中為了防止FPGA的I/O設(shè)為輸出且為高電平在按鍵下直接對地短路,電阻RP9、RP10對此都能起到保護作用。</p><p>  圖3.6 鍵盤電路圖</p><p><b>  蜂鳴電路設(shè)計</b&

64、gt;</p><p>  如圖2-7所示,蜂鳴器使用 PNP三極管進行驅(qū)動控制,蜂鳴器使用的是交流蜂鳴器。當在 BEEP輸入一定頻率的脈沖時,蜂鳴器蜂鳴,改變輸入頻率可以改變蜂鳴器的響聲。因此可以利用一個 PWM 來控制 BEEP,通過改變 PWM 的頻率來得到不同的聲響,也可以用來播放音樂。若把 JP7斷開,Q4 截止,蜂鳴器停止蜂鳴。</p><p><b>  圖3.7蜂

65、鳴電路圖</b></p><p>  數(shù)字化時鐘系統(tǒng)軟件設(shè)計</p><p><b>  整體方案介紹</b></p><p><b>  整體設(shè)計描述</b></p><p>  設(shè)計中的數(shù)字時鐘,帶有按鍵校準,定點報時,數(shù)碼管顯示等功能。因此數(shù)字時鐘所包含的模塊可分為,分頻模塊,按鍵

66、模塊,計時校準模塊,鬧鐘模塊,LED顯示模塊,模塊之間的關(guān)系下圖:</p><p>  圖4.1整體模塊框圖</p><p>  針對框圖流程,設(shè)定出各個模塊的需求:</p><p><b>  分頻電路:</b></p><p>  針對計時器模塊與鬧鐘設(shè)定模塊的需求,可以知道分頻模塊需要生成一個1Hz的頻率信號,確保

67、計時模塊可以正常計數(shù)。</p><p><b>  計時器模塊:</b></p><p>  計數(shù)模塊的作用是收到分頻模塊1Hz頻率的信號線,能進行正確計時,并且可以通過按鍵進行時間的修改,且當整點時,給蜂鳴器產(chǎn)生使能信號,進行整點報時,播放音樂。</p><p><b>  鬧鐘設(shè)定模塊:</b></p>

68、<p>  可根據(jù)按鍵的設(shè)定鬧鐘的時間,當計時模塊的時間與鬧鐘設(shè)定模塊的時間相等的時候,給蜂鳴器一個使能信號,蜂鳴器鬧鈴。。</p><p><b>  蜂鳴器模塊:</b></p><p>  根據(jù)計時模塊,鬧鐘模塊給出的使能信號,判定蜂鳴器是整點報時,還是鬧鐘響鈴。整點報時會播放音樂,鬧鐘時嘀嘀嘀報警。</p><p><b

69、>  LED顯示模塊:</b></p><p>  根據(jù)實際的需求顯示計時模塊的時間,還是鬧鐘設(shè)定模塊的時間,8個七段碼LED數(shù)碼管,進行掃描方式顯示數(shù)據(jù)。</p><p><b>  整體信號定義</b></p><p>  對整個模塊進行信號定義。</p><p><b>  接口及寄存器

70、定義</b></p><p>  module clock(clk,key,dig,seg,beep);// 模塊名 clock </p><p>  input clk; // 輸入時鐘 </p><p>  input [4:0] key; //輸入按鍵 ,key[3:0]分別為秒,分鐘,小時的增加按鍵。Key[4]為鬧鐘設(shè)置按鍵,key[

71、5]為校準設(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; //定義計數(shù)寄存器</p><p>  reg [14:0] count

73、; //定義計數(shù)中間寄存器 </p><p>  reg [23:0] hour = 24'h235956; // 定義現(xiàn)在時刻寄存器 </p><p>  reg [23:0] clktime = 24'h000000;//定義設(shè)定鬧鐘</p><p>  reg [1:0] keyen = 2'b11; // 定義

74、標志位 </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秒時鐘</p><p>  reg clk1;//1ms時鐘</p><p>  reg beep_r;//寄存器 </p><p>  wire beepen;//鬧鐘使能信號</p><p><b>  模塊框圖<

77、;/b></p><p>  通過quartus II的creat symble for current file功能生成框圖如下:</p><p>  圖4.2生成的符號圖</p><p>  分頻模塊實現(xiàn),計數(shù)電路所需時鐘信號為1HZ,而系統(tǒng)時鐘為48MHZ,所以要對系統(tǒng)時鐘進行分頻以來滿足電路的需要。</p><p><b&

78、gt;  分頻模塊實現(xiàn)</b></p><p><b>  分頻模塊描述</b></p><p>  對于分頻模塊,關(guān)鍵是生成個1Hz的時鐘信號??紤]到仿真的需要,模塊中間生成1個1kHz的時鐘信號。1Hz的信號的產(chǎn)生用來產(chǎn)生時鐘的秒脈沖,框圖如下圖4.2:</p><p><b>  圖4.3分頻模塊圖</b>

79、;</p><p><b>  分頻模塊設(shè)計</b></p><p>  本系統(tǒng)程序設(shè)計時鐘的準確與否主要取決于秒脈沖的精確度。為了保證計時準確,我們對系統(tǒng)時鐘48MHz進行了48000分頻生成1kHz信號clk1,在通過1kHz信號,生成1Hz信號clk。</p><p>  //1ms信號產(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; //計數(shù)器清零 </p><p>  clk1 = ~clk1; //置位秒標志 </p><p><b>  end </b></p><p>&l

82、t;b>  end</b></p><p>  //秒信號產(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; //計數(shù)器清零 </p><p>  sec = ~sec; //置位秒標志

84、 </p><p><b>  end</b></p><p><b>  End</b></p><p><b>  分頻模塊仿真</b></p><p>  通過設(shè)置功能仿真,檢查代碼的正確性</p><p><b>  仿真結(jié)果<

85、/b></p><p>  圖4.4 分頻模塊波形仿真圖</p><p>  右上圖可以知道,計數(shù)寄存器count累加到23999時,重新變?yōu)?,共計數(shù)了24000個值。觸發(fā)clk1跳變,使得count1加一,count1累加到499的時候,下一個數(shù)據(jù)為0,共技術(shù)500個值。所以,sec信號的頻率為1Hz,滿足設(shè)計要求。</p><p><b>  

86、計時模塊實現(xiàn)</b></p><p><b>  計時模塊描述與實現(xiàn)</b></p><p>  計時模塊是采用16進制來實現(xiàn)的,將hour[23,0]定義為其時分秒,其中hour[3,0]為其秒鐘上的個位數(shù)值,hour[4,7]為其秒鐘上的十位數(shù)值,以此類推分鐘、時鐘的個位和十位。當clk脈沖過來時,秒個位hour[3,0]便開始加1,當加到9時,秒十位

87、加1,與此同時秒個位清零,繼續(xù)加1。當秒十位hour[7,4]為5秒個位為9時(即59秒),分個位hour[11,8]加1,與此同時秒個位和秒十位都清零。以此類推,當分十位hour[15,12]為5和分個位為9時(即59分),時個位加1,與此同時分個位hour[19,16]和分十位都清零。當時分十位[23,20]為2和分個位為4,全部清零,開始重新計時。從功能上講分別為模60計數(shù)器,模60計數(shù)器和模24計數(shù)器。</p>&

88、lt;p>  //時間計算及校準部分</p><p>  always @(negedge sec)//計時處理 </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,復位</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,復位</p><p><b>  begin </b></p><p>  hour[7:4] = 4'h0; </p><p>  hour[11:8] = hour[11:8] + 1'b1;//分個位加一

91、 </p><p>  if(hour[11:8] >= 4'ha) //加到10,復位</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,復位</p><p><b>  begin </b></p><p>  hour[15:12] = 4'h0; </p><p>  hour[19:16] = hour

93、[19:16] + 1'b1;//時個位加一 </p><p>  if(hour[19:16] >= 4'ha) //加到10,復位</p><p><b>  begin </b></p><p>  hour[19:16] = 4'h0; </p><p>  hour

94、[23:20] = hour[23:20] + 1'b1;//時十位加一 </p><p><b>  end </b></p><p>  if(hour[23:16] >= 8'h24) //加到24,復位</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>  計時模塊仿真</b></p><p>  對計時模塊進行仿真,記錄仿真波形</p><p>  圖4.5 計時模塊仿真圖</p><p>  由上圖可見,當sec信號下降沿跳變時,hour寄出去會加1,也就相當于

97、跳了一秒鐘時間。當hour的時間為235959是,下一個計數(shù)器的值為000000,hour寄存器歸零,相當于半夜0點的時刻。仿真的結(jié)果達到預期,通過。</p><p><b>  按鍵處理模塊實現(xiàn)</b></p><p><b>  按鍵處理模塊描述</b></p><p><b>  框圖如下圖4.4:<

98、/b></p><p>  圖4.6按鍵控制功能圖</p><p>  模塊講計時部分和時間調(diào)整部分整合到一起,正常態(tài)的時候,時間正常運行,當key[5]被按下時,進入時間校準,可以通過key[2:0]三個鍵,分別對秒,分,時進行加1操作,從而進行時間校準。當key[3]被按下時,進入鬧鐘設(shè)定,可以通過key[2:0]三個鍵,分別對秒,分,時進行加1操作,從而進行鬧鐘的設(shè)定。<

99、/p><p>  圖4.7 按鍵模塊仿真圖</p><p>  通過按鍵key進行仿真控制,可以發(fā)現(xiàn)clktime會隨著按鍵的按下,分別有時鐘,分鐘秒鐘加1,仿真結(jié)果滿足設(shè)計要求。</p><p>  按鍵去抖處理模塊設(shè)計</p><p>  按鍵模塊實現(xiàn)去抖處理,及乒乓按鍵設(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]; //校準按鍵轉(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]; //定時按鍵轉(zhuǎn)換乒乓按鍵</p><p><b>  End</b></p><p><b>  按鍵模塊去抖仿真</b></p><p>  對于按鍵去抖動仿真,同樣才用功能仿真方式,這里不再重復設(shè)置與操作,如同上面的分頻模塊進行設(shè)置并進行仿真

104、。</p><p>  Key寄存器為輸入按鍵,初始化電路為高電平,當有按鍵按下去的時候,變?yōu)榈碗娖?。因此改變key的值,觀察仿真結(jié)果是否正確。</p><p>  功能仿真,記錄仿真結(jié)果,如下圖:</p><p>  圖4.8 按鍵模塊仿真圖</p><p>  通過上圖可以知道,key_done會隨著key的變化而發(fā)生相應(yīng)的變化,并有消除

105、噪聲的作用,功能仿真正確,達到設(shè)計目的。</p><p><b>  鬧鐘模塊實現(xiàn)</b></p><p><b>  鬧鐘模塊設(shè)計</b></p><p>  本設(shè)計中,判斷鬧鈴時間到,是通過判定時鐘系統(tǒng)實時時間的時鐘與分鐘是否分別等于設(shè)定的鬧鈴時間的時鐘、分鐘、秒鐘。當時間(hour[23:0])等于設(shè)定的鬧鐘時間(c

106、lktime[23:0])時,鬧鐘觸發(fā)時,播放嘀嘀嘀報警聲,鬧鐘會響10秒的時間(clktime[23:0]+10 >=hour[23:0])。正常情況下,鬧鈴時間到會進行為時1分鐘的蜂鳴報時,可以通過按下鬧鐘按鍵key[3]使其停止。當鬧鈴設(shè)置為整點是,會先進行整點報時,然后進入鬧鈴。</p><p>  圖4.9 鬧鐘控制鍵功能圖</p><p><b>  鬧鐘設(shè)定模

107、塊仿真</b></p><p>  圖4.10 鬧鐘模塊仿真圖</p><p>  通過按鍵key進行仿真控制,可以發(fā)現(xiàn)clktime會隨著按鍵的按下,分別有時鐘,分鐘秒鐘加1,仿真結(jié)果滿足設(shè)計要求。</p><p><b>  蜂鳴器模塊實現(xiàn)</b></p><p><b>  蜂鳴器模塊描述&l

108、t;/b></p><p>  蜂鳴器模塊負責整點報時,和鬧鈴的時候進行出聲的作用。整點報時的時候,播放音樂,10秒音樂播報完后停止整點報時。鬧鐘觸發(fā)時,播放嘀嘀嘀報警聲。當鬧鈴設(shè)置為整點是,會先進行整點報時,然后進入鬧鈴。當鬧鐘設(shè)定鍵被按下,響起的蜂鳴聲會被屏蔽。模塊框圖如下圖4.9:</p><p><b>  蜂鳴器模塊實現(xiàn)</b></p>

109、<p>  //蜂鳴器的計數(shù)定時器</p><p>  always@(posedge clk) </p><p><b>  begin </b></p><p>  beep_count = beep_count + 1'b1; //計數(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; //計數(shù)器清零 </p><p>  bee

111、p_r = ~beep_r; //取反輸出信號 </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]) //整點報時音樂內(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; //其他情況無聲</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;//鬧鈴響起后,需要手動關(guān)閉鬧鈴</p><p>  else if ((clktime[23:0] <= ho

120、ur[23:0])&(clktime[23:0]+10 >=hour[23:0]))</p><p>  //鬧鈴過一點時間,自動關(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>  通過上圖可以看出來,當hour與clktime相等時,鬧鈴被觸發(fā),經(jīng)過一段時間后,鬧鈴停止工作,設(shè)計滿足要求。</p><p><b>  顯示模塊實現(xiàn)</b></p><p&

122、gt;<b>  顯示模塊描述</b></p><p>  此設(shè)計中的LED七段數(shù)碼管顯示模塊主要顯示時間的時、分、秒信息,數(shù)碼管為共陽的。在此設(shè)計中占非常重要的地位,它是確保時間能直觀呈現(xiàn)的橋梁。在設(shè)計過程中,首先進行程序編寫和調(diào)試的應(yīng)該是顯示模塊。</p><p>  下面輸入的端口為鬧鐘設(shè)定鍵被按下,七段數(shù)碼管會顯示鬧鐘設(shè)定情況下數(shù)碼管所對應(yīng)的數(shù)字。正常時間情況

123、、鬧鐘設(shè)定以及查看鬧鐘所設(shè)定好的時間都是同樣的原理,當他們被按下數(shù)碼管會顯示對應(yīng)的模式相應(yīng)的數(shù)字。</p><p>  圖4.12顯示模塊圖</p><p><b>  顯示模塊實現(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];//秒個位 </p><p>  4'd1:disp_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論