用于金属探测器的VHDL代码

时间:2012-06-05 13:18:43

标签: vhdl

我目前正在研究金属探测器,但无法弄清楚如何实现我的VHDL代码。

ENTITY sensor IS

   port ( metaldetector : in std_logic;
          metal         : out std_logic;
        );
END ENTITY sensor;

只要传感器附近没有任何金属,“金属探测器”就会在6.1kHz的频率上产生脉冲。因此,只要'metaldetector'持续获得脉冲,输出端口'metal'应为'0'。

当脉冲丢失(或多个脉冲)时,“金属”应变为“1”直到下一个脉冲。

制作能够做到这一点的代码应该不难,但我无法理解。任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

我们设法在其他学生的帮助下解决了这个问题,并且尝试了很多。 我会在这里发布我们的解决方案,希望它对其他人有用。 :)

LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std.ALL;

ENTITY sensor IS
     port ( metaldetector : in std_logic;
            clk : in std_logic;
            metal : out std_logic
          );
END ENTITY sensor;

ARCHITECTURE sensorbehav OF sensor IS   
    signal new_count, count: unsigned(20 downto 0);

    begin

    process (clk, metaldetector)
    begin
        if (rising_edge (clk)) then
            if (metaldetector = '1') then
                count <= (others => '0');
            else 
                count <= new_count;
      end if;
    end if;
end process;

process (count)
    begin
        new_count <= count + 1;
end process;

process (count)
    begin
    if (count > 9000) then
        metal <= '1';
    else
        metal <= '0';
    end if;
end process;
END ARCHITECTURE;