EDA快速校时数字钟程序文档.docx

EDA快速校时数字钟程序文档.docx

ID:62053172

大小:101.35 KB

页数:7页

时间:2021-04-16

EDA快速校时数字钟程序文档.docx_第1页
EDA快速校时数字钟程序文档.docx_第2页
EDA快速校时数字钟程序文档.docx_第3页
EDA快速校时数字钟程序文档.docx_第4页
EDA快速校时数字钟程序文档.docx_第5页
资源描述:

《EDA快速校时数字钟程序文档.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、由于要实现快速调时,所以这就要求在“计数”时用一个时钟频率,在“较时”时有需要一个频率,这就会出现一个问题,那就是:一个进程(即process)中,不能出现两个时钟,否则就会出现error(100028)……,所以如果“较时”和“计数”在一个process时,就需要避免在一个进程中采用两个时钟输入(即将两个时钟频率作为敏感信号),所以这也就是这里需要解决的问题了,考虑到计数和调时不是同时进行的,因此可以考虑在一个进程中,采用一个时钟输入进行类似于分时复用的原理,即计数时clk信号输出计数频率,校时时输出计数频率频率。而在设计时由于采用了EN信号进行计数和校时的

2、切换(即EN为1时计数,为0时校时),因此可以利用EN信号作为时钟分频模块(即下图中的CLK_TWO模块)中的CLK_low输出的高低频切换。具体程序如下(主要看一下CLK_TWO模块中的红色程序部分即能明白)。顶层原理图CLK_TWO模块程序LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_unsigned.all;ENTITYCLK_TWOISPORT(CLK,CHAG:INSTD_LOGIC;CLK_low,CLK_high:OUTSTD_LOGIC);ENDCLK_TWO;ARCHITEC

3、TUREBEHAVOFCLK_TWOISBEGINPROCESS(CLK,CHAG)VARIABLEA,B:INTEGER:=0;VARIABLEH,L:STD_LOGIC;BEGINIFCLK'EVENTANDCLK='1'THENIFA<10000THENA:=A+1;IFA<5000THENH:='0';ELSEH:='1';ENDIF;ELSEA:=0;ENDIF;ifCHAG='1'thenIFB<24000000THENB:=B+1;------24MHz分频为1Hz用于计数IFB<1200000THENL:='0';ELSEL:='1';ENDI

4、F;ELSEB:=0;ENDIF;elseIFB<5000000THENB:=B+1;-----------24MHz分频,分频比为5000000。用于校时IFB<250000THENL:='0';ELSEL:='1';ENDIF;ELSEB:=0;ENDIF;endif;ENDIF;CLK_high<=H;CLK_low<=L;ENDPROCESS;ENDBEHAV;DG_CLK模块程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityDIG_CLOCKis

5、port(CLK,EN,RST1,RST2,RST3,ADD_HOUR,ADD_SEC,ADD_MIN:INSTD_LOGIC;COUT:OUTSTD_LOGIC;DIS_HOUR10,DIS_HOUR1,DIS_MIN10,DIS_MIN1,DIS_SEC10,DIS_SEC1:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDDIG_CLOCK;ARCHITECTUREBEHAVOFDIG_CLOCKISSIGNALCOUNT1,COUNT2:STD_LOGIC:='0';SIGNALLCX:STD_LOGIC;BEGINB1:proce

6、ss(CLK,EN,RST3,ADD_SEC)-----秒校时及计数模块VARIABLES10,S1:STD_LOGIC_VECTOR(3DOWNTO0):="0000";VARIABLEu1,v3:INTEGER:=0;BEGINIFRST3='0'THENS10:="0000";S1:="0000";ELSIFCLK'EVENTANDCLK='1'THENIFEN='1'THENIF(S1<9)THENS1:=S1+1;u1:=0;--秒ELSES1:="0000";u1:=1;ENDIF;IF(u1=1)THENIF(S10<5)THENS10:=S10

7、+1;ELSES10:="0000";ENDIF;ENDIF;IF(S10=5)AND(S1=9)THENCOUNT1<='1';--S10:=(OTHERS=>'0');S1:=(OTHERS=>'0');ELSECOUNT1<='0';ENDIF;ELSIFADD_SEC='0'THENIF(S1<9)THENS1:=S1+1;v3:=0;ELSES1:="0000";v3:=1;ENDIF;IF(v3=1)THENIF(S10<5)THENS10:=S10+1;ELSES10:="0000";ENDIF;ENDIF;--IF(S10=5)AND(S1=9

8、)THENS10:=(OTHERS=>

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。