- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字系统设计举例3 能控制自动打铃的时钟 * 题目 设计一个时钟,能设置两个时间,到这两个时间能够控制自动响铃30秒。 时间调整和定时的设置使用两个按钮实现。 假设已经有了0.1秒的信号,10分频得到秒信号,为了调整需要,应当有独立的秒、分钟、小时计数器。 signal q0,q1,q2,q3,q4,q5,q6: integer range 0 to 9; signal c0,c1,c2,c3,c4,c5,c6: bit; signal clk1s,clk1m,clk1h: bit; ... process(clk) begin if clk’EVENT and clk=‘1’ then if q0=9 then q0=0; c0=‘1’; else q0=q0+1; c0=‘0’; end if; end if; end process; 进位c0产生秒脉冲。 process(clk1s) begin if clk1s’EVENT and clk1s=‘1’ then if q1=9 then q1=0; c1=‘1’; else q1=q1+1; c1=‘0’; end if; end if; end process; process(c1) begin if c1’EVENT and c1=‘1’ then if q2=5 then q2=0; c2=‘1’; else q2=q2+1; c2=‘0’; end if; end if; 以上是完整的秒计数器,满60秒进位是c2。 process(clk1m) begin if clk1m’EVENT and clk1m=‘1’ then if q3=9 then q3=0; c3=‘1’; else q3=q3+1; c3=‘0’; end if; end if; end process; process(c3) begin if c3’EVENT and c3=‘1’ then if q4=5 then q4=0; c4=‘1’; else q4=q2+1; c4=‘0’; 分钟计数器,满60分钟进位c4. signal hour: integer range 0 to 23; process(clk1h) begin if clk1h’EVENT and clk1h=‘1’ then if hour=23 then hour=0; else hour=hour+1; end if; end if; end process; process(hour) begin if hour10 then q5=hour; q6=0; elsif hour 20 then q5=hour-10; q6=1; else q5=hour-20; q6=2; end if; end process; 小时计数较特殊,上面的程序是否正确?显然还有不同的写法。 显然,只要把相关的时钟信号连接起来,就能实现简单的时钟。为了功能完整,还应该有显示模块,假设只有4个LED数码管,实现小时和分钟的显示。 signal d1,d2,d3,d4 integer range 0 ro 9; ... 实现d1-d4的显示程序略。 为了实现时钟调整,可以把相关时钟脉冲信号断开,接入按钮信号,通过按钮脉冲改变当前的分、秒值。 比如,为了调整分钟值,可以把clk1m信号和按钮信号连接起来,只要按按钮,就能变化分钟值。 响铃时间的记忆和设置,也可以通过计数器实现。响铃时间只有小时和分钟,可以通过如下程序实现: signal rhoura,rhourb:integer range 0 to 23; signal rminha,rminhb,rminla,rminlb: integer range 0 to 9; signal rhourha,rhourhb,rhourla,rhourlb: integer range 0 to 9; signal rhac,rhbc,rmac,rmbc: bit; ... process(rhac) begin if rhac’EVENT and rhac=‘1’ then if rhoura=23 then rhoura=0; else rhoura=rhoura+1; end if; end if; end process; process(rhoura) begin if rhoura10 then rhourla=rhoura; rhourha=0; elsif rhoura20 then rhourla=rhoura-1
文档评论(0)