欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      VHDL實(shí)現(xiàn)數(shù)字鐘課設(shè)報(bào)告[推薦]

      時(shí)間:2019-05-13 23:58:02下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫小編為你整理了多篇相關(guān)的《VHDL實(shí)現(xiàn)數(shù)字鐘課設(shè)報(bào)告[推薦]》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《VHDL實(shí)現(xiàn)數(shù)字鐘課設(shè)報(bào)告[推薦]》。

      第一篇:VHDL實(shí)現(xiàn)數(shù)字鐘課設(shè)報(bào)告[推薦]

      東北大學(xué)信息學(xué)院

      課程設(shè)計(jì)報(bào)告

      課程設(shè)計(jì)題目:用VHDL語言實(shí)現(xiàn)數(shù)字鐘的設(shè)計(jì)

      班 級(jí):電子1001班 學(xué) 號(hào):20102594 姓 名:劉云飛

      指導(dǎo)老師:李世平、李寧

      設(shè)計(jì)時(shí)間:2012年12月

      東北大學(xué)信息學(xué)院

      摘要

      隨著EDA技術(shù)的發(fā)展,EDA在通信、電子等領(lǐng)域占有十分重要的地位。本設(shè)計(jì)介紹了基于VHDL語言的數(shù)字鐘的設(shè)計(jì)。數(shù)字鐘的功能是對(duì)年、月、日、時(shí)、分、秒、星期,以及鬧鐘時(shí)、分的預(yù)置;在正常計(jì)數(shù)時(shí)的時(shí)、分與鬧鐘設(shè)定的時(shí)、分相同時(shí),實(shí)現(xiàn)報(bào)時(shí),同時(shí)以stop和pass鍵對(duì)鬧鐘進(jìn)行停止及延遲響鈴的控制;在整點(diǎn)的時(shí)候led燈閃爍一下。其中,用set脈沖的不同實(shí)現(xiàn)對(duì)預(yù)置,正常計(jì)時(shí),鬧鐘的控制。Set為1~12分別控制顯示年月日、預(yù)置年月日、時(shí)分秒、星期、顯示時(shí)分秒、預(yù)置鬧鐘時(shí)分、顯示鬧鐘預(yù)置的時(shí)分。預(yù)置時(shí)用up的高、低電平實(shí)現(xiàn)對(duì)各預(yù)置量的加、減控制。將1KHZ的時(shí)鐘進(jìn)行分頻為1HZ,實(shí)現(xiàn)每次脈沖為1秒。經(jīng)仿真和驗(yàn)證顯示,此數(shù)字鐘切實(shí)可行,可以實(shí)現(xiàn)顯示時(shí)間和鬧鐘的功能。

      關(guān)鍵詞:VHDL語言,數(shù)字鐘,預(yù)置

      東北大學(xué)信息學(xué)院

      目錄

      摘 要............................................................2

      1、設(shè)計(jì)目的.........................................................4

      2、設(shè)計(jì)內(nèi)容和要求...................................................4

      3、設(shè)計(jì)原理.........................................................4

      3.1 數(shù)字鐘功能介紹..........................................................................................................4 3.2 數(shù)字鐘設(shè)計(jì)原理..........................................................................................................5

      4、VHDL程序設(shè)計(jì).....................................................6

      4.1 整體設(shè)計(jì)思路................................................................................................................6 4.2 各模塊設(shè)計(jì)方法............................................................................................................7 4.2.1 頂層模塊...............................................................................................................7 4.2.2 其他模塊...............................................................................................................8 4.2.3 程序包模塊.........................................................................................................13

      5、仿真與分析......................................................13

      5.1 仿真結(jié)果....................................................................................................................13 5.2 仿真分析....................................................................................................................16

      6、課程設(shè)計(jì)總結(jié)....................................................16

      7、參考文獻(xiàn)........................................................17

      東北大學(xué)信息學(xué)院

      1、設(shè)計(jì)目的

      掌握利用可編程邏輯器件和EDA設(shè)計(jì)工具進(jìn)行電子系統(tǒng)設(shè)計(jì)的方法。

      2、設(shè)計(jì)內(nèi)容和要求

      用VHDL語言實(shí)現(xiàn)數(shù)字鐘的設(shè)計(jì),要求設(shè)計(jì)實(shí)現(xiàn)一個(gè)具有帶預(yù)置數(shù)的數(shù)字鐘,具有顯示年月日時(shí)分秒的功能。用6個(gè)數(shù)碼管顯示時(shí)分秒,set按鈕產(chǎn)生第一個(gè)脈沖時(shí),顯示切換年月日,第2個(gè)脈沖到來時(shí)可預(yù)置年份,第3個(gè)脈沖到來時(shí)可預(yù)置月份,依次第4、5、6、7個(gè)脈沖到來時(shí)分別可預(yù)置日期、時(shí)、分、秒,第 8個(gè)脈沖到來后預(yù)置結(jié)束,正常工作,顯示的是時(shí)分秒。Up為高電平時(shí),upclk有脈沖到達(dá)時(shí),預(yù)置位加1。否則減1。

      3、設(shè)計(jì)原理 3.1 數(shù)字鐘功能介紹

      數(shù)字鐘具有計(jì)時(shí)、預(yù)置、報(bào)時(shí)的功能。以不同的set脈沖控制各個(gè)功能。

      (1)在計(jì)時(shí)功能中,數(shù)字鐘實(shí)現(xiàn)對(duì)年月日時(shí)分秒即星期的計(jì)時(shí),并可以通過LED數(shù)碼管分別顯示年月日、或時(shí)分秒、或星期、或鬧鐘的時(shí)分。

      (2)在預(yù)置功能中,可以通過UP鍵對(duì)各需要預(yù)置的量進(jìn)行控制。UP=1時(shí),進(jìn)行“加”控制,UP=0時(shí),進(jìn)行“減”控制。

      (3)在報(bào)時(shí)功能中,分為整點(diǎn)報(bào)時(shí)和設(shè)置時(shí)間報(bào)時(shí)。其中整點(diǎn)報(bào)時(shí)以ce作為使能輸入端,在整點(diǎn)時(shí)燈進(jìn)行一秒閃爍;設(shè)置時(shí)間報(bào)時(shí)以enable作為使能輸入端,enable=1時(shí)設(shè)置時(shí)間報(bào)時(shí)功能啟動(dòng),在鬧鐘預(yù)置時(shí)間與時(shí)鐘當(dāng)前時(shí)間相同時(shí)報(bào)時(shí),若此時(shí)按下stop,鬧鐘立即停止并不再響鈴,若按下pass,則鬧鐘立即停止,但三分鐘后再響,如此循環(huán)5次后不再響鈴,若什么都不按,鬧鐘響鈴持續(xù)1分鐘。

      東北大學(xué)信息學(xué)院

      3.2 數(shù)字鐘設(shè)計(jì)原理

      本設(shè)計(jì)功能有8個(gè)子模塊:分頻模塊、時(shí)分秒模塊、日模塊、年月模塊、鬧鐘預(yù)置模塊、星期模塊、響鈴模塊。通過元件例化由頂層文件timekeeper綜合。

      整體設(shè)計(jì)框圖及外觀圖如(圖 3-1)及(圖3-2)

      圖3-1 數(shù)字鐘設(shè)計(jì)整體框圖

      東北大學(xué)信息學(xué)院

      圖3-2 數(shù)字鐘外觀圖

      4、VHDL程序設(shè)計(jì)

      4.1 整體設(shè)計(jì)思路

      采用自上而下的方法進(jìn)行整體設(shè)計(jì)。整個(gè)設(shè)計(jì)共分為8個(gè)模塊,通過頂

      層文件timekeeper元件例化將8個(gè)模塊各個(gè)端口對(duì)應(yīng)相連。在設(shè)計(jì)各個(gè)模塊時(shí)所用到的其它運(yùn)算方法等放于work庫中,通過程序包及程序包體的方式對(duì)所使用函數(shù)進(jìn)行定義。

      主要使用的語句有:元件例化語句,過程語句,信號(hào)賦值語句,if語句,case語句(在狀態(tài)機(jī)中)。

      圖(4-1)表示了個(gè)模塊的連接及連接是所用到的觸發(fā)器等。

      東北大學(xué)信息學(xué)院

      圖4-1

      整體結(jié)構(gòu)圖

      4.2 各模塊設(shè)計(jì)方法

      4.2.1 頂層模塊

      頂層模塊timekeeper是.對(duì)對(duì)所有模塊的綜合。

      它包含的功能是:通過元件例化連接各模塊;實(shí)現(xiàn)對(duì)鬧鐘控制位sp2的控制;實(shí)現(xiàn)鬧鐘的整點(diǎn)報(bào)時(shí)閃爍。

      輸入端:up

      全局加減選擇,控制預(yù)置時(shí)的加減

      setpin 設(shè)定選擇

      東北大學(xué)信息學(xué)院

      upclk 加減觸發(fā)

      f1000 時(shí)鐘輸入

      輸出端:a0~d1 八位數(shù)碼管控制引腳的輸出

      z

      整點(diǎn)報(bào)時(shí)輸出 4.2.2 其他模塊

      1、時(shí)分秒模塊

      時(shí)分秒模塊h_m_s是對(duì)時(shí)、分、秒正常計(jì)時(shí)(set=0 or 1 or 12)和預(yù)置時(shí)分秒(set=5 or 6 or 7)的實(shí)現(xiàn)。

      分和秒由兩個(gè)六十進(jìn)制實(shí)現(xiàn),時(shí)由24進(jìn)制實(shí)現(xiàn)。當(dāng)時(shí)間達(dá)到23時(shí)59分59秒時(shí),時(shí)分秒全部歸零,進(jìn)位位ov由零變?yōu)?,通過管腳連接到date模塊的時(shí)鐘計(jì)數(shù)信號(hào)clk0,開啟date模塊。

      2、日的模塊

      日的模塊date實(shí)現(xiàn)日子進(jìn)行正常計(jì)時(shí)(set=0 or 1 or 12)和預(yù)置(set=4)。

      由于每月的天數(shù)與月份、年份有關(guān),故需判斷年月。(1)(2)(3)當(dāng)1、3、5、7、8、10、12月時(shí),每月31天,使用31進(jìn)制。當(dāng)4、6、9、11月時(shí),每月30天,使用30進(jìn)制。當(dāng)2月時(shí),分閏年和平年。閏年29天,平年28天。

      閏年和平年的判斷方法是:由于通過年月模塊傳輸?shù)哪攴轂閮晌籅CD碼。若高位信號(hào)為“xxx0”且低位信號(hào)為“xx00”或高位信號(hào)為“xxx1”且低位信號(hào)為“xx10”,則可判定為閏年,否則為平年。

      以上各月,當(dāng)日期至月底時(shí)返回1,進(jìn)位位ov變?yōu)?通過管腳連接年月模塊的時(shí)鐘計(jì)數(shù)信號(hào)clk0,開啟年月模塊。

      3、年月模塊

      年月模塊year_mon實(shí)現(xiàn)年月正常計(jì)時(shí)(set=0 or 1 or 12)和年、月的預(yù)置(set=2 or 3)。

      月為12進(jìn)制,當(dāng)達(dá)到12時(shí)變回為1,同時(shí)使年份進(jìn)1。由兩位BCD碼表示年份,故可以表示100年之年的所有年,為100進(jìn)制。

      東北大學(xué)信息學(xué)院

      圖4-2 year_mon和date模塊的電路連接圖

      4、星期模塊

      星期模塊week的功能是實(shí)現(xiàn)對(duì)星期的計(jì)時(shí)(set=0 or 1 or 12)和預(yù)置(set=8)。為七進(jìn)制。

      圖4-3 week模塊的RTL

      5、鬧鐘模塊

      東北大學(xué)信息學(xué)院

      鬧鐘模塊alarm是對(duì)鬧鐘時(shí)和分的預(yù)置(set=10 or 11)。時(shí)為24進(jìn)制,分為60進(jìn)制。

      圖4-3 alarm模塊的RTL

      另外,在頂層模塊timekeeper,當(dāng)鬧鐘預(yù)置時(shí)間與計(jì)時(shí)時(shí)間相同時(shí)(僅時(shí)、分),鬧鐘響鈴,當(dāng)不對(duì)其進(jìn)行任何操作時(shí),響鈴維持1分鐘。響鈴方式見4.2.7響鈴模塊。

      6、響鈴模塊

      響鈴模塊alarm是對(duì)鬧鐘響鈴的控制。其中主要包含:

      Enable:當(dāng)enable=1時(shí),鬧鐘可以工作。

      Sp2 :當(dāng)頂層模塊鬧鐘時(shí)間與計(jì)時(shí)相等時(shí),sp2=1,響鈴開啟。Stop :鬧鐘停止并不再響鈴。

      Pass :鬧鐘停止但三分鐘后再響,循環(huán)5次。Sp :響鈴輸出。Sp=1時(shí)響鈴,sp=0時(shí)不響。本模塊主要使用的方法是狀態(tài)機(jī)。相應(yīng)狀態(tài)轉(zhuǎn)換圖如下:

      東北大學(xué)信息學(xué)院

      圖 4-4 響鈴模塊狀態(tài)轉(zhuǎn)換圖

      在狀態(tài)t_pass時(shí),使用計(jì)數(shù)的方法實(shí)現(xiàn)對(duì)3分鐘,5次循環(huán)的計(jì)數(shù)。

      圖 4-5 計(jì)數(shù)的流程圖

      東北大學(xué)信息學(xué)院

      圖4-6 speak模塊的RTL

      7、分頻模塊

      分頻模塊fenpin使輸入為1KHZ時(shí)鐘信號(hào)時(shí),接入電路經(jīng)分頻后仍能按1HZ即1s計(jì)數(shù)。

      圖4-7 fenpin模塊的RTL

      8、顯示模塊

      顯示模塊led即七段數(shù)碼管的顯示電路。

      東北大學(xué)信息學(xué)院

      圖4-8 led模塊的RTL 4.2.3 程序包模塊

      程序模塊是對(duì)各模塊所用到的函數(shù)的定義,通過程序包package定義時(shí)、日、月、年等的增減函數(shù)(procedure),并用程序包體package body具體說明函數(shù)的內(nèi)容。通過use.work.pac.all語句調(diào)用程序包,使程序書寫更加方便簡(jiǎn)潔。

      5、仿真與分析

      5.1 仿真結(jié)果

      1、h_m_s模塊

      東北大學(xué)信息學(xué)院

      表示當(dāng)up=1時(shí),時(shí)鐘時(shí)(set=5)、分(set=6)、秒(set=7)從0開始加。

      圖 5-1

      2、date模塊

      以下為對(duì)應(yīng)月份截圖。另外,當(dāng)日期由最末變?yōu)?時(shí),ov進(jìn)1以控制year_mon模塊。

      (1)大月:每月31天。

      圖5-2-1(2)小月:每月30天。

      圖5-2-2(3)平年2月:每月28天。

      東北大學(xué)信息學(xué)院

      圖5-2-3(3)閏年2月:每月29天。

      圖5-2-4

      3、year_mon模塊

      圖5-3

      4、week模塊

      前半部分up=1,為加,1~7,后半部分up=0,為減,6~1

      圖5-4

      5、alarm模塊

      下圖反映對(duì)鬧鐘時(shí)(set=10)、分(set=11)的預(yù)置,up=1為加。

      圖 5-5

      6、speak模塊

      (1)按下pass

      由下圖可見,當(dāng)時(shí)間相同sp為高電平;按下pass后sp變?yōu)榈碗娖?,三分?/p>

      東北大學(xué)信息學(xué)院

      后sp又為高電平。

      圖5-6-1(2)按下stop

      由下圖可見,當(dāng)時(shí)間相同時(shí)sp為高電平,按下stop后sp變?yōu)榈碗娖健?/p>

      圖 5-6-2

      5.2 仿真分析

      各模塊仿真均可實(shí)現(xiàn),且波形顯示可以實(shí)現(xiàn)預(yù)想的功能。

      6、課程設(shè)計(jì)總結(jié)

      通過這次的課程設(shè)計(jì),我又一次系統(tǒng)的復(fù)習(xí)了VHDL語言,通過實(shí)踐對(duì)VHDL語言和EDA技術(shù)有了更具現(xiàn)實(shí)性應(yīng)用性的了解,并熟練了相關(guān)軟件的使用方法。

      此次課程設(shè)計(jì)的內(nèi)容是數(shù)字鐘,我學(xué)會(huì)了如何利用元件例化將各個(gè)模塊結(jié)合起來,而不是一味的想起一個(gè)功能設(shè)計(jì)一個(gè)功能,而是有一個(gè)總體的自上而下的設(shè)計(jì),建立基本的設(shè)計(jì)框圖(如圖 3-1),再進(jìn)行具體的設(shè)計(jì)。

      在程序調(diào)試的過程中,出現(xiàn)了很多的問題。我發(fā)現(xiàn)往往是一行出現(xiàn)了錯(cuò)誤導(dǎo)致了接下來一系列錯(cuò)誤的出現(xiàn)。

      還有在仿真中出現(xiàn)錯(cuò)誤的紅線,并出現(xiàn)了‘U’字符,全都是未設(shè)置初值所致。而在設(shè)置初值時(shí)仍然出現(xiàn)了問題。最開始我想定義一個(gè)clr信號(hào),當(dāng)clr為高電平時(shí)各功能清零,但是在實(shí)際仿真時(shí),由于常常要看在月末或類似23時(shí)59分59秒這樣的時(shí)刻是否有進(jìn)位信號(hào)進(jìn)為高電平,從零開始顯然讓仿真變的十

      東北大學(xué)信息學(xué)院

      分麻煩,如果可以直接賦初值到接近進(jìn)位的時(shí)刻就會(huì)讓仿真變得簡(jiǎn)便。即使用信號(hào)賦初值的方法對(duì)信號(hào)進(jìn)行賦初值,既解決錯(cuò)誤又利于仿真。

      在最后對(duì)頂層仿真時(shí)出現(xiàn)了很多的問題,最后發(fā)現(xiàn)都是未對(duì)應(yīng)的問題。當(dāng)然,我的設(shè)計(jì)還有很多不足的地方。比如有一處的競(jìng)爭(zhēng)冒險(xiǎn)產(chǎn)生的毛刺沒有解決。最開始是將speak模塊控制信號(hào)sp2的相關(guān)程序?qū)懺诹薬larm模塊,仿真時(shí)發(fā)現(xiàn)在一處出現(xiàn)了毛刺,在對(duì)鬧鐘進(jìn)行預(yù)置時(shí)分時(shí)的第一個(gè)時(shí)間都未足一個(gè)時(shí)鐘周期(如圖 5-5)。后來我想是否因?yàn)閍larm模塊有兩個(gè)process進(jìn)程,就將sp2的相關(guān)程序挪到了頂層模塊,但是最后還是沒有實(shí)現(xiàn)。咨詢了一下同學(xué)們,他們都說這沒有問題,不需要解決,所以就沒有解決這個(gè)問題。

      此次課程設(shè)計(jì)我學(xué)到了很多,但是我覺得應(yīng)該放在剛剛考完EDA之后,那時(shí)候?qū)χ皇怯浀帽容^清楚,不像在這次設(shè)計(jì)時(shí)很多知識(shí)都想不起來了。其他的對(duì)我?guī)椭己艽蟆?/p>

      7、參考文獻(xiàn) 李景華,杜玉遠(yuǎn)等著.可編程邏輯器件與EDA技術(shù).沈陽:東北大學(xué)出版社,2000 2 齊懷印等.高級(jí)邏輯器件與設(shè)計(jì).北京:電子工業(yè)出版社,1996 3 可編程邏輯器件與數(shù)字系統(tǒng)設(shè)計(jì)[M].北京航天航空大學(xué)出版社,1999 4 劉真,畢才術(shù).數(shù)字邏輯與計(jì)算機(jī)設(shè)計(jì)[M ]北京:高等教育出版社,2002 5 王小軍.VHDL簡(jiǎn)明教程[M].北京:清華大學(xué)出版社,1997

      第二篇:數(shù)字鐘課設(shè)任務(wù)書

      課程設(shè)計(jì)任務(wù)書

      一、設(shè)計(jì)課題

      數(shù)字鐘

      二、設(shè)計(jì)時(shí)間

      2011年 6 月 20日至2011年 6 月 24日

      三、設(shè)計(jì)內(nèi)容及要求

      1、設(shè)計(jì)要求

      1)時(shí)間以24小時(shí)為一個(gè)周期; 2)能顯示時(shí)、分、秒,24小時(shí)制;

      3)有校時(shí)功能,可以分別對(duì)時(shí)及分進(jìn)行單獨(dú)校時(shí),使其校正到標(biāo)準(zhǔn)時(shí)間; 4)計(jì)時(shí)過程具有報(bào)時(shí)功能,當(dāng)時(shí)間到達(dá)整點(diǎn)前5秒進(jìn)行蜂鳴報(bào)時(shí); 5)為了保證計(jì)時(shí)的穩(wěn)定及準(zhǔn)確須由晶體振蕩器提供表針時(shí)間基準(zhǔn)信號(hào)。6)在完成上述設(shè)計(jì)內(nèi)容的基礎(chǔ)上,可以自行設(shè)計(jì)一些附加功能。注意:硬件資源的節(jié)約,否則器件內(nèi)資源會(huì)枯竭。

      2、工作任務(wù)與要求

      1)搜集有關(guān)資料,進(jìn)行方案設(shè)計(jì),畫出總體設(shè)計(jì)框圖,說明搶答器由哪些相對(duì)獨(dú)立的功能模塊組成,標(biāo)出各個(gè)模塊之間互相聯(lián)系,并以文字對(duì)原理作輔助說明。

      2)進(jìn)行電路參數(shù)分析、論證,以及電路可靠性分析。3)設(shè)計(jì)各個(gè)功能模塊的電路圖,加上原理說明。

      4)在驗(yàn)證各個(gè)功能模塊基礎(chǔ)上,對(duì)整個(gè)電路的元器件和布線,進(jìn)行合理布局,畫出總體電路圖。

      3、設(shè)計(jì)報(bào)告正文內(nèi)容要求

      1)設(shè)計(jì)目的。2)設(shè)計(jì)指標(biāo)。3)設(shè)計(jì)方案及論證。

      4)畫出設(shè)計(jì)的原理框圖,并要求說明該框圖的工作過程及每個(gè)模塊的功能。5)畫出各功能模塊的電路圖,加上原理說明(例如搶答門及控制電路,鎖存器及譯碼顯示原理等)。

      6)畫出總布局接線圖(集成塊按實(shí)際布局位置畫,關(guān)鍵的連接應(yīng)單獨(dú)畫出,集成塊的引腳須按實(shí)際位置畫,并注明名稱。)

      7)元器件清單。

      胡靜波

      第三篇:基于VHDL的多功能數(shù)字鐘設(shè)計(jì)報(bào)告

      基于VHDL的多功能數(shù)字鐘

      設(shè)計(jì)報(bào)告

      021215班 衛(wèi)時(shí)章 02121451

      一、設(shè)計(jì)要求

      1、具有以二十四小時(shí)制計(jì)時(shí)、顯示、整點(diǎn)報(bào)時(shí)、時(shí)間設(shè)置和鬧鐘的功能。

      2、設(shè)計(jì)精度要求為1秒。

      二、設(shè)計(jì)環(huán)境:Quartus II

      三、系統(tǒng)功能描述

      1、系統(tǒng)輸入:時(shí)鐘信號(hào)clk采用50MHz;系統(tǒng)狀態(tài)及較時(shí)、定時(shí)轉(zhuǎn)換的控制信號(hào)為k、set,校時(shí)復(fù)位信號(hào)為reset,均由按鍵信號(hào)產(chǎn)生。

      2、系統(tǒng)輸出:LED顯示輸出;蜂鳴器聲音信號(hào)輸出。

      3、多功能數(shù)字電子鐘系統(tǒng)功能的具體描述如下:

      (一)計(jì)時(shí):正常工作狀態(tài)下,每日按24h計(jì)時(shí)制計(jì)時(shí)并顯示,蜂鳴器無聲,逢整點(diǎn)報(bào)時(shí)。

      (二)校時(shí):在計(jì)時(shí)顯示狀態(tài)下,按下“k”鍵,進(jìn)入“小時(shí)”待校準(zhǔn)狀態(tài),若此時(shí)按下“set”鍵,小時(shí)開始校準(zhǔn);之后按下“k”鍵則進(jìn)入“分”待校準(zhǔn)狀態(tài);繼續(xù)按下“k”鍵則進(jìn)入“秒”待復(fù)零狀態(tài);再次按下“k”鍵數(shù)碼管顯示鬧鐘時(shí)間,并進(jìn)入鬧鐘“小時(shí)”待校準(zhǔn)狀態(tài);再次按下“k”鍵則進(jìn)入鬧鐘“分”待校準(zhǔn)狀態(tài);若再按下“k”鍵恢復(fù)到正常計(jì)時(shí)顯示狀態(tài)。若校時(shí)過程中按下“reset”鍵,則系統(tǒng)恢復(fù)到正常計(jì)數(shù)狀態(tài)。(1)“小時(shí)”校準(zhǔn)狀態(tài):在“小時(shí)”校準(zhǔn)狀態(tài)下,顯示“小時(shí)”的數(shù)碼管以2Hz閃爍,并按下“set”鍵時(shí)以2Hz的頻率遞增計(jì)數(shù)。(2)“分”校準(zhǔn)狀態(tài):在“分”校準(zhǔn)狀態(tài)下,顯示“分”的數(shù)碼管以2Hz閃爍,并按下“set”鍵時(shí)以2Hz的頻率遞增計(jì)數(shù)。(3)“秒”校準(zhǔn)狀態(tài):在“秒復(fù)零”狀態(tài)下,顯示“秒”的數(shù)碼管以2Hz閃爍,并以1Hz的頻率遞增計(jì)數(shù)。

      (4)鬧鐘“小時(shí)”校準(zhǔn)狀態(tài):在鬧鐘“小時(shí)”校準(zhǔn)狀態(tài)下,顯示“小時(shí)”的數(shù)碼管以2Hz閃爍,并按下“set”鍵時(shí)以2Hz的頻率遞增計(jì)數(shù)。

      (5)鬧鐘“分”校準(zhǔn)狀態(tài):在鬧鐘“分”校準(zhǔn)狀態(tài)下,顯示“分”的數(shù)碼管以2Hz閃爍,并按下“set”鍵時(shí)以2Hz的頻率遞增計(jì)數(shù)。

      (三)整點(diǎn)報(bào)時(shí):蜂鳴器在“59”分鐘的第“51”、“53”、“55”、“57”秒發(fā)頻率為500Hz的低音,在“59”分鐘的第“59”秒發(fā)頻率為1000Hz的高音,結(jié)束時(shí)為整點(diǎn)。

      (四)顯示:采用掃描顯示方式驅(qū)動(dòng)4個(gè)LED數(shù)碼管顯示小時(shí)、分,秒由兩組led燈以4位BCD 碼顯示。

      (五)鬧鐘:鬧鐘定時(shí)時(shí)間到,蜂鳴器發(fā)出頻率為1000Hz的高音,持續(xù)時(shí)間為60秒。

      四、各個(gè)模塊分析說明

      1、分頻器模塊(freq.vhd)(1)模塊說明:輸入一個(gè)頻率為50MHz的CLK,利用計(jì)數(shù)器分出 1KHz的q1KHz,500Hz的q500Hz,2Hz的q2Hz和1Hz的q1Hz。(2)源程序: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

      entity freq is

      port

      (CLK: in std_logic;

      --輸入時(shí)鐘信號(hào)

      q1KHz: buffer std_logic;

      q500Hz: buffer std_logic;

      q2Hz: buffer std_logic;

      q1Hz: out std_logic);end freq;

      architecture bhv of freq is begin P1KHZ:process(CLK)variable cout:integer:=0;begin

      if CLK'event and CLK='1' then

      cout:=cout+1;

      --每來個(gè)時(shí)鐘上升沿時(shí)cout開始計(jì)數(shù) if cout<=25000 then q1KHz<='0';

      --當(dāng)cout<=25000時(shí),q1KHz輸出“0”

      elsif cout<50000 then q1KHz<='1';--當(dāng)25000

      else cout:=0;

      --輸出“1”,完成1KHz頻率輸出 end if;

      end if;end process;

      P500HZ:process(q1KHz)

      --q1KHz作為輸入信號(hào),分出q500Hz variable cout:integer:=0;begin if q1KHz'event and q1KHz='1' then cout:=cout+1;if cout=1 then q500Hz<='0';

      --二分頻

      elsif cout=2 then cout:=0;q500Hz<='1';end if;

      end if;end process;

      P2HZ:process(q500Hz)variable cout:integer:=0;begin if q500Hz'event and q500Hz='1' then cout:=cout+1;if cout<=125 then q2Hz<='0';

      elsif cout<250 then q2Hz<='1';

      else cout:=0;end if;

      end if;end process;

      P1HZ:process(q2Hz)variable cout:integer:=0;begin if q2Hz'event and q2Hz='1' then cout:=cout+1;if cout=1 then q1Hz<='0';

      elsif cout=2 then cout:=0;q1Hz<='1';end if;

      end if;end process;end bhv;(3)模塊圖:

      2、控制器模塊(contral.vhd)(1)模塊說明:輸入端口k,set鍵來控制6個(gè)狀態(tài),這六個(gè)狀態(tài)分別是: 顯示計(jì)時(shí)時(shí)間狀態(tài),調(diào)計(jì)時(shí)的時(shí)、分、秒的3個(gè)狀態(tài),調(diào)鬧鈴的時(shí)、分的3個(gè)狀態(tài),reset鍵是復(fù)位鍵,用來回到顯示計(jì)時(shí)時(shí)間的狀態(tài)。(2)波形仿真圖:

      (3)模塊圖:

      3、二選一模塊(mux21a.vhd)(1)源程序: library ieee;

      use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

      entity mux21a is port(a,b,s:in bit;

      y:out bit);end entity mux21a;

      architecture one of mux21a is begin

      process(a,b,s)begin if s='0' then

      y<=a;

      --若s=0,y輸出a,反之輸出b。else y<=b;end if;end process;end architecture one;(2)仿真波形圖:

      (3)模塊圖:

      4、計(jì)時(shí)模塊

      a.秒計(jì)時(shí)(second.vhd)(1)仿真波形圖:

      (2)模塊圖:

      b.分計(jì)時(shí)(minute.vhd)(1)仿真波形圖:

      (2)模塊圖:

      c.小時(shí)計(jì)時(shí)(hour.vhd)(1)仿真波形圖:

      (2)模塊圖:

      d.鬧鐘分計(jì)時(shí)(cntm60b.vhd)(1)仿真波形圖:

      (2)模塊圖:

      e.鬧鐘小時(shí)計(jì)時(shí)(cnth24b.vhd)(1)仿真波形圖:

      (2)模塊圖:

      5、鬧鐘比較模塊(compare.vhd)(1)模塊說明:比較正常計(jì)數(shù)時(shí)間與鬧鐘定時(shí)時(shí)間是否相等,若相等,compout輸出“1”,反之輸出“0”。(2)仿真波形圖:

      (3)模塊圖:

      6、報(bào)時(shí)模塊(bell.vhd)(1)模塊說明:該模塊既實(shí)現(xiàn)了整點(diǎn)報(bào)時(shí)的功能,又實(shí)現(xiàn)了鬧鈴的功能,蜂鳴器通過所選頻率的不同,而發(fā)出不同的聲音。(2)仿真波形圖:

      (3)模塊圖:

      7、控制顯示模塊(show_con.vhd)(1)模塊說明:該模塊實(shí)現(xiàn)了數(shù)碼管既可以顯示正常時(shí)間,又可以顯示鬧鐘時(shí)間的功能;調(diào)時(shí)過程的定時(shí)閃爍功能也在此模塊中真正實(shí)現(xiàn)。(2)源程序: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity show_con is

      port(th1,tm1,ts1:in std_logic_vector(7 downto 4);

      th0,tm0,ts0:in std_logic_vector(3 downto 0);

      bh1,bm1:in std_logic_vector(7 downto 4);

      bh0,bm0:in std_logic_vector(3 downto 0);

      sec1,min1,h1: out std_logic_vector(7 downto 4);

      sec0,min0,h0: out std_logic_vector(3 downto 0);

      q2Hz,flashs,flashh,flashm,sel_show:in std_logic);end show_con;

      architecture rtl of show_con is begin process(th1,tm1,ts1,th0,tm0,ts0,bh1,bm1,bh0,bm0,q2Hz,flashs,flashh,flashm,sel_show)

      begin

      if sel_show='0'then

      if(flashh='1'and q2Hz='1')then

      h1<=“1111”;h0<=“1111”;--顯示小時(shí)數(shù)碼管以2Hz閃爍

      min1<=tm1;min0<=tm0;

      sec1<=ts1;sec0<=ts0;

      elsif(flashm='1'and q2Hz='1')then

      h1<=th1;h0<=th0;

      min1<=“1111”;min0<=“1111”;

      sec1<=ts1;sec0<=ts0;

      elsif(flashs='1'and q2Hz='1')then

      h1<=th1;h0<=th0;

      min1<=tm1;min0<=tm0;

      sec1<=“1111”;sec0<=“1111”;

      else

      h1<=th1;h0<=th0;

      min1<=tm1;min0<=tm0;

      sec1<=ts1;sec0<=ts0;

      end if;

      elsif sel_show='1'then--若sel_show為“1”,數(shù)碼管顯示鬧鐘時(shí)間

      if(flashh='1' and q2Hz='1')then

      h1<=“1111”;h0<=“1111”;

      min1<=bm1;min0<=bm0;

      sec1<=“0000”;sec0<=“0000”;

      elsif(flashm='1' and q2Hz='1')then

      h1<=bh1;h0<=bh0;

      min1<=“1111”;min0<=“1111”;

      sec1<=“0000”;sec0<=“0000”;

      else

      h1<=bh1;h0<=bh0;

      min1<=bm1;min0<=bm0;

      sec1<=“0000”;sec0<=“0000”;

      end if;

      end if;

      end process;end rtl;(3)模塊圖:

      8、動(dòng)態(tài)掃描顯示模塊(scan_led.vhd)(1)模塊說明:由4組輸入信號(hào)和輸出信號(hào)進(jìn)而實(shí)現(xiàn)了時(shí)鐘時(shí)、分的動(dòng)態(tài)顯示。(2)源程序: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

      entity scan_led is port(clk1:in std_logic;

      h0:in std_logic_vector(3 downto 0);

      h1:in std_logic_vector(7 downto 4);

      min0:in std_logic_vector(3 downto 0);

      min1:in std_logic_vector(7 downto 4);

      ML:out std_logic_vector(7 downto 0);

      MH:out std_logic_vector(7 downto 0);

      HL:out std_logic_vector(7 downto 0);

      HH:out std_logic_vector(7 downto 0));end scan_led;

      architecture one of scan_led is signal cnt4:std_logic_vector(1 downto 0);signal a: std_logic_vector(3 downto 0);begin p1:process(clk1)begin

      if clk1'event and clk1 ='1' then

      cnt4<=cnt4+1;

      if cnt4=3 then

      cnt4<=“00”;end if;end if;end process p1;

      p2:process(cnt4,h1,h0,min1,min0)begin case cnt4 is

      --控制數(shù)碼管位選 when “00”=>case min0 is

      when “0000”=>ML<=“11000000”;

      when “0001”=>ML<=“11111001”;

      when “0010”=>ML<=“10100100”;

      when “0011”=>ML<=“10110000”;

      when “0100”=>ML<=“10011001”;

      when “0101”=>ML<=“10010010”;

      when “0110”=>ML<=“10000010”;

      when “0111”=>ML<=“11111000”;

      when “1000”=>ML<=“10000000”;

      when “1001”=>ML<=“10010000”;

      when others=>NULL;

      end case;when “01”=>case min1 is

      when “0000”=>MH<=“11000000”;

      when “0001”=>MH<=“11111001”;

      when “0010”=>MH<=“10100100”;

      when “0011”=>MH<=“10110000”;

      when “0100”=>MH<=“10011001”;

      when “0101”=>MH<=“10010010”;

      when “0110”=>MH<=“10000010”;

      when “0111”=>MH<=“11111000”;

      when “1000”=>MH<=“10000000”;

      when “1001”=>MH<=“10010000”;

      when others=>NULL;

      end case;when “10”=>case h0 is

      when “0000”=>HL<=“11000000”;

      when “0001”=>HL<=“11111001”;

      when “0010”=>HL<=“10100100”;

      when “0011”=>HL<=“10110000”;

      when “0100”=>HL<=“10011001”;

      when “0101”=>HL<=“10010010”;

      when “0110”=>HL<=“10000010”;

      when “0111”=>HL<=“11111000”;

      when “1000”=>HL<=“10000000”;

      when “1001”=>HL<=“10010000”;

      when others=>NULL;

      end case;when “11”=>case h1 is

      when “0000”=>HH<=“11000000”;

      when “0001”=>HH<=“11111001”;

      when “0010”=>HH<=“10100100”;

      when “0011”=>HH<=“10110000”;

      when “0100”=>HH<=“10011001”;

      when “0101”=>HH<=“10010010”;

      when “0110”=>HH<=“10000010”;

      when “0111”=>HH<=“11111000”;

      when “1000”=>HH<=“10000000”;

      when “1001”=>HH<=“10010000”;

      when others=>NULL;

      end case;when others =>null;end case;end process p2;end one;(3)模塊圖:

      五、端口設(shè)定

      k:button2,set:button1,reset:button0 ; Bell:SW1 用于開關(guān)蜂鳴器;

      六、頂層電路圖

      七、心得體會(huì)

      此次的數(shù)字鐘設(shè)計(jì)重在于按鍵的控制和各個(gè)模塊代碼的編寫,雖然能把鍵盤接口和各個(gè)模塊的代碼編寫出來,并能正常顯示,但對(duì)于各個(gè)模塊的優(yōu)化設(shè)計(jì)還有一定的缺陷和不足,比如對(duì)按鍵消抖等細(xì)節(jié)處并未作出優(yōu)化。

      經(jīng)過此次數(shù)字鐘的設(shè)計(jì),我確實(shí)從中學(xué)到很多的東西。首先,通過VHDL硬件語言的學(xué)習(xí),我充分認(rèn)識(shí)到了功能模塊如何用語言實(shí)現(xiàn),讓我初步了解到了一個(gè)數(shù)字電路用硬件語言設(shè)計(jì)的方式和設(shè)計(jì)思想。其次,也讓我深深地體會(huì)到實(shí)踐的重要性,起初我學(xué)VHDL語言的時(shí)候,只是學(xué)得書本上的知識(shí),經(jīng)過這次課程設(shè)計(jì),通過對(duì)模塊的語言實(shí)現(xiàn),對(duì)于VHDL語言我有了更深的認(rèn)識(shí)。而且在程序錯(cuò)誤的發(fā)現(xiàn)和改正的過程中,我得到了更多的收獲,也確實(shí)讓我進(jìn)步了不少。再次,當(dāng)我遇到一些問題的時(shí)候,請(qǐng)教老師,和同學(xué)們一起討論,令我受益頗多!最后,這個(gè)多功能數(shù)字電子鐘是自我創(chuàng)造與吸取借鑒共同作用的產(chǎn)物,是自我努力的結(jié)果。這讓我對(duì)數(shù)字電路的設(shè)計(jì)充滿了信心。雖然課程設(shè)計(jì)已經(jīng)結(jié)束,但這并不代表著我已經(jīng)真正掌握了VHDL語言,仍需繼續(xù)學(xué)習(xí)!

      第四篇:用狀態(tài)機(jī)實(shí)現(xiàn)的EDA多功能數(shù)字鐘課程設(shè)計(jì)VHDL代碼

      設(shè)計(jì)并實(shí)現(xiàn)具有一定功能的數(shù)字鐘

      1、該數(shù)字鐘可以實(shí)現(xiàn)3個(gè)功能:計(jì)時(shí)功能、整點(diǎn)報(bào)時(shí)功能和重置時(shí)間功能,因此有3個(gè)功能:計(jì)時(shí)、重置時(shí)間、復(fù)位。

      2、對(duì)所有設(shè)計(jì)的小系統(tǒng)能夠正確分析;

      3、基于VHDL語言描述系統(tǒng)的功能;

      4、在quartus 2環(huán)境中編譯通過;

      5、仿真通過并得到正確的波形;

      6、給出相應(yīng)的設(shè)計(jì)報(bào)告。

      其中計(jì)時(shí)模塊有4部分構(gòu)成:秒計(jì)時(shí)器(second)、分計(jì)時(shí)器(minute)、時(shí)計(jì)時(shí)器(hour)、日計(jì)時(shí)器(date)、月計(jì)時(shí)器(mouth)、年計(jì)時(shí)器(year)

      1)秒計(jì)時(shí)器(second)是由一個(gè)60進(jìn)制的計(jì)數(shù)器構(gòu)成的,具有清0、置數(shù)和計(jì)數(shù)功能。其中reset為清0信號(hào),當(dāng)reset為0時(shí),秒計(jì)時(shí)器清0;set 為置數(shù)信號(hào),當(dāng)set為0時(shí),秒計(jì)時(shí)器置數(shù),置s1的值。clk為驅(qū)動(dòng)秒計(jì)時(shí)器的時(shí)鐘,sec為秒計(jì)時(shí)器的輸出,ensec為秒計(jì)時(shí)器的進(jìn)位信號(hào),作為下一級(jí)的時(shí)鐘輸入信號(hào)。

      2)分計(jì)時(shí)器(minute)是由一個(gè)60進(jìn)制的計(jì)數(shù)器構(gòu)成的,具有清0、置數(shù)和計(jì)數(shù)功能。其中reset為清0信號(hào),當(dāng)reset為0時(shí),分計(jì)時(shí)器清0;set 為置數(shù)信號(hào),當(dāng)set為0時(shí),分計(jì)時(shí)器置數(shù),置m1的值。clkm為驅(qū)動(dòng)分計(jì)時(shí)器工作的時(shí)鐘,與ensec相連接;min為分計(jì)時(shí)器的輸出;enmin為分計(jì)時(shí)器的進(jìn)位信號(hào),作為下一級(jí)的時(shí)鐘輸入信號(hào)。

      3)時(shí)計(jì)時(shí)器(hour)是由一個(gè)24進(jìn)制的計(jì)數(shù)器構(gòu)成的,具有清0、置數(shù)和計(jì)數(shù)功能。其中reset為清0信號(hào),當(dāng)reset為0時(shí),時(shí)計(jì)時(shí)器清0;set 為置數(shù)信號(hào),當(dāng)set為0時(shí),時(shí)計(jì)時(shí)器置數(shù),置h1的值。clkh為驅(qū)動(dòng)時(shí)計(jì)時(shí)器工作的時(shí)鐘,與enmin相連接;hour為時(shí)計(jì)時(shí)器的輸出;enhour為時(shí)計(jì)時(shí)器的進(jìn)位信號(hào),作為下一級(jí)的時(shí)鐘輸入信號(hào)。

      4)日計(jì)時(shí)器(date1)是由一個(gè)60進(jìn)制的計(jì)數(shù)器構(gòu)成的,具有清0、置數(shù)和計(jì)數(shù)功能。其中reset為清0信號(hào),當(dāng)reset為0時(shí),星期計(jì)時(shí)器清0;set 為置數(shù)信號(hào),當(dāng)set為0時(shí),星期計(jì)時(shí)器置數(shù),置d1的值。clkd為驅(qū)動(dòng)星期計(jì)時(shí)器工作的時(shí)鐘,與enhour相連接;date為日計(jì)時(shí)器的輸出,endate為分計(jì)時(shí)器的進(jìn)位信號(hào),作為下一級(jí)的時(shí)鐘輸入信號(hào),由于月份的天數(shù)存在天數(shù)不同,閏年2月的天數(shù)為28天等情況,還設(shè)計(jì)了一個(gè)潤(rùn)年判別器,準(zhǔn)確顯示時(shí)間。

      5)月計(jì)時(shí)器(mouth)是由一個(gè)60進(jìn)制的計(jì)數(shù)器構(gòu)成的,具有清0、置數(shù)和計(jì)數(shù)功能。其中reset為清0信號(hào),當(dāng)reset為0時(shí),星期計(jì)時(shí)器清0;set 為置數(shù)信號(hào),當(dāng)set為0時(shí),星期計(jì)時(shí)器置數(shù),置mou1的值,clkmou為驅(qū)動(dòng)星期計(jì)時(shí)器工作的時(shí)鐘,與enday相連接;mou為日計(jì)時(shí)器的輸出,enmou為分計(jì)時(shí)器的進(jìn)位信號(hào),作為下一級(jí)的時(shí)鐘輸入信號(hào)。6)計(jì)時(shí)器(year)是由一個(gè)60進(jìn)制的計(jì)數(shù)器構(gòu)成的,具有清0、置數(shù)和計(jì)數(shù)功能。其中reset為清0信號(hào),當(dāng)reset為0時(shí),星期計(jì)時(shí)器清0;set 為置數(shù)信號(hào),當(dāng)set為0時(shí),星期計(jì)時(shí)器置數(shù),置y1的值,clky為驅(qū)動(dòng)星期計(jì)時(shí)器工作的時(shí)鐘,與enmou相連接;year為日計(jì)時(shí)器的輸出。VHDL程序

      1、屏幕切換模塊

      運(yùn)用狀態(tài)機(jī)進(jìn)行屏幕切換,分別顯示年月日,以及時(shí)分秒 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;--Uncomment the following lines to use the declarations that are--provided for instantiating Xilinx primitive components.--library UNISIM;--use UNISIM.VComponents.all;

      entity mux3 is

      Port(clk,Reset,sel : in std_logic;

      int1,int2,int3,int4,int5,int6,int7,int8,int9,int10,int11,int12:IN STD_LOGIC_VECTOR(3 DOWNTO 0);--rst must

      a1,a2,a3,a4,a5,a6: out std_logic_vector(3 downto 0));end mux3;

      architecture Behavioral of mux3 is

      TYPE states IS(st0, st1, st2, st3, st4, st5, st6, st7);

      SIGNAL STX: states;

      begin

      COM1 : PROCESS(STX,int1,int2,int3,int4,int5,int6,int7,int8,int9,int10,int11,int12)

      BEGIN--決定轉(zhuǎn)換狀態(tài)的進(jìn)程

      CASE STX IS

      WHEN st0 => a1<=int1;a2<=int2;a3<=int3;a4<=int4;a5<=int5;a6<=int6;

      WHEN st1 => a1<=int7;a2<=int8;a3<=int9;a4<=int10;a5<=int11;a6<=int12;

      WHEN st2 => a1<=int7;a2<=int8;a3<=int9;a4<=int10;a5<=int11;a6<=int12;

      WHEN st3 => a1<=int7;a2<=int8;a3<=int9;a4<=int10;a5<=int11;a6<=int12;

      WHEN st4 => a1<=int7;a2<=int8;a3<=int9;a4<=int10;a5<=int11;a6<=int12;

      WHEN st5 => a1<=int1;a2<=int2;a3<=int3;a4<=int4;a5<=int5;a6<=int6;

      WHEN st6 => a1<=int1;a2<=int2;a3<=int3;a4<=int4;a5<=int5;a6<=int6;

      WHEN st7 => a1<=int1;a2<=int2;a3<=int3;a4<=int4;a5<=int5;a6<=int6;

      WHEN OTHERS => NULL;

      END CASE;

      END PROCESS COM1;REG: PROCESS(clk,Reset,sel)

      --主控時(shí)序進(jìn)程

      BEGIN

      IF Reset = '1' THEN

      STX<= st0;

      --異步復(fù)位

      ELSIF clk='1' AND clk'EVENT THEN

      if sel='1' then

      CASE STX IS

      WHEN st0=>STX<=st1;

      WHEN st1=>STX<=st2;

      WHEN st2=>STX<=st3;

      WHEN st3=>STX<=st4;

      WHEN st4=>STX<=st5;

      WHEN st5=>STX<=st6;

      WHEN st6=>STX<=st7;

      WHEN st7=>STX<=st0;

      END CASE;

      END IF;

      END if;END PROCESS;

      2、顯示切換程序 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      --Uncomment the following lines to use the declarations that are--provided for instantiating Xilinx primitive components.--library UNISIM;--use UNISIM.VComponents.all;

      entity mux1 is

      Port(clk,ina,inb,sel,Reset : in std_logic;

      result : out std_logic);end mux1;

      architecture Behavioral of mux1 is

      TYPE state IS(st0,st1,st2,st3,st4,st5,st6,st7);

      SIGNAL STX:state;begin REG1: PROCESS(ina,inb,STX)

      BEGIN

      CASE STX IS

      WHEN st0=>result<=ina;

      WHEN st1=>result<=ina;

      WHEN st2=>result<=inb;

      WHEN st3=>result<=inb;

      WHEN st4=>result<=inb;

      WHEN st5=>result<=inb;

      WHEN st6=>result<=inb;

      WHEN st7=>result<=inb;

      END CASE;

      END PROCESS;REG2:PROCESS(clk,sel,Reset)BEGIN IF(Reset='1')THEN

      STX<=st0;ELSIF(clk'EVENT AND clk='1')THEN

      if sel='1' then CASE STX IS WHEN st0=>STX<=st1;WHEN st1=>STX<=st2;WHEN st2=>STX<=st3;WHEN st3=>STX<=st4;WHEN st4=>STX<=st5;WHEN st5=>STX<=st6;WHEN st6=>STX<=st7;WHEN st7=>STX<=st0;

      END CASE;END IF;end if;END PROCESS REG2;

      end Behavioral;

      3、置數(shù)操作模塊

      運(yùn)用狀態(tài)機(jī),進(jìn)行置數(shù)操作 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      --Uncomment the following lines to use the declarations that are--provided for instantiating Xilinx primitive components.--library UNISIM;--use UNISIM.VComponents.all;

      entity mux is

      Port(clk,ina,inb,sel,Reset : in std_logic;

      r1,r2,r3,r4,r5,r6 : out std_logic);end mux;

      architecture Behavioral of mux is TYPE state IS(st0,st1,st2,st3,st4,st5,st6,st7);

      SIGNAL STX:state;begin PROCESS(ina,inb,STX)BEGIN CASE STX IS WHEN st0=>r1<=ina;r2<='0';r3<='0';r4<='0';r5<='0';r6<='0';WHEN st1=>r1<=ina;r2<='0';r3<='0';r4<='0';r5<='0';r6<='0';WHEN st2=>r1<='0';r2<='0';r3<='0';r4<='0';r5<='0';r6<=inb;WHEN st3=>r1<='0';r2<='0';r3<='0';r4<='0';r5<=inb;r6<='0';WHEN st4=>r1<='0';r2<='0';r3<='0';r4<=inb;r5<='0';r6<='0';WHEN st5=>r1<='0';r2<='0';r3<=inb;r4<='0';r5<='0';r6<='0';WHEN st6=>r1<='0';r2<=inb;r3<='0';r4<='0';r5<='0';r6<='0';WHEN st7=>r1<=inb;r2<='0';r3<='0';r4<='0';r5<='0';r6<='0';END CASE;END PROCESS;PROCESS(clk,sel,Reset)BEGIN IF(Reset='1')THEN STX<=st0;ELSIF(clk'EVENT AND clk='1')THEN if sel='1' then CASE STX IS WHEN st0=>STX<=st1;WHEN st1=>STX<=st2;WHEN st2=>STX<=st3;WHEN st3=>STX<=st4;WHEN st4=>STX<=st5;WHEN st5=>STX<=st6;WHEN st6=>STX<=st7;WHEN st7=>STX<=st0;

      END CASE;END IF;end if;END PROCESS;end Behavioral;end Behavioral;

      4、秒顯示模塊 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      --Uncomment the following lines to use the declarations that are--provided for instantiating Xilinx primitive components.--library UNISIM;--use UNISIM.VComponents.all;

      entity secute1 is

      Port(clkm,set,reset : in std_logic;

      sec2,sec1 : inout std_logic_vector(3 downto 0);

      ensec : out std_logic);end secute1;

      architecture Behavioral of secute1 is

      begin

      Process(clkm,reset,set)

      Begin

      If reset='1' then sec2<=“0000”;sec1<=“0000”;

      Elsif set='1' then sec2<=“0101”;sec1<=“1000”;

      Elsif(clkm'event and clkm='1')then

      if sec2=“0101” AND sec1=“1001” then sec2<=“0000”;sec1<=“0000”;ensec<='1';

      elsif sec1=“1001” then sec2<=sec2+'1';sec1<=“0000”;ensec<='0';

      else sec1<=sec1+'1';ensec<='0';

      end if;end if;End process;end Behavioral;

      5、分顯示模塊 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      --Uncomment the following lines to use the declarations that are--provided for instantiating Xilinx primitive components.--library UNISIM;--use UNISIM.VComponents.all;

      entity minute1 is

      Port(clkm,set,reset : in std_logic;

      min2,min1 : inout std_logic_vector(3 downto 0);

      enmin : out std_logic);end minute1;

      architecture Behavioral of minute1 is

      begin

      Process(clkm,reset,set)

      Begin

      If reset='1' then min2<=“0000”;min1<=“0000”;

      Elsif set='1' then min2<=“0101”;min1<=“1000”;

      Elsif(clkm'event and clkm='1')then

      if min2=“0101” AND min1=“1001” then min2<=“0000”;min1<=“0000”;enmin<='1';

      elsif min1=“1001” then min2<=min2+'1';min1<=“0000”;enmin<='0';

      else min1<=min1+'1';enmin<='0';

      end if;end if;End process;end Behavioral;

      6、小時(shí)顯示模塊 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      --Uncomment the following lines to use the declarations that are--provided for instantiating Xilinx primitive components.--library UNISIM;--use UNISIM.VComponents.all;

      entity hour1 is

      Port(clkh,set,reset: in std_logic;

      hor2,hor1 : inout std_logic_vector(3 downto 0);

      enhour : out std_logic);end hour1;

      architecture Behavioral of hour1 is

      begin Process(clkh,reset,set)

      Begin

      If reset='1' then hor2<=“0000”;hor1<=“0000”;

      Elsif set='1' then hor2<=“0010”;hor1<=“0011”;

      Elsif(clkh'event and clkh='1')then

      if hor2=“0010” AND hor1=“0011” then hor2<=“0000”;hor1<=“0000”;enhour<='1';

      elsif hor1=“1001” then hor2<=hor2+'1';hor1<=“0000”;enhour<='0';

      else hor1<=hor1+'1';enhour<='0';

      end if;

      end if;End process;end Behavioral;

      7、日顯示模塊(已加入閏年判斷功能)library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      --Uncomment the following lines to use the declarations that are--provided for instantiating Xilinx primitive components.--library UNISIM;--use UNISIM.VComponents.all;

      entity date1 is

      Port(clkd,set : in std_logic;

      dat2,dat1 : inout std_logic_vector(3 downto 0);

      endate : out std_logic);end date1;

      architecture Behavioral of date1 is

      begin

      Process(clkd,set)

      Begin

      if set='1' then dat2<=“0010”;dat1<=“1000”;

      Elsif(clkd'event and clkd='1')then

      if dat2=“0011” AND dat1=“0000” then dat2<=“0000”;dat1<=“0001”;endate<='1';elsif dat1=“1001” then dat2<=dat2+'1';dat1<=“0000”;endate<='0';

      else dat1<=dat1+'1';endate<='0';

      end if;end if;End process;end Behavioral;

      8、月顯示模塊 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      --Uncomment the following lines to use the declarations that are--provided for instantiating Xilinx primitive components.--library UNISIM;--use UNISIM.VComponents.all;

      entity month1 is

      Port(clkn,set: in std_logic;

      mon2,mon1 : inout std_logic_vector(3 downto 0);

      enmon : out std_logic);end month1;

      architecture Behavioral of month1 is

      begin

      Process(clkn,set)

      Begin

      if set='1' then mon2<=“0000”;mon1<=“0110”;

      Elsif(clkn'event and clkn='1')then

      if mon2=“0001” AND mon1=“0010” then mon2<=“0000”;mon1<=“0001”;enmon<='1';

      elsif mon1=“1001” then mon2<=mon2+'1';mon1<=“0000”;enmon<='0';

      else mon1<=mon1+'1';enmon<='0';

      end if;end if;End process;

      9、年顯示模塊 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

      --Uncomment the following lines to use the declarations that are--provided for instantiating Xilinx primitive components.--library UNISIM;--use UNISIM.VComponents.all;

      entity yearth1 is

      Port(clkn,set: in std_logic;

      year2,year1 : inout std_logic_vector(3 downto 0);

      enyear : out std_logic);end yearth1;

      architecture Behavioral of yearth1 is

      begin

      Process(clkn,set)

      Begin

      if set='1' then year2<=“0001”;year1<=“0001”;

      Elsif(clkn'event and clkn='1')then

      if year2=“1001” AND year1=“1001” then year2<=“0000”;year1<=“0001”;

      elsif year1=“1001” then year2<=year2+'1';year1<=“0000”;enyear<='0';

      else year1<=year1+'1';enyear<='0';

      end if;end if;

      end Behavioral;

      第五篇:電工電子課設(shè)-數(shù)字鐘元器件清單

      數(shù)字鐘課程設(shè)計(jì)元器件清單單價(jià)(元/個(gè))1、2、3、共陽極數(shù)碼管:6個(gè)174LS247集成芯片:6塊1 74LS90集成芯片:6塊14、CD4060集成芯片:1塊5、74LS00集成芯片:1塊6、74LS74集成芯片:2塊7、74LS20集成芯片:2塊8、74LS08集成芯片:2塊9、74LS04集成芯片:1塊10、74LS32集成芯片:1塊11、22pf電容:2個(gè)12、32768時(shí)鐘晶體:1個(gè)13、1K電阻:1個(gè)

      14、三極管:1個(gè)15、100Ω電阻:6個(gè)

      17、蜂鳴器:1個(gè)

      18、小飯盒:1個(gè)

      19、面包板:1塊1 1 1 11 111

      下載VHDL實(shí)現(xiàn)數(shù)字鐘課設(shè)報(bào)告[推薦]word格式文檔
      下載VHDL實(shí)現(xiàn)數(shù)字鐘課設(shè)報(bào)告[推薦].doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        數(shù)字電子技術(shù)課設(shè)(數(shù)字鐘)

        太原理工大學(xué)現(xiàn)代科技學(xué)院學(xué)院《數(shù)字電子技術(shù)》課程設(shè)計(jì)報(bào)告數(shù)字電子技術(shù)課程設(shè)計(jì)報(bào)告 題目: 多功能數(shù)字鐘課程設(shè)計(jì) 學(xué)年:2007 學(xué)期:第二學(xué)期專業(yè):自動(dòng)化班級(jí):0703 學(xué)號(hào):0710055......

        EDA實(shí)現(xiàn)多功能數(shù)字鐘

        EDA實(shí)現(xiàn)多功能數(shù)字鐘 實(shí) 驗(yàn) 報(bào) 告 專業(yè)班級(jí):學(xué)生姓名:學(xué)生學(xué)號(hào): 目錄 一、內(nèi)容摘要 二、實(shí)驗(yàn)要求 三、各底層模塊設(shè)計(jì) 四、總體方案 五、 心得體會(huì)一、實(shí)驗(yàn)內(nèi)容 利用 QuartusI......

        eda 實(shí)現(xiàn)多功能數(shù)字鐘

        一、標(biāo)題:EDA實(shí)現(xiàn)多功能數(shù)字鐘 二、任務(wù)書:設(shè)計(jì)要求是用FPGA器件和EDA技術(shù)實(shí)現(xiàn)多功能數(shù)字鐘的設(shè)計(jì),⑴ 控制功能包括①以數(shù)字形式顯示時(shí)、分、秒的時(shí)間;②小時(shí)計(jì)數(shù)器為24進(jìn)制;③分......

        用VHDL語言編寫的數(shù)字鐘程序5篇

        永州職業(yè)技術(shù)學(xué)院 課 程 設(shè) 計(jì) 課程名稱: EDA技術(shù)實(shí)用教程 題 目:基于FPGA的數(shù)字鐘設(shè)計(jì) 系、專業(yè): 電子技術(shù)系應(yīng)用電子 年級(jí)、班級(jí): 07級(jí)電子大專 學(xué)生姓名: 馮 苗 指導(dǎo)老師: 龍......

        多功能數(shù)字鐘課程設(shè)計(jì)VHDL代碼書上程序改

        library ieee; use ieee.std_logic_1164.all; entity clock is port( clk1hz:in std_logic;--1hz脈沖-- clk100:in std_logic;--100hz脈沖-- weekclk:in std_logic;--星期調(diào)......

        數(shù)據(jù)結(jié)構(gòu)課設(shè)報(bào)告

        華 中 科 技 大 學(xué) 計(jì) 算 機(jī) 科 學(xué) 與 技 術(shù) 學(xué) 院 課 程 設(shè) 計(jì) 報(bào) 告 課程設(shè)計(jì)報(bào)告 題目:華科校園導(dǎo)航 課程名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 專業(yè)班級(jí): 學(xué)號(hào): 姓名: 指導(dǎo)教師: 報(bào)告日期:......

        ERP課設(shè)報(bào)告

        《企業(yè)資源計(jì)劃ERP》 課程設(shè)計(jì) 題目:關(guān)于企業(yè)實(shí)施ERP對(duì)人力資源管理影響的探究班 級(jí) 信管 092 專 業(yè) 信息管理和信息系統(tǒng) 學(xué) 號(hào) 3090561053 姓 名 竇 婷 地 點(diǎn) 經(jīng)濟(jì)與管理學(xué)......

        財(cái)務(wù)會(huì)計(jì)課設(shè)報(bào)告(最終定稿)

        武漢理工大學(xué)《財(cái)務(wù)會(huì)計(jì)課程設(shè)計(jì)》報(bào)告書13年我們一起做的財(cái)務(wù)會(huì)計(jì)課程設(shè)計(jì)財(cái)務(wù)會(huì)計(jì)課程設(shè)計(jì),是我的第三次專業(yè)課程設(shè)計(jì),說實(shí)話做起來應(yīng)該輕車熟路,但實(shí)際卻不是如此。在剛開始......