lustrec-tests / vhdl_json / vhdl_files / 2-exportOK / cnes_guidelines / rule / data / CNE_01600_bad.vhd @ 2051e520
History | View | Annotate | Download (3.77 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-15 : Mickael Carl (CNES): Creation |
10 |
------------------------------------------------------------------------------------------------- |
11 |
-- File name : CNE_01600_bad.vhd |
12 |
-- File Creation date : 2015-04-15 |
13 |
-- Project name : VHDL Handbook CNES Edition |
14 |
------------------------------------------------------------------------------------------------- |
15 |
-- Softwares : Microsoft Windows (Windows 7) - Editor (Eclipse + VEditor) |
16 |
------------------------------------------------------------------------------------------------- |
17 |
-- Description : Handbook example: Identification of package element: bad 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 |
entity CNE_01600_good is |
56 |
port ( |
57 |
i_Clock : in std_logic; -- Global clock signal |
58 |
i_Reset_n : in std_logic; -- Global reset signal |
59 |
i_Raz : in std_logic; -- Reset counting and load length |
60 |
i_Enable : in std_logic; -- Enable the counter |
61 |
i_Length : in std_logic_vector(Width downto 0); -- How much the module should count (Value expected - 1) |
62 |
o_Done : out std_logic -- Counter output |
63 |
); |
64 |
end CNE_01600_good; |
65 |
|
66 |
architecture Behavioral of CNE_01600_good is |
67 |
signal Count : signed(Width downto 0); -- Counting signal |
68 |
signal Length : signed(Width downto 0); -- How much the module should count |
69 |
signal Done : std_logic; -- Counter output |
70 |
begin |
71 |
P_Count:process(i_Reset_n, i_Clock) |
72 |
begin |
73 |
if (i_Reset_n='0') then |
74 |
Count <= (others => '0'); |
75 |
Length <= (others => '0'); |
76 |
Done <= '0'; |
77 |
elsif (rising_edge(i_Clock)) then |
78 |
if (i_Raz='1') then |
79 |
-- Reset the counting |
80 |
Length <= signed(i_Length); |
81 |
Count <= (others => '0'); |
82 |
elsif (i_Enable='1' and Done='0') then |
83 |
-- Counter activated and not finished |
84 |
Count <= Count + 1; |
85 |
end if; |
86 |
if (Count>=Length) then -- Compared elements are of the same type and dimension |
87 |
-- Counter finished |
88 |
Done <= '1'; |
89 |
else |
90 |
Done <= '0'; |
91 |
end if; |
92 |
end if; |
93 |
end process; |
94 |
|
95 |
o_Done <= Done; |
96 |
end Behavioral; |