代码下载
温度传感器Pmod控制器(顶层文件): pmod_temp_sensor_adt7420.vhd (10.4 KB)
I2C主控制器(必须同时包含在项目中): i2c_master.vhd (14.1 KB)
特点
- 用于Digilent Pmod TMP2 Rev.B(基于ADI ADT7420温度传感器的Pmod)的简化接口VHDL源代码
- 通过并行接口持续输出最新温度数据
- 处理I2C通信及温度传感器Pmod的所有数据采集
- 配置温度传感器的分辨率
- 可配置系统时钟频率
介绍
本文详述了与Digilent温度传感器ADT7420 Pmod对接的VHDL组件,如图1所示。图2展示了该温度传感器Pmod控制器集成至系统的典型应用实例。如图所示,该温度传感器Pmod控制器连接Pmod接口,执行配置传感器与采集数据的事务。数据持续更新并通过简易并行接口输出,可连接至用户逻辑或FPGA输出端口。
图 1. Digilent温度传感器ADT4720 Pmod
图 2. 实现示例
背景
ADI ADT7420是高精度数字温度传感器,当设置为完整的16位分辨率时(如本设计),可达0.0078°C精度。
操作原理
温度传感器Pmod控制器主要由状态机和I2C主控组件构成。
状态机
该设计采用图 3 所示的状态机来实现其操作。启动时,该组件立即进入初始( start ) 状态。该状态持续100ms以确保Pmod完成上电。随后进入set_resolution 状态,将温度传感器分辨率配置为16位。pause( 暂停 ) 状态根据ADT7420数据手册要求,在I2C事务间插入1.3微秒"总线空闲时间"。在随后的read_data 状态中,从Pmod温度传感器采集最新温度数据。最终在output_result 状态输出温度值。随后在pause 、read_data 和output_result 状态间循环,确保温度数据持续更新。尽管未在图中显示,但任何时候重置该组件都会使其返回到初始( start ) 状态。
图 3 。 状态图
I2C 主控制器
在set_resolution 和read_data 状态期间,状态机控制一个I2C主组件与Pmod上的温度传感器通信。I2C主控的文档可在此处查阅。
配置温度传感器 Pmod 控制器
温度传感器Pmod控制器通过设置实体中的通用参数进行配置。
系统时钟频率
通用参数sys_clk_freq 必须设置为提供给温度传感器Pmod控制器clk 端口的系统时钟频率。
Pmod I2C 地址
温度传感器Pmod控制器必须知道Pmod的7位I2C地址才能通信。最高5位为"10010",随后2位分别由Pmod的跳线块JP2和JP1设置。跳线开路时该位设为’1’,跳线闭合时设为’0’。
通用参数temp_sensor_addr 必须设置为该地址。默认值"1001011"对应两个跳线均保持开路(上拉至VCC)的情况。(注:Digilent参考手册中存在错误,错误地在该地址中插入了一个额外的’0’。)
I2C 上拉电阻
与Digilent大多数Pmod板不同,上图图2所示的I2C上拉电阻并未包含在Pmod TMP2上。若缺少这些电阻,I2C总线将无法正常工作。
用户可按图示在电路中接入2.2kΩ电阻解决此问题。
端口描述
表1描述了温度传感器Pmod控制器的端口。
表 1. 端口描述
连接方式
该Pmod配备8针连接器。表2提供了该连接器的引脚定义。需要将温度传感器Pmod控制器的端口分配给所列出的连接至该接头的FPGA引脚。Pmod板上J1连接器的两排引脚已内部连通,因此只需将单侧连接至FPGA。
表 2. 温度传感器Pmod引脚定义及与温度传感器Pmod控制器的连接
该Pmod还包含2个跳线。JP1和JP2用于设置Pmod的I2C地址。具体设置请参阅前文Pmod I2C 地址 章节。
复位
要使温度传感器Pmod控制器正常工作,reset_n 输入端口必须保持逻辑高电平。该端口的低电平将异步复位组件。复位期间,组件将中止与Pmod的当前通信,并清除温度数据输出和i2c_ack_err 输出。退出复位状态后,温度传感器Pmod控制器将重新开始工作。它会重新配置温度传感器,并继续采集和输出温度数据。
结论
本ADT7420温度传感器Pmod控制器是可编程逻辑组件,用于连接Digilent公司的PmodTMP2(ADT7420温度传感器Pmod)。该控制器负责处理与Pmod的所有通信,配置Pmod的温度传感器,并通过并行接口持续输出更新的温度数据流。
附加信息
ADT7420 datasheet.pdf (5.7 MB)




