0

現在、金属探知機に取り組んでいますが、VHDL コードに実装する方法がわかりません。

ENTITY sensor IS

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

センサーの近くに金属がない限り、「金属検出器」は 6.1kHz の周波数でパルスを取得します。そのため、「金属検出器」がパルスを取得し続ける限り、出力ポート「金属」は「0」になるはずです。

欠落したパルス (または複数のパルス) がある場合、'metal' は次のパルスまで '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 に答える