OpenCores
URL https://opencores.org/ocsvn/ether_arp_1g/ether_arp_1g/trunk

Subversion Repositories ether_arp_1g

[/] [ether_arp_1g/] [trunk/] [rtl/] [edge_detector.vhdl] - Blame information for rev 4

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 jrwagz
-- 
2
-- author:   Claudio Talarico
3
-- file:     ed-mealy-rtl.vhd
4
-- comments: edge detector (Mealy FSM)
5
--
6
 
7
library ieee;
8
use ieee.std_logic_1164.all;
9
 
10
entity edge_detector is
11
port ( din   : in  std_logic;
12
       clk   : in  std_logic;
13
       rst_n : in  std_logic;
14
       dout  : out std_logic
15
     );
16
 
17
end edge_detector;
18
 
19
architecture rtl of edge_detector is
20
type state_t is (zero, one);
21
signal state, next_state : state_t;
22
signal pulse : std_logic;
23
 
24
begin
25
 
26
  the_machine: process(din,state)
27
  begin
28
 
29
    -- defaults  
30
    next_state <= zero;
31
    pulse      <= '0';
32
 
33
    case state is
34
      when zero =>
35
        if (din = '0') then
36
          next_state <= zero;
37
        else
38
          next_state <= one;
39
          pulse      <= '1';
40
        end if;
41
      when one =>
42
        if (din = '0') then
43
          next_state <= zero;
44
          -- We only want a positive edge detector JRW
45
          pulse      <= '0';
46
        else
47
          next_state <= one;
48
        end if;
49
     when others =>
50
       -- do nothing
51
   end case;
52
  end process the_machine;
53
 
54
  the_registers: process(clk, rst_n)
55
  begin
56
    if (rst_n = '0') then
57
      state <= zero;
58
    elsif (clk='1' and clk'event) then
59
      state <= next_state;
60
    end if;
61
  end process the_registers;
62
 
63
  --dummy assignment
64
  dout <= pulse;
65
end rtl;
66
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.