資源描述:
《eda快速校時(shí)數(shù)字鐘程序文檔 》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、由于要實(shí)現(xiàn)快速調(diào)時(shí),所以這就要求在“計(jì)數(shù)”時(shí)用一個(gè)時(shí)鐘頻率,在“較時(shí)”時(shí)有需要一個(gè)頻率,這就會(huì)出現(xiàn)一個(gè)問(wèn)題,那就是:一個(gè)進(jìn)程(即process)中,不能出現(xiàn)兩個(gè)時(shí)鐘,否則就會(huì)出現(xiàn)error(100028),所以如果“較時(shí)”和“計(jì)數(shù)”在一個(gè)process吋,就需要避免在一個(gè)進(jìn)程中采用兩個(gè)時(shí)鐘輸入(即將兩個(gè)時(shí)鐘頻率作為敏感信號(hào)),所以這也就是這里需要解決的問(wèn)題了,考慮到計(jì)數(shù)和調(diào)時(shí)不是同時(shí)進(jìn)行的,因此可以考慮在一個(gè)進(jìn)程中,采用一個(gè)時(shí)鐘輸入進(jìn)行類(lèi)似于分時(shí)復(fù)用的原理,即計(jì)數(shù)時(shí)elk信號(hào)輸出計(jì)數(shù)頻率,校時(shí)時(shí)輸出計(jì)數(shù)
2、頻率頻率。而在設(shè)計(jì)時(shí)由于釆用了EN信號(hào)進(jìn)行計(jì)數(shù)和校時(shí)的切換(即EN為1吋汁數(shù),為0吋校吋),因此可以利用EN信號(hào)作為時(shí)鐘分頻模塊(即下圖屮的CLK_TW0模塊)屮的CLK_low輸出的高低頻切換。具體程序如下(主要看一下CLK_TW0模塊中的紅色程序部分即能明白)。頂層原理圖CLK_TW0模塊程序LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_unsigned.all;ENTITYCLK_TWOISPORT(CLK,CHAG:INSTD_
3、LOGIC;CLK_low,CLK_high:OUTSTD_LOGIC);ENDCLK_TWO;ARCHITECTUREBEHAVOFCLK一TWOISBEGINPROCESS(CLKZCHAG)VARIABLEA,BJNTEGER:=0;VARIABLEH,L:STD_LOGIC;BEGINIFCLK'EVENTANDCLK=TTHENIFA<10000THENA:=A+1;IFA<5000THENH:='0*;ELSEH:=T;ENDIF;ELSEA:=0;ENDIF;ifCHAG='l'then2
4、4000000THENB:=B+1;——24MHz分頻為1Hz用于計(jì)數(shù)IFHENL-'O';ELSEL:=T;ENDIF;ELSEB:=0;ENDIF;elseIFENB:=B+1;24MHz分頻,分頻比為5000000。用于校時(shí)000THENL:='O*;ELSEL:=T;ENDIF;ELSEB:=0;ENDIF;endif;ENDIF;CLK_highCLK_low<=L;ENDPROCESS;ENDBEHAV;DG_CLK模塊程序libraryieee;useieee.std_logic_1164
5、.all;useieee.std_logic_unsigned.all;entityDIG_CLOCKisport(CLK/EN,RST1,RST2,RST3/ADD_HOUR/ADD_SEC,ADD_MIN:INSTD_LOGIC;COUT:OUTSTD_LOGIC;DIS_HOUR10ZDIS_HOUR1/DIS_MIN10/DIS_MIN1,DIS_SEC10/DIS_SEC1:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDDIG_CLOCK;ARCHITECTUREBEHA
6、VOFDIG_CLOCKISSIGNALCOUNT1ZCOUNT2:STD_LOGIC:=*0';SIGNALLCX:STD_LOGIC;BEGINBI:process(CLK,EN,RST3,ADD_SEC)-----秒校時(shí)及計(jì)數(shù)模塊VARIABLES1O,S1:STD_LOGIC_VECTOR(3DOWNTO0):="0000";VARIABLEul,v3JNTEGER:=0;BEGINIFRST3=*0*THENS10:="0000";Sl:="0000";ELSIFCLK'EVENTANDCLK
7、=TTHENIFEN=TTHENIENS1:=Sl+l;ul:=0;-秒ELSESI:="0000";ul:=l;ENDIF;IF(ul=l)THENIF(S10<5)THENS10:=S10+1;ELSES10:="0000";ENDIF;ENDIF;IF(S1O=5)AND(S1=9)THENCOUNT1<=T;--S10:=(OTHERS=>'0*);Sl:=(OTHERS=>O');ELSECOUNT1<=■?■;ENDIF;ELSIFADD_SEC=*0'THENIF(Sl<9)THENSI:
8、=Sl+1;v3:=0;ELSESI:="0000";v3:=l;ENDIF;IF(v3=l)THENIF(S10<5)THENS10:=S10+1;ELSES10:="0000";ENDIF;ENDIF;IF(S1O=5)AND(S1=9)THENS10:=(OTHERS=>'O');S1:=(OTHERS=>*0');ENDIF;ENDIF;ENDIF;DIS_SEC10<=S10;DIS_SEC1<=S1;ENDPROCESSBI;B