温度传感器ADT7420 Pmod控制器(VHDL)

逻辑主页

代码下载

温度传感器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 状态输出温度值。随后在pauseread_dataoutput_result 状态间循环,确保温度数据持续更新。尽管未在图中显示,但任何时候重置该组件都会使其返回到初始( start 状态。

3 状态图

I2C 主控制器

set_resolutionread_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)

相关主题

I2C主控制器(VHDL)