代码下载
温湿度传感器Pmod控制器(顶层文件):pmod_hygrometer.vhd (15.1 KB)
I2C主控制器(必须包含在项目中):i2c_master.vhd (14.1 KB)
特点
- 该VHDL源代码为Digilent Pmod HYGRO(德州仪器HDC1080湿度计的Pmod接口)提供了精简的接口实现
- 持续通过并行接口输出最新的相对湿度和温度数据
- 处理I2C通信及湿度计Pmod的所有数据获取
- 负责配置湿度计的采集模式、湿度分辨率和温度分辨率
- 用户可选的相对湿度分辨率与温度分辨率
- 可配置系统时钟频率
介绍
本文详述了用于连接FPGA与Digilent数字温湿度传感器Pmod的VHDL组件,如图1所示图2展示了该湿度计Pmod控制器集成至系统的典型应用实例如图所示,湿度计Pmod控制器连接Pmod端口并执行配置Pmod及采集数据的事务相对湿度数据与温度数据持续更新并通过简易并行接口呈现
图 1 。 Digilent湿度计Pmod
图 2 。 实现示例
操作原理
湿度计Pmod控制器主要由状态机和I2C主控组件构成
状态机
该设计采用图 3 所示的状态机来实现其操作。启动时,该组件立即进入启动( start ) 状态。该状态持续100ms以确保Pmod完成上电。随后进入配置( configure ) 状态,设置湿度计采集模式为温湿度同步测量,并设定湿度计相对湿度与温度测量的分辨率在启动( initiate ) 状态中,通过执行指针写入事务(将湿度计地址指针设为0x00)触发测量暂停状态实现与湿度计顺序完成温湿度测量所需时间相等的停顿在随后的读取数据( read_data ) 状态中,控制器从Pmod获取测量结果最终在output_result( 输出结果)状态输出数据。随后持续在启动( initiate )、暂停( pause )、读取数据( read_data )和输出结果( output_result )状态间循环,以保持温湿度数据更新虽然状态图中未显示,但任何时候重置组件都会使其返回初始( start ) 状态。
图 3 。 状态图
I2C 主控制器
在配置( configure ) 、初始化( initiate ) 和读取数据( read_data ) 状态期间,状态机控制一个I2C主控组件与Pmod上的HDC1080湿度计进行通信。I2C主控的文档可在此处查阅。
配置湿度计 Pmod 控制器
湿度计Pmod控制器通过设置实体中的通用参数进行配置。
系统时钟频率
通用参数sys_clk_freq 必须设置为提供给湿度计Pmod控制器clk 端口的系统时钟频率。
湿度分辨率
通用参数humidity_resolution 设置相对湿度测量的分辨率以及relative_humidity 输出的数据宽度。有效选项为8位、11位和14位。默认为14位。将humidity_resolution 设置为任何无效值也会导致分辨率为14位。
湿度测量的持续时间取决于分辨率,因此该值也会影响输出数据更新的频率。每种分辨率对应的测量时间如表1所示。
表 1. 湿度测量时间
温度分辨率
通用参数temperature_resolution 设置温度测量的分辨率以及temperature 输出的数据宽度。有效选项为11位和14位。默认为14位。将temperature_resolution 设置为任何无效值也会导致分辨率为14位。
温度测量的持续时间取决于分辨率,因此该值也会影响输出数据更新的频率。每种分辨率对应的测量时间如表2所示。
表 2. 温度测量时间
端口描述
表3描述了湿度计Pmod控制器的端口。
表 3. 端口描述
连接方式
该Pmod采用6针连接器。表4提供了该连接器的引脚排列。需将湿度计Pmod控制器的端口分配至所列连接器对应的FPGA引脚。
表 4 。 湿度计Pmod引脚定义及与湿度计Pmod控制器的连接
该Pmod还配备了两个跳线。必须启用(即连接)这些跳线,以接入SCL和SDA所需的I2C上拉电阻。
复位
reset_n 输入端口必须保持逻辑高电平,湿度计Pmod控制器组件才能工作。该端口的低电平将异步复位组件。复位期间,组件将中止与Pmod的当前事务,并清除relative_humidity 、temperature 数据输出及i2c_ack_err 输出。退出复位状态后,湿度计Pmod控制器将重新开始运行。它会重新配置Pmod,并继续采集和输出相对湿度及温度数据。
结论
该湿度计Pmod控制器是可编程逻辑组件,用于连接Digilent的Pmod HYGRO(数字温湿度传感器Pmod)。它负责处理与该Pmod的所有通信,包括配置Pmod的采集模式和数据分辨率,并通过并行输出持续提供更新的相对湿度与温度数据流。






