参考资料见练习一:
主要参考“MES2KG.rar”中MES2KG\demo中教程“MES2KG开发板实验指导.pdf”,本次实验主要参照 7. 数字钟。另还需参考MES2KG\工具篇中“PDS快速使用手册.docx”。
编写代码
参见“MES2KG.rar”中MES2KG\demo\7_watch\source\Desktop
控制原理:
代码设计:
顶层文件----top_watch.v
按键消抖模块----btn_deb.v
时钟分频模块----div_clk.v
数码管控制模块----seq_control.v
数字时钟产生模块----watch_data_gen.v
按键消抖等均可参考按键彩灯3_key_led_rgb。
数码管控制模块等可参考序列检测器5_top_seq_det。
顶层设计:
含复位信号、数字时钟的产生和控制、数码管显示等模块
数字时钟的产生与控制:
基准:每秒闪烁一次
校准逻辑:
key[0] -> k1 ;用于校准标记
key_cnt = 3'd0 用于正常显示;
key_cnt = 3'd1 用于分钟低位校准;
key_cnt = 3'd2 用于分钟高位校准;
key_cnt = 3'd3 用于时钟低位校准;
key_cnt = 3'd4 用于时钟高位校准;
key[1] 用于"+";key[2] 用"-"
秒钟、分钟、小时的产生
时钟分频:times =25ns*400=10us=100khz;
数码管显示:
新增功能为:当进入校准模式时数码管的校准位闪烁,需引入一个 1S 的周期信号,在 1S 时间内 0.5s 正常点亮,0.5s 不点亮使得数码管闪烁,闪烁对应位需要引入按键控制输出的 dig_ctl 信号。
时钟、分钟的高位校准、低位校准
正式操作
简单版:打开PDS 软件,打开demo\7_watch\watch.pds工程,切换PGC2KG-6LPG100为PGC1KG-6LPG100,重新编译、生成位流文件并使用编程器刷写到板子上。
一般操作:具体步骤参见练习一
实验结果:数码管从左至右显示小时和分钟,用 LED 闪烁标识秒钟,每闪烁 60 次分钟加 1 ,默认从00:00 开始,LED1 闪烁(1 次/s)。
三个按键用于时钟校准:KEY1 用于切换正常计时,校准小时和分钟,按下后进入校准模式,第一次按下后进入分钟低位计数校
准调节,之后再次按下后校准位将会往左移动 1 位,直到校准位为时钟计数高位时,按下后退出校准模式,进入正常计数模式;KEY2 用于校准模式中时钟小时或分钟设置的“+”,按下后对应校准位加 1 ,在可计数的最大值时会归 0 ;;KEY3 用于校准模式中时钟小时或分钟设置的“-”,按下后对应校准位减 1 ,在减到0 时会置位为可计数的最大值;校准时相应的数码管闪烁。