Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

lustrec-tests / vhdl_json / vhdl_files / 2-exportOK / cnes_guidelines / rule / data / STD_04900_good.vhd @ 2051e520

History | View | Annotate | Download (3.11 KB)

1
-------------------------------------------------------------------------------------------------
2
-- Company   : CNES
3
-- Author    : Mickael Carl (CNES)
4
-- Copyright : Copyright (c) CNES.
5
-- Licensing : GNU GPLv3
6
-------------------------------------------------------------------------------------------------
7
-- Version         : V1
8
-- Version history :
9
--    V1 : 2015-04-07 : Mickael Carl (CNES): Creation
10
-------------------------------------------------------------------------------------------------
11
-- File name          : STD_04900_good.vhd
12
-- File Creation date : 2015-04-07
13
-- Project name       : VHDL Handbook CNES Edition
14
-------------------------------------------------------------------------------------------------
15
-- Softwares             :  Microsoft Windows (Windows 7) - Editor (Eclipse + VEditor)
16
-------------------------------------------------------------------------------------------------
17
-- Description : Handbook example: Edge detection best practice: good example
18
--
19
-- Limitations : This file is an example of the VHDL handbook made by CNES. It is a stub aimed at
20
--               demonstrating good practices in VHDL and as such, its design is minimalistic.
21
--               It is provided as is, without any warranty.
22
--
23
-------------------------------------------------------------------------------------------------
24
-- Naming conventions:
25
--
26
-- i_Port: Input entity port
27
-- o_Port: Output entity port
28
-- b_Port: Bidirectional entity port
29
-- g_My_Generic: Generic entity port
30
--
31
-- c_My_Constant: Constant definition
32
-- t_My_Type: Custom type definition
33
--
34
-- My_Signal_n: Active low signal
35
-- v_My_Variable: Variable
36
-- sm_My_Signal: FSM signal
37
-- pkg_Param: Element Param coming from a package
38
--
39
-- My_Sig_re: Rising edge detection of My_Signal
40
-- My_Sig_fe: Falling edge detection of My_Signal
41
-- My_Signal_rX: X times registered My_Signal signal
42
--
43
-- P_Process_Name: Process
44
--
45
-------------------------------------------------------------------------------------------------
46

    
47
library IEEE;
48
use IEEE.std_logic_1164.all;
49
use IEEE.numeric_std.all;
50

    
51
entity STD_04900_good is
52
   port (
53
      i_Reset_n : in  std_logic;        -- Reset signal
54
      i_Clock   : in  std_logic;        -- Clock signal
55
      i_A       : in  std_logic;        -- Signal on which detect edges
56
      o_A_re    : out std_logic;        -- Rising edge of A
57
      o_A_fe    : out std_logic;        -- Falling edge of A
58
      o_A_ae    : out std_logic         -- Any edge of A
59
      );
60
end STD_04900_good;
61

    
62
architecture Behavioral of STD_04900_good is
63
   signal A_r1 : std_logic;             -- i_A registered 1 time
64
   signal A_r2 : std_logic;             -- i_A registered 2 times
65
begin
66
   --CODE
67
   -- Registration process to be able to detect edges of signal A
68
   P_Registration : process(i_Reset_n, i_Clock)
69
   begin
70
      if (i_Reset_n = '0') then
71
         A_r1 <= '0';
72
         A_r2 <= '0';
73
      elsif (rising_edge(i_Clock)) then
74
            A_r1 <= i_A;
75
            A_r2 <= A_r1;
76
      end if;
77
   end process;
78

    
79
-- Assign the outputs of the module:
80
   o_A_re <= A_r1 and not A_r2;
81
   o_A_fe <= not A_r1 and A_r2;
82
   o_A_ae <= A_r1 xor A_r2;
83
end Behavioral;
84
--CODE