0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用I/O设备和PLD芯片实现数字日历的设计?

冬至子 来源:吃小竹子丫 作者:吃小竹子丫 2023-08-25 17:00 次阅读

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 分频器
    +关注

    关注

    43

    文章

    433

    浏览量

    49313
  • 数码管
    +关注

    关注

    31

    文章

    1827

    浏览量

    89949
  • LED显示
    +关注

    关注

    0

    文章

    338

    浏览量

    37580
  • 计时器
    +关注

    关注

    1

    文章

    395

    浏览量

    32156
  • PLD芯片
    +关注

    关注

    0

    文章

    35

    浏览量

    17773
收藏 人收藏

    评论

    相关推荐

    关于PLD器件

    PLD虽然名为可编程逻辑阵列,但它属于硬件范畴,与软件编程具有本质上的不同。相对于一个设备而言,PLD编程是一次性的,编好后就不再改变。PLD实现
    发表于 10-30 23:39

    基于PLD的视频接口

    复用器被送至最终的视频解码器播放。u*** 2.0 phy芯片可被轻松连接至pld的任意i/o引脚。大多数pld
    发表于 12-28 07:00

    采用PLD实现视频接口设计

    通过现有的数字编码器(DENC)芯片播放这些视频流。这种总线可被选通或复用输出到DENC。 图1给出的PLD应用框图将数字视频源连接到视频播放。一个典型的高
    发表于 05-14 07:00

    轻松实现高速串行I/O (FPGA应用设计者指南)

    轻松实现高速串行I/OFPGA应用设计者指南输入/输出(I/O)在计算机和工业应用中一直扮演着关键角色。但是,随着信号处理越来越复杂,I/
    发表于 01-02 12:12

    利用3V3的I/O控制24V电压的关断

    各位大佬好,我想实现利用芯片I/O管脚,来控制外部一个24V电压的通断。需要用到三极管或MOSFET,这两者哪个更好一些,需要几个这样的管
    发表于 12-22 10:23

    请问怎样设计并实现闪存设备I/O软件?

    闪存设备管理技术的现状及存在的问题是什么?闪存设备I/O软件的分层结构是怎样的?怎样设计并实现闪存设备
    发表于 04-27 06:44

    如何利用STM32MP157A芯片I/O口去控制LED

    如何去使用STM32CubeIDE工具软件?如何利用STM32MP157A芯片I/O口去控制LED?
    发表于 10-11 07:05

    什么是Super I/O?用SuperIo实现什么

    UEFI学习(四)-SuperIo的访问一、什么是Super I/O?二、我们要用SuperIo实现什么三、NCT5581D的访问机制一、什么是Super I/
    发表于 01-24 08:12

    PLD数字显示频率计的设计1

    PLD数字显示频率计的设计1
    发表于 05-26 00:16 164次下载

    基于PLD芯片的时序逻辑设计与实现

    基于PLD芯片的时序逻辑设计与实现:原理图输入设计直观、便捷、操作灵活;1-1、原理图设计方法简介QuartusII已包含了数字电路的基本逻辑元件库(各类逻辑门及触发器),宏
    发表于 10-29 22:03 0次下载

    应用PLD实现科氏质量流量计的数字部分设计

    应用PLD实现科氏质量流量计的数字部分设计 科里奥利质量流量计(Corioils Mass Flowmeter,简称CMF)是一种利用流体在振动管内产生与质量流量成正比的科氏力为原理
    发表于 02-08 11:02 800次阅读
    应用<b class='flag-5'>PLD</b><b class='flag-5'>实现</b>科氏质量流量计的<b class='flag-5'>数字</b>部分设计

    C8051F020的SMBus实现时钟或日历芯片读取

    介绍了用自带的接口来实现对时钟日历芯片进行读取的方法。本设计所使用的时钟日历芯片是公司的。这是一款低功耗的实时时钟
    发表于 09-07 16:05 94次下载
    C8051F020的SMBus<b class='flag-5'>实现</b>时钟或<b class='flag-5'>日历</b><b class='flag-5'>芯片</b>读取

    PLD数字显示频率计的设计

    PLD数字显示频率计的设计
    发表于 02-07 17:14 13次下载

    利用VHDL语言与FPGA器件设计数字日历

    本文介绍如何利用VHDL硬件描述语言设计一个具有年、月、日、星期、时、分、秒计时显示功能,时间调整功能和整点报时功能的数字日历。在QuartusⅡ开发环境下,采用自顶向下的设计方法,建立各个基本模块
    的头像 发表于 04-23 08:25 3885次阅读

    EDA程序设计之数字日历电路

    1  系统设计1.1 设计要求1.1.1 设计任务   设计并制作一台数字日历。1.1.2 性能指标要求 ① 用EDA实训仪的I/O设备PLD芯片
    发表于 04-03 09:32 10次下载