資源描述:
《vhdl數(shù)字鐘設(shè)計報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、VHDL數(shù)字鐘設(shè)計報告一.數(shù)字鐘總體設(shè)計方案:1.1設(shè)計目的①正確顯示時、分、秒;②可手動校時,能分別進行時、分的校正;③整點報時功能;1.2設(shè)計思路數(shù)字鐘的設(shè)計模塊包括:分頻器、去抖動電路、校時電路、“時、分、秒”計數(shù)器、校時閃爍電路、整點報時和譯碼顯示電路。每一個功能模塊作為一個實體單獨進行設(shè)計,最后再用VHDL的例化語句將各個模塊進行整合,生成頂層實體top。該數(shù)字鐘可以實現(xiàn)3個功能:計時功能、設(shè)置時間功能和報時功能。二.?dāng)?shù)字鐘模塊細節(jié)2.1分頻器(fenpin)本系統(tǒng)共需3種頻率時鐘信號(1024Hz、512Hz、
2、1Hz)。為減少輸入引腳,本系統(tǒng)采用分頻模塊,只需由外部提供1024Hz基準時鐘信號,其余三種頻率時鐘信號由分頻模塊得到。分頻原理:為以1024Hz基準時鐘經(jīng)1024分頻得到512Hz,1Hz頻率時鐘信號。分頻器管腳代碼:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entityfenpinisport(clk1024:instd_logic;clk1,clk512:outs
3、td_logic);endfenpin;architecturecmloffenpinisbeginprocess(clk1024)variablecount1:integerrange0to512;variableq1:std_logic;beginifclk1024'eventandclk1024='1'thenifcount1=512thenq1:=notq1;count1:=0;elsecount1:=count1+1;endif;endif;clk1<=q1;endprocess;process(clk1024)
4、variablecount512:integerrange0to1;variableq512:std_logic;beginifclk1024'eventandclk1024='1'thenifcount512=1thenq512:=notq512;count512:=0;elsecount512:=count512+1;endif;endif;clk512<=q512;endprocess;endcml;2.2校時電路(jiaoshi)本模塊要實現(xiàn)的功能是:正常計時、校時、校分在每個狀態(tài)下都會產(chǎn)生不同控制信號實現(xiàn)相應(yīng)的功
5、能。校時管腳圖代碼:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjiaoshiisport(rst,rvs,select_rvs,mtime,mclkin,hclkin:instd_logic;hclkout,mclkout:outstd_logic);endjiaoshi;architecturecmlofjiaoshiissignalh_m:std_logic;beginp1:process(rst,rvs,hc
6、lkin,mclkin,h_m,mtime)beginifrst='0'thennull;elsifrvs='1'thenhclkout<=hclkin;mclkout<=mCLKin;elsifh_m='0'thenhclkout<=hclkin;mclkout<=mtime;elsehclkout<=mtime;mclkout<=mclkin;endif;endprocess;p2:process(select_rvs)beginifselect_rvs'eventandselect_rvs='1'thenh_m<=n
7、oth_m;endif;endprocess;endcml;管腳圖仿真圖2.3時計數(shù)器(hour)分計數(shù)器(mine)秒計數(shù)器(second)時計數(shù)器管腳圖時代碼:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityhourisport(rst,hclk:instd_logic;hour0,hour1:bufferstd_logic_vector(3downto0));endhour;architecturecmlofhou
8、risbeginprocess(rst,hclk,hour0,hour1)beginifrst='0'thenhour0<="0000";hour1<="0000";elsifhclk'eventandhclk='1'thenifhour0="0011"andhour1="0010"thenhour0<