diff options
author | fishsoupisgood <github@madingley.org> | 2018-05-17 09:39:06 +0100 |
---|---|---|
committer | fishsoupisgood <github@madingley.org> | 2018-05-17 09:39:06 +0100 |
commit | aac3a573c21dd7822dad9259757b1cd3f3163054 (patch) | |
tree | c8b585443040dc09da2dd0dd66a7db649f5b5cdf /silence_detector.vhd | |
parent | 0780df86a9ec88bf8810f7fef1d241030dc1b655 (diff) | |
download | rob_spdif-aac3a573c21dd7822dad9259757b1cd3f3163054.tar.gz rob_spdif-aac3a573c21dd7822dad9259757b1cd3f3163054.tar.bz2 rob_spdif-aac3a573c21dd7822dad9259757b1cd3f3163054.zip |
add silence detection
Diffstat (limited to 'silence_detector.vhd')
-rw-r--r-- | silence_detector.vhd | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/silence_detector.vhd b/silence_detector.vhd new file mode 100644 index 0000000..fe85824 --- /dev/null +++ b/silence_detector.vhd @@ -0,0 +1,54 @@ + + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.std_logic_unsigned.all; +use IEEE.numeric_std.all; + +entity silence_detector is + port + ( + max_ticks : in integer; + clk : in std_logic; + d : in std_logic_vector(23 downto 0); + n_reset : in std_logic; + silent : out std_logic + ); +end silence_detector; + + +architecture rtl of silence_detector is + + signal ticks : std_logic_vector (31 downto 0); + signal last_d : std_logic_vector (23 downto 0); + signal silent_buf : std_logic; + +begin + + process (last_d, d, clk, max_ticks, ticks) + begin + if n_reset = '0' then + ticks <= (others => '0'); + silent_buf <= '0'; + last_d <= (others => '0'); + elsif rising_edge(clk) then + last_d <= d; + + if last_d = d then + if ticks < max_ticks then + ticks <= ticks +1; + else + silent_buf <= '1'; + end if; + else + ticks <= (others => '0'); + silent_buf <= '0'; + end if; + end if; + end process; + + + silent <= silent_buf; + +end rtl; + |