EA快速校时数字钟程序文档 .docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EA快速校时数字钟程序文档 .doc

由于要实现快速调时,所以这就要求在“计数”时用一个时钟频率,在 “较时”时有需要一个频率,这就会出现一个问题,那就是:一个进程(即 process)中,不能出现两个时钟,否则就会出现error (100028) ,所以 如果“较时”和“计数”在一个process吋,就需要避免在一个进程中采用两 个时钟输入(即将两个时钟频率作为敏感信号),所以这也就是这里需要解决的 问题了,考虑到计数和调时不是同时进行的,因此可以考虑在一个进程中,采 用一个时钟输入进行类似于分时复用的原理,即计数时elk信号输出计数频率, 校时时输出计数频率频率。而在设计时由于釆用了 EN信号进行计数和校时的切 换(即EN为1吋汁数,为0吋校吋),因此可以利用EN信号作为时钟分频模 块(即下图屮的CLK_TW0模块)屮的CLK_low输出的高低频切换。具体程序如 下(主要看一下CLK_TW0模块中的红色程序部分即能明白)。 顶层原理图 CLK _TW0模块程序 LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENTITY CLK_TWO IS PORT(CLK,CHAG: IN STD_LOGIC; CLK_low,CLK_high : OUT STD_LOGIC ); END CLK_TWO; ARCHITECTURE BEHAV OF CLK一TWO IS BEGIN PROCESS(CLKZCHAG) VARIABLE A,B JNTEGER := 0; VARIABLE H,L :STD_LOGIC ; BEGIN IF CLKEVENT AND CLK=T THEN IFA10000THEN A:=A+1; IF A5000 THEN H :=0*; ELSE H :=T; END IF; ELSE A :=0; END IF; ifCHAG =l thenTHE N B :=B+1;——24MHz 分频为 1Hz 用于计数 IF HENL-O; ELSE L:=T; END IF; ELSE B :=0; END IF; else IF EN B :=B+1; 2 4MHz分频,分频比为5 000 000。用于校时 000 THENL:=O*; ELSE L:=T; END IF; ELS EB :=0; END IF; end if; END IF ; CLK_high CLK_lo w = L; END PROCESS ; END BEHAV; DG_CL K模块程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity DIG_CLOCK is port (CLK/EN,RST1,RST2,RST3/ADD_HOUR/ADD_SEC,ADD_MIN:IN STD_LOGIC; COUT:OUTSTD_LOGIC; DIS_HOUR10ZDIS_HOUR1/DIS_MIN10/DIS_MIN1,DIS_SEC10/DIS_SEC1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END DIG_CLOCK; ARCHITECTURE BEHAV OF DIG_CLOCK IS SIGNAL COUNT1ZCOUNT2 : STD_LOGIC :=*0; SIGNAL LCX: STD_LOGIC; BEGIN BI: process (CLK,EN,RST3,ADD_SEC) -----秒校时及计数模块 VARIABLE S1O,S1 : STD_LOGIC_VECTOR(3 DOWNTO 0):=0000; VARIABLE ul,v3 JNTEGER := 0; BEGIN IF RST3 = *0* THEN S10:= 0000;Sl:= 0000; ELSIF CLKEVENT AND CLK=T THEN IF EN =T THEN I ENS1 :=Sl+l;ul :=0;-秒 ELSE SI := 0000;ul:=l; END IF; IF(ul=l)THEN IF(S105) THEN S10 := S10+1; ELSE S10 := 0000; END IF; END IF; IF (S1O=5)AND(S1=9) THEN COUNT1 = T;--S10:= (OTHERS = 0*);Sl:= (OTHERS = O); ELSE COUNT1 = ■?■; END IF; ELSIF ADD_SEC= *0 THEN IF (Sl9) THEN SI := S

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档