![數(shù)字鐘的設(shè)計(jì)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/15/3aa9e63e-8782-4ee1-8226-1c0f25ecfe8e/3aa9e63e-8782-4ee1-8226-1c0f25ecfe8e1.gif)
![數(shù)字鐘的設(shè)計(jì)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/15/3aa9e63e-8782-4ee1-8226-1c0f25ecfe8e/3aa9e63e-8782-4ee1-8226-1c0f25ecfe8e2.gif)
![數(shù)字鐘的設(shè)計(jì)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/15/3aa9e63e-8782-4ee1-8226-1c0f25ecfe8e/3aa9e63e-8782-4ee1-8226-1c0f25ecfe8e3.gif)
![數(shù)字鐘的設(shè)計(jì)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/15/3aa9e63e-8782-4ee1-8226-1c0f25ecfe8e/3aa9e63e-8782-4ee1-8226-1c0f25ecfe8e4.gif)
![數(shù)字鐘的設(shè)計(jì)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/15/3aa9e63e-8782-4ee1-8226-1c0f25ecfe8e/3aa9e63e-8782-4ee1-8226-1c0f25ecfe8e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、武漢理工大學(xué)EDA課程設(shè)計(jì)說明書課程設(shè)計(jì)任務(wù)書 學(xué)生姓名: 專業(yè)班級(jí): 指導(dǎo)教師: 工作單位: 信息工程學(xué)院 題 目: 數(shù)字鐘 設(shè)計(jì)目的:1、掌握在Quartus軟件的使用方法,并能熟練的在Quartus環(huán)境中運(yùn)用VHDL語言完成一些簡(jiǎn)單程序的設(shè)計(jì);2、掌握數(shù)字鐘的主要功能與在FPGA中的實(shí)現(xiàn)方法。 要求完成的主要任務(wù): 1、課程設(shè)計(jì)工作量:1周。2、技術(shù)要求:(1)設(shè)計(jì)一個(gè)6位LED動(dòng)態(tài)掃描顯示的數(shù)字鐘,根據(jù)一個(gè)控制鍵能選擇顯示時(shí)、分、秒或年、月、日;(2)通過撥碼開關(guān)可以進(jìn)行時(shí)、分、年、月、日的調(diào)整,可以實(shí)現(xiàn)翻屏;3、查閱至少5篇參考文獻(xiàn)。按武漢理工大學(xué)課程設(shè)計(jì)工作規(guī)范要求撰寫設(shè)計(jì)報(bào)告書。
2、全文用A4紙打印,圖紙應(yīng)符合繪圖規(guī)范。時(shí)間安排:1、 2015 年 6 月 11日集中,作課設(shè)具體實(shí)施計(jì)劃與課程設(shè)計(jì)報(bào)告格式的要求說明。2、 2012 年 6 月 12日至 2012 年 6 月 15日查閱相關(guān)資料,學(xué)習(xí)電路的工作原理。3、 2012 年 6 月 17 日 至 2012 年 6 月 19 日,方案選擇和電路設(shè)計(jì)。4、 2012 年 6 月 20 日 至 2012 年 6 月 21 日,電路調(diào)試和設(shè)計(jì)說明書撰寫。5、 2011 年 6 月 22日上交課程設(shè)計(jì)成果及報(bào)告,同時(shí)進(jìn)行答辯。指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日目 錄摘 要IAbstractII
3、1 緒論12 設(shè)計(jì)內(nèi)容及要求12.1設(shè)計(jì)目的及主要任務(wù)12.1.1設(shè)計(jì)目的12.1.2 設(shè)計(jì)任務(wù)及要求12.2設(shè)計(jì)思想23 數(shù)字鐘的設(shè)計(jì)43.1 設(shè)計(jì)原理與方法43.2 單元模塊設(shè)計(jì)43.2.1 分頻計(jì)模塊設(shè)計(jì)43.2.2 消抖電路模塊設(shè)計(jì)53.2.3 計(jì)數(shù)器模塊設(shè)計(jì)53.2.4 鬧鐘及蜂鳴器設(shè)計(jì)73.2.5 多路復(fù)用器模塊設(shè)計(jì)83.2.6 八段譯碼模塊設(shè)計(jì)83.3 數(shù)字鐘設(shè)計(jì)總原理圖84 編譯報(bào)告84.1 設(shè)計(jì)原理與方法85 電路仿真與硬件調(diào)試95.1 電路仿真95.2 硬件調(diào)試106 總結(jié)與心得體會(huì)10參考文獻(xiàn)11附錄121 摘 要 EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Desig
4、nAutomation)的縮寫,在20世紀(jì)90年代初從計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、計(jì)算機(jī)輔助制造(CAM)、計(jì)算機(jī)輔助測(cè)試(CAT)和計(jì)算機(jī)輔助工程(CAE)的概念發(fā)展而來的。 20世紀(jì)90年代,國際上電子和計(jì)算機(jī)技術(shù)較先進(jìn)的國家,一直在積極探索新的電子電路設(shè)計(jì)方法,并在設(shè)計(jì)方法、工具等方面進(jìn)行了徹底的變革,取得了巨大成功。 在電子技術(shù)設(shè)計(jì)領(lǐng)域,可編程邏輯器件(如CPLD、FPGA)的應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計(jì)帶來了極大的靈活性。這些器件可以通過軟件編程而對(duì)其硬件結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),從而使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。這一切極大地改變了傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法
5、、設(shè)計(jì)過程和設(shè)計(jì)觀念,促進(jìn)了EDA技術(shù)的迅速發(fā)展。 EDA技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在EDA軟件平臺(tái)上,用硬件描述語言VHDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。EDA技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可操作性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度。 本設(shè)計(jì)是通過Quartus 軟件、VHDL語言編程及FPGA芯片來實(shí)現(xiàn)常見的數(shù)字鐘,該數(shù)字鐘可以根據(jù)一個(gè)控制鍵能選擇顯示時(shí)、分、秒或年、月、日。本設(shè)計(jì)中用8位LED數(shù)碼管顯示時(shí)、分和秒,年、月、日,同時(shí)可以通過按鍵調(diào)整時(shí)、分、及對(duì)秒進(jìn)行清零。
6、關(guān)鍵詞:Quartus ;VHDL;數(shù)字鐘;1 緒論 FPGA(FieldProgrammable Gate Array),即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)??梢哉f,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。FPGA是由存放在片內(nèi)RAM中的程序來設(shè)置其工作狀態(tài)的,因此,工作時(shí)需要對(duì)片內(nèi)的RAM進(jìn)行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。加電時(shí),F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片
7、內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進(jìn)入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時(shí),只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。本設(shè)計(jì)是通過對(duì)數(shù)字鐘個(gè)組要組成部分的VHDL源程序編程和頂層文件的生成來實(shí)現(xiàn)的。在本設(shè)計(jì)中數(shù)字鐘的主要組成部分有撥碼開關(guān)模塊、按鍵修改模塊,計(jì)數(shù)器模塊、分頻計(jì)模塊、七段譯碼器模塊和數(shù)據(jù)選擇器模塊。通過按鍵可以實(shí)現(xiàn)選擇顯示時(shí)、分、秒或年、月、日,同時(shí)
8、可以顯示翻屏,還可以通過按鍵調(diào)整時(shí)、分及對(duì)秒進(jìn)行清零。2 設(shè)計(jì)內(nèi)容及要求2.1設(shè)計(jì)目的及主要任務(wù)2.1.1設(shè)計(jì)目的(1)初步掌握Quartus軟件的使用方法,提高運(yùn)用硬件描述語言VHDL的能力,初步 了解時(shí)序電路的設(shè)計(jì)。(2)利用對(duì)生活中熟悉的電子表,用語言設(shè)計(jì)相似功能的數(shù)字鐘。 2.1.2 設(shè)計(jì)任務(wù)及要求 完成以下基本要求及進(jìn)行提高:(1)設(shè)計(jì)一個(gè)6位LED動(dòng)態(tài)掃描顯示的數(shù)字鐘,根據(jù)一個(gè)控制鍵能選擇顯示時(shí)、分、秒或年、月、日;(2)通過按鍵可以進(jìn)行時(shí)、分、年、月、日的調(diào)整,可以實(shí)現(xiàn)翻屏;(3)可以設(shè)置鬧鐘時(shí)間及整點(diǎn)報(bào)時(shí),鬧鈴蜂鳴器頻率為1000Hz,整點(diǎn)報(bào)時(shí)頻率為2000Hz;(4)具有定時(shí)
9、翻屏功能,每隔54s,顯示一次年月日;(5)運(yùn)用圖形設(shè)計(jì)方法完成頂層原理圖的設(shè)計(jì)。2.2設(shè)計(jì)思想 該數(shù)字鐘可以實(shí)現(xiàn)3個(gè)功能:計(jì)時(shí)功能、整點(diǎn)報(bào)時(shí)功能和重置時(shí)間功能,因此有3個(gè)子模塊:計(jì)時(shí)、報(bào)時(shí)、重置時(shí)間。其中計(jì)時(shí)模塊有4部分構(gòu)成:秒計(jì)時(shí)器、分計(jì)時(shí)器和時(shí)計(jì)時(shí)器。其中包括分秒60進(jìn)制計(jì)數(shù)器、時(shí)24進(jìn)制計(jì)數(shù)器、日30進(jìn)制計(jì)數(shù)器、月12進(jìn)制計(jì)數(shù)器和年10進(jìn)制計(jì)數(shù)器,然后根據(jù)要求設(shè)置一個(gè)6選1的數(shù)據(jù)選擇器并且通過控制鍵實(shí)現(xiàn)選擇顯示時(shí)、分、秒或年、月、日,最后再設(shè)置3個(gè)按鍵調(diào)整數(shù)字鐘,并且通過一個(gè)七段譯碼器和8進(jìn)制計(jì)數(shù)器控制七段數(shù)碼管實(shí)現(xiàn)顯示。3 數(shù)字鐘的設(shè)計(jì)3.1 設(shè)計(jì)原理與方法 數(shù)字計(jì)時(shí)器基本功能是計(jì)時(shí)
10、,因此首先需要獲得具有精確振蕩時(shí)間的脈振信號(hào),以此作為計(jì)時(shí)電路的時(shí)序基礎(chǔ),實(shí)驗(yàn)中可以使用的振蕩頻率源為4KHZ,通過分頻獲得所需脈沖頻率1Hz,1KHz,500Hz。為產(chǎn)生秒位,設(shè)計(jì)一個(gè)模60計(jì)數(shù)器,對(duì)1HZ的脈沖進(jìn)行秒計(jì)數(shù)產(chǎn)生秒位,為產(chǎn)生分位,通過秒位的進(jìn)位產(chǎn)生分計(jì)數(shù)脈沖,分位也由模60計(jì)數(shù)器構(gòu)成為產(chǎn)生時(shí)位,用一個(gè)模24計(jì)數(shù)器對(duì)分位的進(jìn)位脈沖進(jìn)行計(jì)數(shù)。整個(gè)數(shù)字計(jì)時(shí)器的計(jì)數(shù)部分共包括六位時(shí)十位、時(shí)個(gè)位、分十位、分個(gè)位、秒十位和秒個(gè)位。顯示功能是通過數(shù)選器、譯碼器、碼轉(zhuǎn)換器和7段顯示管實(shí)現(xiàn)的。因?yàn)閷?shí)驗(yàn)中只用一個(gè)譯碼顯示單元,7個(gè)7段碼,6個(gè)用于顯示時(shí)分秒,一個(gè)顯示星期,所以通過4個(gè)7選一MUX和
11、一個(gè)3-8譯碼器配合根據(jù)計(jì)數(shù)器的信號(hào)進(jìn)行數(shù)碼管的動(dòng)態(tài)顯示。清零功能是通過控制計(jì)數(shù)器清零端的電平高低來實(shí)現(xiàn)的。只需使清零開關(guān)按下時(shí)各計(jì)數(shù)器的清零端均可靠接入有效電平,本實(shí)驗(yàn)中是低電平,而清零開關(guān)斷開時(shí)各清零端均接入無效電平即可。 校分校時(shí)功能由防抖動(dòng)開關(guān)、邏輯門電路實(shí)現(xiàn)。其基本原理是通過邏輯門電路控制分計(jì)數(shù)器的計(jì)數(shù)脈沖。當(dāng)校分校時(shí)開關(guān)斷開時(shí),計(jì)數(shù)脈沖由低位計(jì)數(shù)器提供,當(dāng)按下校分校時(shí)開通時(shí),既可以手動(dòng)觸發(fā)出發(fā)式開關(guān)給進(jìn)位脈沖,也可以有恒定的1Hz脈沖提供恒定的進(jìn)位信號(hào),計(jì)數(shù)器在此脈沖驅(qū)動(dòng)下可快速計(jì)數(shù)。為實(shí)現(xiàn)可靠調(diào)時(shí),采用防抖動(dòng)開關(guān),由D觸發(fā)器實(shí)現(xiàn),克服開關(guān)接通或斷開過程中產(chǎn)生的一串脈沖式振動(dòng)。 保
12、持功能是通過邏輯門控制秒計(jì)數(shù)器輸入端的1Hz脈沖實(shí)現(xiàn)的。正常情況下,開關(guān)不影響脈沖輸入即秒正常計(jì)數(shù),當(dāng)按下開關(guān)后,使脈沖無法進(jìn)入計(jì)數(shù)端,從而實(shí)現(xiàn)計(jì)時(shí)保持功能。整點(diǎn)報(bào)時(shí)功能可以通過組合邏輯電路實(shí)現(xiàn)。當(dāng)計(jì)數(shù)器的各位呈現(xiàn)特定的電平時(shí),可以選通特定的與門和或門將指定的頻率信號(hào)送入蜂鳴器中實(shí)現(xiàn)在規(guī)定的時(shí)刻以指定頻發(fā)音報(bào)時(shí)。 3.2 單元模塊設(shè)計(jì)3.2.1 按鍵消抖電路模塊通常的按鍵所用開關(guān)為機(jī)械彈性開關(guān),當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí),電壓信號(hào)并不穩(wěn)定,由于機(jī)械觸點(diǎn)的彈性作用,一個(gè)按鍵開關(guān)在閉合時(shí)不會(huì)馬上穩(wěn)定地接通,在斷開時(shí)也不會(huì)一下子斷開。4因而在閉合及斷開的瞬間均有一連串的抖動(dòng),抖動(dòng)的時(shí)間的長短有按鍵的機(jī)械
13、特性決定,一般為5ms10ms。完成程序后可以創(chuàng)建元件。3.2.2 分頻器模塊設(shè)計(jì)根據(jù)設(shè)計(jì)要求,需要將開發(fā)板的50MHZ信號(hào)分出1HZ和1KHZ共2種時(shí)鐘信號(hào),1HZ脈沖信號(hào)用來提供計(jì)數(shù)模塊的時(shí)鐘信號(hào)在1HZ的脈沖下,每隔一秒,秒自加一次,1KHZ脈沖信號(hào)用來提供消抖電路的時(shí)鐘信號(hào),cnt用于數(shù)碼管掃描。完成程序后可以創(chuàng)建原理圖元件,其元件符號(hào)如圖3-1 所示。圖3-1 分頻器3.2.3 計(jì)數(shù)器模塊設(shè)計(jì)計(jì)數(shù)器模塊主要由秒60進(jìn)制計(jì)數(shù)模塊、分60進(jìn)制計(jì)數(shù)模塊、時(shí)24進(jìn)制計(jì)數(shù)模塊、日30進(jìn)制計(jì)數(shù)模塊、月12進(jìn)制計(jì)數(shù)模塊、年計(jì)數(shù)模塊和8進(jìn)制計(jì)數(shù)器。下圖3-3 是將60進(jìn)制計(jì)數(shù)模塊、分60進(jìn)制計(jì)數(shù)模塊
14、、時(shí)24進(jìn)制計(jì)數(shù)模塊融合為一個(gè)模塊。圖3-3 時(shí)鐘電路 圖3-4 日30進(jìn)制計(jì)數(shù)器 圖3-5 月12進(jìn)制計(jì)數(shù)器秒60進(jìn)制計(jì)數(shù)模塊的時(shí)鐘信號(hào)為1HZ的脈沖信號(hào),每計(jì)數(shù)到59便會(huì)產(chǎn)生一次進(jìn)位作為分60進(jìn)制計(jì)數(shù)模塊的時(shí)鐘信號(hào),該模塊加入一個(gè)清零端,當(dāng)CS為1時(shí),秒計(jì)數(shù)模塊中的個(gè)位和十位同時(shí)為零,當(dāng)CS為1時(shí)正常計(jì)數(shù).分60進(jìn)制計(jì)數(shù)模塊的時(shí)鐘信號(hào)為秒計(jì)數(shù)模塊的進(jìn)位信號(hào),其通過一個(gè)增加鍵CM對(duì)其調(diào)整。時(shí)24進(jìn)制計(jì)數(shù)模塊的時(shí)鐘信號(hào)為分計(jì)數(shù)模塊的進(jìn)位信號(hào),其通過一個(gè)增加鍵CH對(duì)其調(diào)整。其中UP,CHANGE信號(hào)說明如下,當(dāng)UP 信號(hào)為高時(shí)時(shí),表示數(shù)碼管翻屏了,即顯示年月日的時(shí)間為6ms。UP信號(hào)為低電平時(shí),
15、顯示時(shí)分秒。在UP有效時(shí),CHANGE為低電平,所有數(shù)碼管上部分熄滅,下部分顯示年月日的下半部分,CHANGE為高電平時(shí),正常顯示年月日部分,直到UP 為低。5日30進(jìn)制計(jì)數(shù)模塊的時(shí)鐘信號(hào)為時(shí)計(jì)數(shù)模塊的進(jìn)位信號(hào),其通過一個(gè)置數(shù)端load對(duì)其調(diào)整。日30進(jìn)制計(jì)數(shù)器的VHDL程序如附錄所示,完成程序后可以創(chuàng)建元件,其元件符號(hào)如圖3-4所示。月12進(jìn)制計(jì)數(shù)模塊的時(shí)鐘信號(hào)為日計(jì)數(shù)模塊的進(jìn)位信號(hào),其通過一個(gè)置數(shù)端對(duì)其調(diào)整。月12進(jìn)制計(jì)數(shù)器的VHDL程序如附錄所示,完成程序后可以創(chuàng)建元件,其元件符號(hào)如圖3-5所示。年進(jìn)制計(jì)數(shù)模塊的時(shí)鐘信號(hào)由月計(jì)數(shù)模塊的進(jìn)位信號(hào)產(chǎn)生,年計(jì)數(shù)模塊又由四個(gè)十進(jìn)制計(jì)數(shù)器組成,分別
16、是個(gè)位、十位、百位和千位計(jì)數(shù)模塊組成,中間由進(jìn)位信號(hào)連接。其VHDL程序如附錄所示,完成程序后可以創(chuàng)建元件,其元件符號(hào)分別如圖3-6、圖3-7、圖3-8和圖3-9所示。 圖3-6 年個(gè)位計(jì)數(shù)器 圖3-7 年十位計(jì)數(shù)器 圖3-8 年百位計(jì)數(shù)器元件 圖3-9 年千位計(jì)數(shù)器元件符號(hào) 同時(shí),本設(shè)計(jì)中還需要設(shè)計(jì)一個(gè)8進(jìn)制計(jì)數(shù)器用來提供七段數(shù)碼管的位選碼和數(shù)據(jù)選擇器的狀態(tài)信號(hào)。其程序如附錄所示,其元件符號(hào)如圖3-2-10所示。圖3-10 8進(jìn)制計(jì)數(shù)器3.2.4 鬧鐘及蜂鳴器設(shè)計(jì)本設(shè)計(jì)只針對(duì)時(shí)分秒進(jìn)行定時(shí),并可任意設(shè)定定時(shí)時(shí)間。整點(diǎn)報(bào)時(shí)蜂鳴器的頻率是2000Hz,鬧鐘是1000Hz。元件符號(hào)如圖3-11所示
17、。圖3-11 鬧鐘及蜂鳴器3.2.5 八段譯碼模塊設(shè)計(jì)一個(gè)數(shù)碼管是由8段LED顯示的,0-9對(duì)應(yīng)著不同的字形。數(shù)碼管是共陽的,使用共陽字型碼。需要將BCD碼轉(zhuǎn)換成數(shù)碼管可以顯示的碼,該模塊的程序如附錄所示,其元件符號(hào)如圖3-13所示。圖3-13 八段譯碼3.3 數(shù)字鐘設(shè)計(jì)總原理圖利用至頂向下的設(shè)計(jì)方法,新建一個(gè)Block Diagram,在Quartus 環(huán)境下連接各模塊組成數(shù)字鐘的總原理圖如圖3-14所示。圖3-14 數(shù)字鐘總原理圖4 編譯報(bào)告4.1 數(shù)字鐘設(shè)計(jì)編譯報(bào)告將各模塊正確連線后,編譯無警告,生成編譯報(bào)告如圖。發(fā)現(xiàn),總的邏輯單元使用了184,其中組合邏輯使用184,時(shí)序邏輯使用98,
18、由此看出,在Alter的EP2C5Q208芯片中,一個(gè)LE包括一個(gè)Combination logic和一個(gè)Timing logic。如圖4-1。圖4-1 數(shù)字鐘編譯報(bào)告5 電路仿真與硬件調(diào)試5.1 電路仿真經(jīng)過嘗試,發(fā)現(xiàn)數(shù)字鐘的設(shè)計(jì)用波形仿真看到與實(shí)際相符的數(shù)據(jù)很困難,因?yàn)?0M的時(shí)鐘要分成1HZ的時(shí)鐘,1000HZ的時(shí)鐘,分在秒跳動(dòng)60才跳一次,時(shí)在分跳動(dòng)60才跳一次,受到simulator tool 工作界面的限制,并不能完整的觀察到時(shí)分秒,年月日的信息,因此只選擇的clock模塊的進(jìn)行了仿真。如下圖。圖5-1 計(jì)數(shù)模塊仿真波形圖七段數(shù)碼顯示譯碼器LED的仿真,其中Din3.0為BCD碼輸
19、入,LED7S6.0為七段譯碼輸出(高電平有效)。其仿真輸出波形如圖5-2所示。圖5-2 七段譯碼模塊仿真波形圖5.2 硬件調(diào)試經(jīng)過調(diào)試,仿真結(jié)果正確后,將sof文件轉(zhuǎn)換成固化到芯片的適合JTAG下載的jic文件。連接硬件系統(tǒng)后,通上電源,經(jīng)Quartus中的PROGRAMMER菜單,調(diào)出編程器窗口,刪掉sof文件,現(xiàn)在轉(zhuǎn)換成功的jic文件。一切就緒后,按下編程器窗口中的“START”按鈕,設(shè)計(jì)的內(nèi)容就開始下載到FPGA芯片中。通過實(shí)驗(yàn)箱上的撥碼開關(guān)和按鍵開關(guān)可以逐一對(duì)數(shù)字鐘的功能進(jìn)行驗(yàn)證。通過數(shù)碼管顯示可知本設(shè)計(jì)可以實(shí)現(xiàn)基本的時(shí)、分、秒及年、月、日的計(jì)數(shù),通過按鍵和撥碼開關(guān)的配合可以實(shí)現(xiàn)時(shí)、
20、分、秒和年、月、日的校準(zhǔn)以及顯示翻屏。故本設(shè)計(jì)完全符合設(shè)計(jì)要求。6 總結(jié)與心得體會(huì)由于一直在學(xué)習(xí)FPGA,所以拿到課程設(shè)計(jì)的題目時(shí)胸有成竹,我想對(duì)于我來說,設(shè)計(jì)出來毫無困難,所以就想在題目的要求上上一個(gè)高度。之前都是用VHDL語言生成模塊直接例化,這次我選擇了利用更直觀的原理圖設(shè)計(jì)方法。連線時(shí)也遇到過小小的麻煩,比如剛開始總線不知怎么解決,PIN_NAME不知道怎么命名。圖連完后,編譯通過,對(duì)原理圖設(shè)計(jì)有了整題把握,以后做設(shè)計(jì)的時(shí)候,對(duì)于接口比較復(fù)雜的還是用原理圖設(shè)計(jì)比較方便。后來就考慮如何玩點(diǎn)花樣,畢竟單調(diào)的顯示時(shí)分秒還是駕輕就熟的。改動(dòng)如下:1.將區(qū)分時(shí)分秒,年月日的-改成動(dòng)態(tài)的了,隨著1
21、HZ的時(shí)鐘兩滅,看著形象多了。2.在利用按鍵手動(dòng)翻屏的基礎(chǔ)上,加了個(gè)自動(dòng)翻屏,畢竟有時(shí)候并不想動(dòng)手去看日期,自動(dòng)翻屏的目的是想讓日期從下往上浮動(dòng),可惜不是16*16的點(diǎn)陣,效果不佳。路漫漫其修遠(yuǎn)兮,吾將上下而求索。參考文獻(xiàn)1 盧毅,賴杰. VHDL與數(shù)字電路設(shè)計(jì). 科學(xué)出版社,2009.2 北京理工大學(xué)ASIC研究所.VHDL語言100例詳解. 清華大學(xué)出版社,2001.3 楊麗英.電路EDA技術(shù)與應(yīng)用. 清華大學(xué)出版社,2011.4 謝自美.電子線路設(shè)計(jì)(第二版).華中科技大學(xué)出版社,2000.5 趙世強(qiáng).電子電路EDA技術(shù).西安電子科技大學(xué)出版社,2006.附錄 library ieee;
22、use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;package my_package isfunction bcd_to_seg7(signal bcd:integer range 0 to 9) return std_logic_vector;procedure sec_min_hour(signal n:in integer range 0 to 59;signal shi,ge:out integer);end my_package;package body
23、my_package isfunction bcd_to_seg7(signal bcd:integer range 0 to 9)return std_logic_vector isvariable seg7:std_logic_vector(7 downto 0);begincase bcd iswhen 0=> seg7:=x"c0"when 1=> seg7:=x"f9"when 2=> seg7:=x"a4" when 3=> seg7:=x"b0"when 4=> seg7
24、:=x"99" when 5=> seg7:=x"92" when 6=> seg7:=x"82"when 7=> seg7:=x"f8" when 8=> seg7:=x"80"when 9=>seg7:=x"90"when others=>end case;return seg7;end bcd_to_seg7;procedure sec_min_hour(signal n:in integer range 0 to 59;signal
25、 shi,ge:out integer)isbegincase n iswhen 0|1|2|3|4|5|6|7|8|9=>shi<=0;when 10|11|12|13|14|15|16|17|18|19 =>shi<=1;when 20|21|22|23|24|25|26|27|28|29=>shi<=2;when 30|31|32|33|34|35|36|37|38|39 =>shi<=3;when 40|41|42|43|44|45|46|47|48|49=>shi<=4;when 50|51|52|53|54|55|56|5
26、7|58|59=>shi<=5;when others=>null;end case;case n iswhen 0|10|20|30|40|50=>ge<=0;when 1|11|21|31|41|51=>ge<=1;when 2|12|22|32|42|52=>ge<=2; when 3|13|23|33|43|53=>ge<=3;when 4|14|24|34|44|54=>ge<=4;when 5|15|25|35|45|55=>ge<=5;when 6|16|26|36|46|56=>ge
27、<=6;when 7|17|27|37|47|57=>ge<=7;when 8|18|28|38|48|58=>ge<=8;when 9|19|29|39|49|59=>ge<=9; when others=>null;end case;end sec_min_hour;end my_package;-main.vhd -library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;use work.my_
28、package.all;entity digitalclock isport(clk:in std_logic; rst_n:in std_logic; cs:in std_logic; cm:in std_logic; ch:in std_logic; key_sel:in std_logic; buzz:inout std_logic; wei_sel:out std_logic_vector(7 downto 0); data_out:out std_logic_vector(7 downto 0);end digitalclock;architecture behavior of di
29、gitalclock issignal sec:integer range 0 to 59:=50;signal min:integer range 0 to 59:=59;signal hour:integer range 0 to 23:=0;signal sec_ge:integer range 0 to 9;signal min_ge:integer range 0 to 9;signal hour_ge:integer range 0 to 9;signal sec_shi:integer range 0 to 9;signal min_shi:integer range 0 to
30、9;signal hour_shi:integer range 0 to 9;signal clk_1:std_logic;signal clk_1000:std_logic;signal buzz_freque:integer;signal key_value:integer;signal cnt:integer range 0 to 7;-the scan frequencesignal H:std_logic;signal up,change:std_logic;beginprocess(clk,rst_n)-divider the clk to different hzvariable
31、 cnt1:integer range 0 to 5000;-9999variable cnt2:integer range 0 to 2;variable cnt3:integer range 0 to 1500;-2500beginif(rst_n='0')then elsif(clk'event and clk='1')thenif(cnt1=5000)thencnt1:=0;clk_1000<=not clk_1000;-1000hzif(cnt2=2)thencnt2:=0;if(cnt=7)thencnt<=0;elsecnt&l
32、t;=cnt+1;end if;if(cnt3=1500)thencnt3:=0;clk_1<=not clk_1;elsecnt3:=cnt3+1;end if;elsecnt2:=cnt2+1;end if;elsecnt1:=cnt1+1;end if;end if;end process;process(clk_1,rst_n,key_value)variable delay:integer range 0 to 10;beginif(rst_n='0')then sec<=0;min<=0;hour<=0;elsif(clk_1'eve
33、nt and clk_1='1')thencase key_value iswhen 3=>sec<=0;when 2=>if(min=59)thenmin<=0;elsemin<=min+1;end if;when 1=>if(hour=23)thenhour<=0;elsehour<=hour+1;end if; when 0=>if(sec=59)thensec<=0;if(min=59)thenmin<=0;if(hour=23)thenhour<=0;elsehour<=hour+1;end
34、 if;elsemin<=min+1;end if;elsesec<=sec+1;if(sec>=54 and sec<=59)thenup<='1'if(sec=55)thenchange<='0'elsif(sec<=59)thenchange<='1'end if;elseup<='0'end if;end if; when others=>null; end case;end if;end process;process(clk_1000,ch,cm,cs)var
35、iable delay:integer range 0 to 10;variable key:std_logic_vector(2 downto 0);beginkey:=ch&cm&cs;if(clk_1000'event and clk_1000='1')thencase key iswhen "011"=>if(delay=10)thendelay:=0;key_value<=1;elsedelay:=delay+1;end if;when "101"=>if(delay=10)thende
36、lay:=0;key_value<=2;elsedelay:=delay+1;end if;when "110"=>if(delay=10)thendelay:=0;key_value<=3;elsedelay:=delay+1;end if;when others=>key_value<=0;end case;end if;end process;process(sec,min)beginif(min=0 and sec=0)thenbuzz_freque<=20000;elsif(min=59)thenif (sec=50 or se
37、c=52 or sec=54 or sec=56 or sec=58)thenbuzz_freque<=10000;elsebuzz_freque<=0;end if;elsebuzz_freque<=0;end if;end process;process(clk,buzz_freque)variable cnt:integer:=0;beginif(buzz_freque/=0)thenif(clk'event and clk='1')thenif(cnt=buzz_freque)thencnt:=0;buzz<=not buzz;elsec
38、nt:=cnt+1;end if;end if;elsebuzz<='1'-1 no beep 0 beepend if;end process;sec_min_hour(sec,sec_shi,sec_ge);sec_min_hour(min,min_shi,min_ge);sec_min_hour(hour,hour_shi,hour_ge);process(cnt,sec_shi,sec_ge,min_shi,min_ge,hour_shi,hour_ge,clk_1,key_sel,up,change)variable H:std_logic;beginif(ke
39、y_sel='1')thencase cnt iswhen 0=>wei_sel<="11111110"if(up='1')thenif(change='0')thendata_out<=x"a3"elsedata_out<=x"80"end if;elsedata_out<=bcd_to_seg7(sec_ge);end if;when 1=>wei_sel<="11111101"if(up='1')then
40、if(change='0')thendata_out<=x"fb"elsedata_out<=x"f9"end if;elsedata_out<=bcd_to_seg7(sec_shi);end if;when 2=>wei_sel<="11111011"if(clk_1='1')thenH:='1'elseH:='0'end if;data_out<='1'&H&"111111"wh
41、en 3=>wei_sel<="11110111"if(up='1')thenif(change='0')thendata_out<=x"a7"elsedata_out<=x"82"end if;elsedata_out<=bcd_to_seg7(min_ge);end if;when 4=>wei_sel<="11101111"if(up='1')thenif(change='0')thendata_out<=x"ab"elsedata_out<=x"c0"end if;elsedata_out<=bcd_to_seg7(min_shi);end if;when 5=>wei_sel<="11011111&qu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)保設(shè)備安裝與維護(hù)服務(wù)合同
- 快遞合作協(xié)議合同
- 教育在線培訓(xùn)服務(wù)協(xié)議
- 建筑項(xiàng)目設(shè)計(jì)及施工合作協(xié)議
- 大灣區(qū)新興產(chǎn)業(yè)發(fā)展項(xiàng)目合作框架協(xié)議
- 環(huán)??萍柬?xiàng)目研發(fā)與推廣合同
- 總包單位簽訂分包合同
- 買賣手房反擔(dān)保合同
- 承包合同養(yǎng)殖合同
- 私人拖拉機(jī)買賣合同書
- 第五部分茶藝館的經(jīng)營與管理
- 《習(xí)作:那一刻-我長大了》課件ppt
- 小學(xué)道德與法治課堂生活化教學(xué)的策略講座稿
- 大學(xué)生返家鄉(xiāng)志愿服務(wù)證明
- (新版)網(wǎng)絡(luò)攻防知識(shí)考試題庫(含答案)
- 建筑工程資料檔案盒側(cè)面標(biāo)簽
- 工程設(shè)計(jì)變更工程量計(jì)算表
- 動(dòng)力工程及工程熱物理專業(yè)英語課件
- 幼兒系列故事繪本課件達(dá)芬奇想飛-
- 出納收入支出日記賬Excel模板
- 給水排水用格柵除污機(jī)通用技術(shù)條件
評(píng)論
0/150
提交評(píng)論