基于vhdl語言的數(shù)字時鐘設(shè)計說明書.doc
《基于vhdl語言的數(shù)字時鐘設(shè)計說明書.doc》由會員分享,可在線閱讀,更多相關(guān)《基于vhdl語言的數(shù)字時鐘設(shè)計說明書.doc(41頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、課程:CPLD與FPGA設(shè)計及應(yīng)用實驗:基于VHDL語言的數(shù)字時鐘設(shè)計 學號:092030030姓名: 朱 峰 專業(yè):信號與信息處理 學院:電子與信息學院2011年12月基于VHDL語言的數(shù)字時鐘設(shè)計一:主要功能1:具有時、分、秒計數(shù)顯示功能,以24小時循環(huán)計時。2:具有日期和星期顯示功能。3:具有秒表功能4:具有調(diào)節(jié)日期,星期,小時,分鐘,清零的功能。5:具有定時和鬧鈴的功能。二:結(jié)構(gòu)框圖控制單元使能信號數(shù)字時鐘CLK時鐘信號報警(鬧鈴)信號復(fù)位信號輸出信號LED顯示揚聲器三:RTL圖四:功能實現(xiàn) 4.1分頻模塊設(shè)計 本設(shè)計使用的輸入時鐘信號為50Mhz,經(jīng)過分頻產(chǎn)生兩路時鐘信號,其中一路為
2、微秒計數(shù)時鐘信號,一路為動態(tài)掃描時鐘信號。同時模塊有一輸入控制信號,其功能是停止微秒計數(shù)時鐘信號,以實現(xiàn)定時的功能。輸入:clk_in 為50Mhz,setstop為微秒計數(shù)時能信號輸出:clk_out1為1/60hz clk_out2為1khz源代碼如下:library ieee;use ieee.std_logic_1164.all;entity div is port(clk_in,setstop: in std_logic; clk_out1,clk_out2: out std_logic);end entity div;architecture fun of div isconsta
3、nt a:integer:=8333333;constant b:integer:=49999;signal c:integer range 0 to a;signal d:integer range 0 to b;beginprocess(clk_in,setstop) begin if(clk_in event and clk_in=1) then if( c+7500000)a and setstop=1) then c=c+1;clk_out1=1; else c=0;clk_out1=0; end if; end if;end process;process(clk_in) begi
4、n if(clk_in event and clk_in=1) then if d=b then d=d+1; clk_out2=1; else d=0;clk_out2=0; end if; end if;end process;end fun;4.2計時模塊設(shè)計4.2.1 微秒計時模塊 計數(shù)器的第一個模塊為微秒計時模塊,其實質(zhì)為一個六十進制計數(shù)器。輸入:clk為1/60hz,reset為清零復(fù)位鍵輸出:ensecond為秒模塊的進位信號 Daout為微妙輸出顯示信號源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_log
5、ic_unsigned.all;entity msecond isport(clk,reset:in std_logic; ensecond:out std_logic; daout:out std_logic_vector(6 downto 0);end entity msecond;architecture fun of msecond is signal count:std_logic_vector(6 downto 0); signal enmin_1:std_logic;beginprocess(clk,reset)begin if(reset=0)then count=000000
6、0; elsif(clk event and clk=1)then if(count(3 downto 0)=1001)then if(count16#60#)then if(count=1011001)then enmin_1=1;count=0000000; else count=count+7; end if; else count=0000000; end if; elsif(count16#60#)then count=count+1 ; enmin_1=0 ; else count=0000000; end if; end if;end process; daout=count;
7、ensecond=enmin_1 ;end fun;4.2.2 秒計時模塊 計數(shù)器的第二個模塊為秒計時模塊,其實質(zhì)為一個六十進制計數(shù)器。輸入:clk為秒進位信號,reset為清零復(fù)位鍵,setmin為調(diào)分信號,setclk為消抖時鐘輸出:enmin為分模塊的進位信號 daout為秒輸出顯示信號源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second isport(clk,setclk,reset,setmin:in std_logic; enmin:out std_l
8、ogic; daout:out std_logic_vector(6 downto 0);end entity second;architecture fun of second is signal count:std_logic_vector(6 downto 0); signal enmin_1,enmin_2:std_logic;beginprocess(clk,reset,setmin)begin if(reset=0)then count=0000000; elsif(clk event and clk=1)then if(count(3 downto 0)=1001)then if
9、(count16#60#)then if(count=1011001)then enmin_1=1;count=0000000; else count=count+7; end if; else count=0000000; end if; elsif(count16#60#)then count=count+1 ; enmin_1=0 ; else count=0000000; end if; end if;end process;process(setclk,setmin)begin if(setclk event and setclk=1) then enmin_2=not setmin
10、 ; end if; end process; daout=count; enmin=(enmin_1 or enmin_2);end fun;4.2.3 分計時模塊 計數(shù)器的第三個模塊為秒計時模塊,其實質(zhì)為一個六十進制計數(shù)器。輸入:clk為分進位信號,reset為清零復(fù)位鍵,sethour為調(diào)時信號,setclk為消抖時鐘輸出:enhour為小時模塊的進位信號 daout為分輸出顯示信號源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute isport( clk
11、,setclk,reset,sethour:in std_logic; enhour:out std_logic; daout:out std_logic_vector(6 downto 0);end entity minute;architecture fun of minute is signal count:std_logic_vector(6 downto 0); signal enhour_1,enhour_2:std_logic;beginprocess(clk,reset)begin if(reset=0)then count=0000000; elsif(clk event a
12、nd clk=1)then if(count(3 downto 0)=1001)then if(count16#60#)then if(count=1011001)then enhour_1=1; count=0000000; else count=count+7; end if; else count=0000000; end if; elsif(count16#60#)then count=count+1; enhour_1=0 ; else count=0000000; end if; end if; end process;process(setclk,sethour)begin if
13、(setclk event and setclk=1) then enhour_2=not sethour ; end if; end process; daout=count; enhour=(enhour_1 or enhour_2);end fun;4.2.4小時計時模塊 計數(shù)器的第四個模塊為小時計時模塊,其實質(zhì)為一個二十四進制計數(shù)器。輸入:clk為分進位信號,reset為清零復(fù)位鍵,setweek為調(diào)小時信號,setclk為消抖時鐘輸出:enweek為日期模塊的進位信號 daout為小時輸出顯示信號源代碼如下:library ieee;use ieee.std_logic_1164.a
14、ll;use ieee.std_logic_unsigned.all;entity hour isport( clk,setclk,reset,setweek:in std_logic; enweek:out std_logic; daout:out std_logic_vector(6 downto 0);end entity hour;architecture fun of hour is signal count:std_logic_vector(6 downto 0); signal enweek_1,enweek_2:std_logic;begin process(clk,reset
15、)begin if(reset=0)then count=0000000; elsif(clk event and clk=1)then if(count(3 downto 0)=1001) and (count16#23# )then count=count+7; elsif (count=0100011)then enweek_1=1;count=0000000; elsif(count16#23#)then count=count+1; enweek_1=0; else count=0000000; end if; end if;end process;process(setclk,se
16、tweek)begin if(setclk event and setclk=1) then enweek_2=not setweek; end if; end process; daout=count; enweek=(enweek_1 or enweek_2) ;end fun;4.3日期和星期模塊設(shè)計 4.3.1 星期顯示模塊 星期顯示模塊其實質(zhì)為一個七進制計數(shù)器。輸入:clk為日期進位信號,reset為清零復(fù)位鍵輸出:weeoutk為星期輸出顯示信號源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_uns
17、igned.all;entity weeker is port(clk:in std_logic; reset:in std_logic; weekout:out std_logic_vector(3 downto 0);end entity weeker;architecture fun of weeker issignal count:std_logic_vector(3 downto 0);beginprocess(clk,reset) begin if(reset=0)then count=0001; elsif(clk event and clk=1)then if (count16
18、#7#) then count=count+1; else count=0001; end if; end if; end process; weekout=count; end fun;4.3.2 日期顯示模塊 日期顯示模塊其實質(zhì)為一個十二選一選擇器。輸入:clk為日期進位信號,reset為清零復(fù)位鍵輸出:monthout 為月輸出顯示信號 Dateout為日輸出顯示信號源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity date is port(clk:in std_lo
19、gic; reset:in std_logic; monthout:out std_logic_vector(4 downto 0); dateout:out std_logic_vector(5 downto 0);end entity date;architecture fun of date issignal dount:std_logic_vector(4 downto 0);signal count:std_logic_vector(5 downto 0);beginprocess(clk,reset) begin if(reset=0)then count=000001;dount
20、=00001; elsif(clk event and clk=1 and dount=00001 )then if(count(3 downto 0)=1001) and (count16#31# )then count=count+7; elsif (count16#31#) then count=count+1; else count=000001;dount=dount+1;end if; elsif(clk event and clk=1 and dount=00010 )then if(count(3 downto 0)=1001) and (count16#29# )then c
21、ount=count+7; elsif (count16#29#) then count=count+1; else count=000001;dount=dount+1;end if; elsif(clk event and clk=1 and dount=00011 )then if(count(3 downto 0)=1001) and (count16#31# )then count=count+7; elsif (count16#31#) then count=count+1; else count=000001;dount=dount+1;end if; elsif(clk eve
22、nt and clk=1 and dount=00100 )thenif(count(3 downto 0)=1001) and (count16#30# )then count=count+7; elsif (count16#30#) then count=count+1; else count=000001;dount=dount+1; end if; elsif(clk event and clk=1 and dount=00101 )then if(count(3 downto 0)=1001) and (count16#31# )then count=count+7; elsif (
23、count16#31#) then count=count+1; else count=000001;dount=dount+1; end if; elsif(clk event and clk=1 and dount=00110 )then if(count(3 downto 0)=1001) and (count16#30# )then count=count+7; elsif (count16#30#) then count=count+1; else count=000001;dount=dount+1;end if; elsif(clk event and clk=1 and dou
24、nt=00111 )then if(count(3 downto 0)=1001) and (count16#31# )then count=count+7; elsif (count16#31#) then count=count+1; else count=000001;dount=dount+1;end if; elsif(clk event and clk=1 and dount=01000 )then if(count(3 downto 0)=1001) and (count16#31# )then count=count+7; elsif (count16#31#) then co
25、unt=count+1; else count=000001;dount=dount+1;end if; elsif(clk event and clk=1 and dount=01001 )then if(count(3 downto 0)=1001) and (count16#30# )then count=count+7; elsif (count16#30#) then count=count+1; else count=000001;dount=dount+1; end if; elsif(clk event and clk=1 and dount=01010 )then if(co
26、unt(3 downto 0)=1001) and (count16#31# )then count=count+7; elsif (count16#31#) then count=count+1; else count=000001;dount=dount+1;end if; elsif(clk event and clk=1 and dount=01011 )then if(count(3 downto 0)=1001) and (count16#30# )then count=count+7; elsif (count16#30#) then count=count+1; else co
27、unt=000001;dount=dount+1; end if; elsif(clk event and clk=1 and dount=01100 )then if(count(3 downto 0)=1001) and (count16#31# )then count=count+7; elsif (count16#31#) then count=count+1; else count=000001;dount=dount+1;end if;end if; end process; monthout=dount; dateout=count; end fun;4.4掃描顯示模塊設(shè)計 該模
28、塊的作用是將時鐘產(chǎn)生的微秒、秒、分、小時、星期和日期信號以掃描的形式顯示輸出。其中一控制信號實現(xiàn)數(shù)碼管的復(fù)用,控制顯示微秒、秒、分、小時或星期、日期。輸入:clk1為掃描時鐘,reset為清零復(fù)位鍵,ms、sec、min、hour、month、date、week分別為微秒、秒、分、小時、月、日、星期顯示信號,showweek為控制信號輸出:dp為數(shù)碼管小數(shù)點顯示信號 led為七段數(shù)碼管顯示信號 sel為位選信號源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_l
29、ogic_arith.all;entity seltime isport( clk1,reset,showweek:in std_logic; ms,sec,min,hour:in std_logic_vector(6 downto 0); month:in std_logic_vector(4 downto 0); date:in std_logic_vector(5 downto 0); week:in std_logic_vector(3 downto 0); dp:out std_logic; led:out std_logic_vector(6 downto 0); sel:out
30、std_logic_vector(7 downto 0);end entity seltime ;architecture fun of seltime issignal count:std_logic_vector(3 downto 0);signal daout:std_logic_vector(3 downto 0);signal d:std_logic_vector(4 downto 0);beginp1 : process(clk1,reset)begin if(reset=0)then count1101)then count=0000; d=count&showweek ; el
31、se count=count+1; ddaout=ms(3 downto 0);sel=01111111;dpdaout(3)=0;daout(2 downto 0)=ms(6downto4);sel=10111111;dpdaout=sec(3 downto 0);sel=11111110;dpdaout(3)=0;daout(2downto0)=sec(6 downto 4);sel=11111101;dpdaout=min(3 downto 0);sel=11111011;dpdaout(3)=0;daout(2downto0)=min(6downto 4);sel=11110111;d
32、pdaout=hour(3 downto 0);sel=11101111;dpdaout(3downto2)=00;daout(1downto0)=hour(5downto4);sel=11011111;dpdaout=week;sel=01111111;dpdaout=date(3 downto 0);sel=11111110;dpdaout(3downto2)=00;daout(1downto0)=date(5downto4);sel=11111101;dpdaout=month(3 downto 0);sel=11111011;dpdaout(3 downto 1)=000;daout(
33、0)=month(4);sel=11110111;dpselledledledledledledledledledlednull;end case;end process p3;end fun;4.5 整點報時模塊設(shè)計 該模塊的作用是當時鐘計數(shù)到整點時蜂鳴器報警,以實現(xiàn)整點報時功能。輸入:clk計數(shù)時鐘信號,speaksec秒輸出信號,speakmin分輸出信號輸出:報警信號源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speaker is port(clk:in st
34、d_logic; speaksec:in std_logic_vector(6 downto 0); speakmin:in std_logic_vector(6 downto 0); speak:out std_logic);end entity speaker;architecture fun of speaker isbeginprocess(clk,speakmin)begin if(clk event and clk=1)then if(speakmin=0000000 and speaksec=0000000)then speak=1;else speakclk_in, setst
35、op=setstop, clk_out1=clk00, clk_out2=clk01); u2:msecond port map (clk=clk00, reset=reset, ensecond=ensecond_re, daout=da0out);u3:second port map (clk=ensecond_re, setclk=clk01, reset=reset, setmin=setmin, enmin=enmin_re, daout=dalout);u4:minute port map (clk=enmin_re, setclk=clk01, reset=reset, seth
36、our=sethour, enhour=enhour_re, daout=dallout);u5:hour port map (clk=enhour_re, setclk=clk01, reset=reset, setweek=setweek, enweek=enweek_re, daout=dalllout);u6:weeker port map (clk=enweek_re, reset=reset, weekout=dallllout);u7:date port map (clk=enweek_re, reset=reset, monthout=month0out, dateout=da
37、te0out);u8:seltime port map(clk1=clk01, reset=reset, showweek=showweek, ms=da0out, sec=dalout, min=dallout, hour=dalllout, week=dallllout, date=date0out, month=month0out, sel=sel, led=led, dp=dp);u9:speaker port map(clk=clk01, speaksec=dalout, speakmin=dallout, speak=speak);end a; 39大學本科生畢業(yè)設(shè)計(論文)撰寫規(guī)
38、范本科生畢業(yè)設(shè)計(論文)是學生在畢業(yè)前提交的一份具有一定研究價值和實用價值的學術(shù)資料。它既是本科學生開始從事工程設(shè)計、科學實驗和科學研究的初步嘗試,也是學生在教師的指導(dǎo)下,對所進行研究的適當表述,還是學生畢業(yè)及學位資格認定的重要依據(jù)。畢業(yè)論文撰寫是本科生培養(yǎng)過程中的基本訓練環(huán)節(jié)之一,應(yīng)符合國家及各專業(yè)部門制定的有關(guān)標準,符合漢語語法規(guī)范。指導(dǎo)教師應(yīng)加強指導(dǎo),嚴格把關(guān)。1、論文結(jié)構(gòu)及要求論文包括題目、中文摘要、外文摘要、目錄、正文、參考文獻、致謝和附錄等幾部分。1.1 題目論文題目應(yīng)恰當、準確地反映論文的主要研究內(nèi)容。不應(yīng)超過25字,原則上不得使用標點符號,不設(shè)副標題。1.2 摘要與關(guān)鍵詞1.2
39、.1 摘要本科生畢業(yè)設(shè)計(論文)的摘要均要求用中、英兩種文字給出,中文在前。摘要應(yīng)扼要敘述論文的研究目的、研究方法、研究內(nèi)容和主要結(jié)果或結(jié)論,文字要精煉,具有一定的獨立性和完整性,摘要一般應(yīng)在300字左右。摘要中不宜使用公式、圖表,不標注引用文獻編號,避免將摘要寫成目錄式的內(nèi)容介紹。1.2.2 關(guān)鍵詞關(guān)鍵詞是供檢索用的主題詞條,應(yīng)采用能覆蓋論文主要內(nèi)容的通用技術(shù)詞條(參照相應(yīng)的技術(shù)術(shù)語標準),一般列35個,按詞條的外延層次從大到小排列,應(yīng)在摘要中出現(xiàn)。1.3 目錄目錄應(yīng)獨立成頁,包括論文中全部章、節(jié)的標題及頁碼。1.4 論文正文論文正文包括緒論、論文主體及結(jié)論等部分。1.4.1 緒論緒論一般作
40、為論文的首篇。緒論應(yīng)說明選題的背景、目的和意義,國內(nèi)外文獻綜述以及論文所要研究的主要內(nèi)容。文管類論文的緒論是畢業(yè)論文的開頭部分,一般包括說明論文寫作的目的與意義,對所研究問題的認識以及提出問題。緒論只是文章的開頭,不必寫章號。畢業(yè)設(shè)計(論文)緒論部分字數(shù)不多于全部論文字數(shù)的1/4。1.4.2 論文主體論文主體是論文的主要部分,要求結(jié)構(gòu)合理,層次清楚,重點突出,文字簡練、通順。論文主體的內(nèi)容要求參照大學本科生畢業(yè)設(shè)計(論文)的規(guī)定第五章。論文主體各章后應(yīng)有一節(jié)“本章小結(jié)”。1.4.3 結(jié)論結(jié)論作為單獨一章排列,但不加章號。結(jié)論是對整個論文主要成果的歸納,要突出設(shè)計(論文)的創(chuàng)新點,以簡練的文字對
41、論文的主要工作進行評價,一般為4001 000字。1.5 參考文獻參考文獻是論文不可缺少的組成部分,它反映了論文的取材來源和廣博程度。論文中要注重引用近期發(fā)表的與論文工作直接有關(guān)的學術(shù)期刊類文獻。對理工類論文,參考文獻數(shù)量一般應(yīng)在15篇以上,其中學術(shù)期刊類文獻不少于8篇,外文文獻不少于3篇;對文科類、管理類論文,參考文獻數(shù)量一般為1020篇,其中學術(shù)期刊類文獻不少于8篇,外文文獻不少于3篇。在論文正文中必須有參考文獻的編號,參考文獻的序號應(yīng)按在正文中出現(xiàn)的順序排列。產(chǎn)品說明書、各類標準、各種報紙上刊登的文章及未公開發(fā)表的研究報告(著名的內(nèi)部報告如PB、AD報告及著名大公司的企業(yè)技術(shù)報告等除外)不宜做為參考文獻引用。但對于工程設(shè)計類論文,各種標準、規(guī)范和手冊可作為參考文獻。引用網(wǎng)上參考文獻時,應(yīng)注明該文獻的準確網(wǎng)頁地址,網(wǎng)上參考文獻不包含在上述規(guī)定的文獻數(shù)量之內(nèi)。1.6 致謝對導(dǎo)師和給予指導(dǎo)或協(xié)助完成論文工作的組織和個人表示感謝。內(nèi)容應(yīng)簡潔明了、實事求是,避免俗套。1.7 附錄如開題報告、文獻綜述、外文譯文及外文文獻復(fù)印件、公式的推導(dǎo)、程序流程圖、圖紙、數(shù)據(jù)表格等有些不宜放在正文中,但有參考價值的內(nèi)容可編入論文的附錄中。2、論文書寫規(guī)定2.1 論文正文字數(shù)理工類 論文正文字數(shù)不少于20 000字。文管類 論文正文字數(shù)12 00020 000字。其中漢語言文
- 溫馨提示:
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)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。