eda萬年歷,可以顯示年份,星期,時間,秒表計時等功能。文件夾包含論文,pcb板設計,quartus程序。
全部資料51hei下載地址:
system_test.rar
(6.89 MB, 下載次數: 133)
2019-3-3 18:00 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
formal_code.rar
(7.03 MB, 下載次數: 90)
2019-3-3 18:00 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
FPGA萬年歷.docx
(1.7 MB, 下載次數: 99)
2019-3-3 17:54 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
pcb.rar
(645.2 KB, 下載次數: 58)
2019-3-3 17:54 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
基于FPGA的電子鐘設計,主要完成的任務是使用Verilog語音,在Quartise2上完成電路的設計,程序的開發,基本功能是能夠顯示、修改年月日時分秒。電路的設計模塊分為幾個模塊:分頻、控制、時間顯示調整、時分、年月日、譯碼器。各個模塊完成不同的任務,合在一起就構成了電子鐘。至于程序編寫,使用Verilog語言,根據各個模塊的不同功能和它們之間的控制關系進行編寫。軟件模塊直接在Quartis2上進行。進入信息時代,時間觀念越來越強,但是老是的鐘表以及日歷等時間顯示工具已經不太合適。如鐘表易壞,需經常維修,日歷每天都需要翻頁等。對此,數字鐘表的設計就用了用武之地。 基于FPGA的電子鐘設計,采用軟件開發模塊,開發成本底,而且功能設計上有很大的靈活度,需要在軟件上進行簡單的修該就能實現不同的功能要求,能夠滿足不同的環境要求。同時,該設計在精度上遠遠超過鐘表,并且不需要維修,也不用每天的翻頁,極其的方便。且能夠添加各種不同的功能要求。例如:在其上加鬧鐘,同時顯示陰陽歷等。綜上所述本設計具有設計方便、功能多樣、電路簡潔成本低廉等優點,符合社會發展的趨勢,前景廣闊。
目錄
1 緒論 1
1.1電子鐘的發展 1
1.2 FPGA簡介 1
1.3 VHDL語言簡介 2
2 設計方案 3
2.1設計要求 3
2.2設計實現功能 3
2.3模塊設計 4
2.3.1計時模塊 4
2.3.2分計數器 6
2.3.3時計數 7
2.3.4設置時間模塊 7
2.3.5整點報時模塊 10
2.3.6顯示時間模塊 11
2.3.7控制數碼管 12
2.3.8數碼管顯示器 14
2.3.9分頻模塊 15
2.3.10鬧鐘模塊 17
3 系統設計 17
3.1 數字鐘系統模塊框圖 18
4 硬件設計 18
4.1 電源接口電路設計 18
4.2 電源系統設計 18
4.3 JTAG端口和FPGA配置電路設計 19
4.4 數碼管電源擴展電路 19
4.5 數碼管電路 19
4.6 指示燈顯示電路 19
結 論 20
致 謝 21
參 考 文 獻 22
附錄.23
1 緒論 隨著EDA技術的發展和應用領域的擴大與深入,EDA技術在電子信息、通信、自動控制及計算機應用領域的重要性日益突出。EDA技術就是依賴功能強大的計算機,在 EDA工具軟件平臺上,對以硬件描述語言VHDL為系統邏輯描述手段完成的設計文件,自動地完成邏輯優化和仿真測試,直至實現既定的電子線路系統功能。近十年來隨著超大規模集成電路和軟件技術的快速發展,使數字系統集成到一片集成電路內成為可能,許多公司都推出了非常好的CPLD 和FPGA 產品,并為這些產品的設計配備了設計、下載軟件,這些軟件除了支持圖形方式設計數字系統外,還支持設計許多種數字系統的設計語言,使數字系統設計起來更加容易,可以說數字電子技術的設計進入了一個新時代。在這樣一個大背景下,熟練掌握相關功能模塊的開發就成為設計者必備的一部分知識。
1.1電子鐘的發展 鐘表的數字化給人們生產生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能,諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、定時啟閉路燈等。所有這些,都是以鐘表數字化為基礎的。因此,研究電子萬年歷及擴大其應用,有非,F實的意義。數字鐘是一種用數字電路技術實現時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更長的使用壽命,因此得到了廣泛的使用。電子萬年歷從原理上講是一種典型的數字電路,其中包括了組合邏輯電路和時序電路。 因此,我們此次設計與制作電子萬年歷就是為了了解數字鐘的原理,從而學會制作數字鐘。而且通過萬年歷的制作進一步了解各種在制作中用到的中小規模集成電路的作用及使用方法,且由于電子萬年歷包括組合邏輯電路和時序電路,通過它可以進一步學習與掌握各種組合邏輯電路與時序電路的原理與使用方法。 1.2 FPGA簡介 FPGA是現場可編程門陣列(Field programmable gates array)的英文簡稱。是有可編程邏輯模塊組成的數字集成電路(IC)。這些邏輯模塊之間用可配置的互聯資源。設計者可以對這些器件進行編程來完成各種各樣的任務。 PLD/FPGA是近幾年集成電路中發展最快的產品。由于PLD性能的高速發展以及設計人員自身能力的提高,可編程邏輯器件供應商將進一步擴大可編程芯片的領地,將復雜的專用芯片擠向高端和超復雜應用。據IC Insights的數據顯示,PLD市場從1999年的29億美元增長到去年的56億美元,幾乎翻了一番。Matas預計這種高速增長局面以后很難出現,但可編程邏輯器件依然是集成電路中最具活力和前途的產業。 復雜可編程邏輯器件。 可編程邏輯器件的兩種主要類型是現場可編程門陣列(FPGA)和復雜可編程邏輯(CPLD)。 在這兩類可編程邏輯器件中,FPGA提供了最高的邏輯密度、最豐富的特性和最高的性能。 現在最新的FPGA器件,如Xilinx Virtex"系列中的部分器件,可提供八百萬"系統門"(相對邏輯密度)。 這些先進的器件還提供諸如內建的硬連線處理器(如IBM Power PC)、大容量存儲器、時鐘管理系統等特性,并支持多種最新的超快速器件至器件(device-to-device)信號技術。 FPGA被應用于范圍廣泛的應用中,從數據處理和存儲,以及到儀器儀表、電信和數字信號處理等。 1.3 VHDL語言簡介 VHDL :vhsic(very high speed integrated circuit)hardware descriptiong language,也就是超高速集成電路硬件描述語言,vhdl語言是一種用于電路設計的高級語言。它在80年代的后期出現。最初是由美國國防部開發出來供美軍用來提高設計的可靠性和縮減開發周期的一種使用范圍較小的設計語言。但是,由于它在一定程度上滿足了當時的設計需求,于是他在1987年成為ansi/ieee的標準(ieee std 1076-1987)。1993年更進一步修訂,變得更加完備,成為ansi/ieee的ansi/ieee std 1076-1993標準。目前,大多數的cad廠商出品的eda軟件都兼容了這種標準。它的應用主要是應用在數字電路的設計中。目前,它在中國的應用多數是fpga/cpld/epld的設計中。當然在一些實力較為雄厚的單位,它也被用來設計asic。 VHDL主要用于描述數字系統的結構,行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風格以及語法是十分類似于一般的計算機高級語言。VHDL的程序結構特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統)分成外部(或稱可視部分,及端口)和內部(或稱不可視部分),既涉及實體的內部功能和算法完成部分。在對一個設計實體定義了外部界面后,一旦其內部開發完成后,其他的設計就可以直接調用這個實體。這種將設計實體分成內外部分的概念是VHDL系統設計的基本點。與其他的硬件描述語言相比,VHDL具有更強的行為描述能力。從而決定了他成為系統設計領域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規模電子系統的重要保證。 VHDL豐富的仿真語句和庫函數,使得在任何大系統的設計早期就能查驗設計系統的功能可行性,隨時可對設計進行仿真模擬。VHDL語句的行為描述能力和程序結構決定了他具有支持大規模設計的分解和已有設計的再利用功能。符合市場需求的大規模系統高效,高速的完成必須有多人甚至多個開發組共同并行工作才能實現。對于用VHDL完成的一個確定的設計,可以利用EDA工具進行邏輯綜合和優化,并自動的把VHDL描述設計轉變成門級網表。VHDL對設計的描述具有相對獨立性,設計者可以不懂硬件的結構,也不必管理最終設計實現的目標器件是什么,而進行獨立的設計。 2 設計方案2.1設計要求 2.2設計實現功能該數字電子鐘能夠實現時、分、秒計時功能;校準時和分的功能;校準時間時秒清零的功能;整點報時的功能; 2.3模塊設計 
圖1.模塊總設計圖 2.3.1計時模塊 秒計數是由一個六十進制的計數器構成,生成元器件如下

圖2 Clk:驅動秒計時器的時鐘信號Clr:校準時間時清零的輸入端En:使能端Sec0[3..0] sec1[3..0]:秒的高位顯示,低位顯示Co:進位輸出端,作為分的clk輸入 仿真圖如下: 
圖3 
圖4 2.3.2分計數器分計數器是由六十進制的計數器構成,生成元器件如下
圖5 Clk:設置分輸入和秒進位的或輸入 En:使能輸入 Min1[3..0] min0[3..0]:分的高位顯示,低位顯示 Co:向時的進位輸出仿真圖如下: 

圖6 2.3.3時計數 時計數器是由二十四進制的計數器構成,生成元器件如下 
圖7 Clk:設置時間輸入和分進位輸入的或en:使能端h1[3..0] h0[3..0]:時的高位顯示和低位顯示仿真圖如下: 
圖8 2.3.4設置時間模塊 按鍵去抖動,生成元器件如下

圖9 Clk:256hz頻率輸入Reset:接GNDDin:接按鍵Dout:輸出傳給按鍵選擇器仿真圖如下: 
圖10 按鍵選擇器,生成元器件如下 
圖11 Clk:16hz輸入Key1:按鍵調分的輸入Key2:按鍵調時的輸入Key3:按鍵秒清零的輸入Led1:輸出信號給分元器件Led2:輸出信號給時元器件Led3:輸出清零信號給秒元器件仿真圖如下: 
圖12 2.3.5整點報時模塊 
圖13 Clk1:接512hzClk2 clk:En:使能輸入M1[3..0] m0[3..0]:接分的高位輸出和低位輸出S1[3..0] s0[3..0]:接秒的高位輸出和低位輸出Speaker:連接蜂鳴器仿真圖如下: 
圖14 2.3.6顯示時間模塊 模八的器件控制八個數碼管顯示的循環,生成元器件如下
圖15 Clk:輸入
Clr:接GND
En:使能端
Y[2..0]:輸出接數碼管三個接受端
仿真圖如下: 
圖16 2.3.7控制數碼管八選一的器件控制數碼管的亮或不亮,生成元器件如下

圖17 Sel【2..0】:連接模八器件M7[3..0] m6[3..0]:連接秒的高位和低位輸出M5[3..0]:接vcc(顯示橫)M4[3..0] m3[3..0]:接分的高位和低位輸出M2[3..0]:接vcc(顯示橫)M1[3..0] m0[3..0]:連接時的高位低位輸出Y[3..0]:輸出給數碼管顯示
仿真圖如下: 
圖18
2.3.8數碼管顯示器 數碼管顯示器件,生成元器件如下

圖19 Num[3..0]:接收八選一的輸出信號Y[6..0]:驅動數碼管顯示
仿真圖如下: 
圖20 2.3.9分頻模塊 分頻器生成的元器件如下:

圖21 Clk:時鐘輸入
Clk512:512hz給響鈴模塊
Clk1:1hz輸出給秒計數器
Clk16:16hz輸出給按鍵選擇器
Clk256:256hz輸出給按鍵抖動
仿真圖如下: 
圖22 2.3.10鬧鐘模塊 比較器,比較當時顯示時間與設置的鬧鐘時間是否相等,如相等,輸出信號給蜂鳴器。生成元器件如下:
圖23 Clk clk1:使能輸入
H0[3..0] h1[3..0]:鬧鐘設置時間的分輸入
H3[3..0] h2[3..0]:鬧鐘設置時間的時輸入
S0[3..0] s1[3..0]:現在時間的分的輸入
S2[3..0] s3[3..0]:現在時間的時的輸入
Y:輸出信號給蜂鳴器3 系統設計 完成了數字鐘各個模塊的仿真驗證工作后,接下來把模塊有機地結合起來就構成了一個完整的數字鐘。這里要完成的工作即是編寫數字鐘的頂層設計代碼,將各個模塊連接起來。 3.1 數字鐘系統模塊框圖 用quartuse ii 對系統工程進行綜合以后,點擊RTL_VIWER系統可以自動生成設計的系統原理圖(RTL視圖)。 
圖3 4 硬件設計 前面我們的硬件描述語言已經把整個設計的做完,功能仿真也進行完畢了。但是我們的硬件設計的核心器件還沒有定下來。采用器件(EP4CE6E22C8)對工程進行綜合編譯,可以看到資源占用報告。 4.1 電源接口電路設計 電源接口電路采用了兩種供電的方式,滿足不同的情況下使用。(1)Micro Usb供電,取電方便,用智能手機的充電線或者充電寶均可取電;(2)排針供電,但是必須要實驗室直流電源通過排線接入5V電源。 電路中使用D1用來防反接,防止電源接反;R1使用的是自恢復保險絲,當后面電路意外短路的時,電阻急劇增大,形成高阻狀態,防止燒壞后面電路的器件,當短路情況消失后,電阻減少,形成低阻狀態,從而不需要人工干預,有效地保護電路LED作為一個電源指示燈,當電源接好并且K1開關打開時電源指示燈常亮。 4.2 電源系統設計 FPGA芯片需要用到3種電源供電,所以電路中設計3種電源轉換電路 (1)5V電源轉33V,E5、E6用來濾波儲能,C3、C6用來濾出高頻電源噪聲 (2)5V電源轉2.5V,外部加的濾波電容功能同上。 (3)3V電源轉1.2V,外部的電容功能同上。 4.3 JTAG端口和FPGA配置電路設計 程序的下載,采用通用的JTAG方式下載程序,由于FPGA掉電易失,所以需要掛一個存儲器。電路中用的是EPCS16S18N,設計PCB板的時候需要注意的地方,就是有些管腳需要上拉電阻。 4.4 數碼管電源擴展電路 此次設計的數碼管電路采用動態掃描的方式來顯示。由于電路中有8個數碼管,如果不采用動態掃描電路,那么將會用到60多個I/O口,不利用PCB布線且也浪費了FPGA芯片的I/O口。由于閃爍的頻率在大于40HZ后,人眼就無法識別閃爍了,這樣,在程序中設置每個數碼管的點亮時間大于40HZ就會實現眼睛被欺騙的結果,數碼管常亮。在使用數碼管動態掃描電路的時候,一定要注意驅動電流的選擇,如果不增加電流擴展電路,那么最終的結果就是數碼管的顯示很暗又或者顯示不穩定,電路中每個公共信號都采用一個NPN三極管來擴展電流,增加驅動能力。 4.5 數碼管電路 電路里面的使用了8個上圖所示的數碼管,采用共陰極的接法,程序中按照8個數碼管從高到低位分時選擇seg_en_x的管腳,點亮選擇的數碼管,由于分時選擇的速度很快,遠遠大于人眼能夠識別的頻率,從而看上去數碼管都是亮的。 4.6 指示燈顯示電路 電路設計上留了4個不同顏色的燈,均通過FPGA芯片的IO口直接供電,高電平,點亮對應的燈,這4種燈具有以下的功能:LED3(鬧鐘設置模式指示燈)、LED4(日期設置模式指示燈)、LED5(時間調整模式指示燈)、LED6(正常顯示模式下指示燈)。 結 論 通過這次課設實訓,在硬件方面,使我們對EDA試驗箱有了很多的了解,彌補了我們的知識的缺陷,同時對EDA試驗箱內部的工作原理,以及EDA試驗箱各個實驗模式的功能很作用有了一定的了解,學習了硬件引腳綁定過程,以及綁定的一些基本常識,并動手完成了綁定,這樣不僅拓寬我們的知識面,增強動手能力和實踐能力,同時還培養我們的分析和解決實際問題的能力。
在軟件方面,我們通過分組在軟件Max+plus2上獨立完成老師給我們的實訓題目——電子鐘。從開始分析點鐘原理,在定義底層文件名稱,編寫底層文件程序,然后鏈接各個模塊,到最終完成測試,并運行成功,這些加強了我們的分析問題的能力,提高了我們編程的能力,同時還培養了我們獨立完成任務和查閱資料刪選資料的能力,雖然完成的軟件在實際運用中還有很多不足,比如軟件運行的環境有限,程序的效率不高,在老師的要求上也不能全部到達預期的最好效果,等等一些問題,這都需要我們以后更深層次的加以修改,使其更加簡單更加方便更加通俗易懂。
電子日歷一路編來可謂是坎坎坷坷,但大家都沒有放棄,積極主動的找老師、找同學幫忙解決難題。后來,又重新分析原理,重復操作,遇到困難馬上向老師提問,及時解決問題,這樣的效果很明顯。
在這次實訓中,我深深的感受到上課聽講的重要性,課設中遇到的很多問題都是老師上課講解的一些難點,自己沒有很好的領悟的地方。每個學生對老師課堂上講的內容的接收都是不一樣的,通過向老師請教,同學討論,最后才得以解決問題,實訓才能得以成功。
從整體看這次實訓是很成功的,讓我們都有很大的收獲,同時也非常感謝在實訓過程中給予我們很大幫助的老師,在老師耐心細心的指導下,我才能很好的完成實訓認務。
附錄
PCB圖
原理圖
- 代碼
- /*=====================================================
- *****************************************************
- design name :wipe_key_shake
- use :按鍵消抖模塊
- engineer :
- version :V0.1
- change note :
- V0.1 首次建立 :
- ****************************************************
-
- *****************************************************
- 功能說明:
-
- *****************************************************
-
- *****************************************************
- 端口信號說明:
- in clk :50M時鐘輸入
- in rst_n :復位信號輸入
-
- in mode_key :模式按鍵輸入
- in move_key :移位按鍵輸入
- in add_key :數值加鍵輸入
- in switch_key :顯示選擇按鍵輸入
-
- out speaker :喇叭端口
-
- out seg_en :數碼管使能端
- out seg_data :數碼管數據端
- *****************************************************
- ========================================================*/
-
- module clock
- (
- input clk ,
- input rst_n ,
-
-
- input mode_key ,
- input move_key ,
- input add_key ,
- input switch_key ,
-
- output speaker ,
-
- output [7:0] seg_en ,
- output [6:0] seg_data //從高到低位abcdefg
- );
-
-
- //========================================================
- //*****************按鍵模塊定義***************************
- wire filter_mode_key;
- wire filter_move_key;
- wire filter_add_key;
- wire filter_switch_key;
- //========================================================
-
-
- //========================================================
- //*****************模式設置模塊定義***********************
- wire [1:0] mode;
- //========================================================
-
- //========================================================
- //*****************位置調整模塊定義***********************
- wire [2:0] move_site;
- //========================================================
-
- //========================================================
- //*****************時鐘運行模塊定義***********************
- wire [3:0] second_u;
- wire [3:0] second_d;
- wire [3:0] minute_u;
- wire [3:0] minute_d;
-
- wire [3:0] hour_u;
- wire [3:0] hour_d;
-
- wire [3:0] date_u;
- wire [3:0] date_d;
- wire [3:0] month_u;
- wire [3:0] month_d;
- wire [3:0] year_u;
- wire [3:0] year_d;
- wire [3:0] year_h;
- wire [3:0] year_k;
- //========================================================
-
-
- //========================================================
- //*****************時間調整模塊定義***********************
- wire [3:0] adjust_second_u;
- wire [3:0] adjust_second_d;
- wire [3:0] adjust_minute_u;
- wire [3:0] adjust_minute_d;
- wire [3:0] adjust_hour_u;
- wire [3:0] adjust_hour_d;
-
- wire [3:0] adjust_date_u;
- wire [3:0] adjust_date_d;
- wire [3:0] adjust_month_u;
- wire [3:0] adjust_month_d;
- wire [3:0] adjust_year_u;
- wire [3:0] adjust_year_d;
- wire [3:0] adjust_year_h;
- wire [3:0] adjust_year_k;
- //========================================================
-
- //========================================================
- //*****************鬧鐘調整模塊定義***********************
- wire [3:0] alarm_second_u;
- wire [3:0] alarm_second_d;
- wire [3:0] alarm_minute_u;
-
- wire [3:0] alarm_minute_d;
- wire [3:0] alarm_hour_u;
- wire [3:0] alarm_hour_d;
- //========================================================
-
- //========================================================
- //*****************鬧鐘判斷模塊定義***********************
- //無
- //========================================================
-
- //========================================================
- //*****************閏年判斷模塊定義**********************
- wire leap_year_en;
- //========================================================
-
- //========================================================
- //*****************數碼管數值選擇模塊定義*****************
- wire [3:0] num8;
- wire [3:0] num7;
- wire [3:0] num6;
- wire [3:0] num5;
- wire [3:0] num4;
- wire [3:0] num3;
- wire [3:0] num2;
- wire [3:0] num1;
- //========================================================
-
- //========================================================
- //*****************數碼管譯碼與動態掃描模塊定義***********
- //無
- //========================================================
-
-
-
- //========================================================
- //*****************按鍵模塊例化***************************
- key_module U1
- (
-
- .clk (clk ),
- .rst_n (rst_n ),
-
- .mode_key (mode_key ),
- .move_key (move_key ),
- .add_key (add_key ),
- .switch_key (switch_key ),
-
- .filter_mode_key (filter_mode_key ),
- .filter_move_key (filter_move_key ),
- .filter_add_key (filter_add_key ),
- .filter_switch_key (filter_switch_key)
- );
- //========================================================
-
-
- //========================================================
- //*****************模式設置模塊例化***********************
- mode_module U2
- (
- .clk (clk ),
- .rst_n (rst_n ),
-
- .mode_key (filter_mode_key),
- .mode (mode )
- );
- //========================================================
-
-
- //========================================================
- //*****************位置調整模塊例化***********************
- move_site_module U3
- (
- .clk (clk ),
- .rst_n (rst_n ),
-
- .mode (mode ),
- .move_key (filter_move_key),
-
-
- .move_site (move_site )
- );
-
- //========================================================
-
-
- //========================================================
- //*****************時鐘運行模塊例化***********************
- clock_run U4
- (
- .clk (clk ),
- .rst_n (rst_n ),
-
- .mode (mode ),
- .leap_year_en (leap_year_en ),
-
- .adjust_second_u (adjust_second_u),
- .adjust_second_d (adjust_second_d),
- .adjust_minute_u (adjust_minute_u),
- .adjust_minute_d (adjust_minute_d),
- .adjust_hour_u (adjust_hour_u ),
- .adjust_hour_d (adjust_hour_d ),
-
- .adjust_date_u (adjust_date_u ),
- .adjust_date_d (adjust_date_d ),
- .adjust_month_u (adjust_month_u ),
- .adjust_month_d (adjust_month_d ),
- .adjust_year_u (adjust_year_u ),
- .adjust_year_d (adjust_year_d ),
- .adjust_year_h (adjust_year_h ),
- .adjust_year_k (adjust_year_k ),
-
- .second_u (second_u ),
- .second_d (second_d ),
- .minute_u (minute_u ),
- .minute_d (minute_d ),
- .hour_u (hour_u ),
-
- .hour_d (hour_d ),
-
- .date_u (date_u ),
- .date_d (date_d ),
- .month_u (month_u ),
- .month_d (month_d ),
- .year_u (year_u ),
- .year_d (year_d ),
- .year_h (year_h ),
- .year_k (year_k )
- );
- //========================================================
-
-
- //========================================================
- //*****************時間調整模塊例化***********************
- clock_adjust U5
- (
- .clk (clk ),
- .rst_n (rst_n ),
-
- .mode (mode ),
- .move_site (move_site ),
- .leap_year_en (leap_year_en ),
- .add_key (filter_add_key ),
-
- .second_u (second_u ),
- .second_d (second_d ),
- .minute_u (minute_u ),
- .minute_d (minute_d ),
- .hour_u (hour_u ),
- .hour_d (hour_d ),
-
- .date_u (date_u ),
- .date_d (date_d ),
- .month_u (month_u ),
- .month_d (month_d ),
- .year_u (year_u ),
-
- .year_d (year_d ),
- .year_h (year_h ),
- .year_k (year_k ),
-
- .adjust_second_u (adjust_second_u ),
- .adjust_second_d (adjust_second_d ),
- .adjust_minute_u (adjust_minute_u ),
- .adjust_minute_d (adjust_minute_d ),
- .adjust_hour_u (adjust_hour_u ),
- .adjust_hour_d (adjust_hour_d ),
-
- .adjust_date_u (adjust_date_u ),
- .adjust_date_d (adjust_date_d ),
- .adjust_month_u (adjust_month_u ),
- .adjust_month_d (adjust_month_d ),
- .adjust_year_u (adjust_year_u ),
- .adjust_year_d (adjust_year_d ),
- .adjust_year_h (adjust_year_h ),
- .adjust_year_k (adjust_year_k )
- );
-
- //========================================================
-
-
- //========================================================
- //*****************鬧鐘調整模塊例化***********************
- alarm_clock_adjust U6
- (
- .clk (clk ),
- .rst_n (rst_n ),
-
- .mode (mode ),
- .move_site (move_site ),
-
- .add_key (filter_add_key),
-
- .alarm_second_u (alarm_second_u),
- .alarm_second_d (alarm_second_d),
-
- .alarm_minute_u (alarm_minute_u),
- .alarm_minute_d (alarm_minute_d),
- .alarm_hour_u (alarm_hour_u ),
- .alarm_hour_d (alarm_hour_d )
- );
- //========================================================
-
-
- //========================================================
- //*****************鬧鐘判斷模塊定義例化*******************
- alarm_judge U7
- (
- .clk (clk ),
- .rst_n (rst_n ),
-
- .second_u (second_u ),
- .second_d (second_d ),
- .minute_u (minute_u ),
- .minute_d (minute_d ),
- .hour_u (hour_u ),
- .hour_d (hour_d ),
-
- .alarm_second_u (alarm_second_u ),
- .alarm_second_d (alarm_second_d ),
- .alarm_minute_u (alarm_minute_u ),
- .alarm_minute_d (alarm_minute_d ),
- .alarm_hour_u (alarm_hour_u ),
- .alarm_hour_d (alarm_hour_d ),
-
- .speaker (speaker )
-
- );
- //========================================================
-
-
- //========================================================
- //*****************閏年判斷模塊塊例化*********************
-
-
- leap_year_judge U8
- (
- .clk (clk ),
- .rst_n (rst_n ),
-
- .mode (mode ),
-
- .year_u (year_u ),
- .year_d (year_d ),
- .year_h (year_h ),
- .year_k (year_k ),
-
- .adjust_year_u (adjust_year_u),
- .adjust_year_d (adjust_year_d),
- .adjust_year_h (adjust_year_h),
- .adjust_year_k (adjust_year_k),
-
- .leap_year_en (leap_year_en )
- );
-
- //========================================================
-
-
- //========================================================
- //*****************數碼管數值選擇模塊例化*****************
- tube_num_select U9
- (
- .clk (clk ),
- .rst_n (rst_n ),
-
- .switch_key (filter_switch_key),
-
-
- .mode (mode ),
- .move_site (move_site ),
-
- .second_u (second_u ),
- .second_d (second_d ),
-
- .minute_u (minute_u ),
- .minute_d (minute_d ),
- .hour_u (hour_u ),
- .hour_d (hour_d ),
-
- .date_u (date_u ),
- .date_d (date_d ),
- .month_u (month_u ),
- .month_d (month_d ),
- .year_u (year_u ),
- .year_d (year_d ),
- .year_h (year_h ),
- .year_k (year_k ),
-
- .adjust_second_u (adjust_second_u ),
- .adjust_second_d (adjust_second_d ),
- .adjust_minute_u (adjust_minute_u ),
- .adjust_minute_d (adjust_minute_d ),
- .adjust_hour_u (adjust_hour_u ),
- .adjust_hour_d (adjust_hour_d ),
-
- .adjust_date_u (adjust_date_u ),
- .adjust_date_d (adjust_date_d ),
- .adjust_month_u (adjust_month_u ),
- .adjust_month_d (adjust_month_d ),
- .adjust_year_u (adjust_year_u ),
- .adjust_year_d (adjust_year_d ),
- .adjust_year_h (adjust_year_h ),
- .adjust_year_k (adjust_year_k ),
-
- .alarm_second_u (alarm_second_u ),
- .alarm_second_d (alarm_second_d ),
- .alarm_minute_u (alarm_minute_u ),
- .alarm_minute_d (alarm_minute_d ),
- .alarm_hour_u (alarm_hour_u ),
- .alarm_hour_d (alarm_hour_d ),
-
- .num8 (num8 ),
-
- .num7 (num7 ),
- .num6 (num6 ),
- .num5 (num5 ),
- .num4 (num4 ),
- .num3 (num3 ),
- .num2 (num2 ),
- .num1 (num1 )
- );
-
- //========================================================
-
- //========================================================
- //*****************數碼管譯碼與動態掃描模塊例化***********
- nixie_tube U10
-
- (
- .clk (clk ),
- .rst_n (rst_n ),
-
- .num8 (num8 ),
- .num7 (num7 ),
- .num6 (num6 ),
- .num5 (num5 ),
- .num4 (num4 ),
- .num3 (num3 ),
- .num2 (num2 ),
- .num1 (num1 ),
- .seg_en (seg_en ),
- .seg_data (seg_data) //從高到低位abcdefg
-
- );
- //========================================================
-
-
- endmodule
復制代碼 |