时间:2024-07-27 来源:网络搜集 关于我们 0
点击上方蓝字关注我们
《 实时时钟 》设计
设计背景:
DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V~5.5V。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM数据。DS1302 内部有一个 31×8 的用于临时性存放数据的 RAM 寄存器。
设计原理:
DS1302 芯片的封装如下
它有8个引脚,在我们的设计中我们只要驱动3个引脚就可以了,另外的引脚都是我们的硬件相连接的,和 FPGA 连接的有时钟先 sclk,串行数据数据接口 IO,以及 CE.其工作原理就是在数据的传送过程中先把 CE 拉高,在每个数据的上升沿写入数据,在下降沿输入数据,一次只能读写一位数据。最初我们通过一个 8 位的控制指令来选择读写,如果控制指令是单字节模式,连续的 8 个脉冲上升沿写入,下降沿读出数据,一次只能读取一个字节,如果是突发模式通过连续的脉冲一次性的写完 7 个字节的时间寄存器也可以一次性的读完 8--328 位的 ram 数据控制指令有 8 位,第七位必须为高,如果是 0 写入被禁止,第六位0是对时钟寄存器的读写操作,为1对是控制对RAM区的读写操作。bit1 -- 5 是对相关寄存器的操作,bit0 是读写操作,
各个寄存器的的设置,和每位的表示如下图,图中高速我们读写时控制字是多少以及写入寄存器的地址,和写入的 8 位的时间表示我们可以通过下表来设置一个初始的时间
涓流寄存器主要决定了 DS1302 的充电特性,涓流充电选择位 4--7位,1010 涓流充电其他禁止充电,二级管选择位 3--2 位,电阻选择1--0 位具体的选择如下表
突发模式下,表示我们可以连续写,连读,连续写时必须写满 7个时钟寄存器
时序图如下,是 SPI 通信
下表表示数据传送过程中数据的延迟,时钟的周期等时间
本次设计是通过配置 DS1302 芯片来实现实时时钟的监测,我们通过通过控制 2 个按键来选择我们要在数码管上显示的时间,按下按键
1 我们来显示周几,按下按键 2 来显示年月日,不按显示时分秒,这样显示复合我们的数字表的显示.我的思路是先打开写保护,一个一个寄存器的写进去,然后关闭写保护,然后再读出数据
设计架构图:
设计代码:
顶层模块:
设计模块:
仿真图:
我们的测试图中我们可以清楚的看到我们在发送的寄存器命令,时收回总线控制权,读数据时释放了总线控制权
下图中是突发读的时序图,我的设计是我们一个一个的写寄存器,必须写满 7 个时钟寄存器,然后突发的读,突发读的时候拉高 ce 然后不停的读接收数据就行了
扫码二维码
获取更多精彩
FPGA设计论坛