如何使用VHDL计算家庭培训师的RPM

问题描述

我有一个问题。我需要使用霍尔传感器和车轮上的磁铁来计算/测量家庭培训师的RPM,硬件需要用VHDL描述,我目前的方法是:

  1. 如果霍尔传感器检测到脉冲,请重置计数器

  2. 每个时钟周期递增计数器

  3. 在下一个脉冲上,存储上一个值,重置并重复。

代码:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
 
entity teller is
    port(
        hallsens        : in std_logic;
        counter     : out std_logic_vector(15 downto 0);
        areset      : in std_logic;
        clk         : in std_logic
        );
end entity teller;
 
architecture rtl of teller is
signal counttemp    : std_logic_vector(15 downto 0);
signal timerval2    : std_logic_vector(15 downto 0);
signal lastcount    : std_logic_vector(15 downto 0);
begin   
    process(clk,areset)
    begin
        if areset = '1' then
        
            counter <= "0000000000000000";
            counttemp <= "0000000000000000";
            timerval2 <= "0000001111101000";            
        elsif hallsens = '1' then
        counter <= lastcount + "1";
        timerval2 <= "0000001111101000";
        counttemp <= "0000000000000000";
        
        elsif rising_edge(clk) then
            
            
            timerval2 <= timerval2 - "1";
 
            if timerval2 = "0000000000000000" then
                
                lastcount <= counttemp;
                counttemp <= counttemp + "1";
                timerval2 <= "0000001111101000";
                
                
            end if;
        end if;
    end process;
    
end rtl;

但是要从中计算RPM,我必须将计数器除以时钟速度,再乘以60。这占用了FPGA(Altera Cyclone 2)上的很多硬件。

有没有更有效的方法?

TIA

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)