版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、南京理工大學(xué)EDA()實驗報告 多功能數(shù)字鐘姓名:學(xué)號:學(xué)院:指導(dǎo)教師:時間:2014/11/32014/11/7摘要日益復(fù)雜的電子線路使得基于原理圖的設(shè)計越來越復(fù)雜,甚至不切實際。硬件描述語言的誕生,對設(shè)計自動化起到了極大的促進和推動作用。Verilog HDL就是在用途最廣泛的C語言的基礎(chǔ)上發(fā)展起來的一種硬件描述語言,實現(xiàn)了從算法級、門級到開關(guān)級的多種抽象設(shè)計層次的數(shù)字系統(tǒng)建模,具有仿真,驗證,故障模擬與時序分析等功能。本文利用Verilog HDL語言,采用自頂向下的設(shè)計方法設(shè)計多功能數(shù)字鐘,并通過Quartus分塊進行了仿真。此程序通過下載到FPGA芯片后,可實現(xiàn)實際的數(shù)字鐘顯示,具有
2、基本的計時顯示和設(shè)置,時間校正,整點報時,12h/24h轉(zhuǎn)換,鬧鐘設(shè)置和鬧鈴控制的功能。關(guān)鍵詞: FPGA, Verilog HDL, Quartus, EP3C25F324C8,數(shù)字鐘 AbstractThe development of electronic circuit has grown to be too complicated to be designed base on schematic diagram. The birth of HDL accelerated the development of electronic design automation drastical
3、ly. Verilog HDL is one of the HDL with multiple and strong functions.In this thesis, a complex digital system is designed in the bottom-up way with Verilog HDL and is simulated by Quartus. The function of a digital clock can be realized by downloading the program to FPGA, which includes timing, time
4、-setting, hourly chiming, 12/24transforming, bell-setting and bell-controlling.Keywords: FPGA, Verilog HDL, Quartus, EP3C25F324C8,Digital clock目錄摘要Abstract第一章 數(shù)字鐘設(shè)計要求說明第二章 數(shù)字鐘的設(shè)計思路和工作原理第三章 模塊的Verilog HDL設(shè)計與仿真3.1 計數(shù)器模塊3.2 基本計時頂層模塊3.3 分頻模塊3.4 整點報時模塊3.5鬧鐘模塊3.6 LED數(shù)碼管顯示模塊3.7 數(shù)字鐘頂層模塊第四章 FPGA實現(xiàn)第五章 總結(jié)5.1 遇
5、到的問題與解決方案5.2 尚存在的不足之處5.3 收獲與感悟參考文獻第一章 數(shù)字鐘設(shè)計要求說明(一) 數(shù)字鐘可以正常進行基本的時,分,秒計時功能。(二) 分別由六個數(shù)碼管顯示時分秒的計時。(三) 可以對數(shù)字鐘的小時和分鐘進行校正。(四) 具有整點報時功能,在時鐘計時到59分53秒時開始報時,在59分53秒,55秒,57秒時報時頻率為500Hz, 59分59秒時報時頻率為1kHz。(五) 具有鬧鐘設(shè)定功能,具體到小時和分鐘,默認模式下鬧鐘響一分鐘。有按鍵可以控制鬧鐘是否發(fā)出聲響。(六) 可以進行12/24小時轉(zhuǎn)換。(七) 具有重置清零功能。第二章 數(shù)字鐘的設(shè)計思路和工作原理本文中的數(shù)字鐘設(shè)計采用
6、自底向上的設(shè)計方法,共分為三層。首先設(shè)計基礎(chǔ)模塊,包括模6,10,12,24,60 計數(shù)器模塊,系統(tǒng)頻率48MHz到2kHz和1kHz分頻模塊,1kHz到500Hz,250Hz,1Hz的分頻模塊,整點報時模塊,鬧鐘模塊,LED顯示模塊。然后,用一個頂層模塊控制模12,24,60計數(shù)器模塊構(gòu)成基本的計時模塊;再用一個頂層模塊控制兩個分頻模塊,實現(xiàn)分頻模塊的統(tǒng)一。最后用一個總的頂層電路,統(tǒng)一之前的子模塊,實現(xiàn)數(shù)字鐘的Verilog HDL描述。如下圖方框圖所示。其工作原理是:由系統(tǒng)晶振產(chǎn)生48MHz的穩(wěn)定的高頻脈沖信號,作為數(shù)字鐘的時間基準(zhǔn),再經(jīng)過分頻器輸出標(biāo)準(zhǔn)秒脈沖。模60計數(shù)器作為分鐘和秒計數(shù)
7、器,秒計數(shù)器計滿60后向分計數(shù)器進位,分計數(shù)器滿60后向小時計數(shù)器進位,小時計數(shù)器由模24計數(shù)器計數(shù)。計數(shù)器的輸出送至LED譯碼顯示電路,即可顯示時間。計時出現(xiàn)誤差時可以用校正電路對小時和分鐘進行計數(shù)。整點報時電路和鬧鐘電路為基本計時電路的功能拓展,只有在基本計時模塊正常運行的情況下才能運行。第三章 模塊的Verilog HDL設(shè)計3.1計數(shù)器模塊3.1.1 模24小時計數(shù)器小時計數(shù)器的計數(shù)規(guī)律為00-01-02-03 10-11-12 22-23-00 ,這樣就要求在設(shè)計時小時計數(shù)器的個位和十位均按照8421BCD碼計數(shù)。程序如下:/counter24.v (BCD計數(shù)023)module
8、counter24(CounterH,CounterL,nCR,EN,CP); input CP,nCR,EN; /timing impulse CP,zero clearing singal nCR,enable singal EN output 3:0 CounterH,CounterL; reg 3:0 CounterH,CounterL;/*定義了兩個四位Reg型矢量,等效于8個變量(CounterH0、CounterH1、CounterH2、CounterH3),(CounterL0、CounterL1、CounterL2、CounterL3)*/ always(posedge CP
9、 or negedge nCR) /時鐘上升沿或清零信號跳變?yōu)榈碗娖綍r,條件為真 begin if(nCR) CounterH,CounterL<= 8'h00; /nCR=0,異步清零else if (EN) CounterH,CounterL<=CounterH,CounterL; /對使能信號無效的處理 else if (CounterH>2)|(CounterL>9)|(CounterH=2)&&(CounterL>=3) CounterH,CounterL<=8'h00; /對小時計時器出錯的處理 else if (
10、CounterH=2)&&(CounterL<3) begin CounterH<=CounterH; CounterL<=CounterL+1'b1;end /進行20到23計數(shù) else if (CounterL=9) begin CounterH<=CounterH+1'b1; CounterL<=4'b0000;end /小時十位進位計數(shù) else begin CounterH<=CounterH; CounterL<=CounterL+1'b1;end /小時個位計數(shù) endendmodule3
11、.1.2 模60分鐘和秒計數(shù)器分和秒計數(shù)器的計數(shù)規(guī)律為00-01- -09-10-11- -58-59-00,可見個位計數(shù)器從09計數(shù),十位計數(shù)器從05計數(shù)。因此可以先分別設(shè)計一個十進制計數(shù)器和一個六進制計數(shù)器模塊,然后組合成60進制模塊。程序如下:module counter10(Q,nCR,EN,CP);input CP,nCR,EN;output 3:0 Q;reg 3:0 Q; /定義了一個四位Reg型矢量,等效于4個變量(Q0、Q1、Q2、Q3)always (posedge CP or negedge nCR) /時鐘上升沿或清零信號跳變?yōu)榈碗娖綍r,條件為真beginif(nCR)
12、 Q<=4'b0000; /nCR=0,計數(shù)器被異步清零else if (EN) Q<=Q; /EN=0,使能無效,暫停計數(shù)else if (Q=4'b1001) Q<=4'b0000; else Q<=Q+1'b1; /計數(shù)器増1計數(shù)endendmodulemodule counter6(Q,nCR,EN,CP);input CP,nCR,EN;output 3:0 Q;reg 3:0 Q;always(posedge CP or negedge nCR)beginif (nCR) Q<=4'b0000; /nCR=0,計
13、數(shù)器被異步清零else if (EN) Q<=Q; /EN=0,暫停計數(shù)else if (Q=4'b0101) Q<=4'b0000;else Q<=Q+1'b1; /計數(shù)器増1計數(shù)end endmodulemodule counter60(Counter,nCR,EN,CP);input CP,nCR,EN;output 7:0 Counter; /模六十計數(shù)器的輸出信號wire 7:0 Counter; /輸出為8421BCD碼wire ENP; /計數(shù)器十位的使能信號(中間變量)counter10 UC0 (Counter3:0,nCR,EN,C
14、P); /計數(shù)器的個數(shù)counter6 UC1 (Counter7:4,nCR,ENP,CP); /計數(shù)器的十位assign ENP=(Counter3:0=4'h9); /產(chǎn)生計數(shù)器十位的使能信號endmodule3.1.3 模12小時計數(shù)器在12/24小時轉(zhuǎn)換后,小時將需要模12計數(shù)器進行計數(shù)。思想與模24計數(shù)器相同,具體程序如下:/counter12.v (BCD011)module counter12(CntH,CntL,nCR,EN,CP); input CP,nCR,EN; /timing impulse CP,zero clearing singal nCR,enable
15、 singal EN output 3:0 CntH,CntL; reg 3:0 CntH,CntL; always(posedge CP or negedge nCR) begin if(nCR) CntH,CntL<= 8'h00; else if (EN) CntH,CntL<=CntH,CntL; else if (CntH>1)|(CntL>9)|(CntH=1)&&(CntL>=1) CntH,CntL<=8'h00; else if (CntH=1)&&(CntL<1) begin CntH
16、<=CntH; CntL<=CntL+1'b1;end else if (CntL=9) begin CntH<=CntH+1'b1; CntL<=4'b0000;end else begin CntH<=CntH; CntL<=CntL+1'b1;end endendmodule3.2 基本計時頂層模塊數(shù)字鐘基本計時模塊包括正常計時和對事件進行校正兩部分。由分秒時三個計數(shù)器模塊組成一個頂層模塊完成數(shù)字鐘的主要功能。電路的工作過程是:由AdjHrkey 和 AdjMinkey 對小時和分鐘進行校正。進行時間調(diào)整時,將相應(yīng)的調(diào)整
17、控制端置為高電平,此時將1Hz信號直接輸入小時或分計數(shù)器,每秒鐘來一個時鐘信號,計數(shù)器加1計數(shù),調(diào)整到目標(biāo)值后,將相應(yīng)控制端置回低電平,恢復(fù)正常小時或者時間計數(shù),實現(xiàn)對小時和分鐘的校正。正常計時時,秒計數(shù)器接收分頻器輸出的標(biāo)準(zhǔn)秒脈沖信號作為時鐘,當(dāng)秒計數(shù)達到59秒時,產(chǎn)生的輸出信號作為分計數(shù)器的時鐘信號,當(dāng)秒和分計數(shù)器同時達到59時,產(chǎn)生的輸出信號作為小時計數(shù)器的時鐘信號,時分秒計數(shù)器的使能端始終保持高電平,通過控制他們的時鐘實現(xiàn)計時功能。計時和校正兩種模式下的轉(zhuǎn)換通過一個二選一數(shù)據(jù)選擇器實現(xiàn)。為了實現(xiàn)12/24小時計時轉(zhuǎn)換,設(shè)置控制鍵Mode2,當(dāng)Mode2=1時,顯示24小時制計時,當(dāng)Mo
18、de2=0時,顯示12小時制計時。具體程序如下:/top_clock.vmodule top_clock (Hour,Minute,Second,_1Hz,nCR,AdjMinkey,AdjHrkey,Mode2); input _1Hz,nCR,AdjMinkey,AdjHrkey; output7:0 Hour,Minute,Second; wire7:0 Hour,Hour_24,Hour_12, Minute, Second; supply1 Vdd; /定義Vdd為高電平 wire MinCP,HrCP; /分別為分鐘,小時計數(shù)器時鐘信號的中間變量 input Mode2; /*控制
19、顯模式切換的按鍵 Mode2=1時,顯示24小時制,Mode2=0時,顯示12小時制*/Hour:Minute:Second countercounter60 UT1(Second,nCR,Vdd,_1Hz); counter60 UT2(Minute,nCR,Vdd,MinCP); counter24 UT3(Hour_247:4,Hour_243:0,nCR,Vdd,HrCP); counter12 UT4(Hour_127:4,Hour_123:0,nCR,Vdd,HrCP); _2to1MUX MU1(Hour,Mode2,Hour_24,Hour_12);assign MinCP=
20、AdjMinkey ? _1Hz : (Second=8'h59);/產(chǎn)生分鐘計數(shù)器時鐘信號。AdjMinkey=1,校正分鐘;AdjMinkey=0分鐘正常計時assign HrCP= AdjHrkey ? _1Hz : (Minute,Second= 16'h5959);/產(chǎn)生小時計數(shù)器時鐘信號。AdjHrkey=1,校正小時;AdjHrkey=0小時正常計時endmodule module _2to1MUX (OUT ,SEL,X,Y);input 7:0 X,Y;input SEL;output 7:0 OUT;assign OUT=SEL? X:Y;endmodule
21、將模24計數(shù)器,模60計數(shù)器,和計時頂層模塊輸入Quartus,將top_clock.v設(shè)為頂層文件,進行編譯和仿真可以得到計時模塊的計時校準(zhǔn)清零工作波形和進位工作波形,可見是符合設(shè)計要求的。(仿真時,為了便于觀察所有進位信號,將1Hz人為設(shè)定為1kHz。)3.3 分頻模塊分頻電路分為兩個子模塊,一是將系統(tǒng)晶振頻率分頻至1kHz;二是由1kHz產(chǎn)生標(biāo)準(zhǔn)的1Hz秒信號, 并提供功能擴展電路所需要的500Hz信號。之所以分成兩個子模塊進行分頻,是因為如果直接加48MHz信號作為輸入,很難得到最終的仿真波形。接下來在測試電路的功能時,均用1kHz直接作為輸入信號。如要觀察整個分頻模塊的功能,需將分頻
22、模塊下載至FPGA,將1Hz輸出接至LED燈觀察閃爍頻率。具體程序如下:/Top_Frequencymodule Top_Frequency(_48MHz,_1kHzIN,_1HzOut,_500HzOut,nCR);input _48MHz,nCR;output _1kHzIN,_500HzOut,_1HzOut;wire _1kHzIN;wire _1HzOut,_500HzOut;Original_Frequency U0(_1kHzIN,_48MHz,nCR);Divided_Frequency U1(_1HzOut,_500HzOut,nCR,_1kHzIN);endmodule/O
23、riginal_Frequencymodule Original_Frequency (_1kHzIN,_48MHz,nCR);input _48MHz,nCR;output _1kHzIN;supply1 Vdd;wire 19:0Q;wire EN1,EN2,EN3,EN4;counter10 EU0(Q3:0,nCR,Vdd,_48MHz);counter10 EU1(Q7:4,nCR,EN1,_48MHz);counter10 EU2(Q11:8,nCR,EN2,_48MHz);counter6 EU3(Q15:12,nCR,EN3,_48MHz);counter10 EU4(Q19:
24、16,nCR,EN4,_48MHz);assign EN1=(Q3:0=4'h9);assign EN2=(Q7:4=4'h9)&(Q3:0=4'h9);assign EN3=(Q11:8=4'h9)&(Q7:4=4'h9)&(Q3:0=4'h9);assign EN4=(Q15:12=4'h5)&(Q11:8=4'h9)&(Q7:4=4'h9)&(Q3:0=4'h9);assign _1kHzIN=Q18;endmodulemodule Divided_Freque
25、ncy(_1HzOut,_500HzOut,nCR,_1kHzIN);input _1kHzIN,nCR;output _1HzOut,_500HzOut;supply1 Vdd; /定義Vdd為高電平wire 11:0 Q; /計數(shù)器的輸出信號(中間變量)wire EN1,EN2; /計數(shù)器使能信號(中間變量)counter10 DU0(Q3:0,nCR,Vdd,_1kHzIN); /調(diào)用十進制計數(shù)器模塊counter10 DU1(Q7:4,nCR,EN1,_1kHzIN);counter10 DU2(Q11:8,nCR,EN2,_1kHzIN);assign EN1=(Q3:0=4'
26、;h9);assign EN2=(Q7:4=4'h9)&(Q3:0=4'h9);assign _1HzOut=Q11;assign _500HzOut=Q0;endmodule3.4 整點報時模塊ALARM_Radio為輸出的整點報時信號,Minute、Second分別為數(shù)字鐘計數(shù)器此時的分鐘和秒鐘信號,它們作為本模塊的輸入。程序中用if-else語句判斷數(shù)字鐘此時分鐘計數(shù)器是否為59,若為59,再用case-endcase語句判斷秒鐘計數(shù)器是否為53,55,57,59,滿足要求的即輸出相應(yīng)頻率的信號。每一次整點,共發(fā)出三次低音一次高音,以最后一聲高音結(jié)束,高音結(jié)束時為
27、整點。具體程序如下:/Radio.vmodule Radio (ALARM_Radio,Minute,Second,_1kHzIN,_500Hz);input _1kHzIN,_500Hz; /定義輸入端口變量input 7:0 Minute,Second; output ALARM_Radio; /定義輸出端口變量reg ALARM_Radio; /說明變量的類型always (Minute or Second) /generate alarm signalif (Minute=8'h59) case (Second)8'h53,8'h55,8'h57:ALA
28、RM_Radio=_500Hz;8'h59:ALARM_Radio=_1kHzIN;default :ALARM_Radio=1'b0;endcaseelse ALARM_Radio=1'b0;endmodule3.5 鬧鐘模塊用SetHrkey和SetMinkey分別作為小時分鐘設(shè)置鍵,它們的輸入信號分別作為鬧鐘設(shè)置界面計數(shù)器的小時計數(shù)器和分鐘計數(shù)器的使能端。鬧鐘設(shè)置計數(shù)器輸出的小時和分鐘記作Set_Hr和Set_Min,為鬧鐘的設(shè)定時刻。當(dāng)Set_Hr,Set_Min與基礎(chǔ)計時電路的Minute,Hour相等時,驅(qū)動音響電路,奇數(shù)秒時為低音,偶數(shù)秒時為高音。為了能隨
29、時關(guān)掉鬧鐘,設(shè)置了一個控制鍵CtrlBell,CtrlBell為高電平時鬧鈴響鈴,為低電平時鬧鈴驅(qū)動信號無效。具體程序如下:module Bell (ALARM_Clock,Set_Hr,Set_Min,Hour,Minute,Second,SetHrkey,SetMinkey,_1kHzIN,_500Hz,_1Hz,CtrlBell);output ALARM_Clock;output 7:0Set_Hr,Set_Min; /設(shè)定的鬧鈴時間wire7:0Set_Hr,Set_Min;wire ALARM_Clock; /鬧鈴輸出信號 input _1kHzIN,_500Hz,_1Hz; /定
30、義輸入端口變量input SetHrkey,SetMinkey; /設(shè)定鬧鐘小時、分鐘的輸入鍵input CtrlBell; /控制鬧鐘的時間是否輸出的按鍵input 7:0Hour,Minute,Second; /定義內(nèi)部節(jié)點信號supply1 Vdd; /定義Vdd為高電平wire HrH_EQU,HrL_EQU,MinH_EQU,MinL_EQU; /比較器的內(nèi)部信號wire Time_EQU; /相等比較電路的輸出/鬧鐘設(shè)定模塊(Set Hour &Minute counter)/60進制分鐘比較器:用于鬧鐘設(shè)定分鐘counter60 SU1(Set_Min,Vdd,SetMi
31、nkey,_1Hz); /24進制小時計數(shù)器:用于鬧鐘設(shè)定小時counter24 SU2(Set_Hr7:4,Set_Hr3:0,Vdd,SetHrkey,_1Hz);/比較鬧鐘的設(shè)定時間和計數(shù)器的當(dāng)前時間是否相等_4bitcomparator SU4(HrH_EQU,Set_Hr7:4,Hour7:4);_4bitcomparator SU5(HrL_EQU,Set_Hr3:0,Hour3:0);_4bitcomparator SU6(MinH_EQU,Set_Min7:4,Minute7:4);_4bitcomparator SU7(MinL_EQU,Set_Min3:0,Minute3:
32、0);/鬧鐘聲音控制信號assign Time_EQU= (HrH_EQU && HrL_EQU && MinH_EQU && MinL_EQU);assign ALARM_Clock=CtrlBell ? (Time_EQU && (Second0=1'b1)&&_500Hz)|(Second0= 1'b0)&&_1kHzIN):1'b0;endmodule /_4bitcomparator.vmodule _4bitcomparator (EQU,A,B);/4-bit
33、comparator input3:0 A,B; output EQU=(A=B);endmodule3.6 LED數(shù)碼管顯示模塊動態(tài)掃描譯碼顯示電路是6個七段顯示器共用一個譯碼驅(qū)動電路,由掃描電路控制各位顯示器分時進行顯示。工作原理是:四個待顯示的BCD碼送到數(shù)據(jù)選擇器的輸入端,根據(jù)計數(shù)器產(chǎn)生的節(jié)拍,每個節(jié)拍由數(shù)據(jù)選擇器選擇一個4位BCD碼送到七段譯碼器進行譯碼,譯碼后的七段碼同時送至顯示器輸入端,由位選擇信號(SG1SG8)選擇顯示器將數(shù)碼顯示出來。經(jīng)測試,本次試驗用到的儀器,當(dāng)位選擇信號為0時顯示,為1時熄滅。位選擇信號由計數(shù)器的輸出經(jīng)過3-8譯碼器得到。具體用Verilog HDL語言
34、實現(xiàn)時,采用了兩個always塊,第一個always塊完成3-8線譯碼、輸入數(shù)據(jù)選擇和計數(shù)功能,第二個always塊完成七段譯碼的功能。另外值得注意的是,計數(shù)器的節(jié)拍需適度控制快慢,太慢會產(chǎn)生閃爍,太快會產(chǎn)生余輝。本實驗中選擇1kHz的頻率。(在硬件測試中發(fā)現(xiàn)500Hz已經(jīng)可以清晰穩(wěn)定的顯示了)具體程序如下:module LED2(CP,LED_HrH3:0,LED_HrL3:0,LED_MinH3:0,LED_MinL3:0,LED_SecH3:0,LED_SecL3:0,Segout,Seg_in,Count,SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8);input C
35、P; /1kHz clockinput 3:0 LED_HrH,LED_HrL,LED_MinH,LED_MinL,LED_SecH,LED_SecL;output6:0Segout; / 7-segment code output,segout6.0-gfedcbaoutput SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8; /select LEDoutput 3:0Seg_in;output 2:0Count;reg SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8;reg 6:0Segout;reg 2:0Count; /internal 3-bit co
36、unterreg 3:0Seg_in; /4-bit binary code/select LED0LED5 displayalways(posedge CP) /CP=1kHz case(Count)3'b000:begin SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8=8'b01111111; /LED0 display Seg_in=LED_HrH3:0; Count=Count+1; /Count=1 end3'b001:begin SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8=8'b10111111; /LED1 d
37、isplay Seg_in=LED_HrL3:0; Count=Count+1; /Count=2 end3'b010:begin SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8=8'b11011111; /LED2 display Seg_in=LED_MinH3:0; Count=Count+1; /Count=3 end3'b011: begin SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8=8'b11101111; /LED3 display Seg_in=LED_MinL3:0; Count=Count+1; /Cou
38、nt=4 end3'b100:begin SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8=8'b11110111; /LED4 display Seg_in=LED_SecH3:0; Count=Count+1; /Count=5 end3'b101:begin SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8=8'b11111011; /LED5 display Seg_in=LED_SecL3:0; Count=Count+1; /Count=6 end3'b110:begin SG1,SG2,SG3,SG4,SG5,S
39、G6,SG7,SG8=8'b11111111; /LED4 display Seg_in=LED_SecH3:0; Count=Count+1; /Count=7 end3'b111:begin SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8=8'b11111111; /LED5 display Seg_in=LED_SecL3:0; Count=Count+1; /Count=0 end endcase/ BCD Code=>7 Segment Code(ag)always(Seg_in) case(Seg_in) /gfedcba4'b
40、0000:Segout=7'b1000000;4'b0001:Segout=7'b1111001;4'b0010:Segout=7'b0100100;4'b0011:Segout=7'b0110000;4'b0100:Segout=7'b0011001;4'b0101:Segout=7'b0010010;4'b0110:Segout=7'b0000010;4'b0111:Segout=7'b1111000;4'b1000:Segout=7'b0000000;4
41、'b1001:Segout=7'b0010000;4'b1010:Segout=7'b0001000;4'b1011:Segout=7'b0000011;4'b1100:Segout=7'b0100111;4'b1101:Segout=7'b0100001;4'b1110:Segout=7'b0000110;4'b1111:Segout=7'b0001110;default: Segout= 7'b0100011;endcaseendmodule為了初步測試LED數(shù)碼管顯示電
42、路的功能,將LED2.v放到之前的top_clock.v的頂層模塊下,得到仿真波形如下??梢娛欠显O(shè)計要求的。3.7 數(shù)字鐘頂層模塊組合之前設(shè)計的各個模塊就可以得到具有數(shù)字鐘功能的電路。它由7個模塊組成,其中5個模塊是通過調(diào)用下層模塊實現(xiàn),包括分頻模塊(U0),數(shù)字鐘基本計時電路(U1),LED顯示電路(U2),整點報時電路(U3),定時鬧鐘電路(U4)。另外2個模塊直接在頂層程序中完成,揚聲器的總控制模塊用連續(xù)賦值語句“assign ALARM=ALARM_Radio | ALARM_Clock;”實現(xiàn),達到將兩個需要揚聲器的信號組合起來輸出的目的。用3個二選一數(shù)據(jù)選擇器實現(xiàn)對顯示其模式的切
43、換,當(dāng)Mode1=1時,顯示鬧鐘設(shè)定時間。當(dāng)Mode1=0時,顯示計時器當(dāng)前時間。具體程序如下:/Digital_Clockmodule DC(LED_Hr,LED_Min,LED_Sec,ALARM,_48MHz,AdjMinkey,AdjHrkey,SetMinkey,SetHrkey,CtrlBell,Mode1,Mode2,nCR,Segout,Seg_in,Count, SG1,SG2,SG3,SG4,SG5,SG6,SG7,SG8);input _48MHz; /系統(tǒng)的輸入時鐘信號input nCR; /系統(tǒng)總清零信號output SG1,SG2,SG3,SG4,SG5,SG6,S
44、G7,SG8; /select LEDoutput 7:0 LED_Hr,LED_Min,LED_Sec; /輸出變量,輸出8421BCD碼給顯示器wire 7:0 LED_Hr,LED_Min,LED_Sec; /說明變量的類型wire _1kHzIN,_1Hz, _500Hz; /分頻器輸出信號input AdjMinkey, AdjHrkey; /校正計時器小時、分鐘的輸入按鍵wire 7:0 Hour,Hour_24,Hour_12,Minute,Second; /計時器的輸出信號input SetHrkey, SetMinkey; /設(shè)定鬧鐘小時、分鐘輸入按鍵wire 7:0 Set
45、_Hr,Set_Min; /設(shè)定的鬧鐘時間輸出信號wire ALARM_Radio; /仿電臺報時信號輸出wire ALARM_Clock; /鬧鐘的信號輸出output ALARM; /仿電臺或鬧鐘的聲音信號輸出input CtrlBell; /控制鬧鐘的聲音是否輸出的按鍵input Mode1,Mode2; /*控制顯示模式切換的按鍵 Mode1=1時,顯示鬧鐘設(shè)定的時間,Mode1=0時,顯示計時器的時間 Mode2=1時,顯示24小時制,Mode2=0時,顯示12小時制*/output6:0Segout; / 7-segment code output,segout6.0-gfedcbaoutput2:0Count;output 3:0Seg_in;Top_Frequency U0 (_48MHz,CP,_1Hz,_500HzOut,nCR);top_clock U1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版通訊器材購銷合同3篇
- 2025年度大型活動場地租賃及服務(wù)合同4篇
- 2025年P(guān)VC管道產(chǎn)品檢測與質(zhì)量保證服務(wù)合同范本3篇
- 2025年消防給水系統(tǒng)設(shè)備及工程安全防護合同3篇
- 2025年度餐飲股份合作人力資源合作協(xié)議3篇
- 2024版跨國投資風(fēng)險共保協(xié)議版B版
- 二零二五版國有控股企業(yè)股權(quán)置換與混合所有制改革合同3篇
- 2025年度消防安全通道維護外包服務(wù)合同3篇
- 2024移動支付技術(shù)服務(wù)合同
- 2024版暫定協(xié)議總價協(xié)議樣本版B版
- 刀模檢測、保養(yǎng)記錄
- 小學(xué)五年級脫式計算題300道-五年級上冊脫式計算題及答案
- 鋁礬土進口合同中英文
- 最新臺灣藥事法
- 2022年金礦采選項目可行性研究報告
- 氧氣吸入法操作并發(fā)癥預(yù)防及處理規(guī)范草稿
- 2022版云南財經(jīng)大學(xué)推免管理辦法
- 門診特定病種待遇認定申請表
- 混合離子交換器使用說明書正本
- 工傷保險待遇及案例分析PPT課件
- 自控工程識圖
評論
0/150
提交評論