题目:数字日历电路

 

1  系统设计

1.1 设计要求

1.1.1 设计任务

设计并制作一台数字日历。

1.1.2 性能指标要求

① 用EDA实训仪的I/O设备和PLD芯片实现数字日历的设计。

② 数字日历能够显示年、月、日、时、分和秒。

③ 用EDA实训仪上的8只八段数码管分两屏分别显示年、月、日和时、分、秒,即在一定时间段内显示年、月、日(如20080101),然后在另一时间段内显示时、分、秒(如00123625),两个时间段能自动倒换。

④ 数字日历具有复位和校准年、月、日、时、分、秒的按钮,但校年和校时同用一个按钮,即在显示年、月、日时用此按钮校年,在显示时、分、秒时则用此按钮校时,依此类推。

1.2 设计思路及设计框图

1.2.1设计思路

根据万年历的实际特点,本设计最基础的部分就是24小时计数器部分。它由两片60进制计数器和一片24进制计数器构成,输入clk为1Hz(秒)的时钟,经过60分频后产生1分钟的时钟信号,再经过60分频后,产生1小时的时钟信号,最后进行24分频,得到1天的脉冲送cout输出。当计时器设计完成后,可以为它产生一个元件符号,作为万年历设计的基本元件。除了基础的计时器模块(day),万年历电路还包括年月日模块(nyr2013),控制模块(contr),校时选择模块(mux_4)和显示选择模块(mux_16)。在基础计数器完成的天计数脉冲完成之后,送入年月日模块中进入进一步的计数,最终进一步得到日,月,年的计数结果。由于设计要求8只八段数码管分两屏分别显示年、月、日和时、分、秒,所以控制模块便通过控制信号k来控制数码管是显示时、分、秒还是年、月、日,或者自动轮流显示。相应的显示选择模块也是通过k信号来控制是选择将计时器模块的时、分、秒结果信号,还是将年月日模块的年、月、日结果信号送到数码管显示。设计还要求数字日历具有复位和校准年、月、日、时、分、秒的按钮,但校年和校时同用一个按钮,所以应运而生有校时选择模块,同样也是在k信号的控制下,对j1、j2、j3这三个公共校时按钮所产生的校时信号选择是送到计时器模块的校时端,还是年月日模块的校年端,从而实现校时选择功能。以上就是大体的设计思路,各个模块相辅相成,最终满足设计要求。

1.2.2总体设计框图

2  各个模块程序的设计

2.1 控制模块contr的设计

控制模块的元件符号如上图所示。由于设计要求8只八段数码管分两屏分别显示年、月、日和时、分、秒,因此需要通过在控制模块中通过分频电路来实现,在此模块中采用了一个16秒的分频电路,占空比为50%,即8秒高电平,8秒低电平,因此很容易实现万年历年、月、日和时、分、秒的自动切换显示功能。其中clk是1秒脉冲信号输入端,k1和k2是控制输入端:当{k1,k2}=00或11时即进入自动切换显示模式,当{k1,k2}=01时,数码管仅显示时、分、秒,当{k1,k2}=10时,数码管仅显示年、月、日。{k1,k2}的值决定了控制信号k的输出。

2.2 校时选择模块mux_4v的设计

校时选择模块的元件符号如上图所示。k是控制信号的输入端,由控制模块输出,控制对j1、j2、j3这三个公共校时按钮所产生的校时信号选择是送到计时器模块的校时端,还是年月日模块的校年端,其中当k=0时,将j1、j2、j3产生的信号送到计时器模块的jm(校秒)、jf(校分)、js(校时)端;其中当k=1时,将j1、j2、j3产生的信号送到年月日模块的jr(校日)、jy(校月)、jn(校年)端,从而校年和校时可以同用一组按钮。

2.3 年月日模块nyr2020的设计

年月日模块的元件符号如上图所示。k是控制信号的输入端,由控制模块输出。其中,clrn是异步清除输入端,低电平有效;clk是时钟输入端,上升沿有效;jn、jy、jr分别是校年、校月。校日的输入端,qn、qy、qr则分别是年、月、日的状态输出端。

2.4 显示选择模块mux_16v的设计

显示选择模块的元件符号如上图所示。k是控制信号的输入端,由控制模块输出。因为控制模块决定了数码管有多中不同的显示模式,所以当k=0时,将计时器模块输出的qm、qf、qs的状态信号送到数码管显示;而当k=1时,将年月日模块输出的qr、qy、qn的状态信号送到数码管显示。其中我加入了扩展功能,在数码管只显示时、分、秒的时候,有2个数码管并没有数值显示,因此我将其中一个数码管选择显示A或F,当时间在12点之前是显示A,代表上午(AM),当时间在12点之后时显示F,代表下午(FM)。

2.5 计时器模块jsq的设计

计时器模块的元件符号如上图所示。clk是秒时钟输入端;clrn是清除输入端,低电平有效;jm、jf、js分别是校秒、校分、校时的输入端,下降沿有效;qm、qf、qs分别是秒、分、时的输出端;day是“天”脉冲输出端。计时器模块是万年历电路最基础的组成部分。它由分频器、两片60进制计数器和一片24进制计数器构成,具体构成如下图:

2.6 LED显示模块LED1的设计(扩展功能的实现)

qy和qr和nyr模块中的输出相连,LED是输出,在实验时用一个LED灯把管脚锁住锁住,每到节日来的脉冲便会使LED灯亮。加入的扩展功能,能让万年历在节日的时候能亮一盏LED灯,比如在元旦节、情人节一些比较重要的节日,起到提醒的作用,也可以从而使万年历的显示内容更为完整。

3  调试过程

把写好的程序经验证仿真确认无误并且锁定好管脚后经下载端口下载到EDA实训仪上,通过实际操作来验证是否能实现相应功能。

4  功能测试

4.1 测试仪器与设备

① EDA实训仪           1台

② 电脑                1台

4.2 性能指标测试

① 数字日历能够正确显示年、月、日、时、分和秒。

② EDA实训仪上的8只八段数码管能够分两屏分别显示年、月、日和时、分、秒。

③ EDA实训仪上的8只八段数码管能够自动切换显示年、月、日和时、分、秒。

④ 数字日历具有复位和校准年、月、日、时、分、秒的按钮,且校年和校时同用一个按钮就能实现。

4.3 误差分析

由于在程序编写的过程中经过了反复的思考和检查,因此在下载到硬件电路后,所有基础功能都达到了设计要求,并且自己的扩展功能也成功的实现。

部分程序清单

1、计算器模块(jsq)

(1)分频器

module fenpin(clk,cout);

input clk;

output reg cout;

reg[24:0]qq;

always @(posedge clk)

begin

if(qq==19999999) begin qq=0;cout=1;end

else begin qq=qq+1;cout=0;end

end

endmodule

(2)cnt60

module cnt60(clk,clrn,j,q,cout);

input clrn,clk,j;

output reg[7:0]q;

output reg cout;

always @(posedge clk^j or negedge clrn)

begin

if(~clrn) q=0;

else begin

if(q=='h59) q=0;

else q=q+1;

if(q[3:0]=='ha) begin q[3:0]=0; q[7:4]=q[7:4]+1;end

if(q=='h59) cout=1;

else cout=0;

end

end

endmodule

(3)cnt24

module cnt24(clrn,clk,j,q,cout);

input clrn,clk,j;

output reg[7:0]q;

output reg cout;

always @(posedge clk^j or negedge clrn)

begin

if(~clrn) q=0;

else begin

if(q=='h23) q=0;

else q=q+1;

if(q[3:0]=='ha) begin q[3:0]=0;q[7:4]=q[7:4]+1;end

if(q=='h23) cout=1;

else cout=0;

end

end

endmodule

2、控制模块(contr)

module contr(clk,k1,k2,k);

input clk,k1,k2;

output reg k;

reg[3:0] qc;

reg rc;

always @(posedge clk)

begin

qc=qc+1;

if(qc<8) rc=0;

else rc=1;

case({k1,k2})

0:k=rc;

1:k=0;

2:k=1;

3:k=rc;

endcase

end

endmodule

3、校时选择模块(mux_4)

module mux_4(k,jm,jf,js,jr,jy,jn,j1,j2,j3);

input k,j1,j2,j3;

output reg jm,jf,js,jr,jy,jn;

always

begin

if(k==0)

{jm,jf,js}={j1,j2,j3};

else

{jr,jy,jn}={j1,j2,j3};

end

endmodule

4、显示选择模块(mux_16v)

module mux_16v(k,qm,qf,qs,qr,qy,qn,q);

input k;

input[7:0]qm,qf,qs,qr,qy;

input[15:0]qn;

output reg [31:0] q;

always

begin

if(k==0)

begin

if(qs<'h12)

q[31:28]='ha;

else

q[31:28]='hf;

q[27:24]=0;

q[23:0]={qs,qf,qm};

end

else

q={qn,qy,qr};

end

endmodule

需要全部资料可以在我的资源里下载,有程序文档、源程序。

需要完整的资料可在我的资源里下载,也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

点击用微信打开即可,过程有点繁琐请见谅

EDA程序设计--数字日历电路相关推荐

  1. 【渝粤教育】国家开放大学2018年春季 0221-21T数字电子电路 参考试题

    编号:0221 2017-2018学年第二学期期末考试 数字电子电路(开卷) 试 题 2018年 7月 填空题(每小题6分,共30分) 1.在直流电路中,电容上的 及电感中的 一般不会突变. 2.NP ...

  2. Proteus仿真数字钟表电路实验报告(可下载工程文件)

    Proteus仿真数字钟表电路实验报告(可下载工程文件) 实验目的 实验器件 实验步骤 1. 选择合适的Proteus器件中的译码器和数值显示器件能够对4位二进制数进行正常的数值显示 2. 组成模值为 ...

  3. 硬件基本概念-数字电子电路

    1. 简介  数字电子电路加工和处理的对象是不连续变化的数字信号.数字电子电路又可分成脉冲电路和数字逻辑电路,它们处理的都是不连续的脉冲信号.脉冲电路是专门用来产生电脉冲和对电脉冲进行放大.变换和整形 ...

  4. 数字电子电路——数字钟仿真图

    数字电子电路--数字钟仿真图 题目:多功能数字钟 要求: 1.设计的数字钟具有正常走时功能. 在计时开始或计时出现误差时,由校时电路完成对分.小时与标准时间的校准. 3.设计的数字钟具有显示功能. 设 ...

  5. c语言电子日历程序,c语言程序设计电子日历

    c语言程序设计电子日历 目 录 一.设计思路 二.功能实现详细设计 三.测试结果分析 四.用户手册 五.设计体会 一.设计思路: If语句: 判断该年是否为闰年,判断一年是否为闰年需要符合下面二者之一 ...

  6. π120M60代替ADuM2210SRIZ 双通道数字隔离器 电路简单速度快

    π120M60代替ADuM2210SRIZ 双通道数字隔离器 电路简单速度快.具有出色的性能特征和可靠性,整体性能优于光耦和基于其他原理的数字隔离器产品.传输通道间彼此独立,可实现多种传输方向的配置, ...

  7. android 日历 课程设计,课程设计-数字日历的设计

    课设终于结束了,反倒没有了刚开始的茫然与无奈,复杂变简单,心理使然. 说的是两周的时间,而实际上真正只有6天的时间在实验室,做的快的,只用了5天的时间. 前三天是忙碌的EWB仿真实验.我做了两遍,不一 ...

  8. 数字集成电路——电路、系统与设计

    1.引言和介绍 1.1 历史回顾 随着芯片制造工艺水平的不断提高,数字集成电路已经成为发明和设计一颗芯片的基础,电路设计的好坏直接影响芯片的性能和功耗等相关参数.数字电子计算的时代从真空管的发明才全面 ...

  9. EDA程序设计--万年历设计

    目 录 一   课程设计的目的及意义... 1 1.0设计目的... 1 1.1设计意义... 2 1.2设计要求... 2 二   设计流程:... 2 2.0  万年历原理... 2 2.1 原理 ...

最新文章

  1. C# 常用类-IO-ClassXML
  2. html相同标签nth,详解CSS nth-child与nth-of-type的元素查找方式
  3. oracle批量update数据_东方国信大数据面试真题
  4. 用非递归方式实现二叉树后序遍历
  5. 接收率高达29%的ICLR 2021有哪些论文入榜呢?
  6. 夏天快到了,教你怎样干掉讨厌的蚊子『转』
  7. 阿里云mysql本地可以连接数据库_本地电脑连接阿里云服务器上搭建的MySQL数据库...
  8. 编程实现 无符号乘法溢出判断
  9. iOS开发之实现方法链调用
  10. 第二次作业:分布式版本控制系统Git的安装与使用
  11. 小程序怎样链接上服务器,微信小程序http连接访问解决方案
  12. autojs写的全网视频解析app,带解析接口。
  13. 传销三级的认定标准_主观明知在传销犯罪中有那么重要吗?
  14. 如何通过三视图判断立方体个数_“三视图”“小正方体个数”一篇搞定!
  15. thinkphp如何调试,打印错误信息sql等
  16. Linux socket编程(一):客户端服务端通信、解决TCP粘包
  17. clickhouse-cpp 写入时卡住 bug调试
  18. 划词翻译—多种翻译平台集合体积不足1mb——QTranslate
  19. 黎曼的猜想 MySQL案例练习记录
  20. NVL和NVL2有什么区别,NULLIF 的使用.

热门文章

  1. office2016家庭和学生版小型企业版专业版|版本区别
  2. ctags中−−−kinds=[+|−]kinds的使用
  3. OPPO手机里面的快应用是什么
  4. 详解UniSwap、无聊猿、PlatoFarm空投的逻辑
  5. linux 磁盘碎片整理
  6. sin30的c语言表达式,c语言sin30怎么写
  7. 虚函数多态性实现求几何图形面积
  8. 【圣诞快乐】用 C 语言画出一棵带有装饰的简易圣诞树
  9. 京东DPG图片压缩调研
  10. 【操作系统----Linux】Linux作为服务器系统安装过程