版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、摘 要本設計為一個多功能的數(shù)字時鐘,具有時、分、秒計數(shù)顯示功能,以24小時循環(huán)計數(shù);具有校對功能。 本設計采用EDA技術,以硬件描述語言Verilog HDL為系統(tǒng)邏輯描述語言設計文件,在QUARTUSII工具軟件環(huán)境下,采用自頂向下的設計方法,由各個基本模塊共同構(gòu)建了一個基于FPGA的數(shù)字鐘。系統(tǒng)由時鐘模塊、控制模塊、計時模塊、數(shù)據(jù)譯碼模塊、顯示以及組成。經(jīng)編譯和仿真所設計的程序,在可編程邏輯器件上下載驗證,本系統(tǒng)能夠完成時、分、秒的分別顯示,按鍵進行校準,整點報時,鬧鐘功能。關鍵詞:數(shù)字時鐘,硬件描述語言,Verilog HDL,F(xiàn)PGAAbstractThe design for a m
2、ulti-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 language VHDL description logic means for the system design documents, in QUAETUSII tools environment, a top-do
3、wn design, by the various modules together build a FPGA-based digital clock. The main system make up of the clock module, control module, time module, data decoding module, display and broadcast module. After compiling the design and simulation procedures, the programmable logic device to download v
4、erification, the system can complete the hours, minutes and seconds respectively, using keys to cleared , to calibrating time. And on time alarm and clock for digital clock.Keywords: digital clock,hardware description language,Verilog HDL,FPGA 目 錄摘 要1Abstract2第一章緒論11.1.選題意義與研究現(xiàn)狀11.2.國內(nèi)外研究及趨勢11.3.論文結(jié)
5、構(gòu)2第二章編程軟件及語言介紹32.1Quarters II編程環(huán)境介紹32.1.1菜單欄32.1.2工具欄82.1.3功能仿真流程92.2Verilog HDL語言介102.2.1什么是verilog HDL語言102.2.2主要功能11第三章數(shù)字化時鐘系統(tǒng)硬件設計133.1系統(tǒng)核心板電路分析133.2系統(tǒng)主板電路分析153.2.1時鐘模塊電路153.2.2顯示電路153.2.3鍵盤控制電路173.2.4蜂鳴電路設計17第四章數(shù)字化時鐘系統(tǒng)軟件設計184.1整體方案介紹184.1.1整體設計描述184.1.2整體信號定義194.1.3模塊框圖204.2分頻模塊實現(xiàn)204.2.1分頻模塊描述20
6、4.2.2分頻模塊設計204.2.3分頻模塊仿真214.3計時模塊實現(xiàn)214.3.1計時模塊描述與實現(xiàn)214.3.2計時模塊仿真234.4按鍵處理模塊實現(xiàn)234.4.1按鍵處理模塊描述234.4.2按鍵去抖處理模塊設計244.4.3按鍵模塊去抖仿真244.5鬧鐘模塊實現(xiàn)254.5.1鬧鐘模塊設計254.5.2鬧鐘設定模塊仿真254.6蜂鳴器模塊實現(xiàn)254.6.1蜂鳴器模塊描述254.6.2蜂鳴器模塊實現(xiàn)264.6.3蜂鳴器模塊仿真274.7顯示模塊實現(xiàn)274.7.1顯示模塊描述274.7.2顯示模塊實現(xiàn)274.7.3顯示模塊仿真29第五章系統(tǒng)調(diào)試及運行結(jié)果分析305.1硬件調(diào)試305.2軟件調(diào)
7、試315.3調(diào)試過程及結(jié)果315.4調(diào)試注意事項33第六章總結(jié)和展望345.5總結(jié)345.6展望34參考文獻35致 謝36附 錄37第一章 緒論1.1. 選題意義與研究現(xiàn)狀在這個時間就是金錢的年代里,數(shù)字電子鐘已成為人們生活中的必需品。目前應用的數(shù)字鐘不僅可以實現(xiàn)對年、月、日、時、分、秒的數(shù)字顯示,還能實現(xiàn)對電子鐘所在地點的溫度顯示和智能鬧鐘功能,廣泛應用于車站、醫(yī)院、機場、碼頭、廁所等公共場所的時間顯示。隨著現(xiàn)場可編程門陣列( field program-mable gate array ,F(xiàn)PGA) 的出現(xiàn),電子系統(tǒng)向集成化、大規(guī)模和高速度等方向發(fā)展的趨勢更加明顯, 作為可編程的集成度較高
8、的ASIC,可在芯片級實現(xiàn)任意數(shù)字邏輯電路,從而可以簡化硬件電路,提高系統(tǒng)工作速度,縮短產(chǎn)品研發(fā)周期。故利用 FPGA這一新的技術手段來研究電子鐘有重要的現(xiàn)實意義。設計采用FPGA現(xiàn)場可編程技術,運用自頂向下的設計思想設計電子鐘。避免了硬件電路的焊接與調(diào)試,而且由于FPGA的 I /O端口豐富,內(nèi)部邏輯可隨意更改,使得數(shù)字電子鐘的實現(xiàn)較為方便。本課題使用Cyclone EP1C6Q240的FPGA器件,完成實現(xiàn)一個可以計時的數(shù)字時鐘。該系統(tǒng)具有顯示時、分、秒,智能鬧鐘,按鍵實現(xiàn)校準時鐘,整點報時等功能。滿足人們得到精確時間以及時間提醒的需求,方便人們生活。1.2. 國內(nèi)外研究及趨勢隨著人們生活
9、水平的提高和生活節(jié)奏的加快,對時間的要求越來越高,精準數(shù)字計時的消費需求也是越來越多。二十一世紀的今天,最具代表性的計時產(chǎn)品就是電子時鐘,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對穩(wěn)定的機械振蕩頻率源使鐘表的走時差從分級縮小到秒級,代表性的產(chǎn)品就是帶有擺或擺輪游絲的機械鐘或表。第二次革命是石英晶體振蕩器的應用,發(fā)明了走時精度更高的石英電子鐘表,使鐘表的走時月差從分級縮小到秒級。第三次革命就是單片機數(shù)碼計時技術的應用,使計時產(chǎn)品的走時日差從分級縮小到1/600萬秒,從原有傳統(tǒng)指針計時的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動日期、星期的顯示功
10、能,它更符合消費者的生活需求!因此,電子時鐘的出現(xiàn)帶來了鐘表計時業(yè)界跨躍性的進步。我國生產(chǎn)的電子時鐘有很多種,總體上來說以研究多功能電子時鐘為主,使電子時鐘除了原有的顯示時間基本功能外,還具有鬧鈴,報警等功能。商家生產(chǎn)的電子時鐘更從質(zhì)量,價格,實用上考慮,不斷的改進電子時鐘的設計,使其更加的具有市場。1.3. 論文結(jié)構(gòu)第一章詳細論述了近些年來,數(shù)字化時鐘系統(tǒng)研究領域的動態(tài)及整個數(shù)字化時鐘系統(tǒng)的發(fā)展狀況,同時分析了所面臨的問題與解決方案,從而提出了本論文的研究任務。第二章從研究任務著手,選擇符合設計要求的常用芯片及其它元器件,詳細論述了各接口電路的設計與連接,以模塊化的形式,整合數(shù)字化時鐘硬件的
11、設計從小到大,從局部到整體,循序漸進,最終實現(xiàn)一個功能齊全的數(shù)字化時鐘系統(tǒng)。第三章根據(jù)系統(tǒng)設計要求,著手對數(shù)字化時鐘系統(tǒng)軟件進行功能的實現(xiàn),將各功能模塊有機結(jié)合,實現(xiàn)時鐘走時,實現(xiàn)鬧鈴、整點報時附加功能。第四章按照設計思路,在聯(lián)機調(diào)試過程中,對時鐘系統(tǒng)的不足和缺點進行分析,將調(diào)試過程作重點的記錄。第五章對全文的總結(jié),對本系統(tǒng)功能實現(xiàn)以及制作過程中需要注意的方面,及整個系統(tǒng)軟件編寫中所吸取的經(jīng)驗教訓進行論述,同時,也對整個研究應用進行展望。第二章 編程軟件及語言介紹2.1 Quarters II編程環(huán)境介紹運行環(huán)境設計采用quartus II軟件實現(xiàn),因此針對軟件需要用到的一些功能在這里進行描述
12、.Quartus II軟件界面簡單易操作,如下圖2.1:圖2.1Quartus II軟件界面圖2.1.1 菜單欄1) 【File】菜單Quartus II的【 File】菜單除具有文件管理的功能外,還有許多其他選項圖2.2Quartus II菜單欄圖(1)【New 】選項:新建工程或文件,其下還有子菜單【New Quartus II Project】選項:新建工程。 【Design File】選項:新建設計文件,常用的有:AHDL文本文件、VHDL文本文件、Verilog HDL文本文件、原理圖文件等。 【Vector Waveform Five】選項:矢量波形文件。 (2)【Open】選項:
13、打開一個文件。 (3)【New Project Wizard 】選項:創(chuàng)建新工程。點擊后彈出對話框。單擊對話框最上第一欄右側(cè)的“”按鈕,找到文件夾已存盤的文件,再單擊打開按鈕,既出現(xiàn)如圖所示的設置情況。對話框中第一行表示工程所在的工作庫文件夾,第二行表示此項工程的工程名,第三行表示頂層文件的實體名,一般與工程名相同。圖2.3Quartus II新建工程圖(4)【creat /update】選項:生成元件符號。可以將設計的電路封裝成一個元件符號,供以后在原理圖編輯器下進行層次設計時調(diào)用。 2) 【 View】菜單:進行全屏顯示或?qū)Υ翱谶M行切換,包括層次窗口、狀態(tài)窗口、消息窗口等。圖2.4Quar
14、tus II菜單欄全屏切換圖3) 【Assignments】菜單(1)【Device】選項:為當前設計選擇器件。 (2)【Pin】選項:為當前層次樹的一個或多個邏輯功能塊分配芯片引腳或芯片內(nèi)的位置。(3)【Timing Ananlysis Setting】選項:為當前設計的 tpd、tco、tsu、fmax等時間參數(shù)設定時序要求。 (4)【EDA tool setting】選項:EDA 設置工具。使用此工具可以對工程進行綜合、仿真、時序分析,等等。EDA 設置工具屬于第三方工具。 (5)【Setting】選項:設置控制。可以使用它對工程、文件、參數(shù)等進行修改,還可以設置編譯器、仿真器、時序分析
15、、功耗分析等。 (6)【assignment editor】選項:任務編輯器。 (7)【pin planner 】選項:可以使用它將所設計電路的 I/O 引腳合理的分配到已設定器件的引腳上。圖2.5Quartus II菜單欄設定引腳下拉圖4) 【processing】菜單【processing】菜單的功能是對所設計的電路進行編譯和檢查設計的正確性。 (1)【Stop process】選項:停止編譯設計項目。 (2)【Start Compilation】選項:開始完全編譯過程,這里包括分析與綜合、適配、裝配文件、定時分析、網(wǎng)表文件提取等過程。 (3)【analyze current file】選
16、項:分析當前的設計文件,主要是對當前設計文件的語法、語序進行檢查。 (4)【compilation report】選項:適配信息報告,通過它可以查看詳細的適配信息,包括設置和適配結(jié)果等。 (5)【start simulation】選項:開始功能仿真。 (6)【simulation report】選項:生成功能仿真報告。 (7)【compiler tool】選項:它是一個編譯工具,可以有選擇對項目中的各個文件進行分別編譯。 (8)【simulation tool】選項:對編譯過電路進行功能仿真和時序仿真。 (9)【classic timing analyzer tool】選項:classic時序
17、仿真工具。 (10)【powerplay power analyzer tool】選項:PowerPlay 功耗分析工具。 圖2.6Quartus II菜單欄運行下拉圖5) 【tools】菜單【tools 】菜單的功能是 (1)【run EDA simulation tool 】選項:運行EDA仿真工具,EDA是第三方仿真工具。 (2)【run EDA timing analyzer tool 】選項:運行EDA時序分析工具,EDA是第三方仿真工具。 (3)【Programmer 】選項:打開編程器窗口,以便對 Altera 的器件進行下載編程。圖2.7Quartus II仿真菜單下拉圖2.1
18、.2 工具欄 工具欄緊鄰菜單欄下方,它其實是各菜單功能的快捷按鈕組合區(qū)。2.8Quartus II菜單欄圖圖2.9Quartus II菜單欄按鍵功能圖2.1.3 功能仿真流程1、 新建仿真文件圖2.10Quartus II菜單欄新建文件夾圖2、 功能方正操作在菜單上點processing在下拉菜單中,如下圖:圖2.11Quartus II菜單欄processing下拉圖2.2 Verilog HDL語言介2.2.1 什么是verilog HDL語言Verilog HDL是一種硬件描述語言,用于從算法級、門級到開關級的多種抽象設計層次的數(shù)字系統(tǒng)建模。被建模的數(shù)字系統(tǒng)對象的復雜性可以介于簡單的門和
19、完整的電子數(shù)字系統(tǒng)之間。數(shù)字系統(tǒng)能夠按層次描述,并可在相同描述中顯式地進行時序建模。Verilog HDL 語言具有下述描述能力:設計的行為特性、設計的數(shù)據(jù)流特性、設計的結(jié)構(gòu)組成以及包含響應監(jiān)控和設計驗證方面的時延和波形產(chǎn)生機制。所有這些都使用同一種建模語言。此外,Verilog HDL語言提供了編程語言接口,通過該接口可以在模擬、驗證期間從設計外部訪問設計,包括模擬的具體控制和運行。Verilog HDL語言不僅定義了語法,而且對每個語法結(jié)構(gòu)都定義了清晰的模擬、仿真語義。因此,用這種語言編寫的模型能夠使用Ve rilog仿真器進行驗證。語言從C編程語言中繼承了多種操作符和結(jié)構(gòu)。Verilog
20、 HDL提供了擴展的建模能力,其中許多擴展最初很難理解。但是,Verilog HDL語言的核心子集非常易于學習和使用,這對大多數(shù)建模應用來說已經(jīng)足夠。當然,完整的硬件描述語言足以對從最復雜的芯片到完整的電子系統(tǒng)進行描述。2.2.2 主要功能下面列出的是Verilog硬件描述語言的主要能力:l 基本邏輯門,例如and、or和nan d等都內(nèi)置在語言中。l 用戶定義原語(UP)創(chuàng)建的靈活性。用戶定義的原語既可以是組合邏輯原語,也可以是時序邏輯原語。l 開關級基本結(jié)構(gòu)模型,例如pmos和nmos等也被內(nèi)置在語言中。l 提供顯式語言結(jié)構(gòu)指定設計中的端口到端口的時延及路徑時延和設計的時序檢查。l 可采用
21、三種不同方式或混合方式對設計建模。這些方式包括:行為描述方式使用過程化結(jié)構(gòu)建模;數(shù)據(jù)流方式使用連續(xù)賦值語句方式建模;結(jié)構(gòu)化方式使用門和模塊實例語句描述建模。l Verilog HDL中有兩類數(shù)據(jù)類型:線網(wǎng)數(shù)據(jù)類型和寄存器數(shù)據(jù)類型。線網(wǎng)類型表示構(gòu)件間的物理連線,而寄存器類型表示抽象的數(shù)據(jù)存儲元件。l 能夠描述層次設計,可使用模塊實例結(jié)構(gòu)描述任何層次。l 設計的規(guī)模可以是任意的;語言不對設計的規(guī)模(大?。┦┘尤魏蜗拗?。l Verilog HDL不再是某些公司的專有語言而是IEEE標準。l 人和機器都可閱讀Verilog語言,因此它可作為EDA的工具和設計者之間的交互語言。l Verilog HDL
22、語言的描述能力能夠通過使用編程語言接口(PLI)機制進一步擴展。PLI是允許外部函數(shù)訪問Verilog模塊內(nèi)信息、允許設計者與模擬器交互的例程集合。l 設計能夠在多個層次上加以描述,從開關級、門級、寄存器傳送級(RTL)到算法級,包括進程和隊列級。l 能夠使用內(nèi)置開關級原語在開關級對設計完整建模。l 同一語言可用于生成模擬激勵和指定測試的驗證約束條件,例如輸入值的指定。l Verilog HDL能夠監(jiān)控模擬驗證的執(zhí)行,即模擬驗證執(zhí)行過程中設計的值能夠被監(jiān)控和顯示。這些值也能夠用于與期望值比較,在不匹配的情況下,打印報告消息。l 在行為級描述中,Verilog HDL不僅能夠在RTL級上進行設計
23、描述,而且能夠在體系結(jié)構(gòu)級描述及其算法級行為上進行設計描述。l 能夠使用門和模塊實例化語句在結(jié)構(gòu)級進行結(jié)構(gòu)描述。l 如圖顯示了Verilog HDL的混合方式建模能力,即在一個設計中每個模塊均可以在不同設計層次上建模。l Verilog HDL還具有內(nèi)置邏輯函數(shù),例如&(按位與)和|(按位或)。l 對高級編程語言結(jié)構(gòu),例如條件語句、情況語句和循環(huán)語句,語言中都可以使用。l 可以顯式地對并發(fā)和定時進行建模。l 提供強有力的文件讀寫能力。l 語言在特定情況下是非確定性的,即在不同的模擬器上模型可以產(chǎn)生不同的結(jié)果;例如,事件隊列上的事件順序在標準中沒有定義。圖2.12混合設計層次圖第三章 數(shù)
24、字化時鐘系統(tǒng)硬件設計3.1 系統(tǒng)核心板電路分析本系統(tǒng)采用的開發(fā)平臺標配的核心板是QuickSOPC,可以實現(xiàn)EDA、SOP和DSP的實驗及研發(fā)。本系統(tǒng)采用QuickSOPC標準配置為Altera公司的EP1C6Q240C8芯片。(1) 核心板的硬件資源核心板采用4層板精心設計,采用120針接口。QuickSOPC核心板的硬件原理框圖如圖2-1所示:圖3.1 QuickSOPC硬件方塊圖(2) FPGA電路核心板QuickSOPC上所用的FPGA為Altera公司Cyclone系列的EP1C6Q240。EP1C6Q240包含有5980個邏輯單元和92Kbit的片上RAM。EP1C6Q240有18
25、5個用戶I/O口,封裝為240-Pin PQFP。核心板EP1C6Q240器件特性如表2-1。表3-1 核心EP1C6Q240器件特性:Hb7838電子-技術資料-電子元件-電路圖-技術應用網(wǎng)站-基本知識-原理-維修-作用-參數(shù)-電子元器件符號-各種圖紙?zhí)匦院诵陌錏P1C6Q240器件邏輯單元(LE)5980M4K RAM 塊20RAM總量(bit)92160PLL(個)2最大用戶I/O數(shù)(個)185配置二進制文件(.rbf)大?。╞it)1167216可選串行主動配置器件EPCS1/ EPCS4/ EPCS16(3) 配置電路Cyclone FPGA的配置方式包括:主動配置模式、被動配置模式
26、以及JTAG配置模式。本系統(tǒng)采用的是JTAG配置模式下載配置數(shù)據(jù)到FPGA。通過JTAG結(jié)果,利用Quartus II軟件可以直接對FPGA進行單獨的硬件重新配置。Quartus II軟件在編譯時會自動生成用于JTAG配置的.sof文件。Cyclone FPGA設計成的JTAG指令比其他任何器件操作模式的優(yōu)先級都高,因此JTAG配置可隨時進行而不用等待其他配置模式完成。JTAG模式使用4個專門的信號引腳:TDI、TDO、TMS以及TCK。JTAG的3個輸入腳TDI、TMS和TCK具有內(nèi)部弱上拉,上拉電阻大約為25k。在JGTA進行配置的時候,所有用戶I/O扣都為高阻態(tài)。(4) 時鐘電路FPGA
27、內(nèi)部沒振蕩電路,使用有源晶振是比較理想的選擇。EP1C6Q240C8的輸入的時鐘頻率范圍為15.625387MHz,經(jīng)過內(nèi)部的PLL電路后可輸出15.625275MHz的系統(tǒng)時鐘。當輸入時鐘頻率較低時,可以使用FPGA的內(nèi)部PLL調(diào)整FPGA所需的系統(tǒng)時鐘,使系統(tǒng)運行速度更快。核心板包含一個48MHz的有源晶振作為系統(tǒng)的時鐘源。如圖2-2所示。為了得到一個穩(wěn)定、精確的時鐘頻率,有源晶振的供電電源經(jīng)過了LC濾波。本系統(tǒng)硬件整體設計框圖如圖2-3所示:圖3.2數(shù)字時鐘系統(tǒng)硬件電路總體框圖3.2 系統(tǒng)主板電路分析3.2.1 時鐘模塊電路FPGA內(nèi)部沒振蕩電路,使用有源晶振是比較理想的選擇。EP1C6
28、Q240C8的輸入的時鐘頻率范圍為15.625387MHz,經(jīng)過內(nèi)部的PLL電路后可輸出15.625275MHz的系統(tǒng)時鐘。當輸入時鐘頻率較低時,可以使用FPGA的內(nèi)部PLL調(diào)整FPGA所需的系統(tǒng)時鐘,使系統(tǒng)運行速度更快。核心板包含一個50MHz的有源晶振作為系統(tǒng)的時鐘源。為了得到一個穩(wěn)定、精確的時鐘頻率,有源晶振的供電電源經(jīng)過了LC濾波。圖3.3 系統(tǒng)時鐘電路圖3.2.2 顯示電路由于本設計需要顯示時間信息包括:時、分、秒,顯所以采用主板上七段數(shù)碼管顯示電路與系統(tǒng)連接實現(xiàn)顯示模塊的功能。主板上七段數(shù)碼管顯示電路如圖2-4 所示,RP4和 RP6 是段碼上的限流電阻,位碼由于電流較大,采用了三
29、極管驅(qū)動。圖3.4七段數(shù)碼管顯示電路圖數(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ù)點) ,只要公共端為高電平“1” ,某個段輸出低電平“0”則相應的段就亮。 圖3.5七段數(shù)碼管顯示電路圖從電路可以看出,數(shù)碼管是共陽的,當位碼驅(qū)動信號為 0時,對應的數(shù)碼管才能操作;當段碼驅(qū)動
30、信號為 0 時,對應的段碼點亮。3.2.3 鍵盤控制電路鍵盤控制電路要實現(xiàn)時鐘系統(tǒng)調(diào)時的功能和鬧鈴開關的功能。本設計采用主板上的獨立鍵盤來實現(xiàn)這兩個功能。當鍵盤被按下是為“0”,未被按下是為“1”。電路連接圖如圖2-6所示。電路中為了防止FPGA的I/O設為輸出且為高電平在按鍵下直接對地短路,電阻RP9、RP10對此都能起到保護作用。圖3.6 鍵盤電路圖3.2.4 蜂鳴電路設計如圖2-7所示,蜂鳴器使用 PNP三極管進行驅(qū)動控制,蜂鳴器使用的是交流蜂鳴器。當在 BEEP輸入一定頻率的脈沖時,蜂鳴器蜂鳴,改變輸入頻率可以改變蜂鳴器的響聲。因此可以利用一個 PWM 來控制 BEEP,通過改變 PW
31、M 的頻率來得到不同的聲響,也可以用來播放音樂。若把 JP7斷開,Q4 截止,蜂鳴器停止蜂鳴。圖3.7蜂鳴電路圖第四章 數(shù)字化時鐘系統(tǒng)軟件設計4.1 整體方案介紹4.1.1 整體設計描述設計中的數(shù)字時鐘,帶有按鍵校準,定點報時,數(shù)碼管顯示等功能。因此數(shù)字時鐘所包含的模塊可分為,分頻模塊,按鍵模塊,計時校準模塊,鬧鐘模塊,LED顯示模塊,模塊之間的關系下圖:圖4.1整體模塊框圖針對框圖流程,設定出各個模塊的需求:1、 分頻電路:針對計時器模塊與鬧鐘設定模塊的需求,可以知道分頻模塊需要生成一個1Hz的頻率信號,確保計時模塊可以正常計數(shù)。2、 計時器模塊:計數(shù)模塊的作用是收到分頻模塊1Hz頻率的信號
32、線,能進行正確計時,并且可以通過按鍵進行時間的修改,且當整點時,給蜂鳴器產(chǎn)生使能信號,進行整點報時,播放音樂。3、 鬧鐘設定模塊:可根據(jù)按鍵的設定鬧鐘的時間,當計時模塊的時間與鬧鐘設定模塊的時間相等的時候,給蜂鳴器一個使能信號,蜂鳴器鬧鈴。4、 蜂鳴器模塊:根據(jù)計時模塊,鬧鐘模塊給出的使能信號,判定蜂鳴器是整點報時,還是鬧鐘響鈴。整點報時會播放音樂,鬧鐘時嘀嘀嘀報警。5、 LED顯示模塊:根據(jù)實際的需求顯示計時模塊的時間,還是鬧鐘設定模塊的時間,8個七段碼LED數(shù)碼管,進行掃描方式顯示數(shù)據(jù)。4.1.2 整體信號定義對整個模塊進行信號定義。接口及寄存器定義module clock(clk,key
33、,dig,seg,beep);/ 模塊名 clock input clk; / 輸入時鐘 input 4:0 key; /輸入按鍵 ,key3:0分別為秒,分鐘,小時的增加按鍵。Key4為鬧鐘設置按鍵,key5為校準設置按鍵。output 7:0 dig; / 數(shù)碼管選擇輸出引腳 aoutput 7:0 seg; / 數(shù)碼管段輸出引腳output beep;/蜂鳴器輸出端 reg 7:0 seg_r = 8'h0; /定義數(shù)碼管輸出寄存器 reg 7:0 dig_r; /定義數(shù)碼管選擇輸出寄存器 reg 3:0 disp_dat;/ 定義顯示數(shù)據(jù)寄存器 reg 8:0 count1;
34、/定義計數(shù)寄存器reg 14:0 count; /定義計數(shù)中間寄存器 reg 23:0 hour = 24'h235956; / 定義現(xiàn)在時刻寄存器 reg 23:0 clktime = 24'h000000;/定義設定鬧鐘reg 1:0 keyen = 2'b11; / 定義標志位 reg 4:0 dout1 = 5'b11111;reg 4:0 dout2 = 5'b11111;reg 4:0 dout3 = 5'b11111;/ 寄存器 wire 4:0 key_done; / 按鍵消抖輸出 reg 15:0 beep_count = 16
35、'h0;/蜂鳴器寄存器reg 15:0 beep_count_end = 16'hffff; /蜂鳴器截止寄存器reg clktime_en = 1'b1;/鬧鐘使能寄存器reg sec ;/1秒時鐘reg clk1;/1ms時鐘reg beep_r;/寄存器 wire beepen;/鬧鐘使能信號4.1.3 模塊框圖通過quartus II的creat symble for current file功能生成框圖如下:圖4.2生成的符號圖分頻模塊實現(xiàn),計數(shù)電路所需時鐘信號為1HZ,而系統(tǒng)時鐘為48MHZ,所以要對系統(tǒng)時鐘進行分頻以來滿足電路的需要。4.2 分頻模塊實現(xiàn)4
36、.2.1 分頻模塊描述對于分頻模塊,關鍵是生成個1Hz的時鐘信號??紤]到仿真的需要,模塊中間生成1個1kHz的時鐘信號。1Hz的信號的產(chǎn)生用來產(chǎn)生時鐘的秒脈沖,框圖如下圖4.2:圖4.3分頻模塊圖4.2.2 分頻模塊設計本系統(tǒng)程序設計時鐘的準確與否主要取決于秒脈沖的精確度。為了保證計時準確,我們對系統(tǒng)時鐘48MHz進行了48000分頻生成1kHz信號clk1,在通過1kHz信號,生成1Hz信號clk。/1ms信號產(chǎn)生部分 always (posedge clk) / 定義 clock 上升沿觸發(fā) begin count = count + 1'b1; if(count = 15'
37、;d24000) /0.5mS到了嗎? begin count = 15'd0; /計數(shù)器清零 clk1 = clk1; /置位秒標志 end end/秒信號產(chǎn)生部分 always (posedge clk1) / 定義 clock 上升沿觸發(fā) begin count1 = count1 + 1'b1; if(count1 = 9'd500) /0.5S到了嗎? begin count1 = 9'd0; /計數(shù)器清零 sec = sec; /置位秒標志 endEnd4.2.3 分頻模塊仿真通過設置功能仿真,檢查代碼的正確性1、 仿真結(jié)果圖4.4 分頻模塊波形仿真
38、圖右上圖可以知道,計數(shù)寄存器count累加到23999時,重新變?yōu)?,共計數(shù)了24000個值。觸發(fā)clk1跳變,使得count1加一,count1累加到499的時候,下一個數(shù)據(jù)為0,共技術500個值。所以,sec信號的頻率為1Hz,滿足設計要求。4.3 計時模塊實現(xiàn)4.3.1 計時模塊描述與實現(xiàn)計時模塊是采用16進制來實現(xiàn)的,將hour23,0定義為其時分秒,其中hour3,0為其秒鐘上的個位數(shù)值,hour4,7為其秒鐘上的十位數(shù)值,以此類推分鐘、時鐘的個位和十位。當clk脈沖過來時,秒個位hour3,0便開始加1,當加到9時,秒十位加1,與此同時秒個位清零,繼續(xù)加1。當秒十位hour7,4為
39、5秒個位為9時(即59秒),分個位hour11,8加1,與此同時秒個位和秒十位都清零。以此類推,當分十位hour15,12為5和分個位為9時(即59分),時個位加1,與此同時分個位hour19,16和分十位都清零。當時分十位23,20為2和分個位為4,全部清零,開始重新計時。從功能上講分別為模60計數(shù)器,模60計數(shù)器和模24計數(shù)器。/時間計算及校準部分always (negedge sec)/計時處理 begin hour3:0 = hour3:0 + 1'b1; /秒加 1 if(hour3:0 >= 4'ha) /加到10,復位begin hour3:0 = 4
40、9;h0; hour7:4 = hour7:4 + 1'b1; / 秒的十位加一 if(hour7:4 >= 4'h6) /加到6,復位begin hour7:4 = 4'h0; hour11:8 = hour11:8 + 1'b1;/分個位加一 if(hour11:8 >= 4'ha) /加到10,復位begin hour11:8 = 4'h0; hour15:12 = hour15:12 + 1'b1;/分十位加一 if(hour15:12 >= 4'h6) /加到6,復位begin hour15:12 =
41、4'h0; hour19:16 = hour19:16 + 1'b1;/時個位加一 if(hour19:16 >= 4'ha) /加到10,復位begin hour19:16 = 4'h0; hour23:20 = hour23:20 + 1'b1;/時十位加一 end if(hour23:16 >= 8'h24) /加到24,復位 hour23:16 = 8'h0; end end end end end end 4.3.2 計時模塊仿真對計時模塊進行仿真,記錄仿真波形圖4.5 計時模塊仿真圖由上圖可見,當sec信號下降沿跳
42、變時,hour寄出去會加1,也就相當于跳了一秒鐘時間。當hour的時間為235959是,下一個計數(shù)器的值為000000,hour寄存器歸零,相當于半夜0點的時刻。仿真的結(jié)果達到預期,通過。4.4 按鍵處理模塊實現(xiàn)4.4.1 按鍵處理模塊描述框圖如下圖4.4:圖4.6按鍵控制功能圖模塊講計時部分和時間調(diào)整部分整合到一起,正常態(tài)的時候,時間正常運行,當key5被按下時,進入時間校準,可以通過key2:0三個鍵,分別對秒,分,時進行加1操作,從而進行時間校準。當key3被按下時,進入鬧鐘設定,可以通過key2:0三個鍵,分別對秒,分,時進行加1操作,從而進行鬧鐘的設定。圖4.7 按鍵模塊仿真圖通過按
43、鍵key進行仿真控制,可以發(fā)現(xiàn)clktime會隨著按鍵的按下,分別有時鐘,分鐘秒鐘加1,仿真結(jié)果滿足設計要求。4.4.2 按鍵去抖處理模塊設計按鍵模塊實現(xiàn)去抖處理,及乒乓按鍵設計,確保后面的計時模塊與鬧鐘模塊的功能實現(xiàn)。assign key_done = key|dout3; / 按鍵消抖輸出 always (posedge count15) /按鍵去噪聲begin dout1 <= key; dout2 <= dout1; dout3 <= dout2;/連續(xù)賦值endalways (negedge key_done4) begin keyen1 = keyen1; /校準
44、按鍵轉(zhuǎn)換乒乓按鍵endalways (negedge key_done3) begin keyen0 = keyen0; /定時按鍵轉(zhuǎn)換乒乓按鍵End4.4.3 按鍵模塊去抖仿真對于按鍵去抖動仿真,同樣才用功能仿真方式,這里不再重復設置與操作,如同上面的分頻模塊進行設置并進行仿真。Key寄存器為輸入按鍵,初始化電路為高電平,當有按鍵按下去的時候,變?yōu)榈碗娖?。因此改變key的值,觀察仿真結(jié)果是否正確。功能仿真,記錄仿真結(jié)果,如下圖:圖4.8 按鍵模塊仿真圖通過上圖可以知道,key_done會隨著key的變化而發(fā)生相應的變化,并有消除噪聲的作用,功能仿真正確,達到設計目的。4.5 鬧鐘模塊實現(xiàn)4.
45、5.1 鬧鐘模塊設計本設計中,判斷鬧鈴時間到,是通過判定時鐘系統(tǒng)實時時間的時鐘與分鐘是否分別等于設定的鬧鈴時間的時鐘、分鐘、秒鐘。當時間(hour23:0)等于設定的鬧鐘時間(clktime23:0)時,鬧鐘觸發(fā)時,播放嘀嘀嘀報警聲,鬧鐘會響10秒的時間(clktime23:0+10 >=hour23:0)。正常情況下,鬧鈴時間到會進行為時1分鐘的蜂鳴報時,可以通過按下鬧鐘按鍵key3使其停止。當鬧鈴設置為整點是,會先進行整點報時,然后進入鬧鈴。圖4.9 鬧鐘控制鍵功能圖4.5.2 鬧鐘設定模塊仿真圖4.10 鬧鐘模塊仿真圖通過按鍵key進行仿真控制,可以發(fā)現(xiàn)clktime會隨著按鍵的按
46、下,分別有時鐘,分鐘秒鐘加1,仿真結(jié)果滿足設計要求。4.6 蜂鳴器模塊實現(xiàn)4.6.1 蜂鳴器模塊描述蜂鳴器模塊負責整點報時,和鬧鈴的時候進行出聲的作用。整點報時的時候,播放音樂,10秒音樂播報完后停止整點報時。鬧鐘觸發(fā)時,播放嘀嘀嘀報警聲。當鬧鈴設置為整點是,會先進行整點報時,然后進入鬧鈴。當鬧鐘設定鍵被按下,響起的蜂鳴聲會被屏蔽。模塊框圖如下圖4.9:4.6.2 蜂鳴器模塊實現(xiàn)/蜂鳴器的計數(shù)定時器always(posedge clk) begin beep_count = beep_count + 1'b1; /計數(shù)器加 1 if(beep_count = beep_count_en
47、d)&&(!(beep_count_end = 16'hffff) begin beep_count = 16'h0; /計數(shù)器清零 beep_r = beep_r; /取反輸出信號 end end always (posedge clk) beginif (!beepen)case(hour3:0) /整點報時音樂內(nèi)容4'h0:beep_count_end = 16'h6a88; /中音 6 的分頻系數(shù)值 4'h1:beep_count_end = 16'h8637; /中音 4 的分頻系數(shù)值4'h2:beep_coun
48、t_end = 16'h7794; /中音 5 的分頻系數(shù)值 4'h3:beep_count_end = 16'hb327; /中音 1 的分頻系數(shù)值 4'h5:beep_count_end = 16'hb327; /中音 1 的分頻系數(shù)值 4'h6:beep_count_end = 16'h7794; /中音 5 的分頻系數(shù)值 4'h7:beep_count_end = 16'h6a88; /中音 6 的分頻系數(shù)值 4'h8:beep_count_end = 16'h8637; /中音 4 的分頻系數(shù)值d
49、efault:beep_count_end = 16'hffff; /其他情況無聲endcaseelse if (!clktime_en)begincase(count18:5)/鬧鐘嘀嘀嘀聲內(nèi)容4'h0,4'h2,4'h6,4'h8:beep_count_end = 16'h2f74; /高音 7 的分頻系數(shù)值 default:beep_count_end = 16'hffff; /其他情況不出聲endcaseendelsebeep_count_end = 16'hffff;end/鬧鈴使能控制always (posedge c
50、lk) beginif (!keyen0)/判斷鬧鈴是否有取消clktime_en = 1'b1;/鬧鈴響起后,需要手動關閉鬧鈴else if (clktime23:0 <= hour23:0)&(clktime23:0+10 >=hour23:0)/鬧鈴過一點時間,自動關閉。clktime_en = 1'b0;end4.6.3 蜂鳴器模塊仿真功能仿真,記錄波形圖:圖4.11蜂鳴器模塊仿真圖通過上圖可以看出來,當hour與clktime相等時,鬧鈴被觸發(fā),經(jīng)過一段時間后,鬧鈴停止工作,設計滿足要求。4.7 顯示模塊實現(xiàn)4.7.1 顯示模塊描述此設計中的LED
51、七段數(shù)碼管顯示模塊主要顯示時間的時、分、秒信息,數(shù)碼管為共陽的。在此設計中占非常重要的地位,它是確保時間能直觀呈現(xiàn)的橋梁。在設計過程中,首先進行程序編寫和調(diào)試的應該是顯示模塊。下面輸入的端口為鬧鐘設定鍵被按下,七段數(shù)碼管會顯示鬧鐘設定情況下數(shù)碼管所對應的數(shù)字。正常時間情況、鬧鐘設定以及查看鬧鐘所設定好的時間都是同樣的原理,當他們被按下數(shù)碼管會顯示對應的模式相應的數(shù)字。圖4.12顯示模塊圖4.7.2 顯示模塊實現(xiàn)/數(shù)碼管顯示內(nèi)容always (posedge clk)begincase(keyen0,count13:1) /選擇掃描顯示數(shù)據(jù) 4'd0:disp_dat = clktime
52、3:0;/秒個位 4'd1:disp_dat = clktime7:4;/秒十位 4'd2:disp_dat = 4'ha;/顯示"-" 4'd3:disp_dat = clktime11:8;/分個位 4'd4:disp_dat = clktime15:12;/分十位 4'd5:disp_dat = 4'ha;/顯示"-" 4'd6:disp_dat = clktime19:16;/時個位 4'd7:disp_dat = clktime23:20;/時十位 4'd8:dis
53、p_dat = hour3:0;/秒個位 4'd9:disp_dat = hour7:4;/秒十位 4'd10:disp_dat = 4'ha;/顯示"-" 4'd11:disp_dat = hour11:8; /分個位 4'd12:disp_dat = hour15:12; /分十位 4'd13:disp_dat = 4'ha;/顯示"-" 4'd14:disp_dat = hour19:16; /時個位 4'd15:disp_dat = hour23:20; /時十位 default:disp_dat = 4'ha;/顯示"-" endcase/數(shù)碼管選擇case(count13:1) /選擇數(shù)碼管顯示位 3'd0:dig_r = 8'b11111110; /選擇第一個數(shù)碼管顯示 3'd1:dig_r = 8'b11111101; /選擇第二個數(shù)碼管顯示 3'd2:dig_r = 8'b11111011; /選擇第三個數(shù)碼管顯示 3'd3:dig_r = 8'b11110111; /選擇第四個數(shù)碼管顯示 3'd4:dig_r = 8'b1110111
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云計算建設項目服務合同
- 事業(yè)單位與員工停薪留職合同范本
- 個人車位交易合同范例
- 個人企業(yè)房屋租賃合同模板
- 個人車庫使用權(quán)轉(zhuǎn)讓合同
- 個人財產(chǎn)保管合同范本
- 中小學教師聘用合同范本
- 業(yè)務合作合同范例
- 個人土地承包經(jīng)營權(quán)合同書樣本
- 產(chǎn)品定制與采購合同
- 蘇州2025年江蘇蘇州太倉市高新區(qū)(科教新城婁東街道陸渡街道)招聘司法協(xié)理員(編外用工)10人筆試歷年參考題庫附帶答案詳解
- 搞笑小品劇本《大城小事》臺詞完整版
- 物業(yè)服務和后勤運輸保障服務總體服務方案
- 人大代表小組活動計劃人大代表活動方案
- 《大模型原理與技術》全套教學課件
- 2023年護理人員分層培訓、考核計劃表
- 《銷售培訓實例》課件
- 2025年四川省新高考八省適應性聯(lián)考模擬演練(二)地理試卷(含答案詳解)
- 【經(jīng)典文獻】《矛盾論》全文
- Vue3系統(tǒng)入門與項目實戰(zhàn)
- 2024年寧夏回族自治區(qū)中考英語試題含解析
評論
0/150
提交評論