代码下载
温度传感器Pmod控制器(顶层文件): pmod_temp_sensor_tcn75a.vhd (11.7 KB)
I2C主控制器(必须同时包含在项目中): i2c_master.vhd (14.1 KB)
特点
- 针对Digilent PmodTMP3模块(基于Microchip TCN75A温度传感器的Pmod)的简化接口VHDL源代码
- 通过并行接口持续输出最新温度数据
- 处理I2C通信及温度传感器Pmod的所有数据采集
- 配置温度传感器的分辨率
- 可配置系统时钟频率
介绍
本文详述了与Digilent温度传感器TCN75A Pmod对接的VHDL组件,如图1所示。图2展示了该温度传感器Pmod控制器集成至系统的典型应用实例。如图所示,该温度传感器Pmod控制器连接Pmod端口,执行配置传感器与采集数据的传输事务。数据持续更新并通过简易并行接口输出,可连接至用户逻辑或FPGA输出端口。
图 1. Digilent温度传感器TCN75A Pmod模块
图 2. 实现示例
操作原理
温度传感器Pmod控制器主要由状态机和I2C主控组件构成。
状态机
该设计采用图 3 所示的状态机来实现其操作。启动时,该组件立即进入初始( start ) 状态。该状态持续100ms以确保Pmod完成上电。随后进入set_resolution 状态,配置温度传感器的分辨率参数。完成后进入set_reg_pointer 状态,为温度数据读取初始化传感器寄存器。在随后的read_data 状态中,从Pmod温度传感器采集最新温度数据。最终在output_result 状态输出温度值。之后在read_data 与output_result 状态间循环切换,确保温度数据持续更新。任何时候复位组件都将使其返回初始 (start) 状态。
图 3. 状态图
I2C 主控制器
在set_resolution 、set_reg_pointer 和read_data 状态期间,状态机控制一个I2C主组件与Pmod上的温度传感器通信。I2C主控的文档可在此处查阅。
配置温度传感器 Pmod 控制器
温度传感器Pmod控制器通过设置实体中的通用参数进行配置。
系统时钟频率
通用参数sys_clk_freq 必须设置为提供给温度传感器Pmod控制器clk 端口的系统时钟频率。
分辨率
通用参数resolution 定义了TCN75A温度传感器的配置分辨率(以位为单位)。表1描述了相关选项与权衡。默认分辨率为9位。任何无效的分辨率设置都将恢复为9位。
表 1. 分辨率选项
Pmod I2C 地址
温度传感器Pmod控制器必须知道Pmod的7位I2C地址才能通信。最高4位为"1001",随后3位分别由Pmod的跳线块JP3、JP2和JP1设置。
通用参数temp_sensor_addr 必须设置为该地址。默认值"1001000"对应所有3个跳线均接地的情况。
端口描述
表2描述了温度传感器Pmod控制器的端口。
表 2. 端口描述
连接方式
该Pmod配备8针连接器。表3提供了该连接器的引脚定义。需要将温度传感器Pmod控制器的端口分配给所列出的连接至该接头的FPGA引脚。Pmod板上J1连接器的两排引脚已内部连通,因此只需将单侧连接至FPGA。
表 3. 温度传感器Pmod引脚定义及其与控制器的连接
Pmod模块还配备了几个跳线。必须启用JP4和JP5(即连接)以接入SCL和SDA所需的I2C上拉电阻。JP6未使用。JP1、JP2和JP3用于设置Pmod的I2C地址。具体设置请参阅前文Pmod I2C 地址章节。
复位
要使温度传感器Pmod控制器正常工作,reset_n 输入端口必须保持逻辑高电平。该端口的低电平将异步复位组件。复位期间,组件将中止与Pmod的当前通信,并清除温度数据输出和i2c_ack_err 输出。退出复位状态后,温度传感器Pmod控制器将重新开始工作。它会重新配置温度传感器,并继续采集和输出温度数据。
结论
该温度传感器Pmod控制器是可编程逻辑组件,可与Digilent的PmodTMP3(TCN75A温度传感器Pmod)对接。该控制器负责处理与Pmod的所有通信,配置Pmod的温度传感器,并通过并行接口持续输出更新的温度数据流。
附加信息
Microchip TCN75A datasheet (498.7 KB)





