我目前正在研究金属探测器,但无法弄清楚如何实现我的VHDL代码。
ENTITY sensor IS
port ( metaldetector : in std_logic;
metal : out std_logic;
);
END ENTITY sensor;
只要传感器附近没有任何金属,“金属探测器”就会在6.1kHz的频率上产生脉冲。因此,只要'metaldetector'持续获得脉冲,输出端口'metal'应为'0'。
当脉冲丢失(或多个脉冲)时,“金属”应变为“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;