Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (3.84 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-13 : Mickael Carl (CNES): Creation
10
-------------------------------------------------------------------------------------------------
11
-- File name          : STD_01600_good.vhd
12
-- File Creation date : 2015-04-13
13
-- Project name       : VHDL Handbook CNES Edition
14
-------------------------------------------------------------------------------------------------
15
-- Softwares             :  Microsoft Windows (Windows 7) - Editor (Eclipse + VEditor)
16
-------------------------------------------------------------------------------------------------
17
-- Description : Handbook example: Entity port sort: 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
--               This example is compliant with the Handbook version 1.
23
--
24
-------------------------------------------------------------------------------------------------
25
-- Naming conventions:
26
--
27
-- i_Port: Input entity port
28
-- o_Port: Output entity port
29
-- b_Port: Bidirectional entity port
30
-- g_My_Generic: Generic entity port
31
--
32
-- c_My_Constant: Constant definition
33
-- t_My_Type: Custom type definition
34
--
35
-- My_Signal_n: Active low signal
36
-- v_My_Variable: Variable
37
-- sm_My_Signal: FSM signal
38
-- pkg_Param: Element Param coming from a package
39
--
40
-- My_Signal_re: Rising edge detection of My_Signal
41
-- My_Signal_fe: Falling edge detection of My_Signal
42
-- My_Signal_rX: X times registered My_Signal signal
43
--
44
-- P_Process_Name: Process
45
--
46
-------------------------------------------------------------------------------------------------
47

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

    
52
library work;
53
use work.pkg_HBK.all;
54

    
55
--CODE
56
entity STD_01600_good is
57
   -- We sort port by interfaces, with special ports first
58
   port (
59
      -- Special signals:
60
      i_Clock   : in  std_logic;        -- Clock input
61
      i_Reset_n : in  std_logic;        -- Reset input
62
      -- First Mux:
63
      i_A1      : in  std_logic;        -- first input
64
      i_B1      : in  std_logic;        -- second input
65
      i_Sel1    : in  std_logic;        -- select input
66
      o_Q1      : out std_logic;        -- Mux output
67
      -- Second Mux:
68
      i_A2      : in  std_logic;        -- first input
69
      i_B2      : in  std_logic;        -- second input
70
      i_Sel2    : in  std_logic;        -- select input
71
      o_Q2      : out std_logic         -- Mux output
72
      );
73
end STD_01600_good;
74
--CODE
75

    
76
architecture Behavioral of STD_01600_good is
77
   signal Q1      : std_logic;          -- First module output
78
   signal Q2      : std_logic;          -- Second module output
79
   signal OutMux1 : std_logic;          -- First Mux output
80
   signal OutMux2 : std_logic;          -- Second Mux output
81
begin
82
   -- First Mux, output to be synced
83
   Mux1 : Mux
84
      port map (
85
         i_A => i_A1,
86
         i_B => i_B1,
87
         i_S => i_Sel1,
88
         o_O => OutMux1
89
         );
90

    
91
   -- Second Mux, output to be synced
92
   Mux2 : Mux
93
      port map (
94
         i_A => i_A2,
95
         i_B => i_B2,
96
         i_S => i_Sel2,
97
         o_O => OutMux2
98
         );
99

    
100
   -- Synchronizes the Mux outputs
101
   P_SyncMux : process(i_Reset_n, i_Clock)
102
   begin
103
      if (i_Reset_n = '0') then
104
         Q1 <= '0';
105
         Q2 <= '0';
106
      elsif (rising_edge(i_Clock)) then
107
            Q1 <= OutMux1;
108
            Q2 <= OutMux2;
109
      end if;
110
   end process;
111

    
112
   o_Q1 <= Q1;
113
   o_Q2 <= Q2;
114
end Behavioral;