0

我目前正在研究金属探测器,但不知道如何在我的 VHDL 代码中实现它。

ENTITY sensor IS

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

只要传感器附近没有任何金属,“金属探测器”就会获得 6.1kHz 频率的脉冲。因此,只要“金属探测器”不断收到脉冲,输出端口“金属”就应该是“0”。

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

编写一个可以做到这一点的代码应该不难,但我就是想不通。任何帮助真的很棒!

4

1 回答 1

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;
于 2012-06-10T15:09:34.213 回答