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

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

4小时前
85
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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
    下载

相关推荐