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

Subversion Repositories pulse_processing_algorithm

[/] [pulse_processing_algorithm/] [control_feedback.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 panda_emc
-----------------------------------------------------------------------------------------------
2
--
3
--    Copyright (C) 2011 Peter Lemmens, PANDA collaboration
4
--              p.j.j.lemmens@rug.nl
5
--    http://www-panda.gsi.de
6
--
7
--    As a reference, please use:
8
--    E. Guliyev, M. Kavatsyuk, P.J.J. Lemmens, G. Tambave, H. Loehner,
9
--    "VHDL Implementation of Feature-Extraction Algorithm for the PANDA Electromagnetic Calorimeter"
10
--    Nuclear Inst. and Methods in Physics Research, A ....
11
--
12
--
13
--    This program is free software; you can redistribute it and/or modify
14
--    it under the terms of the GNU Lesser General Public License as published by
15
--    the Free Software Foundation; either version 3 of the License, or
16
--    (at your option) any later version.
17
--
18
--    This program is distributed in the hope that it will be useful,
19
--    but WITHOUT ANY WARRANTY; without even the implied warranty of
20
--    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21
--    GNU Lesser General Public License for more details.
22
--
23
--    You should have received a copy of the GNU General Public License
24
--    along with this program; if not, write to the Free Software
25
--    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
26
--
27
-----------------------------------------------------------------------------------------------
28
-- Company              :       KVI (Kernfysisch Versneller Instituut  -- Groningen, The Netherlands    
29
-- Author               :       P.J.J. Lemmens
30
-- Design Name  :       Feature Extraction
31
-- Module Name  :       control_feedback.vhd
32
-- Description  :       This module is for debugging purposes only.
33
--                                      Unused vme-registers are used to readback settings/signals  for basic debugging
34
--                                              
35
-----------------------------------------------------------------------------------------------
36
library IEEE;
37
use IEEE.STD_LOGIC_1164.ALL;
38
use IEEE.STD_LOGIC_ARITH.ALL;
39
use IEEE.STD_LOGIC_UNSIGNED.ALL;
40
 
41
entity control_feedback is
42
        port(   rst                                             : in    std_logic;
43
                        ADclk                                           : in    std_logic;
44
                        uPclk                                           : in    std_logic;
45
                        cmd_output_select               : in    std_logic_vector(3 downto 0);
46
                        buffersize                              : in    std_logic_vector(31 downto 0);
47
                        chain_enable                    : in    std_logic;
48
                        flowctrl_running                : in    std_logic;
49
                        output_select_valid     : in    std_logic;
50
                        fb_output_select                : out   std_logic_vector(3 downto 0);
51
                        fb_buffersize                   : out   std_logic_vector(31 downto 0);
52
                        fb_chain_enable         : out   std_logic;
53
                        fb_running                              : out   std_logic;
54
                        fb_output_valid         : out   std_logic
55
                );
56
end control_feedback;
57
 
58
architecture Behavioral of control_feedback is
59
 
60
   signal rst_S                                 : std_logic := '1';
61
   signal ADclk_S                                       : std_logic := '0';
62
   signal uPclk_S                                       : std_logic := '0';
63
 
64
   signal cmd_output_select_S   : std_logic_vector(3 downto 0)   := (others => '0');
65
   signal buffersize_S                  : std_logic_vector(31 downto 0)  := (others => '0');
66
   signal chain_enable_S                : std_logic := '0';
67
   signal running_S                             : std_logic := '0';
68
   signal output_valid_S                : std_logic := '0';
69
 
70
   signal fb_output_select_S    : std_logic_vector(3 downto 0)   := (others => '0');
71
   signal fb_buffersize_S               : std_logic_vector(31 downto 0)  := (others => '0');
72
   signal fb_chain_enable_S     : std_logic := '0';
73
   signal fb_running_S                  : std_logic := '0';
74
   signal fb_output_valid_S     : std_logic := '0';
75
 
76
        begin
77
 
78
        rst_S                                           <= rst;
79
        ADclk_S                                 <= ADclk;
80
        uPclk_S                                 <= uPclk;
81
 
82
        AD_sync : process(ADclk_S)
83
        begin
84
                if rising_edge(ADclk_S) then
85
                        cmd_output_select_S     <= cmd_output_select;
86
                        buffersize_S                    <= buffersize;
87
                        chain_enable_S                  <= chain_enable;
88
                        running_S                               <= flowctrl_running;
89
                        output_valid_S                  <= output_select_valid;
90
                end if;
91
        end process;
92
 
93
 
94
        feedback : process(uPclk_S, rst_S)
95
        begin
96
                if rising_edge(uPclk_S) then
97
                        if (rst_S = '1') then
98
                                fb_output_select                <= (others => '0');
99
                                fb_buffersize                   <= (others => '0');
100
                                fb_chain_enable         <= '0';
101
                                fb_running                              <= '0';
102
                                fb_output_valid         <= '0';
103
                        else
104
                                fb_output_select_S      <= cmd_output_select_S;
105
                                fb_buffersize_S         <= buffersize_S;
106
                                fb_chain_enable_S               <= chain_enable_S;
107
                                fb_running_S                    <= running_S;
108
                                fb_output_valid_S               <= output_valid_S;
109
----------------------------------------------------------
110
                                fb_output_select                <= fb_output_select_S;
111
                                fb_buffersize                   <= fb_buffersize_S;
112
                                fb_chain_enable         <= fb_chain_enable_S;
113
                                fb_running                              <= fb_running_S;
114
                                fb_output_valid         <= fb_output_valid_S;
115
                        end if;
116
                end if;
117
        end process;
118
 
119
 
120
end Behavioral;

powered by: WebSVN 2.1.0

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