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

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

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

圖9 Clk:256hz頻率輸入Reset:接GNDDin:接按鍵Dout:輸出傳給按鍵選擇器仿真圖如下: 
圖10 按鍵選擇器,生成元器件如下 
圖11 Clk:16hz輸入Key1:按鍵調(diào)分的輸入Key2:按鍵調(diào)時的輸入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顯示時間模塊 模八的器件控制八個數(shù)碼管顯示的循環(huán),生成元器件如下
圖15 Clk:輸入
Clr:接GND
En:使能端
Y[2..0]:輸出接數(shù)碼管三個接受端
仿真圖如下: 
圖16 2.3.7控制數(shù)碼管八選一的器件控制數(shù)碼管的亮或不亮,生成元器件如下

圖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]:輸出給數(shù)碼管顯示
仿真圖如下: 
圖18
2.3.8數(shù)碼管顯示器 數(shù)碼管顯示器件,生成元器件如下

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

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