基于FPGA的數(shù)字時鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第1頁
基于FPGA的數(shù)字時鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第2頁
基于FPGA的數(shù)字時鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第3頁
基于FPGA的數(shù)字時鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第4頁
基于FPGA的數(shù)字時鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、摘 要本設(shè)計(jì)為一個多功能的數(shù)字時鐘,具有時、分、秒計(jì)數(shù)顯示功能,以24小時循環(huán)計(jì)數(shù);具有校對功能。 本設(shè)計(jì)采用eda技術(shù),以硬件描述語言verilog hdl為系統(tǒng)邏輯描述語言設(shè)計(jì)文件,在quartusii工具軟件環(huán)境下,采用自頂向下的設(shè)計(jì)方法,由各個基本模塊共同構(gòu)建了一個基于fpga的數(shù)字鐘。系統(tǒng)由時鐘模塊、控制模塊、計(jì)時模塊、數(shù)據(jù)譯碼模塊、顯示以及組成。經(jīng)編譯和仿真所設(shè)計(jì)的程序,在可編程邏輯器件上下載驗(yàn)證,本系統(tǒng)能夠完成時、分、秒的分別顯示,按鍵進(jìn)行校準(zhǔn),整點(diǎn)報時,鬧鐘功能。關(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è)計(jì)133.1系統(tǒng)核心板電路分析133.2系統(tǒng)主板電路分析153.2.1時鐘模塊電路153.2.2顯示電路153.2.3鍵盤控制電路173.2.4蜂鳴電路設(shè)計(jì)17第四章數(shù)字化時鐘系統(tǒng)軟件設(shè)計(jì)184.1整體方案介紹184.1.1整體設(shè)計(jì)描述184.1.2整體信號定義194.1.3模塊框圖204.2分頻模塊實(shí)現(xiàn)204.2.1分頻模塊描述20

6、4.2.2分頻模塊設(shè)計(jì)204.2.3分頻模塊仿真214.3計(jì)時模塊實(shí)現(xiàn)214.3.1計(jì)時模塊描述與實(shí)現(xiàn)214.3.2計(jì)時模塊仿真234.4按鍵處理模塊實(shí)現(xiàn)234.4.1按鍵處理模塊描述234.4.2按鍵去抖處理模塊設(shè)計(jì)244.4.3按鍵模塊去抖仿真244.5鬧鐘模塊實(shí)現(xiàn)254.5.1鬧鐘模塊設(shè)計(jì)254.5.2鬧鐘設(shè)定模塊仿真254.6蜂鳴器模塊實(shí)現(xiàn)254.6.1蜂鳴器模塊描述254.6.2蜂鳴器模塊實(shí)現(xiàn)264.6.3蜂鳴器模塊仿真274.7顯示模塊實(shí)現(xiàn)274.7.1顯示模塊描述274.7.2顯示模塊實(shí)現(xiàn)274.7.3顯示模塊仿真29第五章系統(tǒng)調(diào)試及運(yùn)行結(jié)果分析305.1硬件調(diào)試305.2軟件調(diào)

7、試315.3調(diào)試過程及結(jié)果315.4調(diào)試注意事項(xiàng)33第六章總結(jié)和展望345.5總結(jié)345.6展望34參考文獻(xiàn)35致 謝36附 錄37第一章 緒論1.1. 選題意義與研究現(xiàn)狀在這個時間就是金錢的年代里,數(shù)字電子鐘已成為人們生活中的必需品。目前應(yīng)用的數(shù)字鐘不僅可以實(shí)現(xiàn)對年、月、日、時、分、秒的數(shù)字顯示,還能實(shí)現(xiàn)對電子鐘所在地點(diǎn)的溫度顯示和智能鬧鐘功能,廣泛應(yīng)用于車站、醫(yī)院、機(jī)場、碼頭、廁所等公共場所的時間顯示。隨著現(xiàn)場可編程門陣列( field program-mable gate array ,fpga) 的出現(xiàn),電子系統(tǒng)向集成化、大規(guī)模和高速度等方向發(fā)展的趨勢更加明顯, 作為可編程的集成度較高

8、的asic,可在芯片級實(shí)現(xiàn)任意數(shù)字邏輯電路,從而可以簡化硬件電路,提高系統(tǒng)工作速度,縮短產(chǎn)品研發(fā)周期。故利用 fpga這一新的技術(shù)手段來研究電子鐘有重要的現(xiàn)實(shí)意義。設(shè)計(jì)采用fpga現(xiàn)場可編程技術(shù),運(yùn)用自頂向下的設(shè)計(jì)思想設(shè)計(jì)電子鐘。避免了硬件電路的焊接與調(diào)試,而且由于fpga的 i /o端口豐富,內(nèi)部邏輯可隨意更改,使得數(shù)字電子鐘的實(shí)現(xiàn)較為方便。本課題使用cyclone ep1c6q240的fpga器件,完成實(shí)現(xiàn)一個可以計(jì)時的數(shù)字時鐘。該系統(tǒng)具有顯示時、分、秒,智能鬧鐘,按鍵實(shí)現(xiàn)校準(zhǔn)時鐘,整點(diǎn)報時等功能。滿足人們得到精確時間以及時間提醒的需求,方便人們生活。1.2. 國內(nèi)外研究及趨勢隨著人們生活

9、水平的提高和生活節(jié)奏的加快,對時間的要求越來越高,精準(zhǔn)數(shù)字計(jì)時的消費(fèi)需求也是越來越多。二十一世紀(jì)的今天,最具代表性的計(jì)時產(chǎn)品就是電子時鐘,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對穩(wěn)定的機(jī)械振蕩頻率源使鐘表的走時差從分級縮小到秒級,代表性的產(chǎn)品就是帶有擺或擺輪游絲的機(jī)械鐘或表。第二次革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時精度更高的石英電子鐘表,使鐘表的走時月差從分級縮小到秒級。第三次革命就是單片機(jī)數(shù)碼計(jì)時技術(shù)的應(yīng)用,使計(jì)時產(chǎn)品的走時日差從分級縮小到1/600萬秒,從原有傳統(tǒng)指針計(jì)時的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動日期、星期的顯示功

10、能,它更符合消費(fèi)者的生活需求!因此,電子時鐘的出現(xiàn)帶來了鐘表計(jì)時業(yè)界跨躍性的進(jìn)步。我國生產(chǎn)的電子時鐘有很多種,總體上來說以研究多功能電子時鐘為主,使電子時鐘除了原有的顯示時間基本功能外,還具有鬧鈴,報警等功能。商家生產(chǎn)的電子時鐘更從質(zhì)量,價格,實(shí)用上考慮,不斷的改進(jìn)電子時鐘的設(shè)計(jì),使其更加的具有市場。1.3. 論文結(jié)構(gòu)第一章詳細(xì)論述了近些年來,數(shù)字化時鐘系統(tǒng)研究領(lǐng)域的動態(tài)及整個數(shù)字化時鐘系統(tǒng)的發(fā)展?fàn)顩r,同時分析了所面臨的問題與解決方案,從而提出了本論文的研究任務(wù)。第二章從研究任務(wù)著手,選擇符合設(shè)計(jì)要求的常用芯片及其它元器件,詳細(xì)論述了各接口電路的設(shè)計(jì)與連接,以模塊化的形式,整合數(shù)字化時鐘硬件的

11、設(shè)計(jì)從小到大,從局部到整體,循序漸進(jìn),最終實(shí)現(xiàn)一個功能齊全的數(shù)字化時鐘系統(tǒng)。第三章根據(jù)系統(tǒng)設(shè)計(jì)要求,著手對數(shù)字化時鐘系統(tǒng)軟件進(jìn)行功能的實(shí)現(xiàn),將各功能模塊有機(jī)結(jié)合,實(shí)現(xiàn)時鐘走時,實(shí)現(xiàn)鬧鈴、整點(diǎn)報時附加功能。第四章按照設(shè)計(jì)思路,在聯(lián)機(jī)調(diào)試過程中,對時鐘系統(tǒng)的不足和缺點(diǎn)進(jìn)行分析,將調(diào)試過程作重點(diǎn)的記錄。第五章對全文的總結(jié),對本系統(tǒng)功能實(shí)現(xiàn)以及制作過程中需要注意的方面,及整個系統(tǒng)軟件編寫中所吸取的經(jīng)驗(yàn)教訓(xùn)進(jìn)行論述,同時,也對整個研究應(yīng)用進(jìn)行展望。第二章 編程軟件及語言介紹2.1 quarters ii編程環(huán)境介紹運(yùn)行環(huán)境設(shè)計(jì)采用quartus ii軟件實(shí)現(xiàn),因此針對軟件需要用到的一些功能在這里進(jìn)行描述

12、.quartus ii軟件界面簡單易操作,如下圖2.1:圖2.1quartus ii軟件界面圖2.1.1 菜單欄1) 【file】菜單quartus ii的【 file】菜單除具有文件管理的功能外,還有許多其他選項(xiàng)圖2.2quartus ii菜單欄圖(1)【new 】選項(xiàng):新建工程或文件,其下還有子菜單【new quartus ii project】選項(xiàng):新建工程。 【design file】選項(xiàng):新建設(shè)計(jì)文件,常用的有:ahdl文本文件、vhdl文本文件、verilog hdl文本文件、原理圖文件等。 【vector waveform five】選項(xiàng):矢量波形文件。 (2)【open】選項(xiàng):

13、打開一個文件。 (3)【new project wizard 】選項(xiàng):創(chuàng)建新工程。點(diǎn)擊后彈出對話框。單擊對話框最上第一欄右側(cè)的“”按鈕,找到文件夾已存盤的文件,再單擊打開按鈕,既出現(xiàn)如圖所示的設(shè)置情況。對話框中第一行表示工程所在的工作庫文件夾,第二行表示此項(xiàng)工程的工程名,第三行表示頂層文件的實(shí)體名,一般與工程名相同。圖2.3quartus ii新建工程圖(4)【creat /update】選項(xiàng):生成元件符號??梢詫⒃O(shè)計(jì)的電路封裝成一個元件符號,供以后在原理圖編輯器下進(jìn)行層次設(shè)計(jì)時調(diào)用。 2) 【 view】菜單:進(jìn)行全屏顯示或?qū)Υ翱谶M(jìn)行切換,包括層次窗口、狀態(tài)窗口、消息窗口等。圖2.4quar

14、tus ii菜單欄全屏切換圖3) 【assignments】菜單(1)【device】選項(xiàng):為當(dāng)前設(shè)計(jì)選擇器件。 (2)【pin】選項(xiàng):為當(dāng)前層次樹的一個或多個邏輯功能塊分配芯片引腳或芯片內(nèi)的位置。(3)【timing ananlysis setting】選項(xiàng):為當(dāng)前設(shè)計(jì)的 tpd、tco、tsu、fmax等時間參數(shù)設(shè)定時序要求。 (4)【eda tool setting】選項(xiàng):eda 設(shè)置工具。使用此工具可以對工程進(jìn)行綜合、仿真、時序分析,等等。eda 設(shè)置工具屬于第三方工具。 (5)【setting】選項(xiàng):設(shè)置控制??梢允褂盟鼘こ獭⑽募?、參數(shù)等進(jìn)行修改,還可以設(shè)置編譯器、仿真器、時序分析

15、、功耗分析等。 (6)【assignment editor】選項(xiàng):任務(wù)編輯器。 (7)【pin planner 】選項(xiàng):可以使用它將所設(shè)計(jì)電路的 i/o 引腳合理的分配到已設(shè)定器件的引腳上。圖2.5quartus ii菜單欄設(shè)定引腳下拉圖4) 【processing】菜單【processing】菜單的功能是對所設(shè)計(jì)的電路進(jìn)行編譯和檢查設(shè)計(jì)的正確性。 (1)【stop process】選項(xiàng):停止編譯設(shè)計(jì)項(xiàng)目。 (2)【start compilation】選項(xiàng):開始完全編譯過程,這里包括分析與綜合、適配、裝配文件、定時分析、網(wǎng)表文件提取等過程。 (3)【analyze current file】選

16、項(xiàng):分析當(dāng)前的設(shè)計(jì)文件,主要是對當(dāng)前設(shè)計(jì)文件的語法、語序進(jìn)行檢查。 (4)【compilation report】選項(xiàng):適配信息報告,通過它可以查看詳細(xì)的適配信息,包括設(shè)置和適配結(jié)果等。 (5)【start simulation】選項(xiàng):開始功能仿真。 (6)【simulation report】選項(xiàng):生成功能仿真報告。 (7)【compiler tool】選項(xiàng):它是一個編譯工具,可以有選擇對項(xiàng)目中的各個文件進(jìn)行分別編譯。 (8)【simulation tool】選項(xiàng):對編譯過電路進(jìn)行功能仿真和時序仿真。 (9)【classic timing analyzer tool】選項(xiàng):classic時序

17、仿真工具。 (10)【powerplay power analyzer tool】選項(xiàng):powerplay 功耗分析工具。 圖2.6quartus ii菜單欄運(yùn)行下拉圖5) 【tools】菜單【tools 】菜單的功能是 (1)【run eda simulation tool 】選項(xiàng):運(yùn)行eda仿真工具,eda是第三方仿真工具。 (2)【run eda timing analyzer tool 】選項(xiàng):運(yùn)行eda時序分析工具,eda是第三方仿真工具。 (3)【programmer 】選項(xiàng):打開編程器窗口,以便對 altera 的器件進(jìn)行下載編程。圖2.7quartus ii仿真菜單下拉圖2.1

18、.2 工具欄 工具欄緊鄰菜單欄下方,它其實(shí)是各菜單功能的快捷按鈕組合區(qū)。2.8quartus ii菜單欄圖圖2.9quartus ii菜單欄按鍵功能圖2.1.3 功能仿真流程1、 新建仿真文件圖2.10quartus ii菜單欄新建文件夾圖2、 功能方正操作在菜單上點(diǎn)processing在下拉菜單中,如下圖:圖2.11quartus ii菜單欄processing下拉圖2.2 verilog hdl語言介2.2.1 什么是verilog hdl語言verilog hdl是一種硬件描述語言,用于從算法級、門級到開關(guān)級的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模。被建模的數(shù)字系統(tǒng)對象的復(fù)雜性可以介于簡單的門和

19、完整的電子數(shù)字系統(tǒng)之間。數(shù)字系統(tǒng)能夠按層次描述,并可在相同描述中顯式地進(jìn)行時序建模。verilog hdl 語言具有下述描述能力:設(shè)計(jì)的行為特性、設(shè)計(jì)的數(shù)據(jù)流特性、設(shè)計(jì)的結(jié)構(gòu)組成以及包含響應(yīng)監(jiān)控和設(shè)計(jì)驗(yàn)證方面的時延和波形產(chǎn)生機(jī)制。所有這些都使用同一種建模語言。此外,verilog hdl語言提供了編程語言接口,通過該接口可以在模擬、驗(yàn)證期間從設(shè)計(jì)外部訪問設(shè)計(jì),包括模擬的具體控制和運(yùn)行。verilog hdl語言不僅定義了語法,而且對每個語法結(jié)構(gòu)都定義了清晰的模擬、仿真語義。因此,用這種語言編寫的模型能夠使用ve rilog仿真器進(jìn)行驗(yàn)證。語言從c編程語言中繼承了多種操作符和結(jié)構(gòu)。verilog

20、 hdl提供了擴(kuò)展的建模能力,其中許多擴(kuò)展最初很難理解。但是,verilog hdl語言的核心子集非常易于學(xué)習(xí)和使用,這對大多數(shù)建模應(yīng)用來說已經(jīng)足夠。當(dāng)然,完整的硬件描述語言足以對從最復(fù)雜的芯片到完整的電子系統(tǒng)進(jìn)行描述。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è)計(jì)中的端口到端口的時延及路徑時延和設(shè)計(jì)的時序檢查。l 可采用

21、三種不同方式或混合方式對設(shè)計(jì)建模。這些方式包括:行為描述方式使用過程化結(jié)構(gòu)建模;數(shù)據(jù)流方式使用連續(xù)賦值語句方式建模;結(jié)構(gòu)化方式使用門和模塊實(shí)例語句描述建模。l verilog hdl中有兩類數(shù)據(jù)類型:線網(wǎng)數(shù)據(jù)類型和寄存器數(shù)據(jù)類型。線網(wǎng)類型表示構(gòu)件間的物理連線,而寄存器類型表示抽象的數(shù)據(jù)存儲元件。l 能夠描述層次設(shè)計(jì),可使用模塊實(shí)例結(jié)構(gòu)描述任何層次。l 設(shè)計(jì)的規(guī)??梢允侨我獾模徽Z言不對設(shè)計(jì)的規(guī)模(大?。┦┘尤魏蜗拗啤 verilog hdl不再是某些公司的專有語言而是ieee標(biāo)準(zhǔn)。l 人和機(jī)器都可閱讀verilog語言,因此它可作為eda的工具和設(shè)計(jì)者之間的交互語言。l verilog hdl

22、語言的描述能力能夠通過使用編程語言接口(pli)機(jī)制進(jìn)一步擴(kuò)展。pli是允許外部函數(shù)訪問verilog模塊內(nèi)信息、允許設(shè)計(jì)者與模擬器交互的例程集合。l 設(shè)計(jì)能夠在多個層次上加以描述,從開關(guān)級、門級、寄存器傳送級(rtl)到算法級,包括進(jìn)程和隊(duì)列級。l 能夠使用內(nèi)置開關(guān)級原語在開關(guān)級對設(shè)計(jì)完整建模。l 同一語言可用于生成模擬激勵和指定測試的驗(yàn)證約束條件,例如輸入值的指定。l verilog hdl能夠監(jiān)控模擬驗(yàn)證的執(zhí)行,即模擬驗(yàn)證執(zhí)行過程中設(shè)計(jì)的值能夠被監(jiān)控和顯示。這些值也能夠用于與期望值比較,在不匹配的情況下,打印報告消息。l 在行為級描述中,verilog hdl不僅能夠在rtl級上進(jìn)行設(shè)計(jì)

23、描述,而且能夠在體系結(jié)構(gòu)級描述及其算法級行為上進(jìn)行設(shè)計(jì)描述。l 能夠使用門和模塊實(shí)例化語句在結(jié)構(gòu)級進(jìn)行結(jié)構(gòu)描述。l 如圖顯示了verilog hdl的混合方式建模能力,即在一個設(shè)計(jì)中每個模塊均可以在不同設(shè)計(jì)層次上建模。l verilog hdl還具有內(nèi)置邏輯函數(shù),例如&(按位與)和|(按位或)。l 對高級編程語言結(jié)構(gòu),例如條件語句、情況語句和循環(huán)語句,語言中都可以使用。l 可以顯式地對并發(fā)和定時進(jìn)行建模。l 提供強(qiáng)有力的文件讀寫能力。l 語言在特定情況下是非確定性的,即在不同的模擬器上模型可以產(chǎn)生不同的結(jié)果;例如,事件隊(duì)列上的事件順序在標(biāo)準(zhǔn)中沒有定義。圖2.12混合設(shè)計(jì)層次圖第三章 數(shù)字化時鐘

24、系統(tǒng)硬件設(shè)計(jì)3.1 系統(tǒng)核心板電路分析本系統(tǒng)采用的開發(fā)平臺標(biāo)配的核心板是quicksopc,可以實(shí)現(xiàn)eda、sop和dsp的實(shí)驗(yàn)及研發(fā)。本系統(tǒng)采用quicksopc標(biāo)準(zhǔn)配置為altera公司的ep1c6q240c8芯片。(1) 核心板的硬件資源核心板采用4層板精心設(shè)計(jì),采用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配置二進(jìn)制文件(.rbf)大?。╞it)1167216可選串行主動配置器件epcs1/ epcs4/ epcs16(3) 配置電路cyclone fpga的配置方式包括:主動配置模式、被動配置模式以及jtag配置模式。本系統(tǒng)采用的是jtag配置模式下載配置數(shù)據(jù)到fpga。通過jtag結(jié)果,利用quartus ii軟件可以

26、直接對fpga進(jìn)行單獨(dú)的硬件重新配置。quartus ii軟件在編譯時會自動生成用于jtag配置的.sof文件。cyclone fpga設(shè)計(jì)成的jtag指令比其他任何器件操作模式的優(yōu)先級都高,因此jtag配置可隨時進(jìn)行而不用等待其他配置模式完成。jtag模式使用4個專門的信號引腳:tdi、tdo、tms以及tck。jtag的3個輸入腳tdi、tms和tck具有內(nèi)部弱上拉,上拉電阻大約為25k。在jgta進(jìn)行配置的時候,所有用戶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)運(yùn)行速度更快。核心板包含一個48mhz的有源晶振作為系統(tǒng)的時鐘源。如圖2-2所示。為了得到一個穩(wěn)定、精確的時鐘頻率,有源晶振的供電電源經(jīng)過了lc濾波。本系統(tǒng)硬件整體設(shè)計(jì)框圖如圖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)運(yùn)行速度更快。核心板包含一個50mhz的有源晶振作為系統(tǒng)的時鐘源。為了得到一個穩(wěn)定、精確的時鐘頻率,有源晶振的供電電源經(jīng)過了lc濾波。圖3.3 系統(tǒng)時鐘電路圖3.2.2 顯示電路由于本設(shè)計(jì)需要顯示時間信息包括:時、分、秒,顯所以采用主板上七段數(shù)碼管顯示電路與系統(tǒng)連接實(shí)現(xiàn)顯示模塊的功能。主板上七段數(shù)碼管顯示電路如圖2-4 所示,rp4和 rp6 是段碼上的限流電阻,位碼由于電流較大,采用了三極管驅(qū)動。圖3.4七段數(shù)碼管顯示電路圖數(shù)碼管 led顯示是工程項(xiàng)目中使用較廣的一種輸出顯示器件。常見的數(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ù)點(diǎn)) ,只要公共端為高電平“1” ,某個段輸出低電平“0”則相應(yīng)的段就亮。 圖3.5七段數(shù)碼管顯示電路圖從電路可以看出,數(shù)碼管是共陽的,當(dāng)位碼驅(qū)動信號為 0時,對應(yīng)的數(shù)碼管才能操作;當(dāng)段碼驅(qū)動信號為 0 時,對應(yīng)的段碼點(diǎn)亮。3.2.3 鍵盤控制電路鍵盤控制電路要實(shí)現(xiàn)時鐘系統(tǒng)調(diào)時的功能和鬧鈴開關(guān)的功能。本設(shè)計(jì)采用主板上

30、的獨(dú)立鍵盤來實(shí)現(xiàn)這兩個功能。當(dāng)鍵盤被按下是為“0”,未被按下是為“1”。電路連接圖如圖2-6所示。電路中為了防止fpga的i/o設(shè)為輸出且為高電平在按鍵下直接對地短路,電阻rp9、rp10對此都能起到保護(hù)作用。圖3.6 鍵盤電路圖3.2.4 蜂鳴電路設(shè)計(jì)如圖2-7所示,蜂鳴器使用 pnp三極管進(jìn)行驅(qū)動控制,蜂鳴器使用的是交流蜂鳴器。當(dāng)在 beep輸入一定頻率的脈沖時,蜂鳴器蜂鳴,改變輸入頻率可以改變蜂鳴器的響聲。因此可以利用一個 pwm 來控制 beep,通過改變 pwm 的頻率來得到不同的聲響,也可以用來播放音樂。若把 jp7斷開,q4 截止,蜂鳴器停止蜂鳴。圖3.7蜂鳴電路圖第四章 數(shù)字化

31、時鐘系統(tǒng)軟件設(shè)計(jì)4.1 整體方案介紹4.1.1 整體設(shè)計(jì)描述設(shè)計(jì)中的數(shù)字時鐘,帶有按鍵校準(zhǔn),定點(diǎn)報時,數(shù)碼管顯示等功能。因此數(shù)字時鐘所包含的模塊可分為,分頻模塊,按鍵模塊,計(jì)時校準(zhǔn)模塊,鬧鐘模塊,led顯示模塊,模塊之間的關(guān)系下圖:圖4.1整體模塊框圖針對框圖流程,設(shè)定出各個模塊的需求:1、 分頻電路:針對計(jì)時器模塊與鬧鐘設(shè)定模塊的需求,可以知道分頻模塊需要生成一個1hz的頻率信號,確保計(jì)時模塊可以正常計(jì)數(shù)。2、 計(jì)時器模塊:計(jì)數(shù)模塊的作用是收到分頻模塊1hz頻率的信號線,能進(jìn)行正確計(jì)時,并且可以通過按鍵進(jìn)行時間的修改,且當(dāng)整點(diǎn)時,給蜂鳴器產(chǎn)生使能信號,進(jìn)行整點(diǎn)報時,播放音樂。3、 鬧鐘設(shè)定模

32、塊:可根據(jù)按鍵的設(shè)定鬧鐘的時間,當(dāng)計(jì)時模塊的時間與鬧鐘設(shè)定模塊的時間相等的時候,給蜂鳴器一個使能信號,蜂鳴器鬧鈴。4、 蜂鳴器模塊:根據(jù)計(jì)時模塊,鬧鐘模塊給出的使能信號,判定蜂鳴器是整點(diǎn)報時,還是鬧鐘響鈴。整點(diǎn)報時會播放音樂,鬧鐘時嘀嘀嘀報警。5、 led顯示模塊:根據(jù)實(shí)際的需求顯示計(jì)時模塊的時間,還是鬧鐘設(shè)定模塊的時間,8個七段碼led數(shù)碼管,進(jìn)行掃描方式顯示數(shù)據(jù)。4.1.2 整體信號定義對整個模塊進(jìn)行信號定義。接口及寄存器定義module clock(clk,key,dig,seg,beep);/ 模塊名 clock input clk; / 輸入時鐘 input 4:0 key; /輸入

33、按鍵 ,key3:0分別為秒,分鐘,小時的增加按鍵。key4為鬧鐘設(shè)置按鍵,key5為校準(zhǔn)設(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; /定義計(jì)數(shù)寄存器reg 14:0 count; /定義計(jì)數(shù)中間寄存器 reg 23:0 hour = 24h235956; / 定義現(xiàn)在

34、時刻寄存器 reg 23:0 clktime = 24h000000;/定義設(shè)定鬧鐘reg 1:0 keyen = 2b11; / 定義標(biāo)志位 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生成的符號圖分頻模塊實(shí)現(xiàn),計(jì)數(shù)電路所需時鐘信號為1hz,而系統(tǒng)時鐘為48mhz,所以要對系統(tǒng)時鐘進(jìn)行分頻以來滿足電路的需要。4.2 分頻模塊實(shí)現(xiàn)4.2.1 分頻模塊描述對于分頻模塊,關(guān)鍵是生成個1hz的時鐘信號??紤]到仿真的需要,模塊中間生成1個1khz的時鐘信號。1hz的信號的產(chǎn)生用來產(chǎn)生時鐘的秒脈沖,框圖如下圖4.2:圖4.3分頻模塊圖4.2.2 分頻模塊設(shè)計(jì)本系統(tǒng)

36、程序設(shè)計(jì)時鐘的準(zhǔn)確與否主要取決于秒脈沖的精確度。為了保證計(jì)時準(zhǔn)確,我們對系統(tǒng)時鐘48mhz進(jìn)行了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; /計(jì)數(shù)器清零 clk1 = clk1; /置位秒標(biāo)志 end end/秒信號產(chǎn)生部分 always (posedge clk1) / 定義 clock 上升沿觸發(fā) b

37、egin count1 = count1 + 1b1; if(count1 = 9d500) /0.5s到了嗎? begin count1 = 9d0; /計(jì)數(shù)器清零 sec = sec; /置位秒標(biāo)志 endend4.2.3 分頻模塊仿真通過設(shè)置功能仿真,檢查代碼的正確性1、 仿真結(jié)果圖4.4 分頻模塊波形仿真圖右上圖可以知道,計(jì)數(shù)寄存器count累加到23999時,重新變?yōu)?,共計(jì)數(shù)了24000個值。觸發(fā)clk1跳變,使得count1加一,count1累加到499的時候,下一個數(shù)據(jù)為0,共技術(shù)500個值。所以,sec信號的頻率為1hz,滿足設(shè)計(jì)要求。4.3 計(jì)時模塊實(shí)現(xiàn)4.3.1 計(jì)時模塊

38、描述與實(shí)現(xiàn)計(jì)時模塊是采用16進(jìn)制來實(shí)現(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,全部清零,開始重新計(jì)時。從功能上講

39、分別為模60計(jì)數(shù)器,模60計(jì)數(shù)器和模24計(jì)數(shù)器。/時間計(jì)算及校準(zhǔn)部分always (negedge sec)/計(jì)時處理 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 計(jì)時模塊仿真對

41、計(jì)時模塊進(jìn)行仿真,記錄仿真波形圖4.5 計(jì)時模塊仿真圖由上圖可見,當(dāng)sec信號下降沿跳變時,hour寄出去會加1,也就相當(dāng)于跳了一秒鐘時間。當(dāng)hour的時間為235959是,下一個計(jì)數(shù)器的值為000000,hour寄存器歸零,相當(dāng)于半夜0點(diǎn)的時刻。仿真的結(jié)果達(dá)到預(yù)期,通過。4.4 按鍵處理模塊實(shí)現(xiàn)4.4.1 按鍵處理模塊描述框圖如下圖4.4:圖4.6按鍵控制功能圖模塊講計(jì)時部分和時間調(diào)整部分整合到一起,正常態(tài)的時候,時間正常運(yùn)行,當(dāng)key5被按下時,進(jìn)入時間校準(zhǔn),可以通過key2:0三個鍵,分別對秒,分,時進(jìn)行加1操作,從而進(jìn)行時間校準(zhǔn)。當(dāng)key3被按下時,進(jìn)入鬧鐘設(shè)定,可以通過key2:0三

42、個鍵,分別對秒,分,時進(jìn)行加1操作,從而進(jìn)行鬧鐘的設(shè)定。圖4.7 按鍵模塊仿真圖通過按鍵key進(jìn)行仿真控制,可以發(fā)現(xiàn)clktime會隨著按鍵的按下,分別有時鐘,分鐘秒鐘加1,仿真結(jié)果滿足設(shè)計(jì)要求。4.4.2 按鍵去抖處理模塊設(shè)計(jì)按鍵模塊實(shí)現(xiàn)去抖處理,及乒乓按鍵設(shè)計(jì),確保后面的計(jì)時模塊與鬧鐘模塊的功能實(shí)現(xiàn)。assign key_done = key|dout3; / 按鍵消抖輸出 always (posedge count15) /按鍵去噪聲begin dout1 = key; dout2 = dout1; dout3 =hour23:0)。正常情況下,鬧鈴時間到會進(jìn)行為時1分鐘的蜂鳴報時,可以

43、通過按下鬧鐘按鍵key3使其停止。當(dāng)鬧鈴設(shè)置為整點(diǎn)是,會先進(jìn)行整點(diǎn)報時,然后進(jìn)入鬧鈴。圖4.9 鬧鐘控制鍵功能圖4.5.2 鬧鐘設(shè)定模塊仿真圖4.10 鬧鐘模塊仿真圖通過按鍵key進(jìn)行仿真控制,可以發(fā)現(xiàn)clktime會隨著按鍵的按下,分別有時鐘,分鐘秒鐘加1,仿真結(jié)果滿足設(shè)計(jì)要求。4.6 蜂鳴器模塊實(shí)現(xiàn)4.6.1 蜂鳴器模塊描述蜂鳴器模塊負(fù)責(zé)整點(diǎn)報時,和鬧鈴的時候進(jìn)行出聲的作用。整點(diǎn)報時的時候,播放音樂,10秒音樂播報完后停止整點(diǎn)報時。鬧鐘觸發(fā)時,播放嘀嘀嘀報警聲。當(dāng)鬧鈴設(shè)置為整點(diǎn)是,會先進(jìn)行整點(diǎn)報時,然后進(jìn)入鬧鈴。當(dāng)鬧鐘設(shè)定鍵被按下,響起的蜂鳴聲會被屏蔽。模塊框圖如下圖4.9:4.6.2 蜂

44、鳴器模塊實(shí)現(xiàn)/蜂鳴器的計(jì)數(shù)定時器always(posedge clk) begin beep_count = beep_count + 1b1; /計(jì)數(shù)器加 1 if(beep_count = beep_count_end)&(!(beep_count_end = 16hffff) begin beep_count = 16h0; /計(jì)數(shù)器清零 beep_r = beep_r; /取反輸出信號 end end always (posedge clk) beginif (!beepen)case(hour3:0) /整點(diǎn)報時音樂內(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)/鬧鈴過一點(diǎn)時間,自動關(guān)閉。clktime_en = 1b0;end4.6.3 蜂鳴器模塊仿真功能仿真,記錄波形圖:圖4.11蜂鳴器模塊仿真圖通過上圖可以看出來,當(dāng)hour與clktime相等時,鬧鈴被觸發(fā),經(jīng)過一段時間后,鬧鈴?fù)V构ぷ?,設(shè)計(jì)滿足要求。4.7 顯示模塊實(shí)現(xiàn)4.7.1 顯示模塊描述此設(shè)計(jì)中的led七段數(shù)碼管顯示模塊主要顯示時間的時、分、秒信息,數(shù)碼管為共陽的。在此設(shè)計(jì)中占非常重要的地位,它是確保時間能直觀呈現(xiàn)的橋梁。在設(shè)計(jì)過程中,首先進(jìn)行程序編寫和調(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 顯示模塊實(shí)現(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論