- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字钟设计
一、实验目的:
通过设计实例,深入理解自顶向下设计方法,系统设计规范、系统设计、模 块设计和系统仿真与实现各阶段的设计内容,初步掌握规范的数字系统设计方法 并实践。
二、实验要求:
1、系统概述:设计一个用 LED 7 段显示器显示的 24 小时制数字钟。
2、系统目标:
(1)用 8 个 LED 显示时间,如 9 点 25 分 10 秒显示为,09-25-10。
设置 2 个按键,按键 SET 用于工作模式选择,按键 UP 用于设置数值。
(可选)
按 SET 键循环设置工作模式为:正常显示-时设置-分设置-秒设 置。在设置工作模式时,被设置相应数字按 1 秒速率闪烁,其它数字不变。
在设置工作模式时,按 UP 键一次,被设置相应数字增加 1,加到最大 值后再加返回 0,如小时加到 23 后再加就返回 0,分和秒加到 59 后再加返回 0 。 3、系统设计依据:
外部输入时钟为 40MHZ,通过分频产生秒脉冲信号,用模 60 计数器对其计 数产生分脉冲信号,对分脉冲用模 60 计数器对其计数产生时脉冲信号,再用模
24 计数器对时脉冲计数,即可实现一天 24 小时的时间信号,通过 7 段 LED 数码
管显示出来则为基本数字钟,校时电路通过两个外部异步按键对“时”、“分”、 “秒”显示数字进行校对调整。
4、系统实现要求:
要求用 Mars-EP1C3-EDA 实验平台。芯片与封装选择:本设计用 EP1C3T FPGA 实现,144 脚封装,输入输出为 LVTTL 电平。
5、系统验证及测试要求:
用 Mars-EP1C3-EDA 实验平台搭建模拟测试平台测试,测试验证数字钟实 现设计目标。
三、系统设计关键技术;;3;
Clock_cnt;5;h_set:时设置使能信号; ;d_out[0];为了减小仿真时间和难度,把分频值改小进行仿真。设置 clk 周期为 2ns。
设置对clk 进行 4 分频产生 scan_clk;
设置对scan_clk 进行 3 分频产生key_clk; 设置对key_clk 进行 5 分频产生s_clk。;(2)功能仿真;Normal;(2)、功能仿真 ;Hour=0;min=0; sec=0;ctl=3d0;hour=0;min=0; sec=0;Sel=3d0;有图可知,“正常显示”状态下,不管 up_en 是否按下,时、分、秒的计数
都正确。
②“时设置”:设置 h_set=1,m_set=0,s_set=0;;d_col=8b1111_1110;显???原理:用 1ms 的扫描信号循环控制数码的某一位有效,在相应为有效时
输出数据经译码后驱动数码管,比如:d_col=8’b1111_1110,8 位数码管的最低 位有效,此时将秒的低四位数据(s_data[3:0])译码,驱动数码管,若此时
s_data[3:0]=4’d9=4’b1001,数码管此时将显示“9”。
数码管译码表:;七、系统功能仿真
计数初始设置:设置系统复位后时间初值为“23—45—09”;
分频设置:设置clk 周期为 2ns。设置对clk 进行 5 分频产生 scan_clk;设置 对 scan_clk 进行 5 分频产生key_clk;设置对key_clk 进行 4 分频产生 s_clk。
(1)正常显示模式;八、系统综合实现及静态时序分析 ;19;20;end endmodule
测试代码:
`timescale 1ns/1ns module freq_div_tb;
reg rst_n,clk;
wire key_clk,scan_clk,s_clk; always #1 clk=~clk;
initial
begin
clk=0; rst_n=0;
#3 rst_n=1;
#200_000 $stop;
end
freq_div freq_div(clk, rst_n, scan_clk, s_clk, key_clk); endmodule
Key_ctl 模块:;22;23;24;25;26;27;28;29
文档评论(0)