• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

RTC实时时钟(PCF8563芯片)测试试验设计Verilog代码VIVADO ARTIX-7

10/09 14:15
734
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24110R01311X4.docx

共1个文件

名称:RTC实时时钟(PCF8563芯片)测试试验设计Verilog代码VIVADO  ARTIX-7开发板

软件:VIVADO

语言:Verilog

代码功能:

RTC实时时钟(PCF8563芯片)测试试验

读取RTC芯片(PCF8563)中的时、分、秒数据,通过led灯显示秒表计数

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在ARTIX-7开发板验证,ARTIX-7开发板如下,其他开发板可以修改管脚适配:

ARTIX-7开发板.png

设计文档:

RTC试验例程

1实验简介

PCF8563是一款多功能时钟/日历芯片。因其功耗低、控制简单、封装小而广泛应用于电表、水表、传真机、便携式仪器等产品中。本例程中我们将使用FPGA开发板上的PCF8563器件实现RTC实验,并通过LED灯显示RTC的秒输出信号

2实验原理

2.1、PCF8563原理

PCF8563是PHILIPS公司推出的一款工业级多功能时钟/日历芯片,具有报警功能、定时器功能、时钟输出功能以及中断输出功能,能完成各种复杂的定时服务。其内部功能模块的框图如下图所示:

PCF8563有16个可寻址的8位寄存器,但不是所有位都有用到。前两个寄存器(内存地址00H、01H)用作控制寄存器和状态寄存器(CONTROL_STATUS);内存地址02H~08H用作TIME计时器(秒~年计时器);地址09H~0CH用于报警(ALARM)寄存器(定义报警条件);地址0DH控制CLKOUT管脚的输出频率;地址0EH和0FH分别用于定时器控制寄存器和定时器寄存器。

秒、分钟、小时、日、月、年、分钟报警、小时报警、日报警寄存器中的数据编码格式为BCD,只有星期和星期报警寄存器中的数据不以BCD格式编码。BCD码(Binary-Coded Decimal)是一种二进制的数字编码形式,用四个二进制位来表示一位十进制数(0~9),能够使二进制和十进制之间的转换得以快捷的进行。

PCF8563通过I2C接口与FPGA进行通信。使用该器件时,先通过I2C接口向该器件相应的寄存器写入初始的时间数据(秒~年),然后通过I2C接口读取相应的寄存器的时间数据。有关I2C总线协议详细的介绍请大家参考“EEPROM读写实验”。

下面我们对本次实验用到的寄存器做简要的描述和说明,其他寄存器的描述和说明,请大家参考PCF8563的数据手册。

秒寄存器的的地址为02h,说明如下表所示:

电源电压低于PCF8563器件的最低供电电压时,VL为“1”,表明内部完整的时钟周期信号不能被保证,可能导致时钟/日历数据不准确。

BCD编码的秒数值如下表所示:

秒寄存器的地址为03h,说明如下表所示:

小时寄存器的地址为04h,说明如下表所示:

天寄存器的地址为05h,说明如下表所示:

当年计数器的值是闰年时,PCF8563自动给二月增加一个值,使其成为29天。月/世纪寄存器的地址为07h,说明如下表所示:

月份

Bit4

Bit3

Bit2

Bit1

Bit0

一月

0

0

0

0

1

二月

0

0

0

1

0

三月

0

0

0

1

1

四月

0

0

1

0

0

五月

0

0

1

0

1

六月

0

0

1

1

0

七月

0

0

1

1

1

八月

0

1

0

0

0

九月

0

1

0

0

1

十月

0

1

0

1

0

十一月

0

1

0

1

1

十二月

0

1

1

0

0

年寄存器的地址为08h,说明如下表所示:

2.2、原理图

PCF8563作为I2C接口的从器件挂接在开发板上的IIC总线上。 OSCI、OSCO与外部32.768KHz的晶振相连,为芯片提供驱动时钟;RTC_SCL和RTC_SDA分别是I2C总线的串行时钟接口和串行数据接口

FPGA管脚分配如下表所示:

信号名

方向

管脚

BANK

端口说明

RTC_SCL

output

T11

BANK14

IIC时钟信号线

RTC_SDA

inout

U11

BANK14

IIC双向数据线

3程序设计

本实验的主程序是pcf8563.v,在这个模块主要是按照pcf8563芯片的协议完成IIC接口,进而读取储芯片内部的时间信息。

4实验现象

下载本工程的bit文件,可以看到led灯按照RTC的秒计数递增。

部分代码展示:

`define SLAVE_ADD_WRITE 8'ha2 
`define SLAVE_ADD_READ 8'ha3 
 
module pcf8563(mclk,reset,scl,sda,s_reg,led,seg,com); 
input mclk; 
input reset; 
inout scl,sda; 
output[7:0] s_reg,led,seg,com; 
 
reg clk; 
reg [7:0]led,seg,com; 
reg scl_hi_z; 
reg sda_hi_z; 
reg scl_reg; 
reg sda_reg; 
reg[3:0] p_state; 
reg[7:0] write_reg; 
reg[7:0] read_reg; 
reg[3:0] seg_reg; 
reg[10:0] i; 
reg[7:0] s_reg; 
reg[7:0] m_reg; 
reg[7:0] h_reg; 
reg[7:0] d_reg; 
 
 
reg[3:0] cnt; 
reg[2:0] cnt1; 
integer cnt2; 
reg[15:0] cnt3; 
reg[2:0] cnt4; 
 
parameter prepare=0; 
parameter idle=1; 
parameter start=2; 
parameter stop=3; 
parameter write_data=4; 
parameter wait_ack=5; 
parameter error=6; 
parameter read_data=7; 
parameter ack=8; 
parameter nack=9;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1337

  • 2-24110R01311X4.docx
    下载

相关推荐