差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
数字温湿度计设计 [2018/10/23 17:24] anran [实验现象] |
数字温湿度计设计 [2020/01/18 21:56] (当前版本) gongyu |
||
---|---|---|---|
行 1: | 行 1: | ||
- | =====数字温湿度计设计===== | + | ### 数字温湿度计设计 |
- | ----- | + | |
- | ====实验任务==== | + | |
+ | --- | ||
+ | |||
+ | ####实验任务 | ||
* 任务:基于 STEP-MAX10M08核心板 和 STEP BaseBoard V3.0底板 完成数字温湿度计设计并观察调试结果 | * 任务:基于 STEP-MAX10M08核心板 和 STEP BaseBoard V3.0底板 完成数字温湿度计设计并观察调试结果 | ||
* 要求:驱动底板上的温湿度传感器SHT-20测量空气中的温度和湿度,将温湿度信息显示在8位扫描式数码管上。 | * 要求:驱动底板上的温湿度传感器SHT-20测量空气中的温度和湿度,将温湿度信息显示在8位扫描式数码管上。 | ||
* 解析:通过FPGA编程驱动I2C接口温湿度传感器SHT-20,获取温湿度码值信息,将两种码值信息经过运算转换成物理温度湿度数据,然后经过BCD转码处理并显示到扫描式数码管上。 | * 解析:通过FPGA编程驱动I2C接口温湿度传感器SHT-20,获取温湿度码值信息,将两种码值信息经过运算转换成物理温度湿度数据,然后经过BCD转码处理并显示到扫描式数码管上。 | ||
- | ====实验目的==== | + | #### 实验目的 |
前面的章节中我们学习了扫描式数码管模块和BCD转码模块的工作原理及驱动方法,也对I2C总线协议及相关知识,本实验主要对I2C总线驱动方法加以练习,同时熟悉FPGA设计中常用运算方法,最终完成数字温湿度计总体设计。 | 前面的章节中我们学习了扫描式数码管模块和BCD转码模块的工作原理及驱动方法,也对I2C总线协议及相关知识,本实验主要对I2C总线驱动方法加以练习,同时熟悉FPGA设计中常用运算方法,最终完成数字温湿度计总体设计。 | ||
行 14: | 行 15: | ||
* 完成数字温湿度计总体设计 | * 完成数字温湿度计总体设计 | ||
- | ====设计框图==== | + | #### 设计框图 |
根据前面的实验解析我们可以得知,该设计可以拆分成两个功能模块实现, | 根据前面的实验解析我们可以得知,该设计可以拆分成两个功能模块实现, | ||
行 23: | 行 24: | ||
{{:10-Top-Down层次设计.png?500|Top-Down层次设计}} {{:10-模块结构设计.png?500|模块结构设计}} | {{:10-Top-Down层次设计.png?500|Top-Down层次设计}} {{:10-模块结构设计.png?500|模块结构设计}} | ||
- | ====实验原理==== | ||
- | ===SHT-20模块介绍=== | + | #### 实验原理 |
+ | |||
+ | ##### SHT-20模块介绍 | ||
SHT-20是一款集成温度和湿度感测于一体的传感器芯片,采用3mm x 3mm贴片DFN封装,数字I2C总线接口,管脚功能描述如下: | SHT-20是一款集成温度和湿度感测于一体的传感器芯片,采用3mm x 3mm贴片DFN封装,数字I2C总线接口,管脚功能描述如下: | ||
行 51: | 行 53: | ||
{{:10-温度和湿度测量范围.png?500|温度和湿度测量范围}} | {{:10-温度和湿度测量范围.png?500|温度和湿度测量范围}} | ||
- | ===SHT-20模块连接=== | + | ##### SHT-20模块连接 |
STEP BaseBoard V3.0底板上的温湿度传感器SHT-20模块电路图如下(上拉电阻未显示): | STEP BaseBoard V3.0底板上的温湿度传感器SHT-20模块电路图如下(上拉电阻未显示): | ||
行 59: | 行 61: | ||
上图为温湿度传感器SHT-20模块电路,与FPGA硬件接口有I2C总线(SCL、SDA),SHT2x 传感器包含电容式湿度传感器、带隙温度传感器和专用的模拟和数字集成电路-全部放在单 CMOSens®芯片上。这在精度和稳定性方面, 以及功耗最小的情况下, 都能产生无与伦比的传感器性能, SHT20的分辨率可以通过命令 (RH/T 的8/12 位到12/14 位) 进行更改, 并且校验和有助于提高通信的可靠性。 | 上图为温湿度传感器SHT-20模块电路,与FPGA硬件接口有I2C总线(SCL、SDA),SHT2x 传感器包含电容式湿度传感器、带隙温度传感器和专用的模拟和数字集成电路-全部放在单 CMOSens®芯片上。这在精度和稳定性方面, 以及功耗最小的情况下, 都能产生无与伦比的传感器性能, SHT20的分辨率可以通过命令 (RH/T 的8/12 位到12/14 位) 进行更改, 并且校验和有助于提高通信的可靠性。 | ||
- | ===SHT-20模块驱动设计=== | + | ##### SHT-20模块驱动设计 |
智能接近系统设计实验中我们已经讲述学习过I2C总线驱动的设计,本实验可以上原来的基础上调整,首先来了解SHT-20时序中的参数要点。 | 智能接近系统设计实验中我们已经讲述学习过I2C总线驱动的设计,本实验可以上原来的基础上调整,首先来了解SHT-20时序中的参数要点。 | ||
行 158: | 行 160: | ||
</code> | </code> | ||
- | ===系统总体实现=== | + | ##### 系统总体实现 |
SHT-20驱动模块得到的是温度和湿度的编码值,想要得到℃和%RH的温度和湿度的数据还需要运算,运算后的数据是二进制数,想要显示在数码管上还需要BCD转码。先考虑运算: | SHT-20驱动模块得到的是温度和湿度的编码值,想要得到℃和%RH的温度和湿度的数据还需要运算,运算后的数据是二进制数,想要显示在数码管上还需要BCD转码。先考虑运算: | ||
- | {{:10-温度运算.png?400|温度运算}} {{:10-湿度运算.png?400|湿度运算}} | + | {{:10-温度运算.png?200|温度运算}} {{:10-湿度运算.png?200|湿度运算}} |
这里我们以温度的运算为例,FPGA不擅长小数的运算,我们可以将小数运算转换成整数运算处理,如下: | 这里我们以温度的运算为例,FPGA不擅长小数的运算,我们可以将小数运算转换成整数运算处理,如下: | ||
行 177: | 行 179: | ||
</code> | </code> | ||
- | 上面程序中没有除以100的运算,没有集成专用除法器的FPGA实现除法运算非常麻烦,需要大量的逻辑资源且性能不佳,通常我们不在FPGA中直接做除法运算,上面程序中两个除法,⑴除以2^16可以通过右移16位方式解决 ⑵除以100在二进制数中不好解决,而在BCD码的十进制数据很好处理,相当于小数点左移两位(十进制位),所以等完成BCD码后再来处理。 | + | 上面程序中没有除以100的运算,没有集成专用除法器的FPGA实现除法运算非常麻烦,需要大量的逻辑资源且性能不佳,通常我们不在FPGA中直接做除法运算,上面程序中两个除法。 |
+ | |||
+ | ⑴除以2^16可以通过右移16位方式解决。 | ||
+ | |||
+ | ⑵除以100在二进制数中不好解决,而在BCD码的十进制数据很好处理,相当于小数点左移两位(十进制位),所以等完成BCD码后再来处理。 | ||
BCD转码在前面电压器实验中介绍过,这里直接例化,程序实现如下: | BCD转码在前面电压器实验中介绍过,这里直接例化,程序实现如下: | ||
行 212: | 行 218: | ||
{{:10-RTL设计框图.png?800|RTL设计框图}} | {{:10-RTL设计框图.png?800|RTL设计框图}} | ||
- | ====实验步骤==== | + | #### 实验步骤 |
- 双击打开Quartus Prime工具软件; | - 双击打开Quartus Prime工具软件; | ||
- 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择); | - 新建工程:File → New Project Wizard(工程命名,工程目录选择,设备型号选择,EDA工具选择); | ||
行 223: | 行 229: | ||
- | ====实验现象==== | + | #### 实验现象 |
将程序加载到FPGA,观察数码管显示,左边4位数码管显示温度,右边4位数码管显示湿度,用手接触温湿度传感器,观察显示变化。 | 将程序加载到FPGA,观察数码管显示,左边4位数码管显示温度,右边4位数码管显示湿度,用手接触温湿度传感器,观察显示变化。 | ||
{{:10-实验现象.png?400|实验现象}} | {{:10-实验现象.png?400|实验现象}} |