灵泛LinFan: 基于FPGA的IC热管理系统

LinFan是我做的一个高效的FPGA热管理系统,提供温度检测、风扇控制、RPM反馈、OLED显示等功能。它可以作为更复杂的嵌入式系统的基础模块。

它是一种基于可编程硬件FPGA的硬件控制器,可以实现自动热控制,帮助释放FPGA项目的性能。它是基于FPGA(Zynq XC7Z020)开发的智能热管理系统,旨在优化IC器件的散热效果,提高系统稳定性和性能。传统的商用热管理系统通常依靠EC(嵌入式控制器)来控制风扇速度,而LinFan则使用可编程硬件FPGA来实现自动热控制,可以作为一个IP核添加到更大的FPGA项目中,使项目的性能得到充分释放。

这个项目名为“灵泛”,在长沙话里的意思是“聪明”。此外,LinFan还包含英语单词“Fan,风扇”。

这个项目在github上已经开源,目录中有更详细的原理技术文档:https://github.com/gfdbat/LinFan_v0

也可以参考我的知乎:https://zhuanlan.zhihu.com/p/28973242254

在FPGA上尝试Linfan

首先需要确保:

  • 配备XADC的AMD Xilinx FPGA
  • 4针PWM调速风扇
  • 4针IIC接口OLED显示屏(分辨率128*64,我项目中的控制器为SH1106)
  • [可选]4个七段数码管,

请按照以下步骤操作:

  • 创建一个Vivado项目,并将RTL代码添加到该项目中(顶部模块:embedded_ctrl.v)
  • 设置时钟限制。PL的时钟需要设置为50MHz。
  • 设置引脚约束以约束风扇的TACH和PWM接口,以及屏幕IIC接口的SCL和SDA接口。确保TACH、SCL和SDA接口配置为PULLUP模式。
  • 重要提示:根据你的OLED控制器用户手册,修改OLED_data_gen.v中的OLED初始化命令
  • 最后,生成比特流!

如果你想配置一些参数:

  • 目标片上温度(默认40℃)
    • 在embedded_ctrl.v中,更改cooler_ctrl_tempTarget实例中的temp_target
  • 风扇开始运行的阈值(默认值为实际温度和预设温度之间的+-1度差)
    • 在cooler_ctrl_tempTarget.v中,修改TEMP_THRESHOLD的参数(10*0.1'C==1'C)
  • 写入像素的频率(默认值为200,基本上是我的OLED屏幕的极限)
    • 在oled_data_gen.v中,修改WR_WAIT_TIME的参数
  • PWM频率
    • 在pwm_output.v中,修改分频因子(默认为20,从50MHz生成2.5MHz)

TroubleShooting

  • 如果OLED显示屏在5V下不稳定,那么试试3.3V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值