基于野火征途Pro开发板(Cyclone IV E EP4CE10F17C8)的健康监测系统项目。
本项目旨在构建一个FPGA驱动的健康监测系统,集成多种传感器实现生理参数的实时采集与显示。
- 开发板: 野火征途Pro开发板
- FPGA芯片: Cyclone IV E EP4CE10F17C8
- 系统时钟: 50MHz
- 显示设备: 6位8段数码管(74HC595驱动)
实现了DS18B20数字温度传感器的完整驱动,支持实时温度采集与显示。
技术特性:
- 单总线(1-Wire)通信协议
- 温度精度: 0.0625°C
- 测量范围: -55°C ~ +125°C
- 更新频率: 1Hz
- 显示格式: XX.X°C(数码管显示为XX-X---)
实现文件:
health/rtl/ds18b20_ctrl.v- DS18B20驱动控制器health/rtl/top_seg_test.v- 顶层模块health/rtl/seg_dynamic.v- 数码管动态扫描驱动
协议实现:
- 初始化序列: 480us低电平脉冲 + 存在检测
- 两阶段工作流程:
- 转换阶段: Skip ROM (0xCC) → Convert T (0x44) → 等待800ms
- 读取阶段: Skip ROM (0xCC) → Read Scratchpad (0xBE) → 读取2字节温度数据
- 时序精度: 1MHz基准时钟(50MHz分频)
- 数据解析: 16位有符号数,bit[10:4]为整数部分,bit[3:0]为小数部分
- 计划集成OLED屏幕用于图形化显示
- 支持多参数同屏显示
- 提供更友好的用户界面
- 集成MAX30102传感器
- 实现心率(HR)和血氧饱和度(SpO2)测量
- 通过I2C接口通信
- 实时波形显示
embedfire_FPGA_ks/
├── health/ # 健康监测项目目录
│ ├── rtl/ # RTL源代码
│ │ ├── ds18b20_ctrl.v # DS18B20温度传感器驱动
│ │ ├── seg_dynamic.v # 数码管驱动
│ │ └── top_seg_test.v # 顶层模块
│ ├── health.qsf # Quartus工程配置
│ └── output_files/ # 编译输出文件
├── 征途Pro开发板规格书.pdf # 开发板文档
└── 征途Pro开发实战指南.pdf # FPGA开发指南
- IDE: Quartus Prime Lite
- 仿真工具: ModelSim (可选)
- 硬件调试: SignalTap II
- 版本控制: Git
- 使用Quartus Prime打开
health/health.qpf工程文件 - 执行全编译(Ctrl+L)
- 通过JTAG下载
health/output_files/health.sof到FPGA
DS18B20温度传感器:
- DQ(数据线)→ FPGA引脚(见health.qsf配置)
- VDD → 3.3V
- GND → GND
- 注意: DQ线需要4.7kΩ上拉电阻到VDD
数码管显示:
- 已集成在开发板上,无需额外连接
上电后,数码管将显示当前环境温度,格式为 XX-X---,例如:
23-5---表示 23.5°C18-7---表示 18.7°C
温度每秒更新一次。
- 精确时序控制: 实现1us级的1-Wire协议时序
- 状态机设计: 8状态FSM实现完整DS18B20读写流程
- 两阶段协议: 正确实现DS18B20的转换→读取工作流程
- 温度数据解析: 小数部分通过查找表转换(0x0→0, 0x8→5, 0xF→9)
- 模块化设计: 传感器驱动与显示驱动分离,便于扩展
- 野火《FPGA Verilog开发实战指南》第36章 - DS18B20温度传感器
- DS18B20数据手册
- Cyclone IV器件手册
- 2025-12-22: 完成DS18B20温度传感器驱动,实现实时温度显示功能
- 计划下一步集成OLED显示和MAX30102心率血氧传感器
基于野火征途Pro开发板的学习项目
本项目仅供学习交流使用
项目状态: 🟢 持续开发中
最后更新: 2025年12月22日