风扇转速通过FPGA采样

摘要:
在实际换算中,获得的计数temp0需要除以2,然后乘以100,得到采样到的RPM。

1、风扇最大转速16000RPM,那么每一转需要时间60S/16000=0.00375S=375*10^4ns=T=T1+T2+T3+T4;

2、采样0.6S内的风扇detect信号的上升沿个数:0.6s/(375*10^4ns)=0.6*10^9ns/(375*10^4ns)=160

由于转数取最大值,所以T是最小的,那么160是最大计数个数,实际风扇规格书中的一转有两个周期,所以最大计数达到320(不考虑最大值16000RPM的±10%波动),那么需要位宽为9的二进制计数器。

在实际换算中,获得的计数temp0需要除以2,然后乘以100,得到采样到的RPM。

公式:采样RPM=temp0/2*100

x14_out是8位位宽的寄存器,那么可以定义temp0为[8:0],然后取值[8:1],这样可以相当于除以2,并且保证了temp0计数不会溢出。那么实际中得到的x14_out值需要转换成十进制后乘以100就ok。

实际公式:采样RPM=temp0*100

注:clk为25MHz的时钟。

风扇转速通过FPGA采样第1张

风扇转速通过FPGA采样第2张

注:AVC(型号:DBTA0420B2UP011)

VHDL程序:

1 libraryIEEE;
2 use IEEE.STD_LOGIC_1164.ALL;
3 use IEEE.STD_LOGIC_ARITH.ALL;
4 use IEEE.STD_LOGIC_UNSIGNED.ALL;
5 
6 entity x14_fan_speed_det0 is
7         port(      
8           x14_out                 : out   std_logic_vector(7 downto 0);
9           reset                   : in    std_logic;
10           clk                     : in    std_logic;
11           fan_det_0               : in    std_logic
12 );
13 endx14_fan_speed_det0;
14 
15 architecture rtl of x14_fan_speed_det0 is
16 
17 signal temp0                   : std_logic_vector(8 downto 0);
18 signal count0                  : std_logic_vector(23 downto 0);
19 
20 begin
21 
22 process(count0,fan_det_0)
23 begin
24    if (count0= "000000000000000000000000") then
25         temp0 <= "000000000";
26    elsif( fan_det_0'event and fan_det_0 = '1')then
27          temp0 <= temp0 + '1';
28   end if;
29 end process;
30 
31 
32 process(reset,clk)
33 begin
34     if (reset = '0') then
35         count0 <= "000000000000000000000000";
36         x14_out <= x"00";
37     elsif (clk'event and clk= '1') then
38            if (count0= "111001001110000111000000") then         ---计数15000000  0.6S
39              count0 <= "000000000000000000000000";
40              x14_out <= temp0(8 downto 1);
41              else
42               count0 <= count0 + '1'; 
43               --x14_out <=x14_out;      
44             end if;            
45     end if;
46 end process;
47 
48 end rtl;

免责声明:文章转载自《风扇转速通过FPGA采样》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQL Server表竖列转横向显示如何在Win10上永久禁用Windows Defender Antivirus下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

FPGA设计中的跨时钟域问题

转自:http://blog.163.com/sunhuifxd@126/blog/static/55859443201010131042581 跨时钟域问题 在一个FPGA设计中可能会用到多个时钟,每个时钟在FPGA内部形成一个时钟域,如果在一个时钟域中产生的信号需要在另一个时钟域中使用,那么需要特别小心! 到另一个时钟域的信号 假设一个在时钟域CLKA...

【设计经验】3、ISE中烧录QSPI Flash以及配置mcs文件的加载速度与传输位宽

一、软件与硬件平台        软件平台:               操作系统:Windows 7 64-bit               开发套件:ISE14.7        硬件平台:               FPGA型号:XC6SLX45-CSG324               QSPI Flash型号:W25Q128BV 二、背景介绍...

【资料】2021年最网红的FPGA开发板之一——DE10-Nano (SOC FPGA入门推荐!)

DE10-Nano开发板可谓2021年最网红的FPGA开发板之一,除了广泛用于物联网,边缘计算,硬件加速,AI 和 EDA教育课程外,还有不少发烧友将其用于网络上日渐风靡的开源复古游戏项目——Mister。可谓是跨越了学术界,工业界,科研界,无所不及。 友晶科技对板子提供的技术支持也是十分给力,不仅24小时官方邮件答复, 论坛值守,还不断不断的开发出配套...

FPGA中的INOUT接口和高阻态

除了输入输出端口,FPGA中还有另一种端口叫做inout端口。如果需要进行全双工通信,是需要两条信道的,也就是说需要使用两个FPGA管脚和外部器件连接。但是,有时候半双工通信就能满足我们的要求,理论上来说只需要一条信道就足够了,而FPGA上实现这一功能的管脚就是inout端口。管脚相连时,input对应output,因此inout只能和inout连接(否则...

FPGA智能网卡综述(4): 开源DMA

https://zhuanlan.zhihu.com/p/359754525 Corundum 原版见FCCM2020 代码见:https://github.com/ucsdsysnet/corundum 这个专题主要对基于FPGA的智能网卡技术进行介绍,上篇介绍了NanoPU、PANIC、Tonic等,这次介绍“Corundum: An Open-Sou...

浅谈FPGA资源评估

在使用FPGA过程中,通常需要对资源做出评估,下面简单谈谈如何评估FPGA的资源。 FF和LUT的数目: 这个在写出具体代码之前,初学者通常没法估算,但资深FPGA工程师会估算出一个数量级。通常的做法是系统架构划分好后可以复用的模块根据以前设计中的资源消耗数来估,新的模块写完代码后估。 RAM: 这块在实现架构定好后,基本能准确地估出来,各个模块需要用...