- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目的和意义
数字电子钟是数字电路中的一个经典学习内容。我们选用电子钟作为最后结课项目的目的,是为了学习 verilog 语言、FPGA 的基本知识、由顶层至底层的设计思路。使我们对 EDA 知识有了个基本的了解,也掌握了基础的知识,同时锻炼了我们团队合作的精神,特别是在接口的确定上,我们学到了更多。
原理
电子钟的计数和调节功能
数字电子钟的核心内容是三个计数器,即秒钟计数器、分钟计数器和时钟计数器。秒钟计数器的时钟为 1 秒的时钟,当秒钟计数器计满 60,则输出一个计满信号。秒钟的计满信号作为分钟计数器的时钟,同样,分钟计数器计满 60 后, 则输出一个分钟计满信号,这个信号作为时钟计数器的时钟。同时,三个计数器里面的计数值,会实时的经过译码等操作,显示在 7 段 LED 数码管和 LCD 上。原理图如图 2.1.
Sec_clk min_clk
hour_clk
秒钟
分钟
时钟
计数
计数
计数
器
器
器
LED,LCD显示图 2.1
LED,LCD显示
当然,作为一个电子钟,必须具备调节时间的功能。我们使用四个按键作为时间调节按钮,分别对应秒钟调节、分钟调节、时钟调节和确定按钮。其原理图如 2.2.
S1 S2 S3
Osc_clk
S4
M Sec_clk
U min_clk
X hour_clk
图 2.2 电子钟计数器调节原理
当电子钟不需要调节时,电子钟计数器的时钟信号是和晶振(PLL 和分频器) 相连的,即,此时,电子钟会自动计数。
若 S4 键按下,进入调节状态,那么电子钟的三个计数器的时钟信号,会连
链接到按键 S1、S2、S3 上,这样,只要按一次S1(S2 或者 S3),计数器中的计数值就会增加一个。即实现了按键调节时钟的功能。若调节完毕,再按 S4 键, 计数器的时钟信号又连接到晶振(PLL 和分频器)上去,再次进入自动计时状态。
计数器的显示
LED 数码管的显示
LED 数码管的示意图如下图 2.3(DE-2 中的数码管多一个小数点):
图 2.3 七段数码管的示意图
只要点亮相应的码段,即可显示相应的数字。所以, LED 数码管的显示要通过一个简单的译码器,译码表如下:
LCD 显示
表 1 LED 数码管的译码表
DE-2 板载的液晶为 16x2 液晶。液晶的原理此处不作说明,只需往相应的端口写相应的逻辑和数据即可。一般来说,液晶的驱动,都是先写液晶的设置,再写地址,再写显示的数据。
CFAH1602BTMCJP 型液晶的指令表如表 2.
表 2 CFAH1602BTMCJP 型液晶的中文指令表
驱动液晶的过程中,注意液晶各条指令的执行时间,否则有可能出现液晶设置或者显示失败。
各部分功能实现和仿真波形
计数器的实现
三个计数器即使用最简单的 if-else 结构。
always @ (posedge inclk) begin
if (rst==1)
begin
outcnt = 0;
outtri = 0;
end
else if (outcnt == 59) //计满 59 即输出溢出信号,并归零begin
outcnt = 0;
outtri = 0;
else
end
end begin
end
outcnt = outcnt + 1; outtri = 1 ;
outcnt_h = outcnt / 10; // 将计数值的十位数取出
outcnt_l = outcnt % 10; // 将计数值的个位数取出
仿真波形:
图 3.1 计数器 60 的仿真波形
从波形里可以看出,当outcnt 计数至59 时,outtri 的时钟即变化一次。outcnt_h、
outcnt_l 分别为计数值 outcnt 的高位和低位。
LCD 显示的实现
LCD 的操作,包括两个部分,一是 LCD 驱动时钟的产生(500Hz),一是 LCD
的设置和数据的显示。如图 3.2。
图 3.2 LCD 模块的时钟和驱动部分
第一部分 500Hz 的产生,主要实现方式和一个计数器相似,此处无需不作详叙。第二部分采用状态机来对 LCD 进行驱动。状态机如图 3.3 所示。
图 3.3 LCD 驱动状态机的示意图
状态功能的说明:
clear_lcd: clear display
set_disp_mode: function set: 8bit,1-line,5*8dot disp_on: display on ,cursor closed,no blink
shift_down: Assign cursor moving direction and enable the shift of entire display.
write_addr: write address write_data
您可能关注的文档
最近下载
- 报表开发工具FineReport决策系统教程之【1】系统管理员.pdf VIP
- 螺旋钢管项目策划方案通用模板.pdf VIP
- 报表开发工具FineReport参数控件和报表内容自动居中设置方法.pdf VIP
- 健康管理课件PPT.pptx
- 【人教版】初中数学九年级知识点总结:26二次函数和经典题型(附答案).doc VIP
- Java报表开发工具FineReport自定义css使用方法.docx VIP
- 小朋友介绍枪支课件.pptx VIP
- 报表开发工具FineReport决策系统教程之【4】系统监控.pdf VIP
- 提高污水管道安装一次验收合格率(QC成果样板).pptx VIP
- 2021-2022学年四川省成都市武侯区西川中学七年级(上)第一次月考数学试卷(附答案详解).docx VIP
文档评论(0)