基于FPGA的可调在线时钟的数码管动态显示

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Hello,大家好久不见,又过去了不知道多久,终于又来了一次更新,本次更新主要是在之前的文章基础上组合成一个完整的项目,在规划篇章中介绍了采用的FPGA开发板是小梅哥的ACX720开发板,内置pcf8563芯片,通过配置8563芯片可动态获取当前日期和时钟,好了话不多说,直接开始。

一、PCF8563介绍

本节主要是介绍PCF8563,PCF8563 是 PHILIPS 公司推出的一款工业级内含 I2C 总线接口功能的具有极低功耗的CMOS 多功能时钟/日历芯片。PCF8563 的多种报警功能、定时器功能、时钟输出功能以及中断输出功能能完成各种复杂的定时服务,甚至可为单片机提供看门狗功能。是一款性价比
极高的时钟芯片,它已被广泛用于电表、水表、气表、电话、传真机、便携式仪器以及电池
供电的仪器仪表等产品领域,其内部结构图如下:
在这里插入图片描述
从结构图可知,PCF8563配置是采用IIC配置,故直接调用之前文章的IIC代码即可。

二、PCF8563代码配置设计

PCF8563的配置主要分三步,第一步,上电初始化;第二步,配置时间日期;第三步,回读时间日期,话不多说,直上干货。

module i2c_pcf8563 #
(
   parameter         UCNT = 25          ,
   parameter         DWID = 8
)
(
   input              clk_sys           ,
   input              rst_sys           ,
   //
   input              time_ena          ,
   input     [23:0]   time_dat          ,
   input              data_ena          ,
   input     [31:0]   data_dat          ,
   //
   input              rw_mode           ,
   output reg[31:0]   data_read         ,
   output reg[23:0]   time_read
);

// ********************************************************
// localparam
// ********************************************************
localparam IDLE      = 4'd0 ;
localparam INIT      = 4'd1 ;
localparam INIT_DONE = 4'd2 ;
localparam TIME      = 4'd3 ;
localparam TIME_DONE = 4'd4 ;
localparam DATA      = 4'd5 ;
localparam DATA_DONE = 4'd6 ;
localparam READ      = 4'd7 ;
localparam READ_DONE = 4'd8 ;

localparam PCF_INT  = 8'h00 ;
localparam PCF_DAT  = 8'h05 ;
localparam PCF_WEK  = 8'h06 ;
localparam PCF_MON  = 8'h07 ;
localparam PCF_YAR  = 8'h08 ;
localparam PCF_SEC  = 8'h02 ;
localparam PCF_MIN  = 8'h03 ;
localparam PCF_HOU  = 8'h04 ;

// ********************************************************
// signal
// ********************************************************
reg      [3:0]             cstate = IDLE        ;
reg      [3:0]             nstate = IDLE        ;
wire                       rst_nedge            ;

wire                       i2c_w_done           ;
wire                       i2c_r_done           ;
wire                       done_nedge_w         ;
wire                       done_nedge_r         ;

reg      [3:0]             time_cnt = 0         ;
reg      [3:0]             data_cnt = 0         ;
reg      [3:0]             read_cnt = 0         ;

reg                        reg_dena   = 0       ;
reg   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值