- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字系统课程设计报告-
数字系统课程设计
(数字电子钟)
班 级: 电信 081
姓 名: 徐镇江
学 号: 08401200105
一、系统设计要求:
本设计要求掌握数码管的显示原理、数字钟的VHDL编程方法。具体要求:
(1)采用EDA实验箱上的共阴极数码管显示时间,从00:00:00~23:59:59,依此循环。
(2)整点报时。
二、系统设计思路:
根据系统的设计要求可知,本系统设计本设计可分为三个主要部分电路。
(1)计时:
主要是通过标准秒脉冲的输入,采集秒脉冲的上升沿,从而触发秒计时信号,从而达到秒计时的目的。当到达“59”时,产生分进位脉冲信号,激发计分电路,同理,从而实现计分。整体就实现了计时的功能。
显示:
通过对计秒、计分、计时电路的BCD码输出,进行译码操作,输出给8段数码显示,并进行动态扫描,即可实现多位数码管的显示。
整点报时
整点报时电路在该设计当中只是给出了一个整点的信号,该信号是低电平有效,持续时间是1分钟。通过外部的设计电路,该信号对“蜂鸣器”电路起一个控制的作用。
计时电路的设计
主要VHDL程序段如下:
process(clk_time)
begin
if (clk_timeevent and clk_time = 1) then
if(sec_1 = 1001) then
sec_1=0000;
if(sec_2 = 0101) then
sec_2 = 0000;
co1 = 1;
else
sec_2 = sec_2 +1;
co1=0;
end if;
else sec_1= sec_1 + 1;
end if;
end if;
sec = sec_2 sec_1;
end process;
上面的代码是计秒部分,它为计分电路提供一个分脉冲进位信号,“co1”
当co1 = 1时,触发计分电路
process(co1)
begin
if co1event and co1 = 1 then
if(min_1 = 1001) then
min_1=0000;
if(min_2 = 0101) then
min_2 = 0000;
co2 = 1;
else
min_2 = min_2 +1;
co2=0;
end if;
else
min_1 = min_1 +1;
end if;
end if;
min = min_2 min_1;
alter=1;
end process;
同理,底下的代码是计时部分。
process(co2)
begin
if co2event and co2 = 1 then
if (hour_1 = 0011 and hour_2 = 0010) then
hour_1 =0000;
hour_2 =0000;
elsif hour_1 = 1001 then
hour_2 = hour_2 + 1;
hour_1 = 0000;
else
hour_1 = hour_1 + 1;
end if;
end if;
hour = hour_2 hour_1;
alter=0;
end process;
显示控制电路的设计
本设计显示需要使用的是6个7段数码管,在计时结果显示电路中,6个7段数码管显示部分采用的是动态显示,由时钟信号clk_scan作为扫描信号,每来一次上升沿转换一个数码管显示,并显示对应的信息.
显示控制模块的主要VHDL程序段如下:
process(clk_scan)
begin
if clk_scanevent and clk_scan = 1 then
if cnt = 101 then
cnt = 000;
else
cnt = cnt +1;
end if;
end if;
end process;
process(cnt)
begin
case cnt is
when 000 = bcd =sec(3 downto 0);com =111110;
when 001 = bcd =sec(7 downto 4);com =111101;
when 010 = bcd =min(3 downto 0);com =111011;
when 011 = bcd =min(7 downto 4);com =110111;
when 100 = bcd =hour(3 downto 0);com =
文档评论(0)