版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、摘 要本設(shè)計為一個多功能的數(shù)字時鐘,具有時、分、秒計數(shù)顯示功能,以24小時循環(huán)計數(shù);具有校對功能。 本設(shè)計采用eda技術(shù),以硬件描述語言verilog hdl為系統(tǒng)邏輯描述語言設(shè)計文件,在quartusii工具軟件環(huán)境下,采用自頂向下的設(shè)計方法,由各個基本模塊共同構(gòu)建了一個基于fpga的數(shù)字鐘。系統(tǒng)由時鐘模塊、控制模塊、計時模塊、數(shù)據(jù)譯碼模塊、顯示以及組成。經(jīng)編譯和仿真所設(shè)計的程序,在可編程邏輯器件上下載驗證,本系統(tǒng)能夠完成時、分、秒的分別顯示,按鍵進行校準,整點報時,鬧鐘功能。關(guān)鍵詞:數(shù)字時鐘,硬件描述語言,verilog hdl,fpgaabstractthe 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)硬件設(shè)計133.1系統(tǒng)核心板電路分析133.2系統(tǒng)主板電路分析153.2.1時鐘模塊電路153.2.2顯示電路153.2.3鍵盤控制電路173.2.4蜂鳴電路設(shè)計17第四章數(shù)字化時鐘系統(tǒng)軟件設(shè)計184.1整體方案介紹184.1.1整體設(shè)計描述184.1.2整體信號定義194.1.3模塊框圖204.2分頻模塊實現(xiàn)204.2.1分頻模塊描述20
6、4.2.2分頻模塊設(shè)計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按鍵去抖處理模塊設(shè)計244.4.3按鍵模塊去抖仿真244.5鬧鐘模塊實現(xiàn)254.5.1鬧鐘模塊設(shè)計254.5.2鬧鐘設(shè)定模塊仿真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ù)字電子鐘已成為人們生活中的必需品。目前應(yīng)用的數(shù)字鐘不僅可以實現(xiàn)對年、月、日、時、分、秒的數(shù)字顯示,還能實現(xiàn)對電子鐘所在地點的溫度顯示和智能鬧鐘功能,廣泛應(yīng)用于車站、醫(yī)院、機場、碼頭、廁所等公共場所的時間顯示。隨著現(xiàn)場可編程門陣列( field program-mable gate array ,fpga) 的出現(xiàn),電子系統(tǒng)向集成化、大規(guī)模和高速度等方向發(fā)展的趨勢更加明顯, 作為可編程的集成度較高
8、的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)較為方便。本課題使用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)品就是帶有擺或擺輪游絲的機械鐘或表。第二次革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時精度更高的石英電子鐘表,使鐘表的走時月差從分級縮小到秒級。第三次革命就是單片機數(shù)碼計時技術(shù)的應(yīng)用,使計時產(chǎn)品的走時日差從分級縮小到1/600萬秒,從原有傳統(tǒng)指針計時的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動日期、星期的顯示功
10、能,它更符合消費者的生活需求!因此,電子時鐘的出現(xiàn)帶來了鐘表計時業(yè)界跨躍性的進步。我國生產(chǎn)的電子時鐘有很多種,總體上來說以研究多功能電子時鐘為主,使電子時鐘除了原有的顯示時間基本功能外,還具有鬧鈴,報警等功能。商家生產(chǎn)的電子時鐘更從質(zhì)量,價格,實用上考慮,不斷的改進電子時鐘的設(shè)計,使其更加的具有市場。1.3. 論文結(jié)構(gòu)第一章詳細論述了近些年來,數(shù)字化時鐘系統(tǒng)研究領(lǐng)域的動態(tài)及整個數(shù)字化時鐘系統(tǒng)的發(fā)展狀況,同時分析了所面臨的問題與解決方案,從而提出了本論文的研究任務(wù)。第二章從研究任務(wù)著手,選擇符合設(shè)計要求的常用芯片及其它元器件,詳細論述了各接口電路的設(shè)計與連接,以模塊化的形式,整合數(shù)字化時鐘硬件的
11、設(shè)計從小到大,從局部到整體,循序漸進,最終實現(xiàn)一個功能齊全的數(shù)字化時鐘系統(tǒng)。第三章根據(jù)系統(tǒng)設(shè)計要求,著手對數(shù)字化時鐘系統(tǒng)軟件進行功能的實現(xiàn),將各功能模塊有機結(jié)合,實現(xiàn)時鐘走時,實現(xiàn)鬧鈴、整點報時附加功能。第四章按照設(shè)計思路,在聯(lián)機調(diào)試過程中,對時鐘系統(tǒng)的不足和缺點進行分析,將調(diào)試過程作重點的記錄。第五章對全文的總結(jié),對本系統(tǒng)功能實現(xiàn)以及制作過程中需要注意的方面,及整個系統(tǒng)軟件編寫中所吸取的經(jīng)驗教訓(xùn)進行論述,同時,也對整個研究應(yīng)用進行展望。第二章 編程軟件及語言介紹2.1 quarters ii編程環(huán)境介紹運行環(huán)境設(shè)計采用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】選項:新建設(shè)計文件,常用的有:ahdl文本文件、vhdl文本文件、verilog hdl文本文件、原理圖文件等。 【vector waveform five】選項:矢量波形文件。 (2)【open】選項:
13、打開一個文件。 (3)【new project wizard 】選項:創(chuàng)建新工程。點擊后彈出對話框。單擊對話框最上第一欄右側(cè)的“”按鈕,找到文件夾已存盤的文件,再單擊打開按鈕,既出現(xiàn)如圖所示的設(shè)置情況。對話框中第一行表示工程所在的工作庫文件夾,第二行表示此項工程的工程名,第三行表示頂層文件的實體名,一般與工程名相同。圖2.3quartus ii新建工程圖(4)【creat /update】選項:生成元件符號??梢詫⒃O(shè)計的電路封裝成一個元件符號,供以后在原理圖編輯器下進行層次設(shè)計時調(diào)用。 2) 【 view】菜單:進行全屏顯示或?qū)Υ翱谶M行切換,包括層次窗口、狀態(tài)窗口、消息窗口等。圖2.4quar
14、tus ii菜單欄全屏切換圖3) 【assignments】菜單(1)【device】選項:為當(dāng)前設(shè)計選擇器件。 (2)【pin】選項:為當(dāng)前層次樹的一個或多個邏輯功能塊分配芯片引腳或芯片內(nèi)的位置。(3)【timing ananlysis setting】選項:為當(dāng)前設(shè)計的 tpd、tco、tsu、fmax等時間參數(shù)設(shè)定時序要求。 (4)【eda tool setting】選項:eda 設(shè)置工具。使用此工具可以對工程進行綜合、仿真、時序分析,等等。eda 設(shè)置工具屬于第三方工具。 (5)【setting】選項:設(shè)置控制??梢允褂盟鼘こ獭⑽募?、參數(shù)等進行修改,還可以設(shè)置編譯器、仿真器、時序分析
15、、功耗分析等。 (6)【assignment editor】選項:任務(wù)編輯器。 (7)【pin planner 】選項:可以使用它將所設(shè)計電路的 i/o 引腳合理的分配到已設(shè)定器件的引腳上。圖2.5quartus ii菜單欄設(shè)定引腳下拉圖4) 【processing】菜單【processing】菜單的功能是對所設(shè)計的電路進行編譯和檢查設(shè)計的正確性。 (1)【stop process】選項:停止編譯設(shè)計項目。 (2)【start compilation】選項:開始完全編譯過程,這里包括分析與綜合、適配、裝配文件、定時分析、網(wǎng)表文件提取等過程。 (3)【analyze current file】選
16、項:分析當(dāng)前的設(shè)計文件,主要是對當(dāng)前設(shè)計文件的語法、語序進行檢查。 (4)【compilation report】選項:適配信息報告,通過它可以查看詳細的適配信息,包括設(shè)置和適配結(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是一種硬件描述語言,用于從算法級、門級到開關(guān)級的多種抽象設(shè)計層次的數(shù)字系統(tǒng)建模。被建模的數(shù)字系統(tǒng)對象的復(fù)雜性可以介于簡單的門和
19、完整的電子數(shù)字系統(tǒng)之間。數(shù)字系統(tǒng)能夠按層次描述,并可在相同描述中顯式地進行時序建模。verilog hdl 語言具有下述描述能力:設(shè)計的行為特性、設(shè)計的數(shù)據(jù)流特性、設(shè)計的結(jié)構(gòu)組成以及包含響應(yīng)監(jiān)控和設(shè)計驗證方面的時延和波形產(chǎn)生機制。所有這些都使用同一種建模語言。此外,verilog hdl語言提供了編程語言接口,通過該接口可以在模擬、驗證期間從設(shè)計外部訪問設(shè)計,包括模擬的具體控制和運行。verilog hdl語言不僅定義了語法,而且對每個語法結(jié)構(gòu)都定義了清晰的模擬、仿真語義。因此,用這種語言編寫的模型能夠使用ve rilog仿真器進行驗證。語言從c編程語言中繼承了多種操作符和結(jié)構(gòu)。verilog
20、 hdl提供了擴展的建模能力,其中許多擴展最初很難理解。但是,verilog hdl語言的核心子集非常易于學(xué)習(xí)和使用,這對大多數(shù)建模應(yīng)用來說已經(jīng)足夠。當(dāng)然,完整的硬件描述語言足以對從最復(fù)雜的芯片到完整的電子系統(tǒng)進行描述。2.2.2 主要功能下面列出的是verilog硬件描述語言的主要能力:l 基本邏輯門,例如and、or和nan d等都內(nèi)置在語言中。l 用戶定義原語(up)創(chuàng)建的靈活性。用戶定義的原語既可以是組合邏輯原語,也可以是時序邏輯原語。l 開關(guān)級基本結(jié)構(gòu)模型,例如pmos和nmos等也被內(nèi)置在語言中。l 提供顯式語言結(jié)構(gòu)指定設(shè)計中的端口到端口的時延及路徑時延和設(shè)計的時序檢查。l 可采用
21、三種不同方式或混合方式對設(shè)計建模。這些方式包括:行為描述方式使用過程化結(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 能夠描述層次設(shè)計,可使用模塊實例結(jié)構(gòu)描述任何層次。l 設(shè)計的規(guī)??梢允侨我獾?;語言不對設(shè)計的規(guī)模(大小)施加任何限制。l verilog hdl不再是某些公司的專有語言而是ieee標準。l 人和機器都可閱讀verilog語言,因此它可作為eda的工具和設(shè)計者之間的交互語言。l verilog hdl
22、語言的描述能力能夠通過使用編程語言接口(pli)機制進一步擴展。pli是允許外部函數(shù)訪問verilog模塊內(nèi)信息、允許設(shè)計者與模擬器交互的例程集合。l 設(shè)計能夠在多個層次上加以描述,從開關(guān)級、門級、寄存器傳送級(rtl)到算法級,包括進程和隊列級。l 能夠使用內(nèi)置開關(guān)級原語在開關(guān)級對設(shè)計完整建模。l 同一語言可用于生成模擬激勵和指定測試的驗證約束條件,例如輸入值的指定。l verilog hdl能夠監(jiān)控模擬驗證的執(zhí)行,即模擬驗證執(zhí)行過程中設(shè)計的值能夠被監(jiān)控和顯示。這些值也能夠用于與期望值比較,在不匹配的情況下,打印報告消息。l 在行為級描述中,verilog hdl不僅能夠在rtl級上進行設(shè)計
23、描述,而且能夠在體系結(jié)構(gòu)級描述及其算法級行為上進行設(shè)計描述。l 能夠使用門和模塊實例化語句在結(jié)構(gòu)級進行結(jié)構(gòu)描述。l 如圖顯示了verilog hdl的混合方式建模能力,即在一個設(shè)計中每個模塊均可以在不同設(shè)計層次上建模。l verilog hdl還具有內(nèi)置邏輯函數(shù),例如&(按位與)和|(按位或)。l 對高級編程語言結(jié)構(gòu),例如條件語句、情況語句和循環(huán)語句,語言中都可以使用。l 可以顯式地對并發(fā)和定時進行建模。l 提供強有力的文件讀寫能力。l 語言在特定情況下是非確定性的,即在不同的模擬器上模型可以產(chǎn)生不同的結(jié)果;例如,事件隊列上的事件順序在標準中沒有定義。圖2.12混合設(shè)計層次圖第三章 數(shù)字化時鐘
24、系統(tǒng)硬件設(shè)計3.1 系統(tǒng)核心板電路分析本系統(tǒng)采用的開發(fā)平臺標配的核心板是quicksopc,可以實現(xiàn)eda、sop和dsp的實驗及研發(fā)。本系統(tǒng)采用quicksopc標準配置為altera公司的ep1c6q240c8芯片。(1) 核心板的硬件資源核心板采用4層板精心設(shè)計,采用120針接口。quicksopc核心板的硬件原理框圖如圖2-1所示:圖3.1 quicksopc硬件方塊圖(2) fpga電路核心板quicksopc上所用的fpga為altera公司cyclone系列的ep1c6q240。ep1c6q240包含有5980個邏輯單元和92kbit的片上ram。ep1c6q240有185個用戶
25、i/o口,封裝為240-pin pqfp。核心板ep1c6q240器件特性如表2-1。表3-1 核心ep1c6q240器件特性:特性核心板ep1c6q240器件邏輯單元(le)5980m4k ram 塊20ram總量(bit)92160pll(個)2最大用戶i/o數(shù)(個)185配置二進制文件(.rbf)大小(bit)1167216可選串行主動配置器件epcs1/ epcs4/ epcs16(3) 配置電路cyclone fpga的配置方式包括:主動配置模式、被動配置模式以及jtag配置模式。本系統(tǒng)采用的是jtag配置模式下載配置數(shù)據(jù)到fpga。通過jtag結(jié)果,利用quartus ii軟件可以
26、直接對fpga進行單獨的硬件重新配置。quartus ii軟件在編譯時會自動生成用于jtag配置的.sof文件。cyclone fpga設(shè)計成的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內(nèi)部沒振蕩電路,使用有源晶振是比較理想的選擇。ep1c6q240c8的輸入的時鐘頻率范圍為15.625387mhz,經(jīng)過內(nèi)部的
27、pll電路后可輸出15.625275mhz的系統(tǒng)時鐘。當(dāng)輸入時鐘頻率較低時,可以使用fpga的內(nèi)部pll調(diào)整fpga所需的系統(tǒng)時鐘,使系統(tǒng)運行速度更快。核心板包含一個48mhz的有源晶振作為系統(tǒng)的時鐘源。如圖2-2所示。為了得到一個穩(wěn)定、精確的時鐘頻率,有源晶振的供電電源經(jīng)過了lc濾波。本系統(tǒng)硬件整體設(shè)計框圖如圖2-3所示:圖3.2數(shù)字時鐘系統(tǒng)硬件電路總體框圖3.2 系統(tǒng)主板電路分析3.2.1 時鐘模塊電路fpga內(nèi)部沒振蕩電路,使用有源晶振是比較理想的選擇。ep1c6q240c8的輸入的時鐘頻率范圍為15.625387mhz,經(jīng)過內(nèi)部的pll電路后可輸出15.625275mhz的系統(tǒng)時鐘。當(dāng)
28、輸入時鐘頻率較低時,可以使用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è)計需要顯示時間信息包括:時、分、秒,顯所以采用主板上七段數(shù)碼管顯示電路與系統(tǒng)連接實現(xiàn)顯示模塊的功能。主板上七段數(shù)碼管顯示電路如圖2-4 所示,rp4和 rp6 是段碼上的限流電阻,位碼由于電流較大,采用了三極管驅(qū)動。圖3.4七段數(shù)碼管顯示電路圖數(shù)碼管 led顯示是工程項目中使用較廣的一種輸出顯示器件。常見的數(shù)管有共陰和 共陽 2
29、種。共陰數(shù)碼管是將 8 個發(fā)光二極管的陰極連接在一起作為公共端,而共陽數(shù)碼管是將 8 個發(fā)光二極管的陽極連接在一起作為公共端。公共端常被稱作位碼,而將其他的 8 位稱作段碼。如圖 2-5所示為共陽數(shù)碼管及其電路,數(shù)碼管有 8 個段分別為:h、g、f、e、d、c、b 和a(h 為小數(shù)點) ,只要公共端為高電平“1” ,某個段輸出低電平“0”則相應(yīng)的段就亮。 圖3.5七段數(shù)碼管顯示電路圖從電路可以看出,數(shù)碼管是共陽的,當(dāng)位碼驅(qū)動信號為 0時,對應(yīng)的數(shù)碼管才能操作;當(dāng)段碼驅(qū)動信號為 0 時,對應(yīng)的段碼點亮。3.2.3 鍵盤控制電路鍵盤控制電路要實現(xiàn)時鐘系統(tǒng)調(diào)時的功能和鬧鈴開關(guān)的功能。本設(shè)計采用主板上
30、的獨立鍵盤來實現(xiàn)這兩個功能。當(dāng)鍵盤被按下是為“0”,未被按下是為“1”。電路連接圖如圖2-6所示。電路中為了防止fpga的i/o設(shè)為輸出且為高電平在按鍵下直接對地短路,電阻rp9、rp10對此都能起到保護作用。圖3.6 鍵盤電路圖3.2.4 蜂鳴電路設(shè)計如圖2-7所示,蜂鳴器使用 pnp三極管進行驅(qū)動控制,蜂鳴器使用的是交流蜂鳴器。當(dāng)在 beep輸入一定頻率的脈沖時,蜂鳴器蜂鳴,改變輸入頻率可以改變蜂鳴器的響聲。因此可以利用一個 pwm 來控制 beep,通過改變 pwm 的頻率來得到不同的聲響,也可以用來播放音樂。若把 jp7斷開,q4 截止,蜂鳴器停止蜂鳴。圖3.7蜂鳴電路圖第四章 數(shù)字化
31、時鐘系統(tǒng)軟件設(shè)計4.1 整體方案介紹4.1.1 整體設(shè)計描述設(shè)計中的數(shù)字時鐘,帶有按鍵校準,定點報時,數(shù)碼管顯示等功能。因此數(shù)字時鐘所包含的模塊可分為,分頻模塊,按鍵模塊,計時校準模塊,鬧鐘模塊,led顯示模塊,模塊之間的關(guān)系下圖:圖4.1整體模塊框圖針對框圖流程,設(shè)定出各個模塊的需求:1、 分頻電路:針對計時器模塊與鬧鐘設(shè)定模塊的需求,可以知道分頻模塊需要生成一個1hz的頻率信號,確保計時模塊可以正常計數(shù)。2、 計時器模塊:計數(shù)模塊的作用是收到分頻模塊1hz頻率的信號線,能進行正確計時,并且可以通過按鍵進行時間的修改,且當(dāng)整點時,給蜂鳴器產(chǎn)生使能信號,進行整點報時,播放音樂。3、 鬧鐘設(shè)定模
32、塊:可根據(jù)按鍵的設(shè)定鬧鐘的時間,當(dāng)計時模塊的時間與鬧鐘設(shè)定模塊的時間相等的時候,給蜂鳴器一個使能信號,蜂鳴器鬧鈴。4、 蜂鳴器模塊:根據(jù)計時模塊,鬧鐘模塊給出的使能信號,判定蜂鳴器是整點報時,還是鬧鐘響鈴。整點報時會播放音樂,鬧鐘時嘀嘀嘀報警。5、 led顯示模塊:根據(jù)實際的需求顯示計時模塊的時間,還是鬧鐘設(shè)定模塊的時間,8個七段碼led數(shù)碼管,進行掃描方式顯示數(shù)據(jù)。4.1.2 整體信號定義對整個模塊進行信號定義。接口及寄存器定義module clock(clk,key,dig,seg,beep);/ 模塊名 clock input clk; / 輸入時鐘 input 4:0 key; /輸入
33、按鍵 ,key3:0分別為秒,分鐘,小時的增加按鍵。key4為鬧鐘設(shè)置按鍵,key5為校準設(shè)置按鍵。output 7:0 dig; / 數(shù)碼管選擇輸出引腳 aoutput 7:0 seg; / 數(shù)碼管段輸出引腳output beep;/蜂鳴器輸出端 reg 7:0 seg_r = 8h0; /定義數(shù)碼管輸出寄存器 reg 7:0 dig_r; /定義數(shù)碼管選擇輸出寄存器 reg 3:0 disp_dat;/ 定義顯示數(shù)據(jù)寄存器 reg 8:0 count1; /定義計數(shù)寄存器reg 14:0 count; /定義計數(shù)中間寄存器 reg 23:0 hour = 24h235956; / 定義現(xiàn)在
34、時刻寄存器 reg 23:0 clktime = 24h000000;/定義設(shè)定鬧鐘reg 1:0 keyen = 2b11; / 定義標志位 reg 4:0 dout1 = 5b11111;reg 4:0 dout2 = 5b11111;reg 4:0 dout3 = 5b11111;/ 寄存器 wire 4:0 key_done; / 按鍵消抖輸出 reg 15:0 beep_count = 16h0;/蜂鳴器寄存器reg 15:0 beep_count_end = 16hffff; /蜂鳴器截止寄存器reg clktime_en = 1b1;/鬧鐘使能寄存器reg sec ;/1秒時鐘r
35、eg 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.2.1 分頻模塊描述對于分頻模塊,關(guān)鍵是生成個1hz的時鐘信號??紤]到仿真的需要,模塊中間生成1個1khz的時鐘信號。1hz的信號的產(chǎn)生用來產(chǎn)生時鐘的秒脈沖,框圖如下圖4.2:圖4.3分頻模塊圖4.2.2 分頻模塊設(shè)計本系統(tǒng)
36、程序設(shè)計時鐘的準確與否主要取決于秒脈沖的精確度。為了保證計時準確,我們對系統(tǒng)時鐘48mhz進行了48000分頻生成1khz信號clk1,在通過1khz信號,生成1hz信號clk。/1ms信號產(chǎn)生部分 always (posedge clk) / 定義 clock 上升沿觸發(fā) begin count = count + 1b1; if(count = 15d24000) /0.5ms到了嗎? begin count = 15d0; /計數(shù)器清零 clk1 = clk1; /置位秒標志 end end/秒信號產(chǎn)生部分 always (posedge clk1) / 定義 clock 上升沿觸發(fā) b
37、egin count1 = count1 + 1b1; if(count1 = 9d500) /0.5s到了嗎? begin count1 = 9d0; /計數(shù)器清零 sec = sec; /置位秒標志 endend4.2.3 分頻模塊仿真通過設(shè)置功能仿真,檢查代碼的正確性1、 仿真結(jié)果圖4.4 分頻模塊波形仿真圖右上圖可以知道,計數(shù)寄存器count累加到23999時,重新變?yōu)?,共計數(shù)了24000個值。觸發(fā)clk1跳變,使得count1加一,count1累加到499的時候,下一個數(shù)據(jù)為0,共技術(shù)500個值。所以,sec信號的頻率為1hz,滿足設(shè)計要求。4.3 計時模塊實現(xiàn)4.3.1 計時模塊
38、描述與實現(xiàn)計時模塊是采用16進制來實現(xiàn)的,將hour23,0定義為其時分秒,其中hour3,0為其秒鐘上的個位數(shù)值,hour4,7為其秒鐘上的十位數(shù)值,以此類推分鐘、時鐘的個位和十位。當(dāng)clk脈沖過來時,秒個位hour3,0便開始加1,當(dāng)加到9時,秒十位加1,與此同時秒個位清零,繼續(xù)加1。當(dāng)秒十位hour7,4為5秒個位為9時(即59秒),分個位hour11,8加1,與此同時秒個位和秒十位都清零。以此類推,當(dāng)分十位hour15,12為5和分個位為9時(即59分),時個位加1,與此同時分個位hour19,16和分十位都清零。當(dāng)時分十位23,20為2和分個位為4,全部清零,開始重新計時。從功能上講
39、分別為模60計數(shù)器,模60計數(shù)器和模24計數(shù)器。/時間計算及校準部分always (negedge sec)/計時處理 begin hour3:0 = hour3:0 + 1b1; /秒加 1 if(hour3:0 = 4ha) /加到10,復(fù)位begin hour3:0 = 4h0; hour7:4 = hour7:4 + 1b1; / 秒的十位加一 if(hour7:4 = 4h6) /加到6,復(fù)位begin hour7:4 = 4h0; hour11:8 = hour11:8 + 1b1;/分個位加一 if(hour11:8 = 4ha) /加到10,復(fù)位begin hour11:8 =
40、 4h0; hour15:12 = hour15:12 + 1b1;/分十位加一 if(hour15:12 = 4h6) /加到6,復(fù)位begin hour15:12 = 4h0; hour19:16 = hour19:16 + 1b1;/時個位加一 if(hour19:16 = 4ha) /加到10,復(fù)位begin hour19:16 = 4h0; hour23:20 = hour23:20 + 1b1;/時十位加一 end if(hour23:16 = 8h24) /加到24,復(fù)位 hour23:16 = 8h0; end end end end end end 4.3.2 計時模塊仿真對
41、計時模塊進行仿真,記錄仿真波形圖4.5 計時模塊仿真圖由上圖可見,當(dāng)sec信號下降沿跳變時,hour寄出去會加1,也就相當(dāng)于跳了一秒鐘時間。當(dāng)hour的時間為235959是,下一個計數(shù)器的值為000000,hour寄存器歸零,相當(dāng)于半夜0點的時刻。仿真的結(jié)果達到預(yù)期,通過。4.4 按鍵處理模塊實現(xiàn)4.4.1 按鍵處理模塊描述框圖如下圖4.4:圖4.6按鍵控制功能圖模塊講計時部分和時間調(diào)整部分整合到一起,正常態(tài)的時候,時間正常運行,當(dāng)key5被按下時,進入時間校準,可以通過key2:0三個鍵,分別對秒,分,時進行加1操作,從而進行時間校準。當(dāng)key3被按下時,進入鬧鐘設(shè)定,可以通過key2:0三
42、個鍵,分別對秒,分,時進行加1操作,從而進行鬧鐘的設(shè)定。圖4.7 按鍵模塊仿真圖通過按鍵key進行仿真控制,可以發(fā)現(xiàn)clktime會隨著按鍵的按下,分別有時鐘,分鐘秒鐘加1,仿真結(jié)果滿足設(shè)計要求。4.4.2 按鍵去抖處理模塊設(shè)計按鍵模塊實現(xiàn)去抖處理,及乒乓按鍵設(shè)計,確保后面的計時模塊與鬧鐘模塊的功能實現(xiàn)。assign key_done = key|dout3; / 按鍵消抖輸出 always (posedge count15) /按鍵去噪聲begin dout1 = key; dout2 = dout1; dout3 =hour23:0)。正常情況下,鬧鈴時間到會進行為時1分鐘的蜂鳴報時,可以
43、通過按下鬧鐘按鍵key3使其停止。當(dāng)鬧鈴設(shè)置為整點是,會先進行整點報時,然后進入鬧鈴。圖4.9 鬧鐘控制鍵功能圖4.5.2 鬧鐘設(shè)定模塊仿真圖4.10 鬧鐘模塊仿真圖通過按鍵key進行仿真控制,可以發(fā)現(xiàn)clktime會隨著按鍵的按下,分別有時鐘,分鐘秒鐘加1,仿真結(jié)果滿足設(shè)計要求。4.6 蜂鳴器模塊實現(xiàn)4.6.1 蜂鳴器模塊描述蜂鳴器模塊負責(zé)整點報時,和鬧鈴的時候進行出聲的作用。整點報時的時候,播放音樂,10秒音樂播報完后停止整點報時。鬧鐘觸發(fā)時,播放嘀嘀嘀報警聲。當(dāng)鬧鈴設(shè)置為整點是,會先進行整點報時,然后進入鬧鈴。當(dāng)鬧鐘設(shè)定鍵被按下,響起的蜂鳴聲會被屏蔽。模塊框圖如下圖4.9:4.6.2 蜂
44、鳴器模塊實現(xiàn)/蜂鳴器的計數(shù)定時器always(posedge clk) begin beep_count = beep_count + 1b1; /計數(shù)器加 1 if(beep_count = beep_count_end)&(!(beep_count_end = 16hffff) begin beep_count = 16h0; /計數(shù)器清零 beep_r = beep_r; /取反輸出信號 end end always (posedge clk) beginif (!beepen)case(hour3:0) /整點報時音樂內(nèi)容4h0:beep_count_end = 16h6a88; /中
45、音 6 的分頻系數(shù)值 4h1:beep_count_end = 16h8637; /中音 4 的分頻系數(shù)值4h2:beep_count_end = 16h7794; /中音 5 的分頻系數(shù)值 4h3:beep_count_end = 16hb327; /中音 1 的分頻系數(shù)值 4h5:beep_count_end = 16hb327; /中音 1 的分頻系數(shù)值 4h6:beep_count_end = 16h7794; /中音 5 的分頻系數(shù)值 4h7:beep_count_end = 16h6a88; /中音 6 的分頻系數(shù)值 4h8:beep_count_end = 16h8637; /中
46、音 4 的分頻系數(shù)值default:beep_count_end = 16hffff; /其他情況無聲endcaseelse if (!clktime_en)begincase(count18:5)/鬧鐘嘀嘀嘀聲內(nèi)容4h0,4h2,4h6,4h8:beep_count_end = 16h2f74; /高音 7 的分頻系數(shù)值 default:beep_count_end = 16hffff; /其他情況不出聲endcaseendelsebeep_count_end = 16hffff;end/鬧鈴使能控制always (posedge clk) beginif (!keyen0)/判斷鬧鈴是否有
47、取消clktime_en = 1b1;/鬧鈴響起后,需要手動關(guān)閉鬧鈴else if (clktime23:0 =hour23:0)/鬧鈴過一點時間,自動關(guān)閉。clktime_en = 1b0;end4.6.3 蜂鳴器模塊仿真功能仿真,記錄波形圖:圖4.11蜂鳴器模塊仿真圖通過上圖可以看出來,當(dāng)hour與clktime相等時,鬧鈴被觸發(fā),經(jīng)過一段時間后,鬧鈴?fù)V构ぷ鳎O(shè)計滿足要求。4.7 顯示模塊實現(xiàn)4.7.1 顯示模塊描述此設(shè)計中的led七段數(shù)碼管顯示模塊主要顯示時間的時、分、秒信息,數(shù)碼管為共陽的。在此設(shè)計中占非常重要的地位,它是確保時間能直觀呈現(xiàn)的橋梁。在設(shè)計過程中,首先進行程序編寫和調(diào)試
48、的應(yīng)該是顯示模塊。下面輸入的端口為鬧鐘設(shè)定鍵被按下,七段數(shù)碼管會顯示鬧鐘設(shè)定情況下數(shù)碼管所對應(yīng)的數(shù)字。正常時間情況、鬧鐘設(shè)定以及查看鬧鐘所設(shè)定好的時間都是同樣的原理,當(dāng)他們被按下數(shù)碼管會顯示對應(yīng)的模式相應(yīng)的數(shù)字。圖4.12顯示模塊圖4.7.2 顯示模塊實現(xiàn)/數(shù)碼管顯示內(nèi)容always (posedge clk)begincase(keyen0,count13:1) /選擇掃描顯示數(shù)據(jù) 4d0:disp_dat = clktime3:0;/秒個位 4d1:disp_dat = clktime7:4;/秒十位 4d2:disp_dat = 4ha;/顯示- 4d3:disp_dat = clkti
49、me11:8;/分個位 4d4:disp_dat = clktime15:12;/分十位 4d5:disp_dat = 4ha;/顯示- 4d6:disp_dat = clktime19:16;/時個位 4d7:disp_dat = clktime23:20;/時十位 4d8:disp_dat = hour3:0;/秒個位 4d9:disp_dat = hour7:4;/秒十位 4d10:disp_dat = 4ha;/顯示- 4d11:disp_dat = hour11:8; /分個位 4d12:disp_dat = hour15:12; /分十位 4d13:disp_dat = 4ha;/
50、顯示- 4d14:disp_dat = hour19:16; /時個位 4d15:disp_dat = hour23:20; /時十位 default:disp_dat = 4ha;/顯示- endcase/數(shù)碼管選擇case(count13:1) /選擇數(shù)碼管顯示位 3d0:dig_r = 8b11111110; /選擇第一個數(shù)碼管顯示 3d1:dig_r = 8b11111101; /選擇第二個數(shù)碼管顯示 3d2:dig_r = 8b11111011; /選擇第三個數(shù)碼管顯示 3d3:dig_r = 8b11110111; /選擇第四個數(shù)碼管顯示 3d4:dig_r = 8b11101111; /選擇第五個數(shù)碼管顯示 3d5:dig_r =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度項目經(jīng)理環(huán)保責(zé)任合同范本3篇
- 2025年建筑公司合并合同3篇
- 江門2024年廣東江門幼兒師范高等專科學(xué)校輔導(dǎo)員招投標專員招聘3人筆試歷年參考題庫附帶答案詳解
- 2025年度金融行業(yè)風(fēng)險管理軟件銷售服務(wù)采購合同3篇
- 惠州2024年廣東惠州市第一婦幼保健院第三批聘用制工作人員招聘34人筆試歷年參考題庫附帶答案詳解
- 2025年度限價房項目回遷房買賣合同2篇
- 2025年浙江國企寧波市奉化區(qū)融媒文化發(fā)展有限公司招聘筆試參考題庫附帶答案詳解
- 2024年超聲波美容儀項目可行性研究報告
- 2025年浙江寧波市余姚市西南城建投資開發(fā)有限公司招聘筆試參考題庫附帶答案詳解
- 2024年蛋型碟蓋項目可行性研究報告
- 2024年黑河嫩江市招聘社區(qū)工作者考試真題
- 第22單元(二次函數(shù))-單元測試卷(2)-2024-2025學(xué)年數(shù)學(xué)人教版九年級上冊(含答案解析)
- 藍色3D風(fēng)工作總結(jié)匯報模板
- 安全常識課件
- 河北省石家莊市2023-2024學(xué)年高一上學(xué)期期末聯(lián)考化學(xué)試題(含答案)
- 小王子-英文原版
- 2024年江蘇省導(dǎo)游服務(wù)技能大賽理論考試題庫(含答案)
- 2024年中考英語閱讀理解表格型解題技巧講解(含練習(xí)題及答案)
- 新版中國食物成分表
- 浙江省溫州市溫州中學(xué)2025屆數(shù)學(xué)高二上期末綜合測試試題含解析
- 保安公司市場拓展方案-保安拓展工作方案
評論
0/150
提交評論