代码下载
实时时钟MCP9410 Pmod控制器(顶层文件): pmod_real_time_clock.vhd (16.0 KB)
I2C主控制器(必须包含在项目中): i2c_master.vhd (14.1 KB)
特点
- 针对Digilent Pmod RTCC模块(Microchip MCP79410实时时钟/日历的Pmod接口)的简化VHDL接口源代码
- 持续通过并行接口输出最新的时钟和日历数据
- 为用户提供设置时钟和日历的简易接口
- 处理与RTCC Pmod模块的所有I2C通信
- 可配置系统时钟频率
介绍
详细说明了一个VHDL组件,用于实现FPGA与Digilent实时时钟/日历(RTCC)Pmod模块的接口连接,如图1所示。图2展示了该RTCC Pmod控制器集成到系统中的典型应用实例。如图所示,RTCC控制器连接Pmod端口,执行设置Pmod时间日期的操作,并持续采集时间日期数据。时间日期输出持续更新,并通过简单并行接口呈现。
图 1 . Digilent实时时钟/日历Pmod模块
图 2 . 实现示例
操作原理
RTCC Pmod控制器主要由状态机和I2C主控组件构成。
状态机
该设计采用图 3 所示的状态机来实现其操作。启动时,该组件立即进入启动( start ) 状态。该状态持续100ms以确保Pmod完成上电。随后进入路由( route )状态。若用户逻辑通过切换set_clk_ena 信号锁存了新时钟设置,则转入set_clock 状态。否则转入read_clock 状态。set_clock 状态将用户提供的时钟设置写入Pmod上的RTCC模块,然后返回路由( route ) 状态。read_clock 状态从RTCC读取当前时间日期,随后进入output_result 状态,将时间日期输出到对应的数据端口。尽管未在图中显示,但任何时候重置该组件都会使其返回到初始( start ) 状态。
RTCC Pmod控制器在set_clock 状态会激活RTCC板载振荡器。由此启动计时过程。因此,在用户首次设置时钟前,输出信号将始终读取为零。
I2C 主控制器
在set_clock 和read_clock 状态期间,状态机控制I2C主设备组件与Pmod上的MCP79410实时时钟芯片通信。I2C主控的文档可在此处查阅。
系统时钟频率
在实体中,必须将通用参数sys_clk_freq 设置为提供给RTCC Pmod控制器clk 端口的系统时钟频率(以Hz为单位)。
I2C 上拉电阻
与Digilent大多数Pmod板不同,上图图2所示的I2C上拉电阻并未集成在Pmod RTCC模块上。若缺少这些电阻,I2C总线将无法正常工作。
用户可按图示在电路中接入2.2kΩ电阻解决此问题。
Digilent其他多款采用I2C的Pmod模块已包含这些电阻,并配有连接器可将额外Pmod接入同一I2C总线。若该RTCC Pmod与这类Pmod模块配合使用,用户可自动利用这些板上已有的上拉电阻,无需额外操作。
端口描述
表1列出了RTCC Pmod控制器的端口定义。
表 1. 端口描述
连接方式
该Pmod配备8针连接器。表2提供了该连接器的引脚定义。RTCC Pmod控制器的端口需按所列对应关系分配到连接器的FPGA引脚。Pmod板上J1连接器的两排引脚已内部连通,因此只需将单侧连接至FPGA。
表 2. RTCC Pmod引脚定义及与RTCC Pmod控制器的连接
复位
reset_n 输入端口必须保持逻辑高电平,RTCC Pmod控制器组件才能正常工作。该端口的低电平将异步复位组件。复位期间,该组件将中止与Pmod的当前通信,并清零所有时间日期输出信号(秒、分、时、上午 _ 下午标志、星期 、日、月、年)。同时还会清除i2c_ack_err 输出信号。它不会重置RTCC本身,因此RTCC将继续从其最后设置跟踪时间和日期。一旦从复位状态释放,RTCC Pmod控制器将重新开始其操作。它恢复从RTCC收集时间和日期数据并输出结果。
结论
该RTCC Pmod控制器是一个可编程逻辑组件,与Digilent的Pmod RTCC(实时时钟/日历Pmod)接口。它处理与此Pmod的所有通信,允许用户设置时间和日期,启动计时,并持续将更新的时间和日期输出回用户。




